學(xué)生考勤管理系統(tǒng)_第1頁
學(xué)生考勤管理系統(tǒng)_第2頁
學(xué)生考勤管理系統(tǒng)_第3頁
學(xué)生考勤管理系統(tǒng)_第4頁
學(xué)生考勤管理系統(tǒng)_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、一、設(shè)計(jì)內(nèi)容與設(shè)計(jì)要求1 .設(shè)計(jì)內(nèi)容:學(xué)生考勤管理系統(tǒng)1、問題描述學(xué)生信息包括:學(xué)號(hào)、姓名、性別、年齡、班級(jí)等信息??记谛畔ǎ喝闭n日期、第幾節(jié)課、課程名稱、學(xué)生姓名、缺課類型(遲到、早退、請(qǐng)假和曠課)。2、功能要求(1)添加功能:程序能夠添加學(xué)生的記錄和缺課記錄,提供選擇界面供用戶選擇所要添加的類別。添加學(xué)生記錄時(shí),要求學(xué)號(hào)要唯一,如果添加了重復(fù)學(xué)號(hào)的記錄時(shí),則提示數(shù)據(jù)添加重復(fù)并取消添加。(2)查詢功能:可根據(jù)學(xué)號(hào)、姓名等信息對(duì)已添加的學(xué)生記錄進(jìn)行查詢,如果未找到,給出相應(yīng) 的提示信息,如果找到,則顯示相應(yīng)的記錄信息。還可以按課程名、學(xué)生姓名對(duì)缺課記錄進(jìn)行查詢。(3)顯示功能:可顯示當(dāng)前系

2、統(tǒng)中所有學(xué)生的記錄和缺課記錄,每條記錄占據(jù)一行。(4)編輯功能:可根據(jù)查詢結(jié)果對(duì)相應(yīng)的記錄進(jìn)行修改,修改時(shí)注意學(xué)號(hào)的唯一性。(5)刪除功能:主要實(shí)現(xiàn)對(duì)已添加的學(xué)生記錄進(jìn)行刪除。如果當(dāng)前系統(tǒng)中沒有相應(yīng)的記錄,則提示“記錄為空!”并返回操作。(6)統(tǒng)計(jì)功能:能根據(jù)多種參數(shù)進(jìn)行統(tǒng)計(jì)。 能按課程名統(tǒng)計(jì)出學(xué)生曠課的信息、還可以按姓名統(tǒng)計(jì)出任一學(xué)生的曠課情況。需要排序。(7)保存功能:可將當(dāng)前系統(tǒng)中各類記錄存入文件中,存入方式任意。(8)讀取功能:可將保存在文件中的信息讀入到當(dāng)前系統(tǒng)中,供用戶進(jìn)行使用。目 錄一、需求分析61 .系統(tǒng)設(shè)計(jì)目的與意義62 .系統(tǒng)功能需求(系統(tǒng)流程圖) 63 .系統(tǒng)功能流程圖7

3、4 .輸入輸出的要求7二、總體分析7工系統(tǒng)功能分析82.系統(tǒng)功能結(jié)構(gòu)圖8三、詳細(xì)設(shè)計(jì)91.類設(shè)計(jì):11四、界面設(shè)計(jì)與各功酢模塊的實(shí)現(xiàn) 121_ 界面設(shè)計(jì)12五、系統(tǒng)調(diào)試141.首頁講入學(xué)籍管理系統(tǒng)中菜單 142錄入學(xué)牛信息缺課界面: 153 .顯示學(xué)牛信息缺課界面164 .查找學(xué)牛信息界面175 .刪除學(xué)生信息界面186 .修改學(xué)生信息187 .統(tǒng)計(jì)學(xué)生信息:19六、使用說明及心得體會(huì) 20七、附件20一、需求分析1.系統(tǒng)功能流程圖3.輸入輸出的要求1 .輸入的要求:通過主函數(shù)體調(diào)用其他函數(shù)應(yīng)用系統(tǒng)主控界面包括學(xué)生信息錄入,查找等功能模塊。學(xué)生信息錄入功能完成學(xué)生信息和缺課信息的輸入。 記錄查

