springboot中药材基本信息与图片查询系统29210-计算机课程设计、毕业设计

springboot中药材基本信息与图片查询系统29210-计算机课程设计、毕业设计 前言✨博主介绍一线全栈工程师毕设实战引路人。技术栈覆盖Java、Python、C#、PHP、Node.js及UniApp跨端开发擅长多语言项目落地与架构设计。持续分享毕设源码、开题报告、技术选型心得与职场踩坑经验。用工程化思维写代码帮你把毕设做成作品集。精彩专栏 推荐订阅Java精品项目案例【3000套】Python精品项目案例【500套】uniapp/微信小程序/安卓app【800套】2026-2027届Java毕业设计优质选题汇总百个热门方向完整推荐✅2026-2027届Python毕业设计优质选题汇总百个热门方向完整推荐✅2026-2027届小程序/APP毕业设计优质选题汇总百个热门方向完整推荐✅✅获取源码请私信✅感兴趣的可以先收藏起来还有大家在毕设选题项目以及论文编写等相关问题都可以找我咨询希望帮助更多的人❤️系统实现普通用户功能实现注册登录模块注册登录用户可以通过注册功能填写基本信息创建账号并通过登录功能进入系统实现个性化操作与数据记录。注册登录界面首页模块首页首页集中展示系统的核心内容入口包括热门药材推荐、方剂推荐、最新资讯和公告信息方便用户快速浏览。首页界面药材信息模块药材信息用户可以查看详细的中药材信息包括名称、类型、属性、产地、形态特征、功效、用法用量及禁忌事项同时支持收藏、点赞和评论互动。药材信息界面中药方剂模块中药方剂用户可以浏览中药方剂的详细内容包括方剂组成、出处、功效、主治和使用方法并可进行收藏、点赞及发表评论交流。中药方剂界面最新资讯模块最新资讯系统为用户提供与中医药相关的最新新闻资讯帮助用户了解行业动态和相关知识。最新资讯界面最新公告模块最新公告用户可以查看系统发布的公告信息如系统更新、重要通知等确保及时获取平台动态。最新公告界面个人首页模块个人首页用户拥有独立的个人主页用于展示个人信息以及其发布、收藏和互动的内容记录。个人首页界面管理员功能实现后台首页模块后台首页后台首页以可视化方式展示系统的整体运行情况包括用户数量、药材与方剂数据量以及访问趋势等信息帮助管理员快速了解平台状态。后台首页界面角色管理模块角色管理管理员可以对系统中的角色进行配置与维护包括新增角色、分配权限以及对管理员和普通用户进行权限区分管理从而实现精细化权限控制。角色管理界面中药类型管理模块中药类型管理管理员可以对中药类型进行统一管理包括新增、修改和删除类型信息以保证药材分类的规范性和系统数据结构的清晰性。中药类型管理界面药材信息管理模块药材信息管理管理员能够对中药材信息进行全面维护包括录入药材基本信息与图片、编辑属性内容以及删除无效数据从而保证数据的准确性和完整性。药材信息管理界面中药方剂管理模块中药方剂管理管理员可以对中药方剂进行统一管理包括方剂信息的添加、修改、删除以及关联药材数据的维护确保方剂内容的科学性与规范性。中药方剂管理界面系统管理模块系统管理轮播图管理管理员可以对系统首页轮播图进行上传、更新和删除操作用于展示重点内容、推荐信息或宣传资料从而提升用户体验和页面美观度。系统管理界面最新公告管理模块最新公告管理管理员可以发布、编辑和删除系统公告内容对用户进行重要通知、系统更新提示或活动说明确保信息传达的及时性和有效性。最新公告管理界面新闻管理模块新闻管理管理员可以对中医药相关资讯进行管理包括新闻内容的发布、修改、删除以及分类管理从而构建结构清晰、内容丰富的信息展示模块。新闻管理界面数据库参考CREATE TABLE user ( user_id int(8) unsigned NOT NULL AUTO_INCREMENT COMMENT 用户ID, state smallint(1) unsigned NOT NULL DEFAULT 1 COMMENT 账户状态(1可用|2异常|3已冻结|4已注销), user_group varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT 所在用户组, login_time timestamp NULL DEFAULT NULL COMMENT 上次登录时间, phone varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT 手机号码, phone_state smallint(1) unsigned NOT NULL DEFAULT 0 COMMENT 手机认证(0未认证|1审核中|2已认证), username varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT COMMENT 用户名, nickname varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT COMMENT 昵称, password varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT COMMENT 密码, email varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT COMMENT 邮箱, email_state smallint(1) unsigned NOT NULL DEFAULT 0 COMMENT 邮箱认证(0未认证|1审核中|2已认证), avatar varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT 头像地址, open_id varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT 针对获取用户信息字段, create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, vip_level varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT 会员等级, vip_discount double(10,2) DEFAULT 0.00 COMMENT 会员折扣, integral int(11) DEFAULT 0 COMMENT 积分, balance double(10,2) DEFAULT 0.00 COMMENT 余额, ip varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT IPv4/IPv6地址, device_hash varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT 设备指纹, emergency_name varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 紧急联系人, emergency_mobile varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 紧急联系电话, PRIMARY KEY (user_id) USING BTREE ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_general_ci COMMENT用户账户; CREATE TABLE type_of_traditional_chinese_medicine(type_of_traditional_chinese_medicine_id int(11) NOT NULL AUTO_INCREMENT COMMENT 中药类型ID, class_nameification_of_traditional_chinese_medicine varchar(64) comment 中药分类, create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, create_by int(11) DEFAULT 1 NOT NULL comment 创建用户ID, update_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 更新时间, PRIMARY KEY (type_of_traditional_chinese_medicine_id))ENGINEInnoDB DEFAULT CHARSETutf8mb4 comment 中药类型; cine_information(herbal_medicine_information_id int(11) NOT NULL AUTO_INCREMENT COMMENT 药材信息ID, name_of_medicinal_herbs varchar(64) comment 药材名称, traditional_chinese_medicine_types varchar(64) comment 中药类型, medicinal_material_attribute varchar(64) comment 药材属性, traditional_chinese_medicine_picture varchar(255) comment 中药图片, storage_method varchar(64) comment 保存方法, dosage_and_manageristration varchar(64) comment 用量用法, medicinal_material_origin varchar(255) comment 药材产地, morphological_characteristics varchar(64) comment 形态特征, main_benefits varchar(64) comment 主要功效, use_taboo text comment 使用禁忌, precautions text comment 注意事项, clinical_applications text comment 临床应用, hits int(11) DEFAULT 0 NOT NULL comment 点击数, praise_len int(11) DEFAULT 0 NOT NULL comment 点赞数, collect_len int(11) DEFAULT 0 NOT NULL comment 收藏数, comment_len int(11) DEFAULT 0 NOT NULL comment 评论数, create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, create_by int(11) DEFAULT 1 NOT NULL comment 创建用户ID, update_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 更新时间, PRIMARY KEY (herbal_medicine_information_id))ENGINEInnoDB DEFAULT CHARSETutf8mb4 comment 药材信息;代码参考/** * 药材信息(HerbalMedicineInformation)表控制层 * */ RestController RequestMapping(/herbal_medicine_information) public class HerbalMedicineInformationController extends BaseControllerHerbalMedicineInformation, HerbalMedicineInformationService { /** * 药材信息对象 */ Autowired public HerbalMedicineInformationController(HerbalMedicineInformationService service) { setService(service); } PostMapping(/add) Transactional public MapString, Object add(HttpServletRequest request) throws IOException { MapString,Object paramMap service.readBody(request.getReader()); paramMap.entrySet().removeIf(entry - { Object value entry.getValue(); return value instanceof String ((String) value).isEmpty(); }); HerbalMedicineInformation herbal_medicine_information new HerbalMedicineInformation(); herbal_medicine_information.setName_of_medicinal_herbs(paramMap.get(name_of_medicinal_herbs)null?null:String.valueOf(paramMap.get(name_of_medicinal_herbs))); herbal_medicine_information.setTraditional_chinese_medicine_types(paramMap.get(traditional_chinese_medicine_types)null?null:String.valueOf(paramMap.get(traditional_chinese_medicine_types))); herbal_medicine_information.setMedicinal_material_attribute(paramMap.get(medicinal_material_attribute)null?null:String.valueOf(paramMap.get(medicinal_material_attribute))); herbal_medicine_information.setTraditional_chinese_medicine_picture(paramMap.get(traditional_chinese_medicine_picture)null?null:String.valueOf(paramMap.get(traditional_chinese_medicine_picture))); herbal_medicine_information.setStorage_method(paramMap.get(storage_method)null?null:String.valueOf(paramMap.get(storage_method))); herbal_medicine_information.setDosage_and_manageristration(paramMap.get(dosage_and_manageristration)null?null:String.valueOf(paramMap.get(dosage_and_manageristration))); herbal_medicine_information.setMedicinal_material_origin(paramMap.get(medicinal_material_origin)null?null:String.valueOf(paramMap.get(medicinal_material_origin))); herbal_medicine_information.setMorphological_characteristics(paramMap.get(morphological_characteristics)null?null:String.valueOf(paramMap.get(morphological_characteristics))); herbal_medicine_information.setMain_benefits(paramMap.get(main_benefits)null?null:String.valueOf(paramMap.get(main_benefits))); herbal_medicine_information.setUse_taboo(paramMap.get(use_taboo)null?null:String.valueOf(paramMap.get(use_taboo))); herbal_medicine_information.setPrecautions(paramMap.get(precautions)null?null:String.valueOf(paramMap.get(precautions))); herbal_medicine_information.setClinical_applications(paramMap.get(clinical_applications)null?null:String.valueOf(paramMap.get(clinical_applications))); herbal_medicine_information.setHits(paramMap.get(hits)null?null:Integer.valueOf(String.valueOf(paramMap.get(hits)))); herbal_medicine_information.setPraise_len(paramMap.get(praise_len)null?null:Integer.valueOf(String.valueOf(paramMap.get(praise_len)))); herbal_medicine_information.setCollect_len(paramMap.get(collect_len)null?null:Integer.valueOf(String.valueOf(paramMap.get(collect_len)))); herbal_medicine_information.setComment_len(paramMap.get(comment_len)null?null:Integer.valueOf(String.valueOf(paramMap.get(comment_len)))); herbal_medicine_information.setCreate_by(paramMap.get(create_by)null?null:Integer.valueOf(String.valueOf(paramMap.get(create_by)))); this.addEntity(herbal_medicine_information); System.out.println(药材信息新增成功); return success(1); } PostMapping(/set) Transactional public MapString, Object set(HttpServletRequest request) throws IOException { MapString,String queryMap service.readQuery(request); MapString,String configMap service.readConfig(request); MapString,Object paramMap service.readBody(request.getReader()); paramMap.entrySet().removeIf(entry - { Object value entry.getValue(); return value instanceof String ((String) value).isEmpty(); }); HerbalMedicineInformation herbal_medicine_information new HerbalMedicineInformation(); herbal_medicine_information.setName_of_medicinal_herbs(paramMap.get(name_of_medicinal_herbs)null?null:String.valueOf(paramMap.get(name_of_medicinal_herbs))); herbal_medicine_information.setTraditional_chinese_medicine_types(paramMap.get(traditional_chinese_medicine_types)null?null:String.valueOf(paramMap.get(traditional_chinese_medicine_types))); herbal_medicine_information.setMedicinal_material_attribute(paramMap.get(medicinal_material_attribute)null?null:String.valueOf(paramMap.get(medicinal_material_attribute))); herbal_medicine_information.setTraditional_chinese_medicine_picture(paramMap.get(traditional_chinese_medicine_picture)null?null:String.valueOf(paramMap.get(traditional_chinese_medicine_picture))); herbal_medicine_information.setStorage_method(paramMap.get(storage_method)null?null:String.valueOf(paramMap.get(storage_method))); herbal_medicine_information.setDosage_and_manageristration(paramMap.get(dosage_and_manageristration)null?null:String.valueOf(paramMap.get(dosage_and_manageristration))); herbal_medicine_information.setMedicinal_material_origin(paramMap.get(medicinal_material_origin)null?null:String.valueOf(paramMap.get(medicinal_material_origin))); herbal_medicine_information.setMorphological_characteristics(paramMap.get(morphological_characteristics)null?null:String.valueOf(paramMap.get(morphological_characteristics))); herbal_medicine_information.setMain_benefits(paramMap.get(main_benefits)null?null:String.valueOf(paramMap.get(main_benefits))); herbal_medicine_information.setUse_taboo(paramMap.get(use_taboo)null?null:String.valueOf(paramMap.get(use_taboo))); herbal_medicine_information.setPrecautions(paramMap.get(precautions)null?null:String.valueOf(paramMap.get(precautions))); herbal_medicine_information.setClinical_applications(paramMap.get(clinical_applications)null?null:String.valueOf(paramMap.get(clinical_applications))); herbal_medicine_information.setHits(paramMap.get(hits)null?null:Integer.valueOf(String.valueOf(paramMap.get(hits)))); herbal_medicine_information.setPraise_len(paramMap.get(praise_len)null?null:Integer.valueOf(String.valueOf(paramMap.get(praise_len)))); herbal_medicine_information.setCollect_len(paramMap.get(collect_len)null?null:Integer.valueOf(String.valueOf(paramMap.get(collect_len)))); herbal_medicine_information.setComment_len(paramMap.get(comment_len)null?null:Integer.valueOf(String.valueOf(paramMap.get(comment_len)))); this.setEntity(queryMap,configMap,herbal_medicine_information); System.out.println(药材信息修改成功); return success(1); /** * 中药方剂(TraditionalChineseMedicinePrescription)表控制层 * */ RestController RequestMapping(/traditional_chinese_medicine_prescription) public class TraditionalChineseMedicinePrescriptionController extends BaseControllerTraditionalChineseMedicinePrescription, TraditionalChineseMedicinePrescriptionService { /** * 中药方剂对象 */ Autowired public TraditionalChineseMedicinePrescriptionController(TraditionalChineseMedicinePrescriptionService service) { setService(service); } PostMapping(/add) Transactional public MapString, Object add(HttpServletRequest request) throws IOException { MapString,Object paramMap service.readBody(request.getReader()); paramMap.entrySet().removeIf(entry - { Object value entry.getValue(); return value instanceof String ((String) value).isEmpty(); }); TraditionalChineseMedicinePrescription traditional_chinese_medicine_prescription new TraditionalChineseMedicinePrescription(); traditional_chinese_medicine_prescription.setName_of_prescription(paramMap.get(name_of_prescription)null?null:String.valueOf(paramMap.get(name_of_prescription))); traditional_chinese_medicine_prescription.setContains_herbs(paramMap.get(contains_herbs)null?null:String.valueOf(paramMap.get(contains_herbs))); traditional_chinese_medicine_prescription.setPrescription_source(paramMap.get(prescription_source)null?null:String.valueOf(paramMap.get(prescription_source))); traditional_chinese_medicine_prescription.setCover_image(paramMap.get(cover_image)null?null:String.valueOf(paramMap.get(cover_image))); traditional_chinese_medicine_prescription.setDosage_and_manageristration(paramMap.get(dosage_and_manageristration)null?null:String.valueOf(paramMap.get(dosage_and_manageristration))); traditional_chinese_medicine_prescription.setEfficacy_of_prescription(paramMap.get(efficacy_of_prescription)null?null:String.valueOf(paramMap.get(efficacy_of_prescription))); traditional_chinese_medicine_prescription.setPrescription_indications(paramMap.get(prescription_indications)null?null:String.valueOf(paramMap.get(prescription_indications))); traditional_chinese_medicine_prescription.setDocumentary_records(paramMap.get(documentary_records)null?null:String.valueOf(paramMap.get(documentary_records))); traditional_chinese_medicine_prescription.setHits(paramMap.get(hits)null?null:Integer.valueOf(String.valueOf(paramMap.get(hits)))); traditional_chinese_medicine_prescription.setPraise_len(paramMap.get(praise_len)null?null:Integer.valueOf(String.valueOf(paramMap.get(praise_len)))); traditional_chinese_medicine_prescription.setCollect_len(paramMap.get(collect_len)null?null:Integer.valueOf(String.valueOf(paramMap.get(collect_len)))); traditional_chinese_medicine_prescription.setComment_len(paramMap.get(comment_len)null?null:Integer.valueOf(String.valueOf(paramMap.get(comment_len)))); traditional_chinese_medicine_prescription.setCreate_by(paramMap.get(create_by)null?null:Integer.valueOf(String.valueOf(paramMap.get(create_by)))); this.addEntity(traditional_chinese_medicine_prescription); System.out.println(中药方剂新增成功); return success(1); } PostMapping(/set) Transactional public MapString, Object set(HttpServletRequest request) throws IOException { MapString,String queryMap service.readQuery(request); MapString,String configMap service.readConfig(request); MapString,Object paramMap service.readBody(request.getReader()); paramMap.entrySet().removeIf(entry - { Object value entry.getValue(); return value instanceof String ((String) value).isEmpty(); }); TraditionalChineseMedicinePrescription traditional_chinese_medicine_prescription new TraditionalChineseMedicinePrescription(); traditional_chinese_medicine_prescription.setName_of_prescription(paramMap.get(name_of_prescription)null?null:String.valueOf(paramMap.get(name_of_prescription))); traditional_chinese_medicine_prescription.setContains_herbs(paramMap.get(contains_herbs)null?null:String.valueOf(paramMap.get(contains_herbs))); traditional_chinese_medicine_prescription.setPrescription_source(paramMap.get(prescription_source)null?null:String.valueOf(paramMap.get(prescription_source))); traditional_chinese_medicine_prescription.setCover_image(paramMap.get(cover_image)null?null:String.valueOf(paramMap.get(cover_image))); traditional_chinese_medicine_prescription.setDosage_and_manageristration(paramMap.get(dosage_and_manageristration)null?null:String.valueOf(paramMap.get(dosage_and_manageristration))); traditional_chinese_medicine_prescription.setEfficacy_of_prescription(paramMap.get(efficacy_of_prescription)null?null:String.valueOf(paramMap.get(efficacy_of_prescription))); traditional_chinese_medicine_prescription.setPrescription_indications(paramMap.get(prescription_indications)null?null:String.valueOf(paramMap.get(prescription_indications))); traditional_chinese_medicine_prescription.setDocumentary_records(paramMap.get(documentary_records)null?null:String.valueOf(paramMap.get(documentary_records))); traditional_chinese_medicine_prescription.setHits(paramMap.get(hits)null?null:Integer.valueOf(String.valueOf(paramMap.get(hits)))); traditional_chinese_medicine_prescription.setPraise_len(paramMap.get(praise_len)null?null:Integer.valueOf(String.valueOf(paramMap.get(praise_len)))); traditional_chinese_medicine_prescription.setCollect_len(paramMap.get(collect_len)null?null:Integer.valueOf(String.valueOf(paramMap.get(collect_len)))); traditional_chinese_medicine_prescription.setComment_len(paramMap.get(comment_len)null?null:Integer.valueOf(String.valueOf(paramMap.get(comment_len)))); this.setEntity(queryMap,configMap,traditional_chinese_medicine_prescription); System.out.println(中药方剂修改成功); return success(1); /** * 中药类型(TypeOfTraditionalChineseMedicine)表控制层 * */ RestController RequestMapping(/type_of_traditional_chinese_medicine) public class TypeOfTraditionalChineseMedicineController extends BaseControllerTypeOfTraditionalChineseMedicine, TypeOfTraditionalChineseMedicineService { /** * 中药类型对象 */ Autowired public TypeOfTraditionalChineseMedicineController(TypeOfTraditionalChineseMedicineService service) { setService(service); } PostMapping(/add) Transactional public MapString, Object add(HttpServletRequest request) throws IOException { MapString,Object paramMap service.readBody(request.getReader()); paramMap.entrySet().removeIf(entry - { Object value entry.getValue(); return value instanceof String ((String) value).isEmpty(); }); TypeOfTraditionalChineseMedicine type_of_traditional_chinese_medicine new TypeOfTraditionalChineseMedicine(); type_of_traditional_chinese_medicine.setClass_nameification_of_traditional_chinese_medicine(paramMap.get(class_nameification_of_traditional_chinese_medicine)null?null:String.valueOf(paramMap.get(class_nameification_of_traditional_chinese_medicine))); type_of_traditional_chinese_medicine.setCreate_by(paramMap.get(create_by)null?null:Integer.valueOf(String.valueOf(paramMap.get(create_by)))); this.addEntity(type_of_traditional_chinese_medicine); System.out.println(中药类型新增成功); return success(1); } PostMapping(/set) Transactional public MapString, Object set(HttpServletRequest request) throws IOException { MapString,String queryMap service.readQuery(request); MapString,String configMap service.readConfig(request); MapString,Object paramMap service.readBody(request.getReader()); paramMap.entrySet().removeIf(entry - { Object value entry.getValue(); return value instanceof String ((String) value).isEmpty(); }); TypeOfTraditionalChineseMedicine type_of_traditional_chinese_medicine new TypeOfTraditionalChineseMedicine(); type_of_traditional_chinese_medicine.setClass_nameification_of_traditional_chinese_medicine(paramMap.get(class_nameification_of_traditional_chinese_medicine)null?null:String.valueOf(paramMap.get(class_nameification_of_traditional_chinese_medicine))); this.setEntity(queryMap,configMap,type_of_traditional_chinese_medicine); System.out.println(中药类型修改成功); return success(1);前端基于Vue.js框架构建用户界面使用HTML5、CSS3和JavaScript实现页面结构与交互逻辑通过Vue Router管理路由Vuex或Pinia维护全局状态。采用Element UI或Vant组件库快速搭建界面Axios封装HTTP请求实现与后端的数据通信。后端基于Spring Boot框架搭建遵循Controller-Service-Mapper三层架构。Controller层接收前端请求并校验参数Service层处理核心业务逻辑Mapper层通过MyBatis或MyBatis-Plus完成数据库操作。使用Spring Security或Shiro结合JWT实现用户认证与权限控制。数据库采用MySQL存储持久化数据Redis缓存热点信息以提升系统性能。开发工具使用IDEA开发后端VSCode或HBuilderX开发前端Git进行版本管理Maven和npm分别管理前后端依赖。精彩专栏 推荐订阅Java精品项目案例【3000套】Python精品项目案例【500套】uniapp/微信小程序/安卓app【800套】2026-2027届Java毕业设计优质选题汇总百个热门方向完整推荐✅2026-2027届Python毕业设计优质选题汇总百个热门方向完整推荐✅2026-2027届小程序/APP毕业设计优质选题汇总百个热门方向完整推荐✅✅获取源码请私信✅感兴趣的可以先收藏起来还有大家在毕设选题项目以及论文编写等相关问题都可以找我咨询希望帮助更多的人❤️