




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、C/C+程序設計專題實驗報告題目:學生考勤管理系統設計 班級:電子信息科學與技術131姓名: 鄔 帥 斌 25 / 27文檔可自由編輯打印目錄 目錄1 摘要.21.設計要求和目的2 1.1設計目的.3 1.2問題描述.3 1.3功能要求.3 1.4問題的解決方案.32 設計思路和方法43 主模塊設計.54.運行測試及結果135. 總結16參考文獻16源代碼.17摘要 隨著信息技術在管理上越來越深入的應用,管理信息系統的實施在技術上已經逐步成熟。管理信息系統是一個不斷發展的學科,任何單位要生存要發展,要提高效率地把內部活動有機地組織起來,就必須建立與自身特點相適應的信息管理系統。 由于學校的學生
2、管理系統缺乏開發,而學生人數不斷增加,學生信息的不斷更新,所以,學生考勤管理系統的建立就顯得非常重要了。 本設計是基于Visual basic C+ 6.0開發環境,至上而下,層次化地設計學生考勤管理,綜合考慮學生考勤管理所涉及的多方面問題,結合學校和教師的情況,有步驟,條理清晰的設計,操作簡單,很方便的實現了學校和老師對學生考勤的管理。關鍵詞:學生考勤管理 C+ 信息錄入 查詢 1.設計要求和目的1.1設計目的 (1)進一步鍛煉學生對C+課程基礎知識和實踐技能的掌握和運用; (2)要求學生基本掌握面向對象程序設計的基本思路和方法; (3)要求學生能夠利用所學的基礎知識和技能,解決簡單的面向對
3、象設計問題。1.2問題描述學生信息包括:學號、姓名、性別、年齡、班級等信息。考勤信息包括:缺課日期、第幾節課、課程名稱、學生姓名、缺課類型(遲到、早退、請假和曠課)。1.3功能要求(1)添加功能:程序能夠添加學生的記錄和缺課記錄,提供選擇界面供用戶選擇所要添加的類別。添加學生記錄時,要求學號要唯一,如果添加了重復學號的記錄時,則提示數據添加重復并取消添加。(2)查詢功能:可根據學號、姓名等信息對已添加的學生記錄進行查詢,如果未找到,給出相應的提示信息,如果找到,則顯示相應的記錄信息。還可以按課程名、學生姓名對缺課記錄進行查詢。(3)顯示功能:可顯示當前系統中所有學生的記錄和缺課記錄,每條記錄占
4、據一行。(4)編輯功能:可根據查詢結果對相應的記錄進行修改,修改時注意學號的唯一性。(5)刪除功能:主要實現對已添加的學生記錄進行刪除。如果當前系統中沒有相應的記錄,則提示“記錄為空!”并返回操作。(6)統計功能:能根據多種參數進行統計。能按課程名統計出學生曠課的信息、還可以按姓名統計出任一學生的曠課情況。需要排序。(7)保存功能:可將當前系統中各類記錄存入文件中,存入方式任意。(8)讀取功能:可將保存在文件中的信息讀入到當前系統中,供用戶進行使用。1.4問題的解決方案 根據系統功能要求,可以將問題解決分為以下步驟:(1)應用系統分析,建立該系統的功能模塊框圖以及界面的組織和設計;(2)分析系
5、統中的各個實體及它們之間的關系;(3)根據問題描述,設計系統的類層次;(4)完成類層次中各個類的描述;(5)完成類中各個成員函數的定義;(6)完成系統的應用模塊;(7)功能調試;(8)完成系統總結報告。(7)功能調試;(8)完成系統總結報告。2. 設計思路和方法2.1設計思路根據設計要求,經分析可將整個系統劃分為7個功能模塊。數據管理中可以對學生的基本信息、課程的基本信息、學生缺課的查詢、添加、刪除和修改。查詢管理通過根據學生姓名,課程姓名 時間段兒等信息,查詢單個學生的缺課記錄,單科課的曠課記錄,單個學生的曠課記錄。功能模塊圖如下圖所示:2.2數據結構設計 struct xuekechar
6、xueke_name50;int people_num;這是定義了一個xueke結構體,用來存放一個學科名及其相應的曠課人數;struct studentchar name50;long time;int lesson_time;char lesson_name50;int chidao_num;int zaotui_num;int qingjia_num;int kuangke_num;struct student *next;這是定義了一個student的結構體,用來存放一個學生的考勤記錄,其中有,字符數組name50,lesson_name50,分別存放學生名字,缺課課程名字;int型變
7、量lesson_time,chidao_num,zaotui_num,qingjia_num, kuangke_num,分別來存放,缺課節次,遲到次數,早退次數,請假次數,曠課次數 long型變量time,記錄時間。3.主模塊設計3.1建立學生缺課記錄子模塊建立的學生人數,學生基本信息(包括缺課時間、學生姓名、課程名稱、節次、遲到次數、早退次數、請假次數、曠課次數),用creat()函數,如下圖: 3.2修改學生缺課記錄子模塊 3.3修改學生缺課記錄子模塊 3.4查看單科曠課記錄子模塊根據學科名稱和時間范圍查出所有在該范圍內曠課的學生以及次數, 如下圖: 3.5查看學生曠課記錄子模塊根據要查詢
8、的學科名稱及時間段查出在改時間段內該門課上曠課的人數,如下圖: 3.6載入學生曠課記錄子模塊可以載入實現儲存在當前文件夾中txt文件中所儲存的數據,如下圖: 3.7儲存學生曠課記錄子模快進入系統界面,進行數據的輸入,信息的保存調用相應的函數打開相應的地址,查詢各項信息。如下圖:4.運行測試與結果4.1開始菜單4.2主菜單4.3創建學生缺課記錄庫4.4修改學生缺課記錄4.5查詢學生缺課記錄4.6查看單科曠課記錄4.7查看學生曠課記錄4.8載入曠課記錄4.9儲存曠課記錄5.總結在老師同學的細心幫助下,結合網上的參考資料,這次設計總算順利完成。通過本次設計,讓我對C+基礎課程有了更加深刻的理解,在相
9、關的能力上有了很大的提高,雖然在設計過程中遇到很大的困難,但是經過不斷的修改和調試,在此過程中受益匪淺。 這次的程序設計相對于平時的訓練還是有了進步的。學生考勤管理系統要求至少要有四個類,在起初,對于定義哪四個類我是不清楚的,通過仔細的研讀問題描敘終于在腦海里確定了這四個類。既然是學生考勤管理系統,那由學生缺課信息中的日期我想到了時間類,這是一個很簡單的類。從系統的幾大功能我又想到了系統的基礎就是缺課學生的缺課信息,于是我又想到了一個信息類,還有兩個類是根據兩個統計功能想到的,在現在看來似乎有些不妥。通過這次的課程設計我明白了學習程序設計語言必須要勤做實驗,通過實驗總結經驗。平時遇到的一些小問
10、題一定要重視,越是基礎的知識越要理解透徹。比如指針與數組方面的知識,一旦沒有弄清楚,在設計程序時就會吃虧。這次的課設中,我遇到了很多的問題,有的通過思考或查看書本解決了,有的還留在腦子里,只有通過孜孜不倦的求索我們才會有進步,不懂得思考就不能真正的掌握一門知識。這次的實驗給以了我警示,讓我明白我所掌握的知識還很欠缺,對于繼承與派生這一章的知識,我以為自己勉強掌握了,這次實驗后我發現我掌握得還不夠。基類的保護成員公有繼承到派生類,類外是否可以通過對象來訪問呢,原先我認為是可以的,經過這次程序設計,我知道我錯了。總之,我覺得做學問不應該馬虎,對于所學一定要有深入的理解,這也是我這次課設得到的啟示。
11、參考文獻:劉銳宇.Visual C+從入門到精通.清華大學出版社譚浩強.C+語言程序設計.清華大學出版社設計源程序代碼:#include<cstdio> /stdio.h的內容用C+頭文件的形式表示#include<iostream> #include<malloc.h> /動態內存分配#include<cstring> #include<iomanip> /I/O流控制頭文件#define NULL 0#define guding 10#define LEN sizeof(struct student) /定義了一個常數宏LEN,它
12、的值等于結構體student的所占內存大小using namespace std;int student_num;FILE *fp1; /定義指針類型文件struct xueke char xueke_name50;int people_num;struct student char name50;long time;int lesson_time;char lesson_name50;int chidao_num;int zaotui_num;int qingjia_num;int kuangke_num;struct student *next;void chaxun(struct stu
13、dent *head) int i;char chaxun_name50;cout<<"請輸入要查詢的人名:" cin>>chaxun_name;struct student *p;if(head=NULL)cout<<"聯系人為空"p=head;for(i=0;i<student_num;i+) if(strcmp(chaxun_name,p->name)=0) cout<<"缺課時間:"<<p->time<<"學生姓名:"
14、<<p->name<<"課程名稱:"<<p->lesson_name<<"節次:"<<p->lesson_time<<endl<<"遲到次數:"<<p->chidao_num<<" 早退次數:"<<p->zaotui_num<<"請假次數:"<<p->qingjia_num<<"曠課次數:&quo
15、t;<<p->kuangke_num<<endl;p=p->next; /p的指針內容變成了p->next struct student *xiugai(struct student *head) char xiugai_name50;char xiugai_xueke_name50;int k;cout<<"請輸入要修改的學生姓名與學科名稱【格式:學生姓名(空格)學科名稱】:"cin>>xiugai_name>>xiugai_xueke_name;struct student *p1,*p2;
16、p2=(struct student *)malloc(LEN);p1=head;if(head=NULL) cout<<"沒有學生信息n"return head; while(strcmp(xiugai_name,p1->name)!=0|strcmp(xiugai_xueke_name,p1->lesson_name)!=0)&&(p1->next!=NULL)p1=p1->next; if(strcmp(xiugai_name,p1->name)=0&&strcmp(xiugai_xueke_n
17、ame,p1->lesson_name)=0) cout<<"=修改信息 =n" cout<<" 1-修改缺課時間 n"cout<<" 2-修改學生姓名 n"cout<<" 3-修改課程名稱 n"cout<<" 4-修改第幾節缺課 n"cout<<" 5-修改遲到次數n"cout<<" 6-修改早退次數n"cout<<" 7-修改請假次數n&qu
18、ot;cout<<" 8-修改曠課次數nn"cout<<"=n"cin>>k;switch(k) case 1:cout<<"請輸入新的缺課時間:"cin>>p1->time;break;case 2:cout<<"請輸入新的學生姓名:"cin>>p1->name;break;case 3:cout<<"請輸入新的課程名稱:"cin>>p1->lesson_name;br
19、eak;case 4:cout<<"請輸入新的缺課節次:"cin>>p1->lesson_time;break;case 5:cout<<"請輸入新的遲到次數:"cin>>p1->chidao_num;break;case 6:cout<<"請輸入新的早退次數:"cin>>p1->zaotui_num;break;case 7:cout<<"請輸入新的請假次數:"cin>>p1->qingjia_
20、num;break;case 8:cout<<"請輸入新的曠課次數:"cin>>p1->kuangke_num;break; return head;struct student *creat()int i,b;struct student *head,*p1,*p2; cout<<"請輸入要建立資料的學生人數:"cin>>b;head=p2=NULL;p1=(struct student *)malloc(LEN);cout<<"【輸入格式:缺課時間(空格)學生姓名(空格)課程
21、名稱(空格)第幾節(空格)遲到次數(空格)早退次數(空格)請假次數(空格)曠課次數】n"cout<<"請輸入第1名學生信息:" cin>>p1->time>>p1->name>>p1->lesson_name>>p1->lesson_time>>p1->chidao_num>>p1->zaotui_num>>p1->qingjia_num>>p1->kuangke_num;head=p1;p2=p1;stude
22、nt_num+=1;for(i=1;i<b;i+)p1=(struct student*)malloc(LEN);cout<<"請輸入第"<<i+1<<"名學生信息:" cin>>p1->time>>p1->name>>p1->lesson_name>>p1->lesson_time>>p1->chidao_num>>p1->zaotui_num>>p1->qingjia_num>&
23、gt;p1->kuangke_num;p2->next=p1;p2=p1;student_num+=1; p2->next=NULL; return head;void print(struct student *head) struct student *p;p=head;if(p=NULL)cout<<"沒有學生信息n"while(p!=NULL) cout<<"缺課時間:"<<p->time<<"學生姓名:"<<setw(10)<<p
24、->name<<"課程名稱:"<<p->lesson_name<<"節次:"<<p->lesson_time<<endl<<"遲到次數:"<<p->chidao_num<<"早退次數:"<<p->zaotui_num<<請假次數:"<<p->qingjia_num<<曠課次數:"<<p->kuangk
25、e_num<<endl;p=p->next;struct student *tongji_lesson(struct student *head) struct student *p1,*p2,*p3;char lesson50;long look_time1,look_time2;int xunhuan_num=0;p3=(struct student *)malloc(LEN);if(head=NULL) cout<<"沒有學生信息"return(head); p1=head;p2=p1->next;while(xunhuan_num
26、<student_num) while(p2!=NULL)if(p2->kuangke_num>p1->kuangke_num)p3->chidao_num=p2->chidao_num;p3->kuangke_num=p2->kuangke_num;p3->qingjia_num=p2->qingjia_num;p3->zaotui_num=p2->zaotui_num;p3->lesson_time=p2->lesson_time;p3->time=p2->time;strcpy(p3->
27、lesson_name,p2->lesson_name);strcpy(p3->name,p2->name);p2->chidao_num=p1->chidao_num;p2->kuangke_num=p1->kuangke_num;p2->qingjia_num=p1->qingjia_num;p2->zaotui_num=p1->zaotui_num;p2->lesson_time=p1->lesson_time;p2->time=p1->time;strcpy(p2->lesson_name,
28、p1->lesson_name);strcpy(p2->name,p1->name);p1->chidao_num=p3->chidao_num;p1->kuangke_num=p3->kuangke_num;p1->qingjia_num=p3->qingjia_num;p1->zaotui_num=p3->zaotui_num; p1->lesson_time=p3->lesson_time;p1->time=p3->time;strcpy(p1->lesson_name,p3->less
29、on_name);strcpy(p1->name,p3->name);p1=p2;p2=p2->next;p1=head;p2=p1->next;xunhuan_num+;cout<<"請輸入要查看的學科名稱:"cin>>lesson;cout<<"請輸入要查看的時間范圍【輸入格式:時間(空格)時間】"cin>>look_time1>>look_time2;p1=head; while(p1!=NULL) if(strcmp(lesson,p1->lesson_na
30、me)=0&&look_time1<=p1->time&&p1->time<=look_time2)cout<<"學生姓名:"<<p1->name<<" 曠課次數:"<<p1->kuangke_num<<endl;p1=p1->next; return head;struct student *tongji_student(struct student *head) struct xueke a10;int n,i,j,z
31、hongjian;struct student *p1;char zhongjian_name50;long look_time1,look_time2;if(head=NULL) cout<<"沒有學生信息n"return head; cout<<"請輸入一共的學科數:"cin>>n;for(i=0;i<n;i+) cout<<"請輸入第"<<i+1<<"個學科名稱:"cin>>ai.xueke_name;ai.people
32、_num=0; cout<<"請輸入要查看的時間范圍由小到大【輸入格式:時間(空格)時間】"cin>>look_time1>>look_time2;p1=head;for(i=0;i<n;i+) while(p1!=NULL&&look_time1<=p1->time&&p1->time<=look_time2) if(ai.xueke_name=p1->lesson_name)ai.people_num+=p1->kuangke_num; p1=p1->ne
33、xt;p1=head; for(j=0;j<n-1;j+) for(i=0;i<n-1-j;i+) if(ai.people_num<ai+1.people_num) zhongjian=ai+1.people_num;ai+1.people_num=ai.people_num;ai.people_num=zhongjian;strcpy(zhongjian_name,ai+1.xueke_name);strcpy(ai+1.xueke_name,ai.xueke_name);strcpy(ai.xueke_name,zhongjian_name);else if(ai.pe
34、ople_num=ai+1.people_num&&strcmp(ai.xueke_name,ai+1.xueke_name)>0) zhongjian=ai+1.people_num;ai+1.people_num=ai.people_num;ai.people_num=zhongjian;strcpy(zhongjian_name,ai+1.xueke_name);strcpy(ai+1.xueke_name,ai.xueke_name);strcpy(ai.xueke_name,zhongjian_name);for(i=0;i<n;i+)cout<&l
35、t;"學科名稱:"<<ai.xueke_name<<" 曠課次數:"<<ai.people_num<<endl;return head;return head;struct student *zairu()struct student *p1=NULL,*p2=NULL,*head=NULL;struct student student_ziliao100;int i=0,n=0;if(fp1=fopen("xueshengziliao.txt","rb+")=NUL
36、L) printf("cannot open filen");return(head); while(!feof(fp1)if(fread(&student_ziliaoi,LEN,1,fp1)!=1)if(feof(fp1)fclose(fp1); break; printf(" errorn");i+;n=i;student_num=n;p1=p2=(struct student *)malloc(LEN);head=p1;for(i=0;i<n;i+)p1->chidao_num=student_ziliaoi.chidao_n
37、um;p1->kuangke_num=student_ziliaoi.kuangke_num;strcpy(p1->lesson_name,student_ziliaoi.lesson_name);p1->lesson_time=student_ziliaoi.lesson_time;strcpy(p1->name,student_);p1->qingjia_num=student_ziliaoi.qingjia_num;p1->time=student_ziliaoi.time;p1->zaotui_num=student_ziliaoi.zaotui_num;p2->
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 如何實施工作計劃中的跟蹤評估
- 全面提高學生創造力的教育措施計劃
- 汽車行業月度個人工作計劃
- 總結經驗教訓特許金融分析師考試試題及答案
- 2024年網絡編輯師證書考試品位試題及答案
- 小語種證書考試特別議題試題及答案
- 財富積累與風險管理的關系試題及答案
- 國際金融理財師考試解題思維訓練技巧試題及答案
- 畜牧師職稱考試應考者的試題及答案指南
- 理解用戶體驗在理財中的重要性試題及答案
- 國家安全教育智慧樹知到答案章節測試2023年臨沂職業學院
- (完整版)人教版小學階段英語單詞默寫表
- 2023版浙江評審衛生高級專業技術資格醫學衛生刊物名錄
- GB/T 16866-2006銅及銅合金無縫管材外形尺寸及允許偏差
- GB/T 16823.3-2010緊固件扭矩-夾緊力試驗
- FZ/T 81010-2018風衣
- 語言學-Chapter-4-Syntax復習進程
- 系統生物學-第三講-轉錄組學課件
- 2023年中荊投資控股集團有限公司招聘筆試模擬試題及答案解析
- 護士節趣味運動會主持詞
- 2023年軟件正版化工作總結八篇
評論
0/150
提交評論