蔣銀虎
關(guān)鍵詞:請假管理系統(tǒng);UML;活動(dòng)圖;E-R圖;ASP.NET
中圖分類號:TP311 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號:1009-3044(2023)21-0038-04
0 引言
目前,部分高校學(xué)生請假仍然是以傳統(tǒng)的手工紙質(zhì)簽批方法為主,以昆明幼兒師范高等??茖W(xué)校為例,學(xué)生反映最為突出的問題之一就是請假問題,學(xué)生撰寫申請條,需要找輔導(dǎo)員、學(xué)院甚至是學(xué)生處進(jìn)行簽字審批,審批完成后,還需向宿舍管理員進(jìn)行反饋,這樣做效率低、程序復(fù)雜,給學(xué)生、輔導(dǎo)員、學(xué)院、學(xué)生處帶來了很多的困擾。使用UML建模,首先需要描述系統(tǒng)需求,然后根據(jù)需求建立系統(tǒng)的靜態(tài)模型,構(gòu)建系統(tǒng)結(jié)構(gòu),最后補(bǔ)充系統(tǒng)的行為[1]。文章結(jié)合學(xué)校的實(shí)際情況,通過使用UML模型中的用例圖、類圖、活動(dòng)圖對整個(gè)系統(tǒng)進(jìn)行了分析與設(shè)計(jì),構(gòu)建了系統(tǒng)的初步模型,同時(shí),使用E-R圖構(gòu)建了系統(tǒng)數(shù)據(jù)庫的實(shí)體關(guān)系模型,使用ASP.NET對系統(tǒng)進(jìn)行了實(shí)現(xiàn)。
1 需求分析
1.1 問題描述
根據(jù)學(xué)校的實(shí)際,學(xué)生向輔導(dǎo)員提出請假申請,輔導(dǎo)員進(jìn)行審批,如果請假的天數(shù)大于2天,輔導(dǎo)員批準(zhǔn)后還需由學(xué)院進(jìn)行審批,如果請假的天數(shù)大于5天,學(xué)院批準(zhǔn)后還需要由學(xué)生處進(jìn)行審批,審批完成后學(xué)生才能請假。同時(shí),輔導(dǎo)員需把完成請假手續(xù)的學(xué)生名單向宿管員人員報(bào)備。
1.2 系統(tǒng)用例圖
在UML模型中,用例圖是用戶與系統(tǒng)交互最簡單的表示形式,展現(xiàn)了系統(tǒng)中的用例、參與者以及它們兩者之間的關(guān)系[2]。根據(jù)需求分析中問題的描述,繪制系統(tǒng)用例圖如圖1。
系統(tǒng)中共有5個(gè)參與者:學(xué)生、輔導(dǎo)員、學(xué)院管理人員、學(xué)生處管理人員和宿管人員,這些都是用戶的子類,繼承了用戶的屬性和方法,可進(jìn)行登錄和個(gè)人信息管理操作。學(xué)生主要在系統(tǒng)中提出請假申請,輔導(dǎo)員、學(xué)院管理人員、學(xué)生處管理人員根據(jù)學(xué)生提交的請假信息進(jìn)行審批,如果批準(zhǔn)了,則學(xué)生的請假信息會(huì)推送給宿管人員。
2 系統(tǒng)總體設(shè)計(jì)
2.1 總體類圖設(shè)計(jì)
類圖是邏輯視圖的重要組成部分,用于對系統(tǒng)的靜態(tài)結(jié)構(gòu)建模[3]。它表示系統(tǒng)中類的屬性與方法,以及類與類之間的關(guān)系。
根據(jù)系統(tǒng)的需求分析,系統(tǒng)中共有9個(gè)類,分別為用戶類、學(xué)生類、輔導(dǎo)員類、學(xué)院管理人員類、學(xué)生處管理人員類、宿管人員類、班級類、請假信息類。其中學(xué)生類、輔導(dǎo)員類、學(xué)院管理人員類、學(xué)生處管理人員類、宿管人員類是用戶類的子類,繼承了用戶類的屬性和方法,又有一些自己的屬性和方法。在屬性上,學(xué)生是屬于班級的,輔導(dǎo)員是屬于學(xué)院的。在方法上,學(xué)生類有提出請假申請的方法,而輔導(dǎo)員類、學(xué)院管理人員類、學(xué)生處管理人員類有審批學(xué)生請假信息的方法。而宿管人員類有查詢學(xué)生請假信息的方法。學(xué)生類、輔導(dǎo)員類與班級類之間存在聚合的關(guān)系,學(xué)院管理人員類與學(xué)院類也存在著聚合的關(guān)系。學(xué)生類、輔導(dǎo)員類、學(xué)院管理人員類、學(xué)生處管理人員類、宿管人員類都會(huì)使用到請假信息類,因此它們之間存在著依賴的關(guān)系。
2.2 系統(tǒng)總體活動(dòng)圖設(shè)計(jì)
活動(dòng)圖是一種表述過程機(jī)理、業(yè)務(wù)過程以及工作流的技術(shù)[4]。它用來描述系統(tǒng)中活動(dòng)的順序和流程,是UML進(jìn)行系統(tǒng)動(dòng)態(tài)建模的常用工具。根據(jù)需求分析、系統(tǒng)用例圖和系統(tǒng)的整體類圖,設(shè)計(jì)了請假系統(tǒng)的總體活動(dòng)圖,如圖3。
學(xué)生向輔導(dǎo)員提出請假申請,輔導(dǎo)員對申請進(jìn)行審批,如果不批準(zhǔn)則活動(dòng)結(jié)束,如果批準(zhǔn),系統(tǒng)判斷學(xué)生的請假天數(shù),如果不大于2天,則把請假信息反饋給宿管人員,活動(dòng)結(jié)束;如果請假天數(shù)大于2天,則申請將流到學(xué)院管理人員處,由學(xué)院管理人員再進(jìn)行審批,如果學(xué)院管理人員不批準(zhǔn)請假,則活動(dòng)結(jié)束,如果批準(zhǔn)請假,系統(tǒng)判斷學(xué)生的請假天數(shù),如果不大于5 天,則將請假信息反饋至宿管人員處,活動(dòng)結(jié)束;如果請假天數(shù)大于5天,則申請將流到學(xué)生處管理人員處,再由學(xué)生處管理人員進(jìn)行審批,如果學(xué)生處管理人員不批準(zhǔn),則活動(dòng)結(jié)束,如果批準(zhǔn)請假,則將請假信息反饋至宿管人員處,活動(dòng)結(jié)束。
3 系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)
3.1 E-R 模型設(shè)計(jì)
E-R模型為建立數(shù)據(jù)庫實(shí)體,以及實(shí)體間的關(guān)系提供了識(shí)別的解決方案[5]。根據(jù)總體圖和活動(dòng)圖的設(shè)計(jì),系統(tǒng)中共需7個(gè)數(shù)據(jù)庫的實(shí)體,分別為:學(xué)生信息、班級信息、學(xué)院信息、輔導(dǎo)員信息、學(xué)院管理人員信息、宿管人員信息、請假信息,具體的E-r 圖如圖4 所示。
圖4系統(tǒng)基本信息E-R圖中,描述了系統(tǒng)基本實(shí)體信息的關(guān)系。學(xué)生是屬于班級,1個(gè)班級有多名學(xué)生,而學(xué)生只能在1個(gè)班級,因此它們之間是1對多的關(guān)系;1個(gè)班級都有1個(gè)輔導(dǎo)員,但1個(gè)輔導(dǎo)員可以帶多個(gè)班級,所以它們之間是1多對的關(guān)系;班級屬于學(xué)院,1個(gè)學(xué)院有多個(gè)班級,所以它們是1對多的關(guān)系;輔導(dǎo)員和學(xué)院管理人員都屬于學(xué)院,1個(gè)學(xué)院有多名管理人員和輔導(dǎo)員,所以它們之間也是1對多的關(guān)系。
圖5審批請假信息E-R圖中描述了系統(tǒng)中審批請假信息的實(shí)體關(guān)系。請假信息由學(xué)生來申請,1個(gè)學(xué)生可進(jìn)行多次請假,因此學(xué)生與請假信息之間是1 對多的關(guān)系;而請假信息需要輔導(dǎo)員、學(xué)院管理人員、學(xué)生處管理人員進(jìn)行審批,每個(gè)審批人員都會(huì)審批多條請假信息,因此它們之間是1對多的關(guān)系。
3.2 主要數(shù)據(jù)庫表的設(shè)計(jì)
4 系統(tǒng)實(shí)現(xiàn)
系統(tǒng)使用ASP.NET(C#) 語言進(jìn)行開發(fā),運(yùn)行于.Net平臺(tái)。
4.1 登錄模塊
系統(tǒng)分為前臺(tái)和后臺(tái),前臺(tái)主要由學(xué)生使用,后臺(tái)主要由學(xué)生管理人員使用。當(dāng)選擇學(xué)生用戶登錄成功后,系統(tǒng)進(jìn)入學(xué)生請假模塊。
當(dāng)用戶選擇后臺(tái)登錄后,如果是輔導(dǎo)員,則進(jìn)入到輔導(dǎo)員審批模塊;如果是學(xué)院管理人員,則進(jìn)入學(xué)院管理人員審批模塊;如果是學(xué)生處管理人員,則進(jìn)入學(xué)生處管理人員審批模塊;主要代碼如下:
switch(RoleId){
case 1: Response. Redirect("CounsellorRtifyMag.aspx");break;
case 2: Response. Redirect("CollegeRtifMag. aspx");break;
case 3:Response.Redirect("StudentManagementRti?fyMag.aspx");break;}
4.2 學(xué)生請假模塊
學(xué)生請假模塊主要由學(xué)生用戶填寫請假單,相當(dāng)在數(shù)據(jù)庫請假信息表中新增了一條記錄,其主要代碼如下:
string sqlinsert = string. Format("insert intoLeaveInfo(LeaveBeginTime, LeaveEndTime, LeaveRea?son, LeaveSysTime, CounsellorID, CounsellorRtify,CounsellorRtifyTime, CollegeID, CollegeRtify, Colleg?eRtifyTime, StudentManagementID, StudentManage?mentRtify, StudentManagementRtifyTime) values({0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12})", Studen?tID, LeaveBeginTime, LeaveEndTime, LeaveReason,LeaveSysTime, CounsellorID, CounsellorRtify, Counsel?lorRtifyTime, CollegeID, CollegeRtify, CollegeRtifyTime,StudentManagementID, StudentManagementRtify, Stu?dentManagementRtifyTime);
MySqlDataBase mysqlInsert = new MySqlData?Base();
if (mysqlInsert.Insert(sqlinsert, mysqlInsert.DBconn()) == true)
{ MessageLabel.Text = "請假申請成功!等待審批"; }
else MessageLabel.Text = mysqlInsert.ErrorMessage;
其中,MySQLDataBase 是MySQL 數(shù)據(jù)庫的操作類,用于操作MySQL數(shù)據(jù)庫,主要有Insert()、Update()、Delete()、Select()這幾個(gè)方法;其中Insert()方法用于執(zhí)行數(shù)據(jù)庫中的插入語句;Update()方法用于執(zhí)行數(shù)據(jù)庫中的更新語句;Delete()方法用于執(zhí)行數(shù)據(jù)庫中的刪除語句;Select()方法用于執(zhí)行數(shù)據(jù)庫中的查詢語句。
4.3 輔導(dǎo)員審批模塊
輔導(dǎo)員進(jìn)入審批模塊后,對所管理學(xué)生的請假信息進(jìn)行審批,把數(shù)據(jù)庫字段中CounsellorRtify修改為true或者false,同時(shí),將班主任的審批時(shí)間設(shè)為當(dāng)前時(shí)間,可使用MySQL數(shù)據(jù)庫中的函數(shù)now()來獲取當(dāng)前時(shí)間。最后,如果審批成功則返回成功提示,如果失敗則返回錯(cuò)誤的原因。其主要代碼如下:
string sqlupdate = string.Format("update LeaveInfoset CounsellorRtify= {0}, CounsellorRtifyTime=now()where LeaveID={1}",counsellorRtify, LeaveID);
MySqlDataBase mysqlUpdate = new MySqlData?Base();
if (mysqlUpdate. Update(sqlupdate, mysqlUpdate.DBconn()) == true)
{MessageLabel.Text = "審批成功"; }
else MessageLabel.Text = mysqlUpdate.ErrorMes?sage;
4.4 學(xué)院管理人員審批模塊
當(dāng)請假的時(shí)間大于等于3天并且輔導(dǎo)員已經(jīng)同意時(shí),才會(huì)由學(xué)院管理人員來審批,判斷請假時(shí)間大于等于3天且輔導(dǎo)員已經(jīng)同意可以使用以下代碼:
string sqClollegeSelect = string. Format("select *from leaveinfo where CounsellorRtify=true and CollegeID={0}", collegeID);;//取出輔導(dǎo)員已同意請假并且由該學(xué)院管理人員進(jìn)行審批學(xué)生假條的SQL語句
MySqlDataBase mysqlSelectCollege = new MySql?DataBase();
DataSet ds = mysqlSelectCollege. Select(sqClolleg?eSelect, mysqlSelectCollege.DBconn());
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{ if ((Convert. ToDateTime(ds. Tables[0]. Rows[i]["LeaveEndTime"]) - Convert.ToDateTime(ds.Tables[0].Rows[i]["LeaveBeginTime"])).Days < 3)
s.Tables[0].Rows.RemoveAt(i);//將請假時(shí)間在3天內(nèi)的數(shù)據(jù)行從ds中移除;} }
GridView1.DataSource = ds;
GridView1.DataBind();//將數(shù)據(jù)顯示在GridView1 控件內(nèi)
當(dāng)請假天數(shù)大于等于3天并且輔導(dǎo)員同意請假申請時(shí),由學(xué)院管理人員來進(jìn)行審批,把數(shù)據(jù)庫字段CollegeRtify修改為true或者false,主要代碼如下:
string sqlUpdateCollegeRtify = string. Format("up?date LeaveInfo set CollegeRtify= {0}, CollegeRtifyTime=now() where LeaveID={1}", collegeRtify, LeaveID);
MySqlDataBase mysqlUpdate = new MySqlData?Base();
if (mysqlUpdate. Update(sqlUpdateCollegeRtify,mysqlUpdate.DBconn()) == true)
{ MessageLabel.Text = "審批成功"; }
else MessageLabel.Text = mysqlUpdate.ErrorMes?sage;
4.5 學(xué)生處管理人員審批模塊
當(dāng)請假的時(shí)間大于5天并且輔導(dǎo)員和學(xué)院管理人員都同意請假申請時(shí),才會(huì)由學(xué)生處管理人員審批,判斷是否由學(xué)生處管理人員審批的代碼與判斷是否由學(xué)院管理人員進(jìn)行審批的代碼相似,在SQL語句中加入“StudentManagementRtify=true”的判定語句,在for 循環(huán)語句內(nèi)判斷請假天數(shù)改為“>5”。
當(dāng)請假天數(shù)大于5天且輔導(dǎo)員和學(xué)院管理人員都同意請假申請時(shí),將由學(xué)生處管理人員進(jìn)行審批,把數(shù)據(jù)庫字段StudentManagementRtify 修改為true或者false,主要代碼如下:
string sqlUpdateStudentManagementRtify = string.Format("update LeaveInfo set StudentManagementRtify={0},StudentManagementRtifyTime=now() where LeaveID={1}", studentManagementRtify, LeaveID);
MySqlDataBase mysqlUpdate = new MySqlData?Base();
if (mysqlUpdate. Update(sqlUpdateStudentManage?mentRtify, mysqlUpdate.DBconn()) == true)
{ MessageLabel.Text = "審批成功"; }
else MessageLabel.Text = mysqlUpdate.ErrorMes?sage;
5 結(jié)束語
文章基于UML模型對昆明幼兒師范高等??茖W(xué)校學(xué)生請假系統(tǒng)進(jìn)行了分析、設(shè)計(jì)與實(shí)現(xiàn),使用用例圖對系統(tǒng)的角色與功能進(jìn)行描述;使用類圖對系統(tǒng)類以及類與類之間的關(guān)系進(jìn)行整體的設(shè)計(jì);使用活動(dòng)圖對系統(tǒng)中請假活動(dòng)和審批請假活動(dòng)進(jìn)行描述;使用E-R圖表述數(shù)據(jù)實(shí)體之間的關(guān)系;使用ASP.NET對系統(tǒng)進(jìn)行實(shí)現(xiàn)。通過對高校請假系統(tǒng)的分析設(shè)計(jì)與實(shí)現(xiàn),使學(xué)生的請假更為高效,輔導(dǎo)員、學(xué)院、學(xué)生處審批更為及時(shí),進(jìn)一步提高了學(xué)生管理的效率。今后,將進(jìn)一步完善系統(tǒng),例如與任課教師的課堂點(diǎn)名結(jié)合,繼續(xù)推進(jìn)學(xué)校的信息化發(fā)展水平。