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

下載本文檔

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

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上一、設(shè)計(jì)內(nèi)容與設(shè)計(jì)要求1設(shè)計(jì)內(nèi)容:學(xué)生考勤管理系統(tǒng)1、問(wèn)題描述學(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)顯

2、示功能:可顯示當(dāng)前系統(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)中沒(méi)有相應(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)行使用。目 錄一、 需求分析1.系統(tǒng)功能流程圖退出主程序初始化程序菜單程序查找刪除修改統(tǒng)計(jì)錄入

3、顯示保存3.輸入輸出的要求1.輸入的要求:通過(guò)主函數(shù)體調(diào)用其他函數(shù)應(yīng)用系統(tǒng)主控界面包括學(xué)生信息錄入,查找等功能模塊。學(xué)生信息錄入功能完成學(xué)生信息和缺課信息的輸入。記錄查詢功能可以對(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除。能夠按編號(hào)、姓名對(duì)學(xué)生的信息進(jìn)行檢索并將檢索結(jié)果顯示在屏幕上??梢越y(tǒng)計(jì)全部學(xué)生缺課次數(shù),及其缺課類型。要求有

4、錯(cuò)誤提示功能。如果檢索不到相應(yīng)的信息應(yīng)提示用戶。 三、詳細(xì)設(shè)計(jì)1.類設(shè)計(jì):類:Person 數(shù)據(jù)成員學(xué)號(hào),姓名,性別,年齡,班級(jí)缺課類型,缺課次數(shù),指針域double 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) virtua

5、l void Input()=0; /從鍵盤(pán)輸入數(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 sc

6、hool成員函數(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()void Output(ofstream&

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

8、員函數(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)造 College(); /析構(gòu) void Add(); /退出 void Delete(); /刪除 voi

9、d Modify(); /修改 void Print(); /輸出 void Save(); /信息存盤(pán) 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ì)通過(guò)主窗體調(diào)用其他窗體。應(yīng)用系統(tǒng)主控界面包括學(xué)生信息錄入,查找等功能模塊。學(xué)生信息錄入功能完成學(xué)生信息和成績(jī)的輸入。記錄查詢功能可以對(duì)數(shù)據(jù)各分類的記錄進(jìn)行查詢。具體舉例如下:1) 輸入函數(shù):void Input() coutn

10、um; coutName; coutsex; coutold; coutG; coutHours; Salary=Incoming(); 2)刪除函數(shù)void school:del()student *p,*p2;int num;coutnum;if( !find(&p,num,) )coutSORRY!找不到你要?jiǎng)h除的內(nèi)容!next)-output();p2=p-next;p-next=p2-next;delete p2;school:setkey(1);2. 類的派生之間的示意圖TercherAssitantMannagerTercher_AssitantPerson五、 系統(tǒng)調(diào)試1.首頁(yè)

11、進(jìn)入學(xué)生考勤管理系統(tǒng)主菜單2錄入學(xué)生信息界面:3.顯示學(xué)生信息界面:4.修改學(xué)生信息六、 使用說(shuō)明及心得體會(huì)此次c+課程設(shè)計(jì),在指導(dǎo)教師的精心教導(dǎo)下,我學(xué)會(huì)了如何用C+編寫(xiě)一個(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è)功能集中出來(lái)按照程序編寫(xiě)原則,便于查詢。七、附件源文件代碼:#include 文件操作頭文件#include 字符串流 class Person /人員類(抽象類) protected: double num; /學(xué)號(hào) char Name20; /姓名 char sex;/性別

12、 double old;/年齡 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; /從鍵盤(pán)輸入數(shù)據(jù) virtual void Input(ifstream& ifs)=0; /從文件輸入數(shù)據(jù) virtual void Output()=0; /向屏幕輸出數(shù)據(jù) virtual void

13、 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() /鍵盤(pán)補(bǔ)充輸入其它數(shù)據(jù) coutnum; coutName; coutsex; coutold; coutG; coutHours; Sala

14、ry=Incoming(); void Input(ifstream& ifs) ifsnumNamesexoldGDutyHoursSalary; void Output() coutnumtNametsextoldtGtDutytHourstSalarytendl; void Output(ofstream& ofs) ofsnumtNametsextoldtGtDutytHourstSalaryt120) return Salary+(Hours-120)*20; else return Salary; ; class Assistant:virtual public Person /早

