![學生考勤管理系統(tǒng)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/16/81fe77e6-2baf-4b3d-9be2-cb23ba327020/81fe77e6-2baf-4b3d-9be2-cb23ba3270201.gif)
![學生考勤管理系統(tǒng)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/16/81fe77e6-2baf-4b3d-9be2-cb23ba327020/81fe77e6-2baf-4b3d-9be2-cb23ba3270202.gif)
![學生考勤管理系統(tǒng)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/16/81fe77e6-2baf-4b3d-9be2-cb23ba327020/81fe77e6-2baf-4b3d-9be2-cb23ba3270203.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、設計內(nèi)容與設計要求1設計內(nèi)容: 學生考勤管理系統(tǒng)1、問題描述 學生信息包括:學號、姓名、性別、年齡、班級等信息。 考勤信息包括:缺課日期、第幾節(jié)課、課程名稱、學生姓名、缺課類型(遲到、早退、請假和曠 課)。2、功能要求(1)添加功能: 程序能夠添加學生的記錄和缺課記錄, 提供選擇界面供用戶選擇所要添加的類別。 添加學生記錄時, 要求學號要唯一, 如果添加了重復學號的記錄時, 則提示數(shù)據(jù)添加重復并取消添加。(2)查詢功能:可根據(jù)學號、姓名等信息對已添加的學生記錄進行查詢,如果未找到,給出相應 的提示信息,如果找到,則顯示相應的記錄信息。還可以按課程名、學生姓名對缺課記錄進行查詢。(3)顯示功能:
2、可顯示當前系統(tǒng)中所有學生的記錄和缺課記錄,每條記錄占據(jù)一行。(4)編輯功能:可根據(jù)查詢結(jié)果對相應的記錄進行修改,修改時注意學號的唯一性。(5)刪除功能: 主要實現(xiàn)對已添加的學生記錄進行刪除。如果當前系統(tǒng)中沒有相應的記錄, 則提示“記錄為空! ”并返回操作。(6)統(tǒng)計功能: 能根據(jù)多種參數(shù)進行統(tǒng)計。 能按課程名統(tǒng)計出學生曠課的信息、 還可以按姓名統(tǒng) 計出任一學生的曠課情況。需要排序。(7)保存功能:可將當前系統(tǒng)中各類記錄存入文件中,存入方式任意。(8)讀取功能:可將保存在文件中的信息讀入到當前系統(tǒng)中,供用戶進行使用。目錄一、需求分析 61. 系統(tǒng)設計目的與意義 62. 系統(tǒng)功能需求(系統(tǒng)流程圖)
3、 63. 系統(tǒng)功能流程圖 74. 輸入輸出的要求 7二、總體分析 71. 系統(tǒng)功能分析 82. 系統(tǒng)功能結(jié)構(gòu)圖 8三、詳細設計 91.類設計: 11四、界面設計與各功能模塊的實現(xiàn) 121. 界面設計 12五、系統(tǒng)調(diào)試 141.首頁進入學籍管理系統(tǒng)主菜單 142 錄入學生信息缺課界面: 153. 顯示學生信息缺課界面 164. 查找學生信息界面 175. 刪除學生信息界面 186. 修改學生信息 187. 統(tǒng)計學生信息: 19六、使用說明及心得體會 20七、附件 20一、需求分析1.系統(tǒng)功能流程圖3. 輸入輸出的要求1. 輸入的要求: 通過主函數(shù)體調(diào)用其他函數(shù)應用系統(tǒng)主控界面包括學生信息錄入,
4、查找等功能模塊。 學生 信息錄入功能完成學生信息和缺課信息的輸入。 記錄查詢功能可以對數(shù)據(jù)各分類的記錄進 行查詢。2. 輸出的要求:1)能夠按編號、姓名對學生的信息進行檢索并將檢索結(jié)果顯示在屏幕上。2)可以統(tǒng)計全部學生缺課類型,及其缺課次數(shù)。3)如果檢索不到相應的信息應提示用戶。二、總體分析系統(tǒng)功能分析能夠從屏幕上讀取一個學生的信息和缺課信息并將信息存入到數(shù)據(jù)文件中。能夠?qū)⒅?定的信息從文件中刪除。 能夠按編號、 姓名對學生的信息進行檢索并將檢索結(jié)果顯示在屏 幕上??梢越y(tǒng)計全部學生缺課次數(shù), 及其缺課類型。 要求有錯誤提示功能。如果檢索不到 相應的信息應提示用戶。三、詳細設計1.類設計:類:
5、Person數(shù)據(jù)成員學號,姓名,性別,年齡,班級缺課類型,缺課次數(shù),指針域double num; / 學號char Name20; / 姓名char sex;/ 性別double old;/ 年齡long double G;/ 班級int Duty; /缺課類型 (1- 遲到 ,2- 早退,3- 請假,4- 曠課 )double Salary; / 缺課次數(shù)Person *next; / 指針域 、成員函數(shù)Person() / 基類構(gòu)造next=0; / 指針域設置為空virtual Person() /基類虛析構(gòu)virtual void Input()=0; /從鍵盤輸入數(shù)據(jù)virtual
6、void Input(ifstream& ifs)=0; / 從文件輸入數(shù)據(jù) virtual void Output()=0; / 向屏幕輸出數(shù)據(jù)virtual void Output(ofstream& ofs)=0; / 向文件輸出數(shù)據(jù) virtual double Incoming()=0; /計算次數(shù)friend class College;類: Teacher (公共繼承與 Person 類)數(shù)據(jù)成員:protected:int Hours; / 第幾節(jié)課char B;/ 遲到日期char Z;/ 課程名稱 class school成員函數(shù): Tercher ()vo
7、id Input()void Input(ifstream& ifs)void Output(ofstream& ofs)double Incoming()遲到類:class Assistant:virtual public Person數(shù)據(jù)成員:protected:int Allowance;int Hours; /第幾節(jié)課char B;/ 早退日期char Z;/ 課程名稱成員函數(shù):Assistant ()void Input()void Input(ifstream& ifs)void Output()void Output(ofstream& ofs)d
8、ouble Incoming()請假類:class Manager:virtual public Person 數(shù)據(jù)成員: protected: int Allowance;int Hours; / 第幾節(jié)課char B;/ 請假日期 char Z;/ 課程名稱 成員函數(shù): Manager() void Input() void Input(ifstream& ifs) void Output() void Output(ofstream& ofs) double Incoming() 曠課類: class Teacher_Assistant:public Teacher,pu
9、blic Assistant 成員函數(shù): Teacher_Assistant() void Input() void Input(ifstream& ifs) void Output()void Output(ofstream& ofs) double Incoming() 學生類: class College 數(shù)據(jù)成員 private: Person *PL; void Clear();int College:Cfind(int ID,Person *p1,Person *p2) 成員函數(shù): public:College(); /構(gòu)造College(); /析構(gòu)void Ad
10、d(); /退出void Delete(); /刪除void Modify(); /修改void Print(); /輸出void Save(); /信息存盤void Load(); /信息裝入void Find(); /查找void Build(); /導引void Stat(); /統(tǒng)計四、界面設計與各功能模塊的實現(xiàn)1. 界面設計1. 界面設計 程序運行后會出現(xiàn)一個簡捷的窗口,便于用戶查詢數(shù)據(jù)。2. 功能模塊實現(xiàn)設計通過主窗體調(diào)用其他窗體。 應用系統(tǒng)主控界面包括學生信息錄入, 查找等功能模塊。 學生 信息錄入功能完成學生信息和成績的輸入。 記錄查詢功能可以對數(shù)據(jù)各分類的記錄進行查 詢。具體
11、舉例如下:1)輸入函數(shù):void Input()cout<<"n 學號 :" cin>>num;cout<<"n 姓名 :" cin>>Name;cout<<"n 性別 :" cin>>sex;cout<<"n 年齡 :" cin>>old;cout<<"n 班級 :" cin>>G;cout<<"n 第幾節(jié)課 :" cin>>Hou
12、rs;Salary=Incoming(); 2 )刪除函數(shù)void school:del() student *p,*p2; int num;cout<<" 請輸入編號 cin>>num;if( !find(&p,num,"") )(p->next)->output();ndl;Mannagercout<<"SORRY!找不到你要刪Pe除rso的n 內(nèi)容 !" return;Assitantdelete p2;p2=p->next; p->nexTt=eprc2h-e>r
13、 next;school:setkey(1);2. 類的派生之間的Te示rch意er圖_Assitant五、系統(tǒng)調(diào)試1. 首頁進入學生考勤管理系統(tǒng)主菜單2 錄入學生信息界面:3. 顯示學生信息界面 :4. 修改學生信息六、使用說明及心得體會此次 c+課程設計,在指導教師的精心教導下,我學會了如何用C+編寫一個簡單的應用程序。首先要對程序的設計要求有一個比較明確的認識,然后系統(tǒng)分析與系統(tǒng)設計, 最后是代碼設計與調(diào)試。 程序?qū)崿F(xiàn)上, 設計了簡單的查詢界面, 將各個功能集中出來按照 程序編寫原則,便于查詢。七、附件源文件代碼:#include <fstream.h> 文件操作頭文件#in
14、clude <string.h> 字符串流class Person /人員類 (抽象類 ) protected:double num; / 學號char Name20; / 姓名char sex;/性別double old;/ 年齡long double G;/ 班級int Duty; / 缺課類型 (1-遲到 ,2-早退,3-請假 ,4-曠課)double Salary; / 缺課次數(shù)Person *next; / 指針域public:Person() /基類構(gòu)造 next=0; / 指針域設置為空 virtual Person() / 基類虛析構(gòu) virtual void In
15、put()=0; / 從鍵盤輸入數(shù)據(jù)virtual void Input(ifstream& ifs)=0; / 從文件輸入數(shù)據(jù)virtual void Output()=0; / 向屏幕輸出數(shù)據(jù)virtual void Output(ofstream& ofs)=0; / 向文件輸出數(shù)據(jù)virtual double Incoming()=0; / 計算次數(shù) friend class College; ;class Teacher:virtual public Person / 遲到類 protected:int Hours; / 第幾節(jié)課char B;/ 遲到日期char Z
16、;/ 課程名稱public: Duty=1;Salary=800; void Input() / 鍵盤補充輸入其它數(shù)據(jù) cout<<"n 學號 :" cin>>num; cout<<"n 姓名 :" cin>>Name;cout<<"n 性別 :" cin>>sex;cout<<"n 年齡:" cin>>old;cout<<"n 班級 :" cin>>G;cout<<
17、;"n 第幾節(jié)課 :" cin>>Hours;Salary=Incoming(); void Input(ifstream& ifs) ifs>>num>>Name>>sex>>old>>G>>Duty>>Hours>>Salary; void Output() cout<<num<<"t"<<Name<<"t"<<sex<<"t"
18、;<<old<<"t"<<G<<"t"<<Duty<<"t"<<Hours<<"t"<<Salary<<"t"<<endl; void Output(ofstream& ofs) ofs<<num<<"t"<<Name<<"t"<<sex<<&qu
19、ot;t"<<old<<"t"<<G<<"t"<<Duty<<"t"<<Hours<<"t"<<Salary<<"t"<<endl; double Incoming() if(Hours>120)return Salary+(Hours-120)*20;else(sJtz03Lue(Dls&ndu- po>宀o6u-LUOOU-MXJe
20、-es innoHAAUocspw<urvvlno。 AAUOc祭罷 urvvlno。 POAAUOc筮<urvvlno。 xesAAUoc歸封 urvvlno。 ioLueNAAUo=?噸戟 urvvlno。 unuAAUo一申survvlno。 (xndu 一 po>宀o9v(DoueMO_< o99MXJe_esZMAlnQ 二)luels一 ss< o一-qnd 離噸咽s注zeu。 霰口唄M-二meu。 spw<=snoHc一 aoue/vo=<lu- p(Dc5(D10d 唄吋uos(Dd 0 一-qnd -en 七一>luels 一
21、ss<sseoX 宀 呂e-es um(DioLueNAAUoc曽 urvvlno。 unuAAUoc申survvlno。 (xndu 一 po> 宀o94M(DoueMO_<09 卜 MXJeros oMncl二)<06euel/l o一-qnd 離噸咽s注zeu。、二snoHc一 aoue/vo=<lu-p(Dc5(D10d 舉価二/ uos(Dd 0一_qnd _en±>(06euel/l sseoX 宀iooue/vo-<+XJe-es um(D(Dsaj ozaorsJnol-o+CDoueMO-N+AJe-es um(D (oge
22、rosg ()6u-luoou-(D-qnop 宀 aovv-vvro-rowvv-vv«OTVV-vv3QVV-vv0vv-vv-ovv-vvxo«vv-VVOErozvv-VVE3cvvo (SJOoaEeallsolndlno po> 宀 covv-vv-ro-rowvv-vv«OTVV-VVQVV-vv0vv-vv-ovv-vvxo«vv-VVOErozvv-VVE=cvvoo (xndlno po> 宀 ro-rowAAOTC-T-OTAAQAAOAA-w-OAAXOOTAAOErozAAET-CAAcout<<&quo
23、t;n 性別 :" cin>>sex;cout<<"n 年齡:" cin>>old;cout<<"n 班級 :" cin>>G;cout<<"n 第幾節(jié)課 :" cin>>Hours;Salary=Incoming(); void Input(ifstream& ifs) ifs>>num>>Name>>sex>>old>>G>>Duty>>Hours
24、>>Salary; void Output() cout<<num<<"t"<<Name<<"t"<<sex<<"t"<<old<<"t"<<G<<"t"<<Duty<<"t"<<Hours<<"t"<<Salary<<"t"<&
25、lt;endl; class Collegeprivate:Person *PL;void Clear();int College:Cfind(int ID,Person *p1,Person *p2);public:College(); / 構(gòu)造College(); / 析構(gòu)void Add(); / 退出void Delete(); / 刪除void Modify(); / 修改void Print(); / 輸出void Save(); / 信息存盤void Load(); / 信息裝入void Find(); / 查找void Build(); / 導引void Stat(); / 統(tǒng)
26、計;College:College() / 構(gòu)造函數(shù) (創(chuàng)建 1 個頭結(jié)點的鏈表 )Person *p=new Teacher;PL=p; cout<<" 自動裝入數(shù)據(jù) n"Build(); College:College() / 析構(gòu)函數(shù) (僅保留 1 個頭結(jié)點 )Person *p=PL;while(p) / 逐個刪除結(jié)點,包括頭結(jié)點PL=p->next;delete p;p=PL;PL=0;void College:Add() / 增加char c; do cout<<"n* 增加 *n"/查找尾結(jié)點Person *p
27、=PL; Teacher *pt; Assistant *pa; Manager *pm; Teacher_Assistant *pta;switch(ch) case 1: pt=new Teacher; pt->Input(); p->next=pt;break;case 2: pa=new Assistant; pa->Input(); p->next=pa;break;case 3: pm=new Manager; pm->Input(); p->next=pm;break;case 4: pta=new Teacher_Assistant; pta
28、->Input(); p->next=pta;break; default: return;cout<<" 是否進行循環(huán) ?y/nn" cin>>c;while(c='y'|c='Y');Save();/查找void College:Find()double ID;Person *p1;Person *p2; cout<<" 輸入你要查詢的編號: " cin>>ID;p1=PL->next; p2=PL;while(p1) if(p1->num=ID)
29、 break; / 找到 else p2=p1; / 繼續(xù)查找 p1=p1->next;if(!p1) cout<<" 找不到你所查詢的人 !n 請確認你所查詢的編號是否出錯 !n"return; else cout<<"n* 出勤信息表 *n"cout<<" 學號 姓名 性別 年齡 班級 缺課類型 缺課次數(shù) n" p1->Output();/查找缺課結(jié)點 (返回 1-找到, 0-未找到 .結(jié)點指針由 p1 返回 ,p2 為前看指針 )int College:Cfind(int ID,P
30、erson *p1,Person *p2)*p1=PL->next;*p2=PL;while(*p1)if(*p1)->num=ID)break; / 找到else*p2=*p1; / 繼續(xù)查找 *p1=(*p1)->next;return *p1?1:0;void College:Delete() / 刪除cout<<"n* 刪除 *n"int num; Person *p1,*p2; cout<<" 編號 :" cin>>num;if(!Cfind(num,&p1,&p2)cout
31、<<" 指定的人員沒有找到 !n"elsep2->next=p1->next; / 連接delete p1;cout<<" 正確刪除 !n"Save();void College:Modify() / 修改cout<<"n* 修改 *n"int num;Person *p1,*p2;cout<<" 編號 :" cin>>num;if(!Cfind(num,&p1,&p2) cout<<" 指定的人員沒有找到
32、 !n" elsep1->Output(); / 輸出原來的出勤信息 (做提示 ) p1->Input(); / 輸入新的出勤信息 (更新 ) cout<<" 修改完成 !n"Save(); void College:Print() / 輸出出勤信息cout<<"n* 出勤信息表 *n"cout<<" 學號 姓名 性別 年齡 班級 缺課類型 缺課次數(shù) n" Person *p=PL->next;if(!p)cout<<" 無出勤記錄 !n"
33、 return;while(p) / 遍歷鏈表,輸出出勤信息 p->Output(); p=p->next;void College:Save() / 出勤信息存盤 ?ofstream f("Person.dat",ios:out); / 打開文件Person *p=PL->next; while(p) p->Output(f); p=p->next;f.close(); / 關閉文件 cout<<" 職工信息已經(jīng)保存在 Person.dat.n"void College:Build() / 出勤信息char b
34、uf81; / 臨時空間 int Duty; / 人員類型 Person *p2; / 新建結(jié)點的指針 long t; / 讀寫位置Clear();ifstream f("Person.dat",ios:in);Person *p=PL; / 尾結(jié)點指針 while(1) t=f.tellg();f>>buf>>buf>>Duty;if(f) switch(Duty) case 1: p2=new Teacher; break;case 2: p2=new Assistant; break;case 3: p2=new Manager;
35、break;case 4: p2=new Teacher_Assistant; break; default: f.close(); return; p->next=p2; p=p->next; f.seekg(t); p->Input(f);else break; f.close();void College:Load() / 出勤信息錄入char ah;int c; cout<<"n* 出勤信息錄入 *n"docout<<" 輸入要錄入的出勤人員個數(shù) :n" cin>>c;for(int i=1;
36、i<=c;i+)Person *p=PL; while(p->next)p=p->next; int ch;cout<<"輸入出勤分類碼 1-遲到,2-早退,3-請假,4-曠課:" cin>>ch; Teacher *pt;Assistant *pa;Manager *pm;Teacher_Assistant *pta; switch(ch)case 1: pt=new Teacher; pt->Input();p->next=pt; break;case 2: pa=new Assistant; pa->Inpu
37、t();p->next=pa;break;case 3: pm=new Manager; pm->Input(); p->next=pm;break;case 4: pta=new Teacher_Assistant; pta->Input(); p->next=pta;break;default: return;Save(); cout<<"是否還要繼續(xù)錄入出勤信息 ? y/nn"cin>>ah; while(ah='Y'|ah='y');void College:Stat()Person *p1;Person *p2; double Sa=0;int a,b,i=0; double c,d;n"cout<<"選擇你要統(tǒng)計的類別 n1-類別; 2-次數(shù); 3-缺課總次數(shù); cin>>a;if(a=1)cout<<"輸入你要統(tǒng)計的類別: n1-遲到,2-早退 ,3-請假,4-曠課 n cin>>b;p1=PL->next;p2=PL; while(p1)if(p1->Duty=b)i+;/找到p2=p1; / 繼續(xù)查找 p1=p1->next;else p2=p1;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年企業(yè)市場營銷宣傳協(xié)議
- 2025年傳統(tǒng)工藝振興戰(zhàn)略諒解協(xié)議
- 2025年中學食品安全監(jiān)管協(xié)議
- 2025年公共環(huán)境策劃改善協(xié)議
- 2025年導師學員攜手共進協(xié)議書
- 2025年度股權(quán)合伙財產(chǎn)分割協(xié)議范例
- 江蘇省2025年土地使用權(quán)互換合同
- 2025年臨時辦公設施租賃合同
- 2025年企業(yè)股權(quán)融資協(xié)議書規(guī)范文本
- 2025年商業(yè)地產(chǎn)合作協(xié)議標準版
- 購買演唱會門票的合同模板
- DB32-T 4790-2024建筑施工特種作業(yè)人員安全操作技能考核標準
- 2022年安徽阜陽太和縣人民醫(yī)院本科及以上學歷招聘筆試歷年典型考題及考點剖析附帶答案詳解
- 頂管工程施工及驗收技術(shù)標準
- 【基于現(xiàn)金流的企業(yè)財務風險探究文獻綜述4100字】
- TD/T 1036-2013 土地復墾質(zhì)量控制標準(正式版)
- 安全警示教育的會議記錄內(nèi)容
- 2024年度-銀行不良清收技巧培訓課件(學員版)
- 燃燒爆炸理論及應用 課件 第1-3章 緒論、燃燒及其災害、物質(zhì)的燃燒
- 裝飾裝修施工新工藝
- 事業(yè)單位網(wǎng)絡安全知識培訓
評論
0/150
提交評論