




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、一、設計內容與設計要求1 .設計內容:學生考勤管理系統1、問題描述學生信息包括:學號、姓名、性別、年齡、班級等信息。考勤信息包括:缺課日期、第幾節課、課程名稱、學生姓名、缺課類型(遲到、早退、請假和曠課)。2、功能要求(1)添加功能:程序能夠添加學生的記錄和缺課記錄,提供選擇界面供用戶選擇所要添加的類別。添加學生記錄時,要求學號要唯一,如果添加了重復學號的記錄時,則提示數據添加重復并取消添加。(2)查詢功能:可根據學號、姓名等信息對已添加的學生記錄進行查詢,如果未找到,給出相應 的提示信息,如果找到,則顯示相應的記錄信息。還可以按課程名、學生姓名對缺課記錄進行查詢。(3)顯示功能:可顯示當前系
2、統中所有學生的記錄和缺課記錄,每條記錄占據一行。(4)編輯功能:可根據查詢結果對相應的記錄進行修改,修改時注意學號的唯一性。(5)刪除功能:主要實現對已添加的學生記錄進行刪除。如果當前系統中沒有相應的記錄,則提示“記錄為空!”并返回操作。(6)統計功能:能根據多種參數進行統計。 能按課程名統計出學生曠課的信息、還可以按姓名統計出任一學生的曠課情況。需要排序。(7)保存功能:可將當前系統中各類記錄存入文件中,存入方式任意。(8)讀取功能:可將保存在文件中的信息讀入到當前系統中,供用戶進行使用。目 錄一、需求分析61 .系統設計目的與意義62 .系統功能需求(系統流程圖) 63 .系統功能流程圖7
3、4 .輸入輸出的要求7二、總體分析7工系統功能分析82.系統功能結構圖8三、詳細設計91.類設計:11四、界面設計與各功酢模塊的實現 121_ 界面設計12五、系統調試141.首頁講入學籍管理系統中菜單 142錄入學牛信息缺課界面: 153 .顯示學牛信息缺課界面164 .查找學牛信息界面175 .刪除學生信息界面186 .修改學生信息187 .統計學生信息:19六、使用說明及心得體會 20七、附件20一、需求分析1.系統功能流程圖3.輸入輸出的要求1 .輸入的要求:通過主函數體調用其他函數應用系統主控界面包括學生信息錄入,查找等功能模塊。學生信息錄入功能完成學生信息和缺課信息的輸入。 記錄查
4、詢功能可以對數據各分類的記錄進 行查詢。2 .輸出的要求:1)能夠按編號、姓名對學生的信息進行檢索并將檢索結果顯示在屏幕上。2)可以統計全部學生缺課類型,及其缺課次數。3)如果檢索不到相應的信息應提示用戶。二、總體分析系統功能分析能夠從屏幕上讀取一個學生的信息和缺課信息并將信息存入到數據文件中。能夠將指 定的信息從文件中刪除。能夠按編號、姓名對學生的信息進行檢索并將檢索結果顯示在屏 幕上。可以統計全部學生缺課次數,及其缺課類型。要求有錯誤提示功能。如果檢索不到 相應的信息應提示用戶。三、詳細設計1.類設計:類:Person數據成員學號,姓名,性別,年齡,班級缺課類型,缺課次數,指針域 doub
5、le 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; /從鍵盤輸入數據virtual void Input(ifstream& ifs)=0; /從文件輸入數
6、據virtual void Output()=0; / 向屏幕輸出數據virtual void Output(ofstream& ofs)=0; / 向文件輸出數據virtual double Incoming()=0; / 計算次數friend class College;類: Teacher (公共繼承與Person 類)數據成員:protected:int Hours; / 第幾節課char B;/ 遲到日期char Z;/ 課程名稱 class school成員函數:Tercher () void Input()void Input(ifstream& ifs)void
7、 Output(ofstream& ofs)double Incoming()遲到類:class Assistant:virtual public Person數據成員:protected:int Allowance;int Hours; / 第幾節課char B;/早退日期char Z;/課程名稱成員函數:Assistant ()void Input()void Input(ifstream& ifs)void Output()void Output(ofstream& ofs)double Incoming()請假類 :class Manager:virtual p
8、ublic Person數據成員:protected:int Allowance;int Hours; / 第幾節課char B;/請假日期char Z;/課程名稱成員函數:Manager()void Input()void Input(ifstream& ifs)void Output()void Output(ofstream& ofs)double Incoming()曠課類:class Teacher_Assistant:public Teacher,public Assistant成員函數:Teacher_Assistant()void Input()void Inp
9、ut(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(); / 構造 College(); /析構void Add(); /退出void Delete(); /刪除void Modify(); /修改void Print(); /輸出void Save
10、(); /信息存盤void Load(); /信息裝入void Find(); /查找void Build(); /導引void Stat(); /統計四、 界面設計與各功能模塊的實現1. 界面設計1 .界面設計 程序運行后會出現一個簡捷的窗口,便于用戶查詢數據。2. 功能模塊實現設計通過主窗體調用其他窗體。 應用系統主控界面包括學生信息錄入, 查找等功能模塊。 學生 信息錄入功能完成學生信息和成績的輸入。 記錄查詢功能可以對數據各分類的記錄進行查詢。 具體舉例如下: 1)輸入函數: void Input() cout<<"n 學號 :" cin>>
11、num; cout<<"n姓名:" cin>>Name;cout<<"n性別:" cin>>sex;cout<<"n年齡:" cin>>old;cout<<"n班級:" cin>>G;cout<<"n 第幾節課 :" cin>>Hours;Salary=Incoming(); 2 )刪除函數void school:del() student *p,*p2;int num;cou
12、t<<"請輸入編號 cin>>num;if( !find(&p,num,"A")(p->next)->output();ndl;MannagerHcout<<"SORRY!找不領爾要;Peson內容! return;Assitantp2=p->next;delete p2;p-AnexTefch->next;school:setkey(1);2.類的派生之間幃rche_Assitant五、系統調試1.首頁進入學生考勤管理系統主菜單2錄入學生信息界面:3 .顯示學生信息界面:4 .修改學生
13、信息六、使用說明及心得體會此次C+課程設計,在指導教師的精心教導下,我學會了如何用C+與寫一個簡單的應用程序。首先要對程序的設計要求有一個比較明確的認識,然后系統分析與系統設計, 最后是代碼設計與調試。程序實現上,設計了簡單的查詢界面,將各個功能集中出來按照 程序編寫原則,便于查詢。七、附件源文件代碼:#include <fstream.h>文件操作頭文件#include <string.h> 字符串流class Person隊員類(抽象類)protected:double num; / 學號char Name20; / 姓名char sex;/性別double old
14、;/ 年齡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; / 從文件輸入數據virtual void Output()=0; / 向屏幕輸出數據virtual void Output
15、(ofstream& ofs)=0; / 向文件輸出數據virtual double Incoming()=0; / 計算次數friend class College; ;class Teacher:virtual public Person /遲到類 protected:int Hours; / 第幾節課char B;/遲到日期char Z;/課程名稱public: Duty=1;Salary=800; void Input() / 鍵盤補充輸入其它數據 cout<<"n 學號 :" cin>>num;cout<<"n
16、姓名:"cin>>Name;cout<<"n性別:"cin>>sex;cout<<"n年齡:"cin>>old;cout<<"n班級:"cin>>G;cout<<"n 第幾節課 :" 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; 第幾節課 char B;早退日期 char Z;課程名稱public: Assistant() Duty=2;Salary=650;Allowance=150; void lnpu
20、t() cout«"n 學號cin»num; cout«"n 姓名cin»Name; cout«"n 性另Ucin»sex; cout«"n 年齡cin»old; cout«"n 班級cin»G; cout«"n 第幾節課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 請彳取 protected:int Allowance;int Hours; /第幾節課 char B;請假日期 char Z;課程名稱public:Manager() Duty=3;Salary=750;Allowance=250; void lnput() cout«"n 學號cin»num; cout«"n 姓名c
24、in»Name;cout<<"n 性別 :" cin>>sex;cout<<"n 年齡 :" cin>>old;cout<<"n 班級 :" cin>>G;cout<<"n 第幾節課 :" 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(); / 構造College(); / 析構void Add(); / 退出void Delete(); / 刪除void Modify(); / 修改void Print(); / 輸出void Save(); / 信息存盤void Load(); / 信息裝入void Find(); / 查找void
27、 Build(); / 導引void Stat(); / 統計;College:College() / 構造函數 (創建 1 個頭結點的鏈表)Person *p=new Teacher;PL=p; cout<<"自動裝入數據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* 增
28、加 *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<<" 是否進行循環?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(p
30、1->num=ID)break; / 找到elsep2=p1; / 繼續查找p1=p1->next;if(!p1) cout<<" 找不到你所查詢的人 !n 請確認你所查詢的編號是否出錯!n"return;else cout<<"n* 出勤信息表*n"cout<<" 學號 姓名 性別 年齡 班級 缺課類型 缺課次數 n"p1->Output();/查找缺課結點(返回1-找到,0-未找到.結點指針由 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; / 繼續查找* 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)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<<" 編號 :" cin>>num;if(!Cfind(num,&p1,&p2)cout<<" 指定的人員沒有
33、找到 !n"elsep1->Output(); / 輸出原來的出勤信息(做提示 )p1->Input(); / 輸入新的出勤信息(更新 )cout<<" 修改完成 !n"Save(); void College:Print() / 輸出出勤信息cout<<"n* 出勤信息表*n"cout<<" 學號 姓名 性別 年齡 班級 缺課類型 缺課次數 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(); / 關閉文件cout<<" 職工信息已經保存在 Person.dat.n"void College:Build() / 出勤信息char buf81; / 臨時空間i
35、nt Duty; / 人員類型Person *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=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<<" 輸入要錄入的出勤人員個數 :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-請假 ,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<<" 是否還要繼續錄入出勤信息? 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
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 防火隊員考核方案范本
- 云南德宏小木屋施工方案
- 銀行從業資格證話題探討試題及答案
- 深入分析2025年國際金融理財師考試中投資決策的要點試題及答案
- 2025年新思路的證券從業資格考試試題及答案
- 微生物檢驗技師證書考試全景分析試題及答案
- 參與討論2025年特許金融分析師考試試題及答案
- 2024項目管理案例分析試題及答案
- 微生物檢測在新興傳染病中的應用試題及答案
- 上堤路欄桿施工方案
- 2025-2030中國類腦計算行業市場發展現狀及建設案例與發展趨勢研究報告
- 2025時政試題及答案(100題)
- DB11-T 765.4-2010 檔案數字化規范 第4部分:照片檔案數字化加工
- 《紀檢監察機關派駐機構工作規則》主要內容解讀課件PPT
- 幼兒園繪本:《你真好》 PPT課件
- 可再生能源概論左然第四章 太陽電池
- 六年級品社《春天的故事》(課堂PPT)
- 關于電機功率、轉矩和慣量等
- 客戶關系生命周期各階段的營銷策略
- “差點兒”和“差點兒沒”PPT課件
- 2019最新十八項醫療核心制度考試題及答案
評論
0/150
提交評論