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

下載本文檔

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

文檔簡介

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

2、:可顯示當(dāng)前系統(tǒng)中所有學(xué)生的記錄和缺課記錄,每條記錄占據(jù)一行。(4)編輯功能:可根據(jù)查詢結(jié)果對相應(yīng)的記錄進(jìn)行修改,修改時(shí)注意學(xué)號的唯一性。(5)刪除功能: 主要實(shí)現(xiàn)對已添加的學(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)流

3、程圖) 63. 系統(tǒng)功能流程圖 74. 輸入輸出的要求 7二、總體分析 71. 系統(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. 首頁進(jìn)入學(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é)

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

5、Person 數(shù)據(jù)成員 學(xué)號,姓名,性別,年齡,班級缺課類型,缺課次數(shù),指針域 double num; / 學(xué)號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; / 指針域設(shè)置為空virtual Person() / 基類虛析構(gòu) virtual void Input()=0; /從鍵盤

6、輸入數(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; / 計(jì)算次數(shù)friend class College;類: Teacher (公共繼承與 Person 類) 數(shù)據(jù)成員: protected:int Hours; / 第幾節(jié)課 char B;/ 遲到日期 char Z;/ 課程名稱 class school 成

7、員函數(shù):Tercher () void 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() vo

8、id Output(ofstream& ofs) double 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_Assist

9、ant:public Teacher,public Assistant 成員函數(shù):Teacher_Assistant()void Input()void Input(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)造Colle

10、ge(); / 析構(gòu) void Add(); / 退出 void Delete(); /刪除void Modify(); /修改void Print(); / 輸出 void Save(); / 信息存盤 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è)簡捷的窗口,便于用戶查詢數(shù)據(jù)。2. 功能模塊實(shí)現(xiàn)設(shè)計(jì)通過主窗體調(diào)用其他窗體。 應(yīng)用系統(tǒng)主控界面包括學(xué)生信息錄入, 查找等功能模塊。 學(xué)生 信息錄入功能完成學(xué)生信息和成績的輸入。

11、 記錄查詢功能可以對數(shù)據(jù)各分類的記錄進(jìn)行查 詢。具體舉例如下:1)輸入函數(shù):void Input()cout<<"n 學(xué)號 :" cin>>num;cout<<"n 姓名 :" cin>>Name;cout<<"n 性別 :" cin>>sex;cout<<"n 年齡 :" cin>>old;cout<<"n 班級 :" cin>>G;cout<<"n 第

12、幾節(jié)課 :" cin>>Hours;Salary=Incoming(); 2 )刪除函數(shù)void school:del()student *p,*p2;int num;cout<<" 請輸入編號 : "cin>>num;if( !find(&p,nu m,“")cout«"SORR丫找不到你要?jiǎng)h除的內(nèi)容!"<<endl; return;(p-> next)->output();p2=p->n ext;p->n ext=p2->n ext;d

13、elete p2;school:setkey(1);2.類的派生之間的示意圖Tercher_Assita ntMann ager五、系統(tǒng)調(diào)試1.首頁進(jìn)入學(xué)生考勤管理系統(tǒng)主菜單2錄入學(xué)生信息界面:in 亠 m 一二r*出勤信備錄入*輸入戛錄關(guān)的出勤人員個(gè)數(shù)=會(huì)入出勤分類碼"-遲到2-早退亠請假4-曠課1 : 2 -=201201社卷5 Jack陛別山*1 壬級二 1士013.顯示學(xué)生信息界面唱醫(yī)持齡班級缺課類型缺課次數(shù)201201jackb21110125-500201202bobh21110226-480201203naryg201103498094.修改學(xué)生信息P*修改*20110

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

15、uble num; / 學(xué)號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; /指針域設(shè)置為空 virtual Person() / 基類虛析構(gòu) virtual void Input()=0; /從鍵盤輸入數(shù)據(jù)virtual void Input(ifstream& ifs)=0;

