王靜 蔣晨昊



摘要:隨著科學技術的不斷發展和進步,計算機信息系統管理與技術規模日益壯大。如今,各個領域的專業人員已經廣泛了解并熟悉得知現代信息的管理及技術,在計算機領域發展也逐步走到在行業前列。計算機管理技術應用已經深深融入各行各業當中,充當著十分重要的角色。用計算機進行管理具有足夠多的優點:信息檢索效率大大提高、信息查找方便、運行結果可靠、能夠存儲更多信息、保密性高、成本低等優點。該系統使用SSM(Spring+SpringMVC+Mybatis)框架,用Navicat for MySQL軟件來進行數據庫設計,它完全可以兼容多種操作系統,并且采用了完全面向對象的多線程編程,運行速度相對更快。
關鍵詞:SSM框架;MySQL;后臺管理系統
中圖分類號:TP311? ? ? 文獻標識碼:A
文章編號:1009-3044(2022)16-0014-05
1 引言
在當今信息化快速發展的時代,互聯網技術在各個領域嶄露頭角,影響著人們生活的方方面面。本文設計并開發基于現代互聯網技術的自治區藥檢院綜合數據庫管理系統,通過對大量不同類別的執行標準、報告書等文件進行統一管理,使效率更加高效,文件管理更加準確[1]。
2 需求分析
基于SSM的自治區藥檢院綜合數據庫管理系統提供一個可供用戶、管理員使用的后臺實時管理系統,該系統在開發過程中前后端不分離,使項目更容易進行。該系統功能主要被分為如下兩大類部分:管理員和普通用戶。其中管理員又分為最高等級管理員和模塊管理員,最高等級管理員負責對所有用戶、所有文件進行管理操作,模塊管理員單獨對一個模塊進行管理操作;普通用戶實現對文件的查看、收藏等功能[2]。本系統根據需求進行如下設計:
1)網站主頁:用于用戶登錄、注冊等操作。
2)管理系統頁面:對該用戶個人信息進行管理、并且包含執行標準庫、資質庫、報告書原始記錄庫、原始記錄模板庫模塊內容,分別用于對不同信息進行管理。
3)各個模塊都包含文件上傳及下載功能,用于實現對不同文件的管理操作,同時包含對過期/作廢文件的處理操作。
4)系統程序代碼統一,方便之后的系統維護升級。
3 主要技術介紹
3.1 SSM簡介
SSM框架,即Spring+Spring和MVC+MyBatis的有效整合,搭建廣泛應用于目前各種大型復雜的企業級開發應用的系統環境中,當前國內比較廣泛盛行的主要是Java EE企業級框架[3]。Spring就像是在整個項目庫環境中被用來裝配的JavaBean的一個大數據工廠,在這個配置的文件庫中可以直接指定對象并通過使用其中一些特定對象類型中的參數去調用實體類的構造方法來實例化對象; SpringMVC的核心作用是攔截用戶請求,作為承擔中介或是前臺這樣的職責的核心是Servlet,即DispatcherServlet,它將用戶發送的請求信息都能通過HandlerMapping功能去自動地匹配Controller,Controller就是具體的對應于每個請求層所能被執行到的操作,最終會把每個Model層執行的最終結果自動地返回給每個用戶;MyBatis是一個對JDBC層的封裝[4]。
3.2 JDBC簡介
JDBC是Java語言開發中的用來規范客戶端程序如何快速訪問數據庫資源的一個應用程序接口,提供了一系列諸如快速查詢數據庫和快速更新數據庫資源中的數據等的操作方法。JDBC接口作為一種低端數據庫接口,能夠直接實現在數據庫上快速運用的SQL命令語句操作。而且,在EJB、容器持續以及JMS等調用方式環境下,JDBC也能夠間接地通過對My SQL的數據庫進行操作來自動實現這些高級數據庫調用。
3.3 MySQL數據庫簡介
數據庫在信息管理系統中作為關鍵的一環,通常被看作系統的核心。基于SSM的自治區藥檢院綜合數據庫管理系統采用MySQL數據庫來幫助進行更高效的數據管理。其中,MySQL數據庫由于其數據體積量小、速度快等獨特優點目前已經成功在國際很多電子商務領域嶄露頭角[5-6]。數據庫管理系統和接口如圖1所示。
4 系統設計
4.1 數據庫設計
系統使用MySQL數據庫建立了6張數據表,分別是用戶表、收藏表、執行標準表、資質庫表、報告書記錄庫表、原始模板庫表。主要數據庫表介紹如下:
1)用戶表。用戶表主要記錄自治區藥檢院綜合數據庫管理員及用戶的信息,如用戶名username、真實姓名rname、所屬分類usrp、密碼password、權限status等。
2)收藏表。收藏表主要針對用戶使用,其中包含兩個字段userid,shoucangbiaoid。前者用來記錄當前用戶的id,后者記錄當前用戶所收藏的文件編號,方便用戶進行查看。
3)執行標準表。執行標準表用來記錄各分類執行標準文件信息,如成冊書名、執行標準編號、標準名稱、類別、發行日期、到期日期等。
4)資質庫表。資質庫表用來記錄資質庫信息,如類別、參數、樣品名稱、標準編號等。
5)報告書記錄庫表。報告書記錄庫表用來記錄報告書信息,如報告書編號、樣品名稱等。
6)原始模板庫表。原始模板庫表主要記錄原始記錄信息,如項目名稱、受控編號、實施時間等。
4.2 功能模塊設計
系統根據其主要功能介紹可以分為4個基本系統模塊:公共模塊、用戶模塊、管理員模塊、子管理員模塊。功能模塊系統的一般設計及方法流程圖如圖2所示。系統總體功能的技術需求研究和方案分析總體流程如下:
1)公共模塊:用戶可通過注冊/登錄進入系統(新注冊用戶需要管理員授權方可進行正常登錄),管理員通過登錄進入系統,根據不同用戶權限進入不同系統頁面。
2)用戶模塊:通過公共模塊進入系統后,用戶界面展示個人信息管理、執行標準庫信息、資質庫信息、報告書記錄庫信息、原始模板庫信息。用戶可對自身個人信息進行修改操作,包括真實姓名、密碼、簡介等。并且可查看其余模塊的文件信息以及上傳文件內容,不具備編輯、修改、下載等功能。而對于報告書記錄庫來說,用戶只能查看自己授權簽字的報告書信息。
3)管理員模塊:通過公共模塊進入系統,負責管理所有用戶的信息,權限分配等,負責對執行標準庫信息、資質庫信息、報告書記錄庫信息、原始模板庫信息進行添加、修改、刪除等工作,并且可對文件進行上傳下載等操作。
4)子管理員模塊:通過公共模塊進入系統,負責對自身文件進行管理。如只可對執行標準庫信息進行添加、編輯、刪除等操作。
4.3 功能描述
1)公共模塊
①注冊頁面。注冊頁面包括用戶名、用戶分組、真實姓名、密碼、確認密碼。注冊成功后才可以進行登錄。
實現過程:通過form請求,輸入上述對應信息后通過@RequestMapping注解信息傳遞到Controller層實現對數據轉發功能,Controller層代碼如下:
@RequestMapping(value = "/register.do",method = RequestMethod.POST)
@ResponseBody
public int register(String uname,String usrp,String rname, String upwd){
Map
map.put("uname",uname);
map.put("usrp",usrp);
map.put("rname",rname);
map.put("upwd",upwd);
int register = userServiceImpl.register(map);
if(register==0)
return 0;
else
return 1;
}
之后通過Dao層與數據庫交互,數據庫添加該用戶信息。Dao層代碼如下:
@Override
public int register(Map
SqlSession sqlSession = sqlSessionFactoryBean.openSession(true);
String sql="com.isoft.mapping.User.register";
int insert = sqlSession.insert(sql, obj);
sqlSession.close();
return insert;
}
②登錄頁面。登錄頁面信息主要包括登錄用戶名、密碼、驗證碼以及重置操作。登錄成功后進入對應模塊。
實現過程:通過輸入用戶名、密碼、驗證碼,由@RequestMapping注解傳遞Controller層實現對數據轉發功能,之后傳遞至Dao層與數據進行交互。具體Controller層、Dao層代碼如下:
@RequestMapping(value = "/login.do",method = RequestMethod.POST)
@ResponseBody
public Map login(String uname, String upwd, HttpSession session){
Map
Map
if(login==null){
map.put("loginmsg",0);
return map;
}else{
map.put("loginmsg",1);
map.put("userid",login.get("user_id").toString());
map.put("rname",login.get("rname"));
map.put("download",login.get("download"));
session.setAttribute("userid",login.get("user_id").toString());
map.put("status",login.get("status").toString());
session.setAttribute("status",login.get("status").toString());
if(login.get("photo")==null||login.get("photo").toString().equals(""))
map.put("photo","myphoto/myphoto.jpg");
else
map.put("photo",login.get("photo").toString());
/* System.out.println(JSON.toJSONString(map));*/
return map;
}
}
@Override
public Map
SqlSession sqlSession = sqlSessionFactoryBean.openSession(true);
String sql="com.isoft.mapping.User.login";
Map
map.put("uname",uname);
map.put("upwd",upwd);
Map
sqlSession.close();
return rscount? ;
}
2)用戶模塊
用戶模塊是用戶對自身個人信息進行管理以及對各類文件的查看、收藏功能。
①用戶可以對自身真實姓名、出生日期、密碼、頭像進行修改功能。頭像上傳Controller核心代碼如下:
String fileName = file.getOriginalFilename();
String extName = fileName.substring(fileName.lastIndexOf("."));
List list = new ArrayList();
list.add(".jpg");
list.add(".png");
list.add(".gif");
list.add(".bmp");
list.add(".jpeg");
if (list.contains(extName.toLowerCase())){
String realPath = session.getServletContext().getRealPath("myphoto");
String photoFileName = new Date().getTime()+ extName;//使用時間戳進行文件命名
String descPath = realPath + "/" + photoFileName;
System.out.println(descPath);
file.transferTo(new File(realPath, photoFileName));
//圖片路徑和文件名稱保存到數據庫中
//根據用戶ID更新頭像
int i = userServiceImpl.updateUserPhoto(userid, "myphoto/"? + photoFileName);
②用戶擁有對各類文件進行查看、收藏的功能。其中收藏功能核心代碼如下:
if(iscollect>0){
$.ajax({
url: "file/cancelcollectFile.do",
method: "post",
dataType:"json",
data: {
"id": id,
"userid": sessionStorage.getItem("user_id"),
},
success: function (data){
if(data.code==0){
tr.children('td').eq(1).find(".layui-icon").attr("class","layui-icon layui-icon-star");
tr.children('td').eq(1).find(".layui-icon").attr("title","收藏文件");
}
if(data.code!=0){
layui.table.reload("id", {
where: {
"client_upload_user": sessionStorage.getItem("user_id")
}
});
layer.msg(data.msg, {icon: 2,time:2000});
return;
}
}, error: function (){
layer.msg('請求服務器失敗!', {icon: 2});
return;
}
3)管理員模塊
管理員模塊主要功能分為以下幾點:
①對用戶信息進行修改,賦予或取消用戶登錄權限、下載文件權限。
②對各類文件進行添加、修改、刪除功能。
③對文件進行上傳、修改或對文件信息進行覆蓋功能。
④實現Excel數據上傳功能,但需嚴格按照提供模板進行操作。
在這里,我們展示上傳文件、Excel數據上傳主要功能代碼,詳細如下:
上傳文件核心代碼:
String sql = "com.isoft.mapping.File.insertBgsFileInfo";
//上傳文件
String realPath = session.getServletContext().getRealPath("/Bgs/");
path=(realPath+ UUID.randomUUID()+file.getOriginalFilename());
String newpath=path.replace("\\","/");
file.transferTo(new File(newpath));
//錄入信息
bgsInfo.setBaocundizhi(newpath);
int update = sqlSession.insert(sql, bgsInfo);
sqlSession.commit();
String sc="succ";
sqlSession.close();
return sc;
Excel數據上傳核心代碼:
InputStream is = file.getInputStream();? ? ? ? ?HashMap
is.close();
is = null;
ZZKInfo ci = new ZZKInfo();
for (String a : key1.keySet()){
HashMap
//System.out.println("Key = " + a + ", Value = " + key2);
ci.setLeibie(a);
for (String b : key2.keySet()){
HashMap
ci.setPinzhong(b);
for (String c : key3.keySet()){
HashMap
ci.setCanshu(c);
for (String d : key4.keySet()){
String key5 = key4.get(d);
ci.setJiancebiaozhunmingcheng(key5);
ci.setBiaozhunbianhao(d);
int da=clientServiceImpl.uploadClient(ci);
}
}
}
}
4)子管理員模塊
子管理員模塊僅是對其中任意一類的文件進行權限管理,其最主要的功能與最高級管理員模塊操作相同。包括對文件的添加、修訂、刪除、上傳、查看、下載等操作。以執行標準為例:子管理員僅對執行標準進行管理,可以對成冊書名、執行標準編號、標準名稱、類別、發行日期、有效期、狀態等字段進行管理。具體如圖3所示:
4.4 系統交互圖
系統架構中的工作流程:用戶在發送權限請求完畢后,由業務代理者將給權限管理者發送一條權限驗證請求,權限管理者同時將接到請求發送給業務邏輯代理者,驗證無誤后,將驗證請求轉交到業務對象,否則返回消息。對于異常數據處理操作,異常數據處理操作對象可以將各種意外情況導致的故障信息進行分析處理,然后將異常處理分析結果自動返回到業務邏輯,最后再把故障數據處理操作結果返回到用戶界面,響應用戶請求。系統架構交互圖如圖4所示。
5 系統測試
對于軟件系統來說,由于系統測試要保障系統的穩定運行以及對系統安全性能評估,所以在系統開發中最重要的部分即為系統測試。由于系統測試的目的是保障系統安全穩定地運行,則系統測試就應該著重檢測系統中bug概率較大的區域以及項目中較為復雜的代碼部分。由此可見,測試的目的就是在系統運行過程中及時找出bug并且提供相應的解決辦法的階段。基于SSM的自治區藥檢院綜合數據庫管理系統各模塊主要測試如下。
5.1 登錄功能測試(不包含驗證碼)
5.2 用戶模塊測試
5.3 管理員模塊測試
5.4 子管理員模塊測試
5 結束語
自治區藥檢院綜合數據庫管理系統采用SSM+Tomcat+MySQL,基于SSM框架,更加方便地對大量文件進行管理分類,大大節省了辦公人員的時間,讓用戶得到更大的便利。本系統很好地實現當前所需的功能,并且頁面簡潔,方便用戶操作,但仍有需要改進的地方,在后續的工作中會根據用戶、管理員的需要添加相應的功能,讓系統更加完善,并且會不斷進行優化、維護,給用戶帶來更好的體驗。
參考文獻:
[1] 邢靜,王志剛,徐章博.基于SSM框架的文檔一體化管理系統研究[J].甘肅科技,2020,36(22):19-22.
[2] 劉茜穎,張艷紅.基于SSM的線上教育系統設計與實現[J].電腦編程技巧與維護,2021(10):45-46,59.
[3] 周游,張國華.基于SSM框架智慧養老系統設計[J].軟件,2021,42(10):47-49.
[4] 張弛,樸順姬.基于SSM框架的供暖收費系統設計與實現[J].電腦知識與技術,2021,17(9):66-67,70.
[5] 鄒林辰.基于SSM的酒店管理系統開發[J].科學技術創新,2020(32):55-56.
[6] 楊子鑫,余小蘭.基于SSM的農產品銷售系統的設計與實現[J].現代信息科技,2021,5(15):33-35,39.
【通聯編輯:謝媛媛】