超详细的《防疫健康管理软件》开发报告奉上!【文末获取完整源码】
《學生防疫信息管理軟件》是基于C#語言開發(fā)的一款為監(jiān)控和管理學生疫情信息而開發(fā)的應用型軟件,開發(fā)環(huán)境為Visual Studio 2019 版,使用C#Winform窗體進行開發(fā)。是集成前端交互界面、后端數據處理和信息文件存儲為一體的軟件項目。
目錄
軟件簡介
1、開發(fā)背景
2、總體設計
2.1、設計思路
2.2、系統(tǒng)流程圖
2.3、軟件界面設計
3、詳細設計
3.1、學生信息錄入模塊
3.2、學生信息查詢模塊
3.3、學生每日體溫錄入模塊
3.4、學生信息修改模塊
3.5、學生信息刪除模塊
3.6、顯示所有學生信息模塊
3.7、顯示異常信息模塊
3.8、數據更新模塊
4、軟件開發(fā)總結
Hello!大家好,我是灰小猿!
最近在做一個C#的課設開發(fā),是一款用于學生健康防疫信息監(jiān)控的軟件,在這里和大家分享記錄一下軟件的結構和開發(fā)思路。
?
軟件簡介
《學生防疫信息管理軟件》是基于C#語言開發(fā)的一款為監(jiān)控和管理學生疫情信息而開發(fā)的應用型軟件,開發(fā)環(huán)境為Visual Studio 2019 版,使用C#Winform窗體進行開發(fā)。集成前端交互界面、后端數據處理和信息文件存儲為一體,在前端界面的設計上主要用到的技術有winform窗體的構建、panel容器的合理使用、子窗體切換效果的實現、單選框的實現及獨立頁面間的數據通信等;后端數據處理上主要用到的技術是:結構體、數組列表、全局變量、類的繼承、構造函數、IO流文件存儲、窗體的Controls函數等。前后端通過交互從而實現模塊間的相互通信。同時力求降低模塊耦合性、提高軟件的可維護性。
關鍵字:Winform窗體 ?結構體 ?模塊化設計
?
1、開發(fā)背景
隨著2020年新冠疫情的全球爆發(fā)和不斷蔓延,人們的社會生活受到嚴重的危害和損失,中國人民團結一心、頑強抗疫,在春暖花開之際終將疫情控制,盡最大的努力抑制了疫情的進一步蔓延,在最短的時間內有序的復工復產,但與此同時,中國人民的抗疫并沒有就此結束,全國各地的外來輸入病例仍有增長的噱頭,我們在生活的每一個角落依然與疫情斗爭著,因此對每一個的身體和發(fā)熱情況進行實時監(jiān)控是十分必然的舉措。尤其對于高校來說,來自全國各地的學子返校,做好高校的疫情防控是廣大高校確保學生生活安全的必要措施。
《學生防疫信息管理軟件》針對廣大搞笑的每一個學生,進行返校信息采集入庫,甄別學生信息、確認學生是否存在發(fā)熱和疫區(qū)風險,同時對學生每日體溫實時記錄,發(fā)現超標體溫,系統(tǒng)及時提醒并將信息單獨列出反饋。做到確保每一位學生的身體健康。有效提升校園防控力量。
?
2、總體設計
2.1、設計思路
《學生防疫信息管理軟件》的設計通過前端交互頁面錄入信息,后端通過結構體和數組列表對數據進行存儲,同時在前端有學生信息錄入、學生信息查詢、每日體溫錄入、學生信息修改、學生信息刪除、顯示所有信息和顯示健康狀態(tài)異常信息等模塊,通過用戶對相應模塊的選擇,在軟件后端對數據盡心相應的處理,由于各個窗體之間是無法直接進行數據傳輸的,這時我們需要建立相應的函數,對窗口類進行實例化,通過調用相應的函數對數據進行處理和在界面實時輸出。由于數據有序的存儲在數組列表中,因此所有的模塊化操作歸根結底都是對數組列表內部相應的數據的處理。
?
2.2、系統(tǒng)流程圖
?
2.3、軟件界面設計
軟件界面采用板塊分離的設計思路,界面分為上下左右四部分,上部為“學生防疫信息管理軟件”標題控件;左部分為panel1容器,內部存放各功能按鈕,右部分為panel2容器,用來存放和顯示各模塊的小窗體,下部分為panel3容器,內部顯示當前已錄入學生人數和異常學生人數,并且可以實時的通過數據更新按鈕對數據進行實時的更新。
?
3、詳細設計
3.1、學生信息錄入模塊
學生信息錄入窗體(formMainInput)通過子窗體在主窗體中顯示,用戶可以通過該窗體錄入學號、姓名、專業(yè)、班級、何地返校、何時返校、是否發(fā)熱、是否去過疫區(qū)等信息,在formMainInput的類中調用formMain類中的信息錄入函數,將數據傳入主類并且在主類中定義結構體,對相應的屬性在結構體中定義,并且將數據通過結構體在數組列表中進行存儲。同時系統(tǒng)后臺還會對用戶輸入的學號進行分析,分析是否出現學號重復的現象,如果學號重復,則進行彈窗提醒并且不對信息給予記錄。
//定義一個方法讓學生信息通過窗口錄入模塊public void inputStudentInfo(string num,string name, string major, string classa,string site, string time,string fever,string epidemic){Boolean different_info = true; //設定布爾值,默認錄入的信息不沖突foreach (Student sa in studentList){ //如果錄入的學號已經存在,則different_info為falseif (sa.num == num){different_info = false;MessageBox.Show("該生信息已錄入!\n請重新錄入!");}}if (different_info){Student s = new Student();s.num = num;s.name = name;s.major = major;s.classa = classa;s.site = site;s.time = time;s.fever = fever;s.epidemic = epidemic;studentList.Add(s); //將錄入的信息加入到數據列表//打開文件對其進行寫入FileStream fs = new FileStream(path, FileMode.Append);//設定寫入的字符流StreamWriter sw = new StreamWriter(fs, Encoding.Default);sw.WriteLine(s.num + "\t" + s.name + "\t" + s.major + "\t" + s.classa + "\t" + s.site + "\t" + s.time + "\t" + s.fever + "\t" + s.epidemic);sw.Close();fs.Close();MessageBox.Show("添加成功!", "提示");}}?
3.2、學生信息查詢模塊
學生信息查詢模塊(formMainInqir)基于學生學號進行查詢,在前端學生將學號輸入并確認查詢后,后臺會根據用戶輸入的學號遍歷存儲信息的數組列表,如果查詢到則會在以上的界面中顯示學生的信息,并且由于僅僅是查詢而并非是修改信息,所以信息的顯示是不可編輯的狀態(tài),如果遍歷數組列表后發(fā)現信息并沒有相同的學號,系統(tǒng)則會發(fā)出提示,提示用戶輸入的學號不存在。
//學生信息查詢模塊public void inquireStudentInfo(string num){Boolean exist_info = false; //設定布爾值,默認該生信息不存在foreach (Student sa in studentList){//如果查詢的學號已經存在,if (sa.num == num){exist_info = true;//顯示該生信息FormInfo formInfo = new FormInfo(sa.num,sa.name,sa.major,sa.classa,sa.site,sa.time,sa.fever,sa.epidemic,sa.everheat); //為顯示學生信息的窗體實例化formInfo.ShowDialog(); //顯示窗體}}if (!exist_info){MessageBox.Show("該生信息不存在!", "警告");}}?
3.3、學生每日體溫錄入模塊
學生每日體溫錄入模塊(formMainEver)基于學生學號對學生信息進行查詢,若在屬數組列表中查詢到相匹配的學生信息則會調取該學生信息,并且將獲取到用戶輸入的今日體溫,記錄在數組列表中,同時系統(tǒng)還會自動對用戶輸入的今日體溫進行判斷,如果錄入的體溫高于37.3度則會將該學生的信息列為異常發(fā)熱信息,之后便會將該學生信息突出顯示。如果未查詢到該學生學號信息則會提醒用戶學號輸入有誤!
//每日體溫錄入模塊public void everHeat(string num, string everheat){Boolean exist_info = false; //設定布爾值,默認該生信息不存在for(int i = 0;i<studentList.Count;i++){Student sa = (Student) studentList[i];//如果查詢的學號已經存在,if (sa.num == num){exist_info = true;//將今日體溫錄入//新建一個Student類型對象,接收該學生信息Student s = new Student();s.num = sa.num;s.name = sa.name;s.major = sa.major;s.classa = sa.classa;s.site = sa.site;s.time = sa.time;s.fever = sa.fever;s.epidemic = sa.epidemic;s.everheat = everheat;//如果該生體溫大于37.3度,則屬于發(fā)熱人群if (Convert.ToDouble(s.everheat) > 37.3){s.fever = "是";}studentList.Remove(studentList[i]); //將之前的信息刪除studentList.Add(s); //將新錄入的信息加入列表MessageBox.Show("今日體溫錄入成功!","提示");break;}}if (!exist_info){MessageBox.Show("該生信息不存在,\n無法錄入!", "警告");}}?
3.4、學生信息修改模塊
學生信息修改模塊(formMainAmend)同樣是基于學生輸入的學生學號對存儲的學生信息進行查詢,如果出現了與之相匹配的學號信息,則會將該學生信息在新窗口中進行顯示,此時該學生的信息是可編輯的狀態(tài),用戶可以根據之前錄入的信息對學生的信息進行修改,同時在系統(tǒng)后臺也會對用戶修改的信息進行及時的更新,并且對新錄入的信息重新打進行判斷,判斷信息是否是屬于異常信息或則發(fā)熱人群,倘若沒有查詢到該學號的信息,則會對用戶進行相應的提示。
//修改學生信息模塊public void amendInfo(string num){Boolean exist_info = false; //設定布爾值,默認該生信息不存在for (int i = 0; i < studentList.Count; i++){Student sa = (Student)studentList[i]; //將列表值強制轉換成Student型//如果修改的學號已經存在,if (sa.num == num){exist_info = true;FormAmend formAmend = new FormAmend(sa.num, sa.name,sa.major,sa.classa,sa.site,sa.time,sa.fever,sa.epidemic,sa.everheat);studentList.Remove(studentList[i]); //將信息刪除formAmend.ShowDialog();}}if (!exist_info){MessageBox.Show("該生信息不存在!", "警告");}}//將新修改的信息寫入public void amendStudentInfo(string num, string name, string major, string classa, string site, string time, string fever, string epidemic, string everHear){Student s = new Student();s.num = num;s.name = name;s.major = major;s.classa = classa;s.site = site;s.time = time;s.fever = fever;s.epidemic = epidemic;s.everheat = everHear;//為放置體溫未錄入,在這里設置異常拋出try{//如果該生體溫大于37.3度,則屬于發(fā)熱人群if (Convert.ToDouble(s.everheat) > 37.3){s.fever = "是";}}catch{}studentList.Add(s); //將錄入的信息加入到數據列表//打開文件對其進行寫入FileStream fs = new FileStream(path, FileMode.Append);//設定寫入的字符流StreamWriter sw = new StreamWriter(fs, Encoding.Default);sw.WriteLine(s.num + "\t" + s.name + "\t" + s.major + "\t" + s.classa + "\t" + s.site + "\t" + s.time + "\t" + s.fever + "\t" + s.epidemic);sw.Close();fs.Close();MessageBox.Show("修改成功!", "提示");}?
3.5、學生信息刪除模塊
學生信息刪除模塊(formMainRemove)基于學生學號對學生信息進行查詢,如果查詢到該學生的信息,則會對用戶進行二次的確認,確認用戶是否真的刪除該信息,如果用戶選擇確認刪除,則會將該學生信息從存儲學生信息的數組列表中進行刪除,如果用戶選擇取消,則刪除操作則會終止。并且如果學生學號未在系統(tǒng)中查詢到,則會提醒用戶輸入的學號信息有誤。
//刪除學生信息模塊public void removeInfo(string num){Boolean exist_info = false; //設定布爾值,默認該生信息不存在for (int i = 0; i < studentList.Count; i++){Student sa = (Student)studentList[i]; //將列表值強制轉換成Student型//如果刪除的學號已經存在,if (sa.num == num){exist_info = true;DialogResult result = MessageBox.Show("您確定要刪除嗎?", "刪除提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation);if (result == DialogResult.OK){studentList.Remove(studentList[i]); //將信息刪除MessageBox.Show("刪除成功!", "提示");}}}if (!exist_info){MessageBox.Show("該生信息不存在,\n無法刪除!", "警告");}}?
3.6、顯示所有學生信息模塊
顯示所有學生信息模塊(formMainAllInfo)會在用戶發(fā)出顯示請求后,遍歷整個存儲信息的數組列表,并且將每一個學生的信息按照輸入和修改的順序依次輸出,
private void allInfoBt_Click(object sender, EventArgs e){f6.clearText(); //清除上次文本框緩存//對列表進行遍歷,將每一個學生信息寫入窗體foreach (Student sa in studentList){f6.setAllInfo(sa.num,sa.name,sa.major,sa.fever,sa.everheat);}f6.Show();groupBox1.Controls.Clear();groupBox1.Controls.Add(f6);}//定義方法,將每條信息寫入文本框public void setAllInfo(string num, string name, string major, string fever, string everheat){string studentInfo = " " + num + " " + name + " " + major + " " + fever + " " + everheat + "\r\n";setAllInfo_text.Text += studentInfo;}?
3.7、顯示異常信息模塊
顯示異常信息模塊(formMainUnus)會在用戶發(fā)出查看請求后,遍歷整個存放學生信息的數組列表,并且會對所有的信息進行刪選,根據學生是否屬于發(fā)熱人群進行區(qū)分,如果學生屬于發(fā)熱人群則會將信息輸出在窗口,同時顯示學生當前的今日體溫,否則不會輸出信息。
private void unUsualBt_Click(object sender, EventArgs e){f7.clearText(); //清除上次文本框緩存//對列表進行遍歷,將每一個學生信息寫入窗體foreach (Student sa in studentList){//如果身體異常,則將信息寫入窗口if (sa.fever == "是"){f7.setUnusualInfo(sa.num, sa.name, sa.major, sa.fever, sa.everheat);}}f7.Show();groupBox1.Controls.Clear();groupBox1.Controls.Add(f7);}public void setUnusualInfo(string num, string name, string major, string fever, string everheat){string studentInfo = " " + num + " " + name + " " + major + " " + fever + " " + everheat + "\r\n";setUnusual_text.Text += studentInfo;}?
3.8、數據更新模塊
數據更新模塊(update_button)基于已經錄入的學生信息進行區(qū)分,定義異常學生人數變量,然后對整個數組列表進行遍歷,如果屬于發(fā)熱異常體質,則會將異常學生人數變量加一,直至將整個列表遍歷完畢,然后將得出的已錄入的所有學生人數和異常學生人數進行輸入。
//更新數據按鈕private void update_button_Click(object sender, EventArgs e){studentCount.Text = studentList.Count.ToString();int fevercount = 0; //記錄發(fā)熱人數foreach (Student sa in studentList){//如果該生屬于發(fā)熱人群,則feverCount加一if (sa.fever == "是" ){fevercount++;}}unUsualCount.Text = fevercount.ToString();}?
4、軟件開發(fā)總結
《學生防疫信息管理軟件》的開發(fā)從總體上來說是對C#winform應用的一個很好體現,同時它也屬于實際應用型軟件的一類,嚴格按照軟件開發(fā)的思想,采用前后端分離、模塊化設計等,在為了合理開發(fā)軟件的同時,盡可能的提高程序的效率,減少代碼量和提高模塊內部數據的內聚性,降低模塊耦合性;這樣開發(fā)的目的也是為了在后期對軟件進行維護的時候,可以降低軟件維護的復雜性,同時在軟件使用的過程中對于出現的錯誤和異常可以及時的修復,無需修改大量的代碼。
在軟件的交互界面上,為了提升用戶使用的體驗感,在軟件開發(fā)完成后對軟件的整體界面和外觀進行了較為細致的優(yōu)化和美觀。目的是為了在提升軟件實用性的同時也可以很好的提高用戶端使用體驗感。
好啦!關于《學生防疫信息管理軟件》的開發(fā)思路就分享到這里,想要源碼的小伙伴可以在這里下載“項目源碼”,或者關注我的微信公眾號“灰狼洞主”后臺回復“防疫信息管理軟件”獲取源碼下載鏈接。
?
覺得不錯記得點贊關注喲!
大灰狼陪你一起進步!
總結
以上是生活随笔為你收集整理的超详细的《防疫健康管理软件》开发报告奉上!【文末获取完整源码】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【C语言】从入门到入土(入门篇)
- 下一篇: Nextcloud缩略图尺寸和质量的文档