王靜 蔣晨昊
摘要:隨著科學(xué)技術(shù)的不斷發(fā)展和進(jìn)步,計(jì)算機(jī)信息系統(tǒng)管理與技術(shù)規(guī)模日益壯大。如今,各個(gè)領(lǐng)域的專(zhuān)業(yè)人員已經(jīng)廣泛了解并熟悉得知現(xiàn)代信息的管理及技術(shù),在計(jì)算機(jī)領(lǐng)域發(fā)展也逐步走到在行業(yè)前列。計(jì)算機(jī)管理技術(shù)應(yīng)用已經(jīng)深深融入各行各業(yè)當(dāng)中,充當(dāng)著十分重要的角色。用計(jì)算機(jī)進(jìn)行管理具有足夠多的優(yōu)點(diǎn):信息檢索效率大大提高、信息查找方便、運(yùn)行結(jié)果可靠、能夠存儲(chǔ)更多信息、保密性高、成本低等優(yōu)點(diǎn)。該系統(tǒng)使用SSM(Spring+SpringMVC+Mybatis)框架,用Navicat for MySQL軟件來(lái)進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì),它完全可以兼容多種操作系統(tǒng),并且采用了完全面向?qū)ο蟮亩嗑€(xiàn)程編程,運(yùn)行速度相對(duì)更快。
關(guān)鍵詞:SSM框架;MySQL;后臺(tái)管理系統(tǒng)
中圖分類(lèi)號(hào):TP311? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2022)16-0014-05
1 引言
在當(dāng)今信息化快速發(fā)展的時(shí)代,互聯(lián)網(wǎng)技術(shù)在各個(gè)領(lǐng)域嶄露頭角,影響著人們生活的方方面面。本文設(shè)計(jì)并開(kāi)發(fā)基于現(xiàn)代互聯(lián)網(wǎng)技術(shù)的自治區(qū)藥檢院綜合數(shù)據(jù)庫(kù)管理系統(tǒng),通過(guò)對(duì)大量不同類(lèi)別的執(zhí)行標(biāo)準(zhǔn)、報(bào)告書(shū)等文件進(jìn)行統(tǒng)一管理,使效率更加高效,文件管理更加準(zhǔn)確[1]。
2 需求分析
基于SSM的自治區(qū)藥檢院綜合數(shù)據(jù)庫(kù)管理系統(tǒng)提供一個(gè)可供用戶(hù)、管理員使用的后臺(tái)實(shí)時(shí)管理系統(tǒng),該系統(tǒng)在開(kāi)發(fā)過(guò)程中前后端不分離,使項(xiàng)目更容易進(jìn)行。該系統(tǒng)功能主要被分為如下兩大類(lèi)部分:管理員和普通用戶(hù)。其中管理員又分為最高等級(jí)管理員和模塊管理員,最高等級(jí)管理員負(fù)責(zé)對(duì)所有用戶(hù)、所有文件進(jìn)行管理操作,模塊管理員單獨(dú)對(duì)一個(gè)模塊進(jìn)行管理操作;普通用戶(hù)實(shí)現(xiàn)對(duì)文件的查看、收藏等功能[2]。本系統(tǒng)根據(jù)需求進(jìn)行如下設(shè)計(jì):
1)網(wǎng)站主頁(yè):用于用戶(hù)登錄、注冊(cè)等操作。
2)管理系統(tǒng)頁(yè)面:對(duì)該用戶(hù)個(gè)人信息進(jìn)行管理、并且包含執(zhí)行標(biāo)準(zhǔn)庫(kù)、資質(zhì)庫(kù)、報(bào)告書(shū)原始記錄庫(kù)、原始記錄模板庫(kù)模塊內(nèi)容,分別用于對(duì)不同信息進(jìn)行管理。
3)各個(gè)模塊都包含文件上傳及下載功能,用于實(shí)現(xiàn)對(duì)不同文件的管理操作,同時(shí)包含對(duì)過(guò)期/作廢文件的處理操作。
4)系統(tǒng)程序代碼統(tǒng)一,方便之后的系統(tǒng)維護(hù)升級(jí)。
3 主要技術(shù)介紹
3.1 SSM簡(jiǎn)介
SSM框架,即Spring+Spring和MVC+MyBatis的有效整合,搭建廣泛應(yīng)用于目前各種大型復(fù)雜的企業(yè)級(jí)開(kāi)發(fā)應(yīng)用的系統(tǒng)環(huán)境中,當(dāng)前國(guó)內(nèi)比較廣泛盛行的主要是Java EE企業(yè)級(jí)框架[3]。Spring就像是在整個(gè)項(xiàng)目庫(kù)環(huán)境中被用來(lái)裝配的JavaBean的一個(gè)大數(shù)據(jù)工廠,在這個(gè)配置的文件庫(kù)中可以直接指定對(duì)象并通過(guò)使用其中一些特定對(duì)象類(lèi)型中的參數(shù)去調(diào)用實(shí)體類(lèi)的構(gòu)造方法來(lái)實(shí)例化對(duì)象; SpringMVC的核心作用是攔截用戶(hù)請(qǐng)求,作為承擔(dān)中介或是前臺(tái)這樣的職責(zé)的核心是Servlet,即DispatcherServlet,它將用戶(hù)發(fā)送的請(qǐng)求信息都能通過(guò)HandlerMapping功能去自動(dòng)地匹配Controller,Controller就是具體的對(duì)應(yīng)于每個(gè)請(qǐng)求層所能被執(zhí)行到的操作,最終會(huì)把每個(gè)Model層執(zhí)行的最終結(jié)果自動(dòng)地返回給每個(gè)用戶(hù);MyBatis是一個(gè)對(duì)JDBC層的封裝[4]。
3.2 JDBC簡(jiǎn)介
JDBC是Java語(yǔ)言開(kāi)發(fā)中的用來(lái)規(guī)范客戶(hù)端程序如何快速訪問(wèn)數(shù)據(jù)庫(kù)資源的一個(gè)應(yīng)用程序接口,提供了一系列諸如快速查詢(xún)數(shù)據(jù)庫(kù)和快速更新數(shù)據(jù)庫(kù)資源中的數(shù)據(jù)等的操作方法。JDBC接口作為一種低端數(shù)據(jù)庫(kù)接口,能夠直接實(shí)現(xiàn)在數(shù)據(jù)庫(kù)上快速運(yùn)用的SQL命令語(yǔ)句操作。而且,在EJB、容器持續(xù)以及JMS等調(diào)用方式環(huán)境下,JDBC也能夠間接地通過(guò)對(duì)My SQL的數(shù)據(jù)庫(kù)進(jìn)行操作來(lái)自動(dòng)實(shí)現(xiàn)這些高級(jí)數(shù)據(jù)庫(kù)調(diào)用。
3.3 MySQL數(shù)據(jù)庫(kù)簡(jiǎn)介
數(shù)據(jù)庫(kù)在信息管理系統(tǒng)中作為關(guān)鍵的一環(huán),通常被看作系統(tǒng)的核心?;赟SM的自治區(qū)藥檢院綜合數(shù)據(jù)庫(kù)管理系統(tǒng)采用MySQL數(shù)據(jù)庫(kù)來(lái)幫助進(jìn)行更高效的數(shù)據(jù)管理。其中,MySQL數(shù)據(jù)庫(kù)由于其數(shù)據(jù)體積量小、速度快等獨(dú)特優(yōu)點(diǎn)目前已經(jīng)成功在國(guó)際很多電子商務(wù)領(lǐng)域嶄露頭角[5-6]。數(shù)據(jù)庫(kù)管理系統(tǒng)和接口如圖1所示。
4 系統(tǒng)設(shè)計(jì)
4.1 數(shù)據(jù)庫(kù)設(shè)計(jì)
系統(tǒng)使用MySQL數(shù)據(jù)庫(kù)建立了6張數(shù)據(jù)表,分別是用戶(hù)表、收藏表、執(zhí)行標(biāo)準(zhǔn)表、資質(zhì)庫(kù)表、報(bào)告書(shū)記錄庫(kù)表、原始模板庫(kù)表。主要數(shù)據(jù)庫(kù)表介紹如下:
1)用戶(hù)表。用戶(hù)表主要記錄自治區(qū)藥檢院綜合數(shù)據(jù)庫(kù)管理員及用戶(hù)的信息,如用戶(hù)名username、真實(shí)姓名rname、所屬分類(lèi)usrp、密碼password、權(quán)限status等。
2)收藏表。收藏表主要針對(duì)用戶(hù)使用,其中包含兩個(gè)字段userid,shoucangbiaoid。前者用來(lái)記錄當(dāng)前用戶(hù)的id,后者記錄當(dāng)前用戶(hù)所收藏的文件編號(hào),方便用戶(hù)進(jìn)行查看。
3)執(zhí)行標(biāo)準(zhǔn)表。執(zhí)行標(biāo)準(zhǔn)表用來(lái)記錄各分類(lèi)執(zhí)行標(biāo)準(zhǔn)文件信息,如成冊(cè)書(shū)名、執(zhí)行標(biāo)準(zhǔn)編號(hào)、標(biāo)準(zhǔn)名稱(chēng)、類(lèi)別、發(fā)行日期、到期日期等。
4)資質(zhì)庫(kù)表。資質(zhì)庫(kù)表用來(lái)記錄資質(zhì)庫(kù)信息,如類(lèi)別、參數(shù)、樣品名稱(chēng)、標(biāo)準(zhǔn)編號(hào)等。
5)報(bào)告書(shū)記錄庫(kù)表。報(bào)告書(shū)記錄庫(kù)表用來(lái)記錄報(bào)告書(shū)信息,如報(bào)告書(shū)編號(hào)、樣品名稱(chēng)等。
6)原始模板庫(kù)表。原始模板庫(kù)表主要記錄原始記錄信息,如項(xiàng)目名稱(chēng)、受控編號(hào)、實(shí)施時(shí)間等。
4.2 功能模塊設(shè)計(jì)
系統(tǒng)根據(jù)其主要功能介紹可以分為4個(gè)基本系統(tǒng)模塊:公共模塊、用戶(hù)模塊、管理員模塊、子管理員模塊。功能模塊系統(tǒng)的一般設(shè)計(jì)及方法流程圖如圖2所示。系統(tǒng)總體功能的技術(shù)需求研究和方案分析總體流程如下:
1)公共模塊:用戶(hù)可通過(guò)注冊(cè)/登錄進(jìn)入系統(tǒng)(新注冊(cè)用戶(hù)需要管理員授權(quán)方可進(jìn)行正常登錄),管理員通過(guò)登錄進(jìn)入系統(tǒng),根據(jù)不同用戶(hù)權(quán)限進(jìn)入不同系統(tǒng)頁(yè)面。
2)用戶(hù)模塊:通過(guò)公共模塊進(jìn)入系統(tǒng)后,用戶(hù)界面展示個(gè)人信息管理、執(zhí)行標(biāo)準(zhǔn)庫(kù)信息、資質(zhì)庫(kù)信息、報(bào)告書(shū)記錄庫(kù)信息、原始模板庫(kù)信息。用戶(hù)可對(duì)自身個(gè)人信息進(jìn)行修改操作,包括真實(shí)姓名、密碼、簡(jiǎn)介等。并且可查看其余模塊的文件信息以及上傳文件內(nèi)容,不具備編輯、修改、下載等功能。而對(duì)于報(bào)告書(shū)記錄庫(kù)來(lái)說(shuō),用戶(hù)只能查看自己授權(quán)簽字的報(bào)告書(shū)信息。
3)管理員模塊:通過(guò)公共模塊進(jìn)入系統(tǒng),負(fù)責(zé)管理所有用戶(hù)的信息,權(quán)限分配等,負(fù)責(zé)對(duì)執(zhí)行標(biāo)準(zhǔn)庫(kù)信息、資質(zhì)庫(kù)信息、報(bào)告書(shū)記錄庫(kù)信息、原始模板庫(kù)信息進(jìn)行添加、修改、刪除等工作,并且可對(duì)文件進(jìn)行上傳下載等操作。
4)子管理員模塊:通過(guò)公共模塊進(jìn)入系統(tǒng),負(fù)責(zé)對(duì)自身文件進(jìn)行管理。如只可對(duì)執(zhí)行標(biāo)準(zhǔn)庫(kù)信息進(jìn)行添加、編輯、刪除等操作。
4.3 功能描述
1)公共模塊
①注冊(cè)頁(yè)面。注冊(cè)頁(yè)面包括用戶(hù)名、用戶(hù)分組、真實(shí)姓名、密碼、確認(rèn)密碼。注冊(cè)成功后才可以進(jìn)行登錄。
實(shí)現(xiàn)過(guò)程:通過(guò)form請(qǐng)求,輸入上述對(duì)應(yīng)信息后通過(guò)@RequestMapping注解信息傳遞到Controller層實(shí)現(xiàn)對(duì)數(shù)據(jù)轉(zhuǎn)發(fā)功能,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;
}
之后通過(guò)Dao層與數(shù)據(jù)庫(kù)交互,數(shù)據(jù)庫(kù)添加該用戶(hù)信息。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;
}
②登錄頁(yè)面。登錄頁(yè)面信息主要包括登錄用戶(hù)名、密碼、驗(yàn)證碼以及重置操作。登錄成功后進(jìn)入對(duì)應(yīng)模塊。
實(shí)現(xiàn)過(guò)程:通過(guò)輸入用戶(hù)名、密碼、驗(yàn)證碼,由@RequestMapping注解傳遞Controller層實(shí)現(xiàn)對(duì)數(shù)據(jù)轉(zhuǎn)發(fā)功能,之后傳遞至Dao層與數(shù)據(jù)進(jìn)行交互。具體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)用戶(hù)模塊
用戶(hù)模塊是用戶(hù)對(duì)自身個(gè)人信息進(jìn)行管理以及對(duì)各類(lèi)文件的查看、收藏功能。
①用戶(hù)可以對(duì)自身真實(shí)姓名、出生日期、密碼、頭像進(jìn)行修改功能。頭像上傳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;//使用時(shí)間戳進(jìn)行文件命名
String descPath = realPath + "/" + photoFileName;
System.out.println(descPath);
file.transferTo(new File(realPath, photoFileName));
//圖片路徑和文件名稱(chēng)保存到數(shù)據(jù)庫(kù)中
//根據(jù)用戶(hù)ID更新頭像
int i = userServiceImpl.updateUserPhoto(userid, "myphoto/"? + photoFileName);
②用戶(hù)擁有對(duì)各類(lèi)文件進(jìn)行查看、收藏的功能。其中收藏功能核心代碼如下:
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('請(qǐng)求服務(wù)器失?。?, {icon: 2});
return;
}
3)管理員模塊
管理員模塊主要功能分為以下幾點(diǎn):
①對(duì)用戶(hù)信息進(jìn)行修改,賦予或取消用戶(hù)登錄權(quán)限、下載文件權(quán)限。
②對(duì)各類(lèi)文件進(jìn)行添加、修改、刪除功能。
③對(duì)文件進(jìn)行上傳、修改或?qū)ξ募畔⑦M(jìn)行覆蓋功能。
④實(shí)現(xiàn)Excel數(shù)據(jù)上傳功能,但需嚴(yán)格按照提供模板進(jìn)行操作。
在這里,我們展示上傳文件、Excel數(shù)據(jù)上傳主要功能代碼,詳細(xì)如下:
上傳文件核心代碼:
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數(shù)據(jù)上傳核心代碼:
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)子管理員模塊
子管理員模塊僅是對(duì)其中任意一類(lèi)的文件進(jìn)行權(quán)限管理,其最主要的功能與最高級(jí)管理員模塊操作相同。包括對(duì)文件的添加、修訂、刪除、上傳、查看、下載等操作。以執(zhí)行標(biāo)準(zhǔn)為例:子管理員僅對(duì)執(zhí)行標(biāo)準(zhǔn)進(jìn)行管理,可以對(duì)成冊(cè)書(shū)名、執(zhí)行標(biāo)準(zhǔn)編號(hào)、標(biāo)準(zhǔn)名稱(chēng)、類(lèi)別、發(fā)行日期、有效期、狀態(tài)等字段進(jìn)行管理。具體如圖3所示:
4.4 系統(tǒng)交互圖
系統(tǒng)架構(gòu)中的工作流程:用戶(hù)在發(fā)送權(quán)限請(qǐng)求完畢后,由業(yè)務(wù)代理者將給權(quán)限管理者發(fā)送一條權(quán)限驗(yàn)證請(qǐng)求,權(quán)限管理者同時(shí)將接到請(qǐng)求發(fā)送給業(yè)務(wù)邏輯代理者,驗(yàn)證無(wú)誤后,將驗(yàn)證請(qǐng)求轉(zhuǎn)交到業(yè)務(wù)對(duì)象,否則返回消息。對(duì)于異常數(shù)據(jù)處理操作,異常數(shù)據(jù)處理操作對(duì)象可以將各種意外情況導(dǎo)致的故障信息進(jìn)行分析處理,然后將異常處理分析結(jié)果自動(dòng)返回到業(yè)務(wù)邏輯,最后再把故障數(shù)據(jù)處理操作結(jié)果返回到用戶(hù)界面,響應(yīng)用戶(hù)請(qǐng)求。系統(tǒng)架構(gòu)交互圖如圖4所示。
5 系統(tǒng)測(cè)試
對(duì)于軟件系統(tǒng)來(lái)說(shuō),由于系統(tǒng)測(cè)試要保障系統(tǒng)的穩(wěn)定運(yùn)行以及對(duì)系統(tǒng)安全性能評(píng)估,所以在系統(tǒng)開(kāi)發(fā)中最重要的部分即為系統(tǒng)測(cè)試。由于系統(tǒng)測(cè)試的目的是保障系統(tǒng)安全穩(wěn)定地運(yùn)行,則系統(tǒng)測(cè)試就應(yīng)該著重檢測(cè)系統(tǒng)中bug概率較大的區(qū)域以及項(xiàng)目中較為復(fù)雜的代碼部分。由此可見(jiàn),測(cè)試的目的就是在系統(tǒng)運(yùn)行過(guò)程中及時(shí)找出bug并且提供相應(yīng)的解決辦法的階段。基于SSM的自治區(qū)藥檢院綜合數(shù)據(jù)庫(kù)管理系統(tǒng)各模塊主要測(cè)試如下。
5.1 登錄功能測(cè)試(不包含驗(yàn)證碼)
5.2 用戶(hù)模塊測(cè)試
5.3 管理員模塊測(cè)試
5.4 子管理員模塊測(cè)試
5 結(jié)束語(yǔ)
自治區(qū)藥檢院綜合數(shù)據(jù)庫(kù)管理系統(tǒng)采用SSM+Tomcat+MySQL,基于SSM框架,更加方便地對(duì)大量文件進(jìn)行管理分類(lèi),大大節(jié)省了辦公人員的時(shí)間,讓用戶(hù)得到更大的便利。本系統(tǒng)很好地實(shí)現(xiàn)當(dāng)前所需的功能,并且頁(yè)面簡(jiǎn)潔,方便用戶(hù)操作,但仍有需要改進(jìn)的地方,在后續(xù)的工作中會(huì)根據(jù)用戶(hù)、管理員的需要添加相應(yīng)的功能,讓系統(tǒng)更加完善,并且會(huì)不斷進(jìn)行優(yōu)化、維護(hù),給用戶(hù)帶來(lái)更好的體驗(yàn)。
參考文獻(xiàn):
[1] 邢靜,王志剛,徐章博.基于SSM框架的文檔一體化管理系統(tǒng)研究[J].甘肅科技,2020,36(22):19-22.
[2] 劉茜穎,張艷紅.基于SSM的線(xiàn)上教育系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].電腦編程技巧與維護(hù),2021(10):45-46,59.
[3] 周游,張國(guó)華.基于SSM框架智慧養(yǎng)老系統(tǒng)設(shè)計(jì)[J].軟件,2021,42(10):47-49.
[4] 張弛,樸順姬.基于SSM框架的供暖收費(fèi)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2021,17(9):66-67,70.
[5] 鄒林辰.基于SSM的酒店管理系統(tǒng)開(kāi)發(fā)[J].科學(xué)技術(shù)創(chuàng)新,2020(32):55-56.
[6] 楊子鑫,余小蘭.基于SSM的農(nóng)產(chǎn)品銷(xiāo)售系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代信息科技,2021,5(15):33-35,39.
【通聯(lián)編輯:謝媛媛】