16、/從文件輸入數(shù)據(jù)virtual void Output()=0; /向屏幕輸出數(shù)據(jù)virtual void Output(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&l

17、t;<"n 學(xué)號 :" cin>>num;cout<<"n 姓名 :" cin>>Name;cout<<"n 性別 :" cin>>sex;cout<<"n 年齡 :" cin>>old;cout<<"n 班級 :" cin>>G;cout<<"n 第幾節(jié)課 :" cin>>Hours;Salary=Incoming(); void Inp

18、ut(ifstream& ifs) ifs>>num>>Name>>sex>>old>>G>>Duty>>Hours>>Salary; void Output() cout<<num<<"t"<<Name<<"t"<<sex<<"t"<<old<<"t"<<G<<"t"<

19、;<Duty<<"t"<<Hours<<"t"<<Salary<<"t"<<e ndl; void Output(ofstream& ofs) ofs<<num<<"t"<<Name<<"t"<<sex<<"t"<<old<<"t"<<G<<"

20、t"<<Duty<<"t"<<Hours<<"t"<<Salary<<"t"<<en dl; 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;/ 早

21、退日期char Z;/ 課程名稱public:Assistant() Duty=2;Salary=650;Allowance=150; void Input() cout<<"n 學(xué)號 :" cin>>num;cout<<"n 姓名 :" cin>>Name;cout<<"n 性別 :" cin>>sex;cout<<"n 年齡 :" cin>>old;cout<<"n 班級 :" cin

22、>>G;cout<<"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"<<se

23、x<<"t"<<old<<"t"<<G<<"t"<<Duty<<"t"<<Hours<<"t"<<Salary<<"t"<<e ndl; void Output(ofstream& ofs) ofs<<num<<"t"<<Name<<"t"

24、<<sex<<"t"<<old<<"t"<<G<<"t"<<Duty<<"t"<<Hours<<"t"<<Salary<<"t"<<en dl; double Incoming()if(Salary>70)return Salary+Allowance+(Hours-70)*20;elsereturn Salary+

25、Allowance; ;class Manager:virtual public Person /請假 protected:int Allowance;int Hours; / 第幾節(jié)課char B;/ 請假日期char Z;/ 課程名稱public:Manager() Duty=3;Salary=750;Allowance=250; void Input() cout<<"n 學(xué)號 :" cin>>num;cout<<"n 姓名 :" cin>>Name;cout<<"n 性別 :&

26、quot; 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>>

27、Salary; void Output() cout<<num<<"t"<<Name<<"t"<<sex<<"t"<<old<<"t"<<G<<"t"<<Duty<<"t"<<Hours<<"t"<<Salary<<"t"<<e ndl

28、; 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(); /導(dǎo)引void Stat(); /統(tǒng)計(jì);College:College

29、() / 構(gòu)造函數(shù) (創(chuàng)建 1 個(gè)頭結(jié)點(diǎn)的鏈表 )Person *p=new Teacher;PL=p; coutvv"自動(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*增加 *n"/ 查找尾結(jié)點(diǎn)Person *p=PL; Teacher *pt; Assis

30、tant *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->Input(); p->nex

31、t=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<<" 輸入你要查詢的編號: " cin>>ID;p1=PL->next; p2=PL;while(p1) if(p1->num=ID) break; / 找到else p2=p1

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

33、ext;*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<<" 指定的人員沒有找到 !n&qu

34、ot; 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<<" 指定的人員沒有找到 !n"elsep1->Output(

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

36、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í)空間int Duty; /人員類型Pers

37、on *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=new Teacher_Assis

38、tant; 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;while(p->nex

39、t)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->Input();p->next=pa;break;case 3: pm

40、=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- 請假 ,4- 曠課 n" cin>>b;p1=PL->next;p2=PL;while(p1)if(p1->Duty=b)i+;/ 找到 p

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論