4、詢功能可以對(duì)數(shù)據(jù)各分類的記錄進(jìn) 行查詢。2 .輸出的要求:1)能夠按編號(hào)、姓名對(duì)學(xué)生的信息進(jìn)行檢索并將檢索結(jié)果顯示在屏幕上。2)可以統(tǒng)計(jì)全部學(xué)生缺課類型,及其缺課次數(shù)。3)如果檢索不到相應(yīng)的信息應(yīng)提示用戶。二、總體分析系統(tǒng)功能分析能夠從屏幕上讀取一個(gè)學(xué)生的信息和缺課信息并將信息存入到數(shù)據(jù)文件中。能夠?qū)⒅?定的信息從文件中刪除。能夠按編號(hào)、姓名對(duì)學(xué)生的信息進(jìn)行檢索并將檢索結(jié)果顯示在屏 幕上??梢越y(tǒng)計(jì)全部學(xué)生缺課次數(shù),及其缺課類型。要求有錯(cuò)誤提示功能。如果檢索不到 相應(yīng)的信息應(yīng)提示用戶。三、詳細(xì)設(shè)計(jì)1.類設(shè)計(jì):類:Person數(shù)據(jù)成員學(xué)號(hào),姓名,性別,年齡,班級(jí)缺課類型,缺課次數(shù),指針域 doub

5、le num; / 學(xué)號(hào) char Name20; / 姓名 char sex;/ 性別 double old;/ 年齡 long double G;/ 班級(jí) int Duty; 缺課類型(1-遲到,2-早退,3-請(qǐng)假,4-曠課)double Salary; / 缺課次數(shù) Person *next; / 指針域、 成員函數(shù) Person() / 基類構(gòu)造 next=0; /指針域設(shè)置為空 virtual Person() /基類虛析構(gòu) virtual void Input()=0; /從鍵盤輸入數(shù)據(jù)virtual void Input(ifstream& ifs)=0; /從文件輸入數(shù)

6、據(jù)virtual void Output()=0; / 向屏幕輸出數(shù)據(jù)virtual void Output(ofstream& ofs)=0; / 向文件輸出數(shù)據(jù)virtual double Incoming()=0; / 計(jì)算次數(shù)friend class College;類: Teacher (公共繼承與Person 類)數(shù)據(jù)成員:protected:int Hours; / 第幾節(jié)課char B;/ 遲到日期char Z;/ 課程名稱 class school成員函數(shù):Tercher () void Input()void Input(ifstream& ifs)void

7、 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)double Incoming()請(qǐng)假類 :class Manager:virtual p

8、ublic Person數(shù)據(jù)成員:protected:int Allowance;int Hours; / 第幾節(jié)課char B;/請(qǐng)假日期char Z;/課程名稱成員函數(shù):Manager()void Input()void Input(ifstream& ifs)void Output()void Output(ofstream& ofs)double Incoming()曠課類:class Teacher_Assistant:public Teacher,public Assistant成員函數(shù):Teacher_Assistant()void Input()void Inp

9、ut(ifstream& ifs)void Output()void Output(ofstream& ofs)double Incoming()學(xué)生類: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 Add(); /退出void Delete(); /刪除void Modify(); /修改void Print(); /輸出void Save

10、(); /信息存盤void Load(); /信息裝入void Find(); /查找void Build(); /導(dǎo)引void Stat(); /統(tǒng)計(jì)四、 界面設(shè)計(jì)與各功能模塊的實(shí)現(xiàn)1. 界面設(shè)計(jì)1 .界面設(shè)計(jì) 程序運(yùn)行后會(huì)出現(xiàn)一個(gè)簡(jiǎn)捷的窗口,便于用戶查詢數(shù)據(jù)。2. 功能模塊實(shí)現(xiàn)設(shè)計(jì)通過主窗體調(diào)用其他窗體。 應(yīng)用系統(tǒng)主控界面包括學(xué)生信息錄入, 查找等功能模塊。 學(xué)生 信息錄入功能完成學(xué)生信息和成績(jī)的輸入。 記錄查詢功能可以對(duì)數(shù)據(jù)各分類的記錄進(jìn)行查詢。 具體舉例如下: 1)輸入函數(shù): void Input() cout<<"n 學(xué)號(hào) :" cin>>

11、num; cout<<"n姓名:" cin>>Name;cout<<"n性別:" cin>>sex;cout<<"n年齡:" cin>>old;cout<<"n班級(jí):" cin>>G;cout<<"n 第幾節(jié)課 :" cin>>Hours;Salary=Incoming(); 2 )刪除函數(shù)void school:del() student *p,*p2;int num;cou

12、t<<"請(qǐng)輸入編號(hào) cin>>num;if( !find(&p,num,"A")(p->next)->output();ndl;MannagerHcout<<"SORRY!找不領(lǐng)爾要;Peson內(nèi)容! return;Assitantp2=p->next;delete p2;p-AnexTefch->next;school:setkey(1);2.類的派生之間幃rche_Assitant五、系統(tǒng)調(diào)試1.首頁進(jìn)入學(xué)生考勤管理系統(tǒng)主菜單2錄入學(xué)生信息界面:3 .顯示學(xué)生信息界面:4 .修改學(xué)生

