基于Java+SpringBoot+vue+element实现前后端分离牙科诊所管理系统详细设计
博主介紹:?公司項目主程、全網粉絲10W+,csdn特邀作者、博客專家、CSDN新星計劃導師、java領域優質創作者,CSDN博客之星TOP100、掘金/華為云/阿里云/InfoQ等平臺優質作者、專注于Java技術領域和畢業設計?
公眾號:java李楊勇 簡歷模板、學習資料、面試題庫等都給你💪
🍅文末獲取源碼聯系🍅
🍅CSDN官方推薦10W+JAVA技術人文章發布打卡社區🍅
前言介紹:
????????隨著社會的發展,社會的各行各業都在利用信息化時代的優勢。計算機的優勢和普及使得各種信息系統的開發成為必需。牙科診所信息化管理平臺,主要的模塊包括首頁、個人中心、醫生管理、用戶管理、病歷信息管理、掛號信息管理、藥品信息管理、器械信息管理、藥單信息管理、器械單信息管理等功能。系統中管理員主要是為了安全有效地存儲和管理各類信息,還可以對系統進行管理與更新維護等操作,并且對后臺有相應的操作權限。
????????要想實現牙科診所信息化管理平臺的各項功能,需要后臺數據庫的大力支持。管理員驗證注冊信息,收集的信息,并由此分析得出的關聯信息等大量的數據都由數據庫管理。本文中數據庫服務器端采用了Mysql作為后臺數據庫,使Web與數據庫緊密聯系起來。在設計過程中,充分保證了系統代碼的良好可讀性、實用性、易擴展性、通用性、便于后期維護、操作方便以及頁面簡潔等特點。本系統的開發使獲取牙科診所信息化管理平臺信息能夠更加方便快捷,同時也使牙科診所信息化管理平臺管理信息變的更加系統化、有序化。系統界面較友好,易于操作。
系統設計:
????????本牙科診所信息化管理平臺采用Java技術,Mysql數據庫開發,充分保證了系統穩定性、完整性。 牙科診所信息化管理平臺的設計與實現的設計思想如下:
1.操作簡單方便、系統界面安全良好:簡單明了的頁面布局,方便查詢牙科診所信息化管理平臺管理的相關信息。
2、即時可見:對牙科診所信息化管理平臺信息的處理將立馬在對應地點可以查詢到,從而實現“即時發布、即時見效”的系統功能。
3、功能的完善性:可以管理首頁、個人中心、醫生管理、用戶管理、病歷信息管理、掛號信息管理、藥品信息管理、器械信息管理、藥單信息管理、器械單信息管理模塊的修改和維護操作。??
系統架構圖屬于系統設計階段,系統架構圖只是這個階段一個產物,系統的總體架構決定了整個系統的模式,是系統的基礎。牙科診所信息化管理平臺的整體結構設計如圖所示。?
功能截圖:
登錄注冊:管理員登錄進入牙科診所信息化管理平臺之后,就可以對所有的信息進行查看,可以查看到首頁、個人中心、醫生管理、用戶管理、病歷信息管理、掛號信息管理、藥品信息管理、器械信息管理、藥單信息管理、器械單信息管理等,并且還可以對其進行相應的操作管理
用戶注冊:在注冊頁面中通過填寫用戶賬號、用戶姓名、密碼、年齡、聯系電話、身份證等信息完成用戶注冊。用戶登錄進入牙科診所信息化管理平臺可以查看首頁、個人中心、醫生管理、病歷信息管理、掛號信息管理、藥單信息管理、器械單信息管理等信息進行詳細操作
?牙醫管理:管理員可以查看修改刪除牙醫信息,牙醫可以修改自己的個人信息、普通用戶可以查看和掛號。
在醫生管理頁面中可以對索引、醫生工號、醫生姓名、職稱、性別、聯系電話、頭像、畢業院校、掛號費、從醫時間等信息進行詳情,修改或刪除等操作?
用戶管理:
病例管理:用戶掛號以后醫生可以添加和查看病例信息等
掛號管理:普通用戶登錄后可以選擇牙醫進行掛號
在掛號信息管理頁面中可以對索引、掛號流水號、用戶賬號、用戶姓名、性別、年齡、身份證、聯系電話、醫生工號、醫生姓名、掛號費、掛號時間、是否支付等信息進行操作。
用戶掛號后支持掛號費用以后醫生可以對用戶掛號進行病例查看
開藥和醫囑等操作
管理員查看掛號詳情等數據?
藥品管理:在藥品信息管理頁面中可以對索引、藥品號、藥品名稱、數量、價格等信息進行詳情,修改或刪除等操作
器械管理:在器械信息管理頁面中可以對索引、器械號、器械名稱、數量、價格等信息進行詳情,修改或刪除等操作
藥單管理:在藥單信息管理頁面中可以對索引、藥單流水號、用戶賬號、用戶姓名、藥品號、藥品名稱、數量、價格、總金額、醫生工號、登記時間、是否支付等信息進行詳情操作
器械單管理:
數據設計:
管理員信息結構圖,如圖所示?
掛號信息管理實體屬性圖,如圖所示
藥單信息管理實體屬性圖如圖所示
部分表設計:
將數據庫概念設計的E-R圖轉換為關系數據庫。在關系數據庫中,數據關系由數據表組成,但是表的結構表現在表的字段上。
表4-1:藥品信息
| 字段名稱 | 類型 | 長度 | 字段說明 |
| id | bigint | 主鍵 | |
| addtime | timestamp | 創建時間 | |
| yaopinhao | varchar | 200 | 藥品號 |
| yaopinmingcheng | varchar | 200 | 藥品名稱 |
| shuliang | int | 數量 | |
| jiage | float | 價格 |
表4-2:藥單信息
| 字段名稱 | 類型 | 長度 | 字段說明 |
| id | bigint | 主鍵 | |
| addtime | timestamp | 創建時間 | |
| yaodanliushuihao | varchar | 200 | 藥單流水號 |
| yonghuzhanghao | varchar | 200 | 用戶賬號 |
| yonghuxingming | varchar | 200 | 用戶姓名 |
| huiyuandengji | varchar | 200 | 會員等級 |
| zhekou | float | 折扣 | |
| yaopinhao | varchar | 200 | 藥品號 |
| yaopinmingcheng | varchar | 200 | 藥品名稱 |
| shuliang | int | 數量 | |
| jiage | float | 價格 | |
| zongjine | varchar | 200 | 總金額 |
| yishenggonghao | varchar | 200 | 醫生工號 |
| dengjishijian | date | 登記時間 | |
| ispay | varchar | 200 | 是否支付 |
表4-3:用戶表
| 字段名稱 | 類型 | 長度 | 字段說明 |
| id | bigint | 主鍵 | |
| username | varchar | 100 | 用戶名 |
| password | varchar | 100 | 密碼 |
| role | varchar | 100 | 角色 |
| addtime | timestamp | 新增時間 |
表4-4:token表
| 字段名稱 | 類型 | 長度 | 字段說明 |
| id | bigint | 主鍵 | |
| userid | bigint | 用戶id | |
| username | varchar | 100 | 用戶名 |
| tablename | varchar | 100 | 表名 |
| role | varchar | 100 | 角色 |
| token | varchar | 200 | 密碼 |
| addtime | timestamp | 新增時間 | |
| expiratedtime | timestamp | 過期時間 |
代碼實現:
/*** 掛號信息* 后端接口* @author * @email * @date 2022-03-18 15:32:30*/ @RestController @RequestMapping("/guahaoxinxi") public class GuahaoxinxiController {@Autowiredprivate GuahaoxinxiService guahaoxinxiService;/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,GuahaoxinxiEntity guahaoxinxi,HttpServletRequest request){String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("yonghu")) {guahaoxinxi.setYonghuzhanghao((String)request.getSession().getAttribute("username"));}if(tableName.equals("yisheng")) {guahaoxinxi.setYishenggonghao((String)request.getSession().getAttribute("username"));}EntityWrapper<GuahaoxinxiEntity> ew = new EntityWrapper<GuahaoxinxiEntity>();PageUtils page = guahaoxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, guahaoxinxi), params), params));return R.ok().put("data", page);}/*** 前端列表*/@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params,GuahaoxinxiEntity guahaoxinxi, HttpServletRequest request){EntityWrapper<GuahaoxinxiEntity> ew = new EntityWrapper<GuahaoxinxiEntity>();PageUtils page = guahaoxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, guahaoxinxi), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/lists")public R list( GuahaoxinxiEntity guahaoxinxi){EntityWrapper<GuahaoxinxiEntity> ew = new EntityWrapper<GuahaoxinxiEntity>();ew.allEq(MPUtil.allEQMapPre( guahaoxinxi, "guahaoxinxi")); return R.ok().put("data", guahaoxinxiService.selectListView(ew));}/*** 查詢*/@RequestMapping("/query")public R query(GuahaoxinxiEntity guahaoxinxi){EntityWrapper< GuahaoxinxiEntity> ew = new EntityWrapper< GuahaoxinxiEntity>();ew.allEq(MPUtil.allEQMapPre( guahaoxinxi, "guahaoxinxi")); GuahaoxinxiView guahaoxinxiView = guahaoxinxiService.selectView(ew);return R.ok("查詢掛號信息成功").put("data", guahaoxinxiView);}/*** 后端詳情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id){GuahaoxinxiEntity guahaoxinxi = guahaoxinxiService.selectById(id);return R.ok().put("data", guahaoxinxi);}/*** 前端詳情*/@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id){GuahaoxinxiEntity guahaoxinxi = guahaoxinxiService.selectById(id);return R.ok().put("data", guahaoxinxi);}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody GuahaoxinxiEntity guahaoxinxi, HttpServletRequest request){guahaoxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(guahaoxinxi);guahaoxinxiService.insert(guahaoxinxi);return R.ok();}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody GuahaoxinxiEntity guahaoxinxi, HttpServletRequest request){guahaoxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(guahaoxinxi);guahaoxinxiService.insert(guahaoxinxi);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody GuahaoxinxiEntity guahaoxinxi, HttpServletRequest request){//ValidatorUtils.validateEntity(guahaoxinxi);guahaoxinxiService.updateById(guahaoxinxi);//全部更新return R.ok();}/*** 刪除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){guahaoxinxiService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 提醒接口*/@RequestMapping("/remind/{columnName}/{type}")public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, @PathVariable("type") String type,@RequestParam Map<String, Object> map) {map.put("column", columnName);map.put("type", type);if(type.equals("2")) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Calendar c = Calendar.getInstance();Date remindStartDate = null;Date remindEndDate = null;if(map.get("remindstart")!=null) {Integer remindStart = Integer.parseInt(map.get("remindstart").toString());c.setTime(new Date()); c.add(Calendar.DAY_OF_MONTH,remindStart);remindStartDate = c.getTime();map.put("remindstart", sdf.format(remindStartDate));}if(map.get("remindend")!=null) {Integer remindEnd = Integer.parseInt(map.get("remindend").toString());c.setTime(new Date());c.add(Calendar.DAY_OF_MONTH,remindEnd);remindEndDate = c.getTime();map.put("remindend", sdf.format(remindEndDate));}}Wrapper<GuahaoxinxiEntity> wrapper = new EntityWrapper<GuahaoxinxiEntity>();if(map.get("remindstart")!=null) {wrapper.ge(columnName, map.get("remindstart"));}if(map.get("remindend")!=null) {wrapper.le(columnName, map.get("remindend"));}String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("yonghu")) {wrapper.eq("yonghuzhanghao", (String)request.getSession().getAttribute("username"));}if(tableName.equals("yisheng")) {wrapper.eq("yishenggonghao", (String)request.getSession().getAttribute("username"));}int count = guahaoxinxiService.selectCount(wrapper);return R.ok().put("count", count);}} /*** 上傳文件映射表*/ @RestController @RequestMapping("file") @SuppressWarnings({"unchecked","rawtypes"}) public class FileController{@Autowiredprivate ConfigService configService;/*** 上傳文件*/@Async@RequestMapping("/upload")public R upload(@RequestParam("file") MultipartFile file,String type) throws Exception {if (file.isEmpty()) {throw new EIException("上傳文件不能為空");}String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);File upload = new File("D:/work/");if(!upload.exists()) {upload.mkdirs();}String fileName = new Date().getTime()+"."+fileExt;File dest = new File(upload+"/"+fileName);file.transferTo(dest);if(StringUtils.isNotBlank(type) && type.equals("1")) {ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));if(configEntity==null) {configEntity = new ConfigEntity();configEntity.setName("faceFile");configEntity.setValue(fileName);} else {configEntity.setValue(fileName);}configService.insertOrUpdate(configEntity);}return R.ok().put("file", fileName);}/*** 下載文件*/@IgnoreAuth@RequestMapping("/download")public ResponseEntity<byte[]> download(@RequestParam String fileName) {try {File path = new File(ResourceUtils.getURL("classpath:static").getPath());if(!path.exists()) {path = new File("");}File upload = new File(path.getAbsolutePath(),"/upload/");if(!upload.exists()) {upload.mkdirs();}File file = new File(upload.getAbsolutePath()+"/"+fileName);if(file.exists()){/*if(!fileService.canRead(file, SessionManager.getSessionUser())){getResponse().sendError(403);}*/HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); headers.setContentDispositionFormData("attachment", fileName); return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);}} catch (IOException e) {e.printStackTrace();}return new ResponseEntity<byte[]>(HttpStatus.INTERNAL_SERVER_ERROR);}}論文參考:
源碼獲取:
大家點贊、收藏、關注、評論啦 、查看👇🏻👇🏻👇🏻微信公眾號獲取聯系方式👇🏻👇🏻👇🏻
打卡 文章 更新?253/? 365天
?精彩專欄推薦訂閱:在下方專欄👇🏻👇🏻👇🏻👇🏻
Java項目精品實戰案例《100套》
web前端期末大作業網頁實戰《100套》
總結
以上是生活随笔為你收集整理的基于Java+SpringBoot+vue+element实现前后端分离牙科诊所管理系统详细设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ❤️六W字《计算机基础知识》(七)(建议
- 下一篇: HTML+CSS+JS实现echarts