15、退 protected: int Allowance; int Hours; /第幾節(jié)課 char B;/早退日期 char Z;/課程名稱 public: Assistant() Duty=2; Salary=650; Allowance=150; void Input() coutnum; coutName; coutsex; coutold; coutG; coutHours; Salary=Incoming(); void Input(ifstream& ifs) ifsnumNamesexoldGDutyHoursSalary; void Output() coutnumtNamet

16、sextoldtGtDutytHourstSalarytendl; void Output(ofstream& ofs) ofsnumtNametsextoldtGtDutytHourstSalaryt70) return Salary+Allowance+(Hours-70)*20; else return Salary+Allowance; ; class Manager:virtual public Person /請(qǐng)假 protected: int Allowance;int Hours; /第幾節(jié)課 char B;/請(qǐng)假日期 char Z;/課程名稱public: Manager()

17、 Duty=3; Salary=750; Allowance=250; void Input() coutnum; coutName; coutsex; coutold; coutG; coutHours; Salary=Incoming(); void Input(ifstream& ifs) ifsnumNamesexoldGDutyHoursSalary; void Output() coutnumtNametsextoldtGtDutytHourstSalarytendl; class College private: Person *PL; void Clear(); int Col

18、lege:Cfind(int ID,Person *p1,Person *p2); public: College(); /構(gòu)造 College(); /析構(gòu) void Add(); /退出 void Delete(); /刪除 void Modify(); /修改 void Print(); /輸出 void Save(); /信息存盤(pán) void Load(); /信息裝入 void Find(); /查找 void Build(); /導(dǎo)引 void Stat(); /統(tǒng)計(jì) ; College:College() /構(gòu)造函數(shù)(創(chuàng)建1個(gè)頭結(jié)點(diǎn)的鏈表) Person *p=new Teache

19、r; PL=p; coutnext; delete p; p=PL; PL=0; void College:Add() /增加 char c; do coutInput(); 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-next=pta; break; default: return;

20、coutc; while(c=y|c=Y); Save(); /查找 void College:Find() double ID; Person *p1; Person *p2; coutID; p1=PL-next; p2=PL; while(p1) if(p1-num=ID) break; /找到 else p2=p1; /繼續(xù)查找 p1=p1-next; if(!p1) cout找不到你所查詢的人!n請(qǐng)確認(rèn)你所查詢的編號(hào)是否出錯(cuò)!n;return; else coutn* 出勤信息表 *n; coutOutput(); /查找缺課結(jié)點(diǎn)(返回1-找到,0-未找到.結(jié)點(diǎn)指針由p1返回,p2為

21、前看指針) int College:Cfind(int ID,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() /刪除 coutn* 刪除 *n; int num; Person *p1,*p2; coutnum; if(!Cfind(num,&p1,&p2) coutnext=p1-next; /連接 delete p1; cout正

22、確刪除!n; Save(); void College:Modify() /修改 coutn* 修改 *n; int num; Person *p1,*p2; coutnum; if(!Cfind(num,&p1,&p2) coutOutput(); /輸出原來(lái)的出勤信息(做提示) p1-Input(); /輸入新的出勤信息(更新) cout修改完成!n; Save(); void College:Print() /輸出出勤信息 coutn* 出勤信息表 *n; coutnext; if(!p) coutOutput(); p=p-next; void College:Save() /出勤信息

23、存盤(pán)? ofstream f(Person.dat,ios:out); /打開(kāi)文件 Person *p=PL-next; while(p) p-Output(f); p=p-next; f.close(); /關(guān)閉文件 coutbufbufDuty; 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_Assistant; break; default: f.close();

24、 return; p-next=p2; p=p-next; f.seekg(t); p-Input(f); else break; f.close(); void College:Load() /出勤信息錄入 char ah; int c; coutn* 出勤信息錄入 *n; do coutc; for(int i=1;inext)p=p-next; int ch; coutch; 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-Input(); p-next=pta; break; default: return; Save(); coutah; while(ah=Y|ah=y); void College:Stat() Person *p1; Person *p2;

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論