13、信息六、使用說明及心得體會(huì)此次C+課程設(shè)計(jì),在指導(dǎo)教師的精心教導(dǎo)下,我學(xué)會(huì)了如何用C+與寫一個(gè)簡(jiǎn)單的應(yīng)用程序。首先要對(duì)程序的設(shè)計(jì)要求有一個(gè)比較明確的認(rèn)識(shí),然后系統(tǒng)分析與系統(tǒng)設(shè)計(jì), 最后是代碼設(shè)計(jì)與調(diào)試。程序?qū)崿F(xiàn)上,設(shè)計(jì)了簡(jiǎn)單的查詢界面,將各個(gè)功能集中出來按照 程序編寫原則,便于查詢。七、附件源文件代碼:#include <fstream.h>文件操作頭文件#include <string.h> 字符串流class Person隊(duì)員類(抽象類)protected:double num; / 學(xué)號(hào)char Name20; / 姓名char sex;/性別double old

14、;/ 年齡long double G;/ 班級(jí)int Duty; / 缺課類型(1-遲到,2-早退 ,3-請(qǐng)假,4-曠課 )double Salary; /缺課次數(shù)Person *next; /指針域public:Person() /基類構(gòu)造 next=0; / 指針域設(shè)置為空virtual Person() / 基類虛析構(gòu) virtual void Input()=0; / 從鍵盤輸入數(shù)據(jù)virtual void Input(ifstream& ifs)=0; / 從文件輸入數(shù)據(jù)virtual void Output()=0; / 向屏幕輸出數(shù)據(jù)virtual void Output

15、(ofstream& ofs)=0; / 向文件輸出數(shù)據(jù)virtual double Incoming()=0; / 計(jì)算次數(shù)friend class College; ;class Teacher:virtual public Person /遲到類 protected:int Hours; / 第幾節(jié)課char B;/遲到日期char Z;/課程名稱public: Duty=1;Salary=800; void Input() / 鍵盤補(bǔ)充輸入其它數(shù)據(jù) cout<<"n 學(xué)號(hào) :" cin>>num;cout<<"n

16、姓名:"cin>>Name;cout<<"n性別:"cin>>sex;cout<<"n年齡:"cin>>old;cout<<"n班級(jí):"cin>>G;cout<<"n 第幾節(jié)課 :" cin>>Hours;Salary=Incoming(); void Input(ifstream& ifs) ifs>>num>>Name>>sex>>old&

17、gt;>G>>Duty>>Hours>>Salary; void Output() cout<<num<<"t"<<Name<<"t"<<sex<<"t"<<old<<"t"<<G<<"t"<<Duty<<"t"<<Hours<<"t"<<

18、;Salary<<"t"<<endl; void Output(ofstream& ofs) ofs<<num<<"t"<<Name<<"t"<<sex<<"t"<<old<<"t"<<G<<"t"<<Duty<<"t"<<Hours<<"t&quo

19、t;<<Salary<<"t"<<endl; double Incoming() if(Hours>120)return Salary+(Hours-120)*20;elsereturn Salary;class Assistant:virtual public Person / 早退 protected:int Allowance;int Hours; 第幾節(jié)課 char B;早退日期 char Z;課程名稱public: Assistant() Duty=2;Salary=650;Allowance=150; void lnpu

20、t() cout«"n 學(xué)號(hào)cin»num; cout«"n 姓名cin»Name; cout«"n 性另Ucin»sex; cout«"n 年齡cin»old; cout«"n 班級(jí)cin»G; cout«"n 第幾節(jié)課cin»Hours; Salary=lncoming(); void lnput(ifstream& ifs) ifs»num»Name»sex»ol

21、d»G»Duty»Hours»Salary; void Output() cout«num«"t"«Name«"t"«sex«"t"«old«"t"«G«"t"«Duty«"t"«Hours«"t"«Salary«"t"«endl

22、; void Output(ofstream& ofs) ofs«num«"t"«Name«"t"«sex«"t"«old«"t"«G«"t"«Duty«"t"«Hours«"t"«Salary«"t"«endl; double IncomingO if(Sal

23、ary>70) return Salary+Allowance+(Hours-70)*20; else return Salary+Allowance;class Managervirtual public Person 請(qǐng)彳取 protected:int Allowance;int Hours; /第幾節(jié)課 char B;請(qǐng)假日期 char Z;課程名稱public:Manager() Duty=3;Salary=750;Allowance=250; void lnput() cout«"n 學(xué)號(hào)cin»num; cout«"n 姓名c

24、in»Name;cout<<"n 性別 :" cin>>sex;cout<<"n 年齡 :" cin>>old;cout<<"n 班級(jí) :" cin>>G;cout<<"n 第幾節(jié)課 :" cin>>Hours;Salary=Incoming(); void Input(ifstream& ifs) ifs>>num>>Name>>sex>>old>

