學生考勤管理系統_第1頁
學生考勤管理系統_第2頁
學生考勤管理系統_第3頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

3、程圖) 63. 系統功能流程圖 74. 輸入輸出的要求 7二、總體分析 71. 系統功能分析 82. 系統功能結構圖 8三、詳細設計 91. 類設計: 11四、界面設計與各功能模塊的實現 121. 界面設計 12五、系統調試 141. 首頁進入學籍管理系統主菜單 142 錄入學生信息缺課界面: 153. 顯示學生信息缺課界面 164. 查找學生信息界面 175. 刪除學生信息界面 186. 修改學生信息 187. 統計學生信息: 19六、使用說明及心得體會 20七、附件 20一、 需求分析1.系統功能流程圖主程序3.輸入輸出的要求1. 輸入的要求:通過主函數體調用其他函數應用系統主控界面包括學

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

5、Person 數據成員 學號,姓名,性別,年齡,班級缺課類型,缺課次數,指針域 double num; / 學號char Name20; / 姓名char sex;/ 性別 double old;/ 年齡 long double G;/ 班級 int Duty; / 缺課類型 (1- 遲到 ,2- 早退,3- 請假,4- 曠課 ) double Salary; / 缺課次數 Person *next; / 指針域 、 成員函數Person() / 基類構造next=0; / 指針域設置為空virtual Person() / 基類虛析構 virtual void Input()=0; /從鍵盤

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

7、員函數:Tercher () void Input() void Input(ifstream& ifs) void Output(ofstream& ofs) double Incoming() 遲到類: class Assistant:virtual public Person 數據成員: protected:int Allowance;int Hours; / 第幾節(jié)課 char B;/早退日期char Z;/課程名稱成員函數: Assistant () void Input() void Input(ifstream& ifs) void Output() vo

8、id Output(ofstream& ofs) double Incoming() 請假類: class Manager:virtual public Person 數據成員: protected:int Allowance;int Hours; / 第幾節(jié)課 char B;/請假日期char Z;/課程名稱成員函數:Manager()void Input()void Input(ifstream& ifs)void Output()void Output(ofstream& ofs)double Incoming() 曠課類:class Teacher_Assist

9、ant:public Teacher,public Assistant 成員函數:Teacher_Assistant()void Input()void Input(ifstream& ifs)void Output()void Output(ofstream& ofs) double Incoming() 學生類: class College 數據成員 private:Person *PL;void Clear();int College:Cfind(int ID,Person *p1,Person *p2) 成員函數: public:College(); / 構造Colle

10、ge(); / 析構 void Add(); / 退出 void Delete(); /刪除void Modify(); /修改void Print(); / 輸出 void Save(); / 信息存盤 void Load(); / 信息裝入void Find(); /查找void Build(); / 導引void Stat(); /統計四、界面設計與各功能模塊的實現1. 界面設計1. 界面設計 程序運行后會出現一個簡捷的窗口,便于用戶查詢數據。2. 功能模塊實現設計通過主窗體調用其他窗體。 應用系統主控界面包括學生信息錄入, 查找等功能模塊。 學生 信息錄入功能完成學生信息和成績的輸入。

11、 記錄查詢功能可以對數據各分類的記錄進行查 詢。具體舉例如下:1)輸入函數:void Input()cout<<"n 學號 :" 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 )刪除函數void school:del()student *p,*p2;int num;cout<<" 請輸入編號 : "cin>>num;if( !find(&p,nu m,“")cout«"SORR丫找不到你要刪除的內容!"<<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五、系統調試1.首頁進入學生考勤管理系統主菜單2錄入學生信息界面:in 亠 m 一二r*出勤信備錄入*輸入戛錄關的出勤人員個數=會入出勤分類碼"-遲到2-早退亠請假4-曠課1 : 2 -=201201社卷5 Jack陛別山*1 壬級二 1士013.顯示學生信息界面唱醫(yī)持齡班級缺課類型缺課次數201201jackb21110125-500201202bobh21110226-480201203naryg201103498094.修改學生信息P*修改*20110

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

15、uble num; / 學號char Name20; / 姓名char sex;/ 性別double old;/ 年齡long double G;/ 班級int Duty; /缺課類型 (1- 遲到 ,2- 早退 ,3- 請假 ,4- 曠課 )double Salary; / 缺課次數Person *next; / 指針域public:Person() / 基類構造 next=0; /指針域設置為空 virtual Person() / 基類虛析構 virtual void Input()=0; /從鍵盤輸入數據virtual void Input(ifstream& ifs)=0;

16、/從文件輸入數據virtual void Output()=0; /向屏幕輸出數據virtual void Output(ofstream& ofs)=0; /向文件輸出數據virtual double Incoming()=0; / 計算次數friend class College; ;class Teacher:virtual public Person /遲到類 protected:int Hours; /第幾節(jié)課char B;/ 遲到日期char Z;/ 課程名稱public: Duty=1;Salary=800; void Input() /鍵盤補充輸入其它數據 cout&l

17、t;<"n 學號 :" 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 學號 :" 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 學號 :" 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(); / 構造College(); /析構void Add(); /退出void Delete(); /刪除void Modify(); /修改void Print(); /輸出void Save(); /信息存盤void Load(); /信息裝入void Find(); /查找void Build(); /導引void Stat(); /統計;College:College

29、() / 構造函數 (創(chuàng)建 1 個頭結點的鏈表 )Person *p=new Teacher;PL=p; coutvv"自動裝入數據n"Build(); College:College() / 析構函數 ( 僅保留 1 個頭結點 )Person *p=PL;while(p) / 逐個刪除結點,包括頭結點PL=p->next;delete p; p=PL;PL=0;void College:Add() / 增加char c; do cout<<"n*增加 *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<<" 是否進行循環(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 請確認你所查詢的編號是否出錯 else cout<<"n* 出勤信息表 *n"cout<<" 學號 姓名 性別 年齡 班級 缺課類型 缺課次數 n" p1->Output();/查找缺課結點(返回1-找到,0-未找到.結點指針由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<<" 學號 姓名 性別 年齡 班級 缺課類型 缺課次數 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(); / 關閉文件 cout<<" 職工信息已經保存在 Person.dat.n"void College:Build() / 出勤信息char buf81; / 臨時空間int Duty; /人員類型Pers

37、on *p2; / 新建結點的指針 long t; / 讀寫位置Clear();ifstream f("Person.dat",ios:in);Person *p=PL; / 尾結點指針 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<<" 輸入要錄入的出勤人員個數 :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<<" 選擇你要統計的類別 n1- 類別; 2- 次數; 3- 缺課總次數; n" cin>>a;if(a=1)cout<<" 輸入你要統計的類別: 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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論