25、>G>>Duty>>Hours>>Salary; void Output() cout<<num<<"t"<<Name<<"t"<<sex<<"t"<<old<<"t"<<G<<"t"<<Duty<<"t"<<Hours<<"t"<<Sa

26、lary<<"t"<<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

27、 Build(); / 導(dǎo)引void Stat(); / 統(tǒng)計(jì);College:College() / 構(gòu)造函數(shù) (創(chuàng)建 1 個(gè)頭結(jié)點(diǎn)的鏈表)Person *p=new Teacher;PL=p; cout<<"自動(dòng)裝入數(shù)據(jù)n"Build(); College:College() / 析構(gòu)函數(shù)(僅保留1 個(gè)頭結(jié)點(diǎn) )Person *p=PL;while(p) / 逐個(gè)刪除結(jié)點(diǎn),包括頭結(jié)點(diǎn)PL=p->next;delete p;p=PL;PL=0;void College:Add() / 增加char c; do cout<<"n* 增

28、加 *n"/查找尾結(jié)點(diǎn)Person *p=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 T

29、eacher_Assistant; pta->Input();p->next=pta;break;default: return;cout<<" 是否進(jìn)行循環(huán)?y/nn"cin>>c;while(c='y'|c='Y');Save();/查找void College:Find()double ID;Person *p1;Person *p2;cout<<" 輸入你要查詢的編號(hào): "cin>>ID;p1=PL->next;p2=PL;while(p1)if(p

30、1->num=ID)break; / 找到elsep2=p1; / 繼續(xù)查找p1=p1->next;if(!p1) cout<<" 找不到你所查詢的人 !n 請(qǐng)確認(rèn)你所查詢的編號(hào)是否出錯(cuò)!n"return;else cout<<"n* 出勤信息表*n"cout<<" 學(xué)號(hào) 姓名 性別 年齡 班級(jí) 缺課類型 缺課次數(shù) n"p1->Output();/查找缺課結(jié)點(diǎn)(返回1-找到,0-未找到.結(jié)點(diǎn)指針由 p1 返回 ,p2 為前看指針 )int College:Cfind(int ID,

31、Person *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<<" 編號(hào) :" cin>>num;if(!Cfind(num,&p1,&p2)c

32、out<<" 指定的人員沒有找到 !n"elsep2->next=p1->next; / 連接delete p1;cout<<" 正確刪除 !n"Save();void College:Modify() / 修改cout<<"n* 修改 *n"int num;Person *p1,*p2;cout<<" 編號(hào) :" cin>>num;if(!Cfind(num,&p1,&p2)cout<<" 指定的人員沒有

33、找到 !n"elsep1->Output(); / 輸出原來的出勤信息(做提示 )p1->Input(); / 輸入新的出勤信息(更新 )cout<<" 修改完成 !n"Save(); void College:Print() / 輸出出勤信息cout<<"n* 出勤信息表*n"cout<<" 學(xué)號(hào) 姓名 性別 年齡 班級(jí) 缺課類型 缺課次數(shù) n"Person *p=PL->next;if(!p)cout<<" 無出勤記錄!n"return

34、;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(); / 關(guān)閉文件cout<<" 職工信息已經(jīng)保存在 Person.dat.n"void College:Build() / 出勤信息char buf81; / 臨時(shí)空間i

35、nt Duty; / 人員類型Person *p2; / 新建結(jié)點(diǎn)的指針long t; / 讀寫位置Clear();ifstream f("Person.dat",ios:in);Person *p=PL; / 尾結(jié)點(diǎn)指針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; break;case 4: p2=n

36、ew Teacher_Assistant; break;default: f.close(); return;p->next=p2;p=p->next;f.seekg(t);p->Input(f);elsebreak;f.close();void College:Load() / 出勤信息錄入char ah;int c;cout<<"n* 出勤信息錄入 *n"docout<<" 輸入要錄入的出勤人員個(gè)數(shù) :n"cin>>c;for(int i=1;i<=c;i+)Person *p=PL;whi

37、le(p->next)p=p->next;int ch;cout<<" 輸入出勤分類碼1- 遲到 ,2-早退 ,3-請(qǐng)假 ,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->Input();p->next=pa;break;ca

38、se 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;cout<<"選擇你要統(tǒng)計(jì)的類別n1-類別;2-次數(shù);3-缺課總次數(shù);n"cin>>a;if(a=1)cout<<" 輸入你要統(tǒng)計(jì)的類別: n1- 遲到 ,2-早退 ,3-請(qǐng)假 ,4- 曠課 n"cin>>b;p1=PL->next;p2=PL;while(p1)if(p1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論