c++課程設(shè)計學(xué)生考勤管理系統(tǒng)報告_第1頁
c++課程設(shè)計學(xué)生考勤管理系統(tǒng)報告_第2頁
c++課程設(shè)計學(xué)生考勤管理系統(tǒng)報告_第3頁
c++課程設(shè)計學(xué)生考勤管理系統(tǒng)報告_第4頁
c++課程設(shè)計學(xué)生考勤管理系統(tǒng)報告_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、學(xué)生考勤管理系統(tǒng)信息科學(xué)與技術(shù)學(xué)院程序設(shè)計基礎(chǔ)課程設(shè)計報告題目名稱:學(xué)生考勤管理系統(tǒng)學(xué)生姓名:郭晨晨學(xué)號:2013508093專業(yè)班級:13級計科( 3)班指導(dǎo)教師:郭理2013年6月6日學(xué)生考勤管理系統(tǒng)目錄目錄 .11.課程設(shè)計題目與要求 .21.1課題目的和要求 .21.3課題意義 .22 總體設(shè)計 .32.1功能模塊設(shè)計 .32.2系統(tǒng)設(shè)計方案 .33 詳細(xì)設(shè)計 .43.1數(shù)據(jù)結(jié)構(gòu)設(shè)計 .43.2主模塊設(shè)計 .43.2.1 建立學(xué)生缺課記錄子模塊 .43.2.2 修改學(xué)生缺課記錄子模塊 .53.2.3 修改學(xué)生缺課記錄子模塊 .63.2.4 查看單科曠課記錄子模塊 .73.2.5 查看學(xué)

2、生曠課記錄子模塊 .83.2.6 載入學(xué)生曠課記錄子模塊 .93.2.7 儲存學(xué)生曠課記錄子模快 .104.運行結(jié)果 .124.1運行 .125.課程設(shè)計總結(jié) .14結(jié)束語 .14參考文獻(xiàn).15附錄:源代碼 .15-1-學(xué)生考勤管理系統(tǒng)1.課程設(shè)計題目與要求1.1課題目的和要求設(shè)計目的:要求實現(xiàn) - “學(xué)生考勤管理程序”記錄學(xué)生的缺課情況,它包括:缺課日期、第幾節(jié)課、課程名稱、學(xué)生姓名、缺課類型(遲到、早退、請假及曠課)。1.2設(shè)計要求:1. 錄入學(xué)生的缺課記錄;2修改某個學(xué)生的缺課記錄;3查詢某個學(xué)生的缺課情況;4統(tǒng)計某段時間內(nèi),某門課曠課學(xué)生姓名及曠課次數(shù),按曠課次數(shù)由多到少排序;5統(tǒng)計某

3、段時間內(nèi),有學(xué)生曠課的課程及曠課人次,按曠課人次由多到少排序;6. 系統(tǒng)以菜單方式工作。1.3課題意義程序?qū)嵺`是本科生重要教學(xué)環(huán)節(jié)之一。通過程序?qū)嵺`, 強化學(xué)生的計算機應(yīng)用技能,使學(xué)生驗證、鞏固和充實所學(xué)的理論知識, 加深對相關(guān)內(nèi)容的理解,拓寬知識面,培養(yǎng)學(xué)生的創(chuàng)新精神和實踐能力學(xué)生考勤管理程序可以大大減緩學(xué)生考勤人員的工作量 , 方便了平時上課學(xué)生的出勤率的管理。-2-學(xué)生考勤管理系統(tǒng)2總體設(shè)計2.1 功能模塊設(shè)計根據(jù)分析整個系統(tǒng)主要劃分為 7 個功能模塊, 分別執(zhí)行要求中的功能。 數(shù)據(jù)管理中可以對學(xué)生的基本信息、課程的基本信息、學(xué)生缺課的查詢、添加、刪除和修改。查詢管理通過根據(jù)學(xué)生姓名,

4、課程姓名時間段兒等信息,查詢單個學(xué)生的缺課記錄,單科課的曠課記錄,單個學(xué)生的曠課記錄。功能模塊圖如圖1 所示:學(xué)生考勤管理程序建修查查查載儲立改詢看看入存學(xué)學(xué)學(xué)單學(xué)學(xué)學(xué)生生生科生生生缺缺缺曠曠曠曠課課課課課課課記記記記記記記錄錄錄錄錄錄錄圖 1 功能模塊圖2.2 系統(tǒng)設(shè)計方案這個程序是過程性語言設(shè)計的。 運用多種條件語句, 主體采用的是鏈表指針。 系統(tǒng)的設(shè)計采用了數(shù)組語句、 選擇語句和循環(huán)語句 , 在需要處理大量同類數(shù)據(jù)時 , 這樣就使程序書寫更加簡潔。 程序使用了布爾函數(shù)。 選擇語句多采用 if 多分支選擇結(jié)構(gòu)與 switch 語句。首先計算 switch 表達(dá)式, 然后在 caes 子句中

5、尋找值相等的常量表達(dá)式, 并以此為入口符號, 由此開始順序執(zhí)行。 循環(huán)語句采用了 for 語句等、 do-while 語句, for 語句用于已知循環(huán)次數(shù)的循環(huán)結(jié)構(gòu),括號中的三個量分別用來表示循環(huán)變量初值、循環(huán)終值和循環(huán)增量。do-while語句先循環(huán)后判斷, Break 語句在 switch 語句中,保證多分支情況的正確執(zhí)行,在循環(huán)語句中,強制終止本層循環(huán)。 保存和讀取函數(shù)是典型的函數(shù)功能, 一個程序是由若干個函數(shù)組成的,保存和讀取函數(shù)是和其他函數(shù)互相調(diào)用的。-3-學(xué)生考勤管理系統(tǒng)3 詳細(xì)設(shè)計3.1數(shù)據(jù)結(jié)構(gòu)設(shè)計struct xuekechar xueke_name50;int people_

6、num;這是定義了一個xueke 結(jié)構(gòu)體,用來存放一個學(xué)科名及其相應(yīng)的曠課人數(shù);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的結(jié)構(gòu)體,用來存放一個學(xué)生的考勤記錄,其中有,字符數(shù)組name50 , lesson_name50,分別存放學(xué)生名字,缺 課 課 程 名 字 ; int型 變 量lesson_

7、time,chidao_num,zaotui_num,qingjia_num,kuangke_num, 分別來存放,缺課節(jié)次,遲到次數(shù),早退次數(shù),請假次數(shù),曠課次數(shù)long型變量 time ,記錄時間。3.2主模塊設(shè)計3.2.1 建立學(xué)生缺課記錄子模塊要建立的學(xué)生人數(shù),學(xué)生基本信息(包括缺課時間、學(xué)生姓名、課程名稱、節(jié)次、遲到次數(shù)、早退次數(shù)、請假次數(shù)、曠課次數(shù))可用creat ()函數(shù)如圖1.-4-學(xué)生考勤管理系統(tǒng)開始int i,b;struct student *head,*p1,*p2;printf(請輸入要建立資料的學(xué)生人數(shù):);scanf(%d,&b);head=p2=NULL;p1=

8、(struct student *)malloc(LEN);輸入第一個學(xué)生成績head=p1;p2=p1;i=0;student_num+;inext=p1;p2=p1;student_num+;i+p2-next=NULL結(jié)束圖 13.2.2 修改學(xué)生缺課記錄子模塊根據(jù)要修改的學(xué)生姓名以及科目名稱找到相應(yīng)的信息,再選擇要修改的項目進(jìn)行單項修-5-學(xué)生考勤管理系統(tǒng)開始char xiugai_name50;char xiugai_xueke_name50;int k;printf( 請輸入要修改的學(xué)生姓名與學(xué)科名稱:);scanf(%s%s,xiugai_name,xiugai_xueke_na

9、me);struct student *p1,*p2;p2=(struct student *)malloc(LEN);p1=head;strcmp(xiugai_name,p1-name)!=0&(p1-p1=p1-next;next!=NULL)&strcmp(xiugai_xueke_name,p1-lesson_name)!strcmp(xiugai_name,p1-name)=0&strcmp(xiugai_xueke_name,p1-lesson_name)=0顯示修改菜單選擇修改項目并完成修改結(jié)束改 如圖 2圖 23.2.3 修改學(xué)生缺課記錄子模塊根據(jù)人名可以查出該學(xué)生的所有缺課

10、記錄如圖 3-6-學(xué)生考勤管理系統(tǒng)開始int i=0;char chaxun_name50;struct student *p;p=head;printf( 請輸入要查詢的人名:);scanf(%s,chaxun_name);iname)=0輸出 p所指向的結(jié)構(gòu)體數(shù)據(jù)結(jié)束圖 33.2.4 查看單科曠課記錄子模塊根據(jù)學(xué)科名稱和時間范圍查出所有在該范圍內(nèi)曠課的學(xué)生以及次數(shù)如圖 4-7-學(xué)生考勤管理系統(tǒng)開始struct student *p1,*p2,*p3; char lesson50;long look_time1,look_time2;int xunhuan_num=0;p3=(struct

11、student *)malloc(LEN);p1=head;p2=p1-nextYxunhuan_numnext;p2=p2-next;xunhuan_num+;printf( 請輸入要查看的學(xué)科名稱:);scanf(%s,lesson);printf( 請輸入要查看的時間范圍);scanf(%ld%ld,&look_time1,&look_time2);p1=head;p1!=NULLstrcmp(lesson,p1-lesson_name)=0&look_time1time&p1-p1=p1-next;timekuangke_nump1-kuangke_numY交換 p1與p2指向數(shù)據(jù)3.

12、2.5 查看學(xué)生曠課記錄子模塊根據(jù)要查詢的學(xué)科名稱及時間段查出在改時間段內(nèi)該門課上曠課的人數(shù)如圖 5-8-學(xué)生考勤管理系統(tǒng)開始int n,i,j,zhongjian;struct student *p1;char zhongjian_name50;long look_time1,look_time2;printf( 請輸入第 %d個學(xué)科名稱: ,i+1);scanf(%s,ai.xueke_name);ai.people_num=0;printf( 請輸入要查看的時間范圍由小到大);scanf(%ld%ld,&look_time1,&look_time2);p1=head;i=0;YinNp1

13、!=NULL &Nlook_time1time &p1-timenext;Yjn-1ilesson_name)=0Yai.people_num+=p1-kuangke_num;Yai.people_numnext;結(jié)束圖 7- 11-學(xué)生考勤管理系統(tǒng)4.運行結(jié)果4.1 運行開始菜單圖 1開始菜單- 12-學(xué)生考勤管理系統(tǒng)主菜單圖2主菜單建立學(xué)生缺課記錄- 13-學(xué)生考勤管理系統(tǒng)圖 2 建立學(xué)生缺課記錄儲存學(xué)生曠課記錄圖 3 儲存學(xué)生曠課記錄5.課程設(shè)計總結(jié)課程設(shè)計順利完成,題目所要求的功能基本實現(xiàn),可以對學(xué)生的缺課信息進(jìn)行添加,修改,刪除以及查詢的顯示。不過這個程序還不夠完善,例如不能往當(dāng)前文

14、件夾中的 txt 文件中添加記錄。結(jié)束語整個系統(tǒng)的設(shè)計過程對于我來說是個學(xué)習(xí)、探索的過程, 通過借鑒別人, 學(xué)習(xí)設(shè)計程序,在整個設(shè)計過程中, 出現(xiàn)過很多的問題, 很多繁瑣的東西都需要反復(fù)的修改, 主要是因為前期的學(xué)習(xí)不認(rèn)真, 對系統(tǒng)的需求分析的要求認(rèn)識不清楚, 使得在后邊的工作中不得不經(jīng)常反- 14-學(xué)生考勤管理系統(tǒng)復(fù)請教別人去修改。 使我體會到設(shè)置中每一步的重要性。 所以在分析一個問題時, 我們需要站在一個有遠(yuǎn)見的高度。通過此次設(shè)計, 我對 C+語言編程有了深刻的認(rèn)識, 積累了使用軟件工程的思想來開發(fā)軟件的經(jīng)驗,更重要的是學(xué)會了在對待問題時應(yīng)該考慮到哪些方面和怎么解決問題。雖然時間緊迫但我學(xué)

15、會了不少 , 感到自身知識的貧乏 , 希望在日后積極學(xué)習(xí)并嘗試努力中能做出完善的系統(tǒng)。參考文獻(xiàn)譚浩強 .C+語言程序設(shè)計. 清華大學(xué)出版社求是科技 .Visual C+ 6.0信息系統(tǒng)開發(fā). 人民郵電出版社附錄:源代碼#include/cstdio 是將 stdio.h 的內(nèi)容用 C+ 頭文件的形式表示出來#include#include/malloc 的全稱是 memory allocation ,中文叫 動態(tài)內(nèi)存 分配,當(dāng)無法知道內(nèi)存具體位置的時候,想要綁定真正的內(nèi)存空間,就需要用到動態(tài)的分配內(nèi)存。#include/當(dāng)調(diào)用庫函數(shù), 客戶程序提供的是 string 類型參數(shù), 而庫函數(shù)內(nèi)部實

16、現(xiàn)用的是c- 串,因此需要將 string 對象,轉(zhuǎn)化為 char* 對象,而 c_str() 提供了這樣一種方法,它返回一個客戶程序可讀不可改的指向字符數(shù)組的指針。#include/I/O 流控制頭文件#define NULL 0#define guding 10#define LEN sizeof(struct student)using namespace std;int student_num;FILE *fp1;struct xuekechar xueke_name50;int people_num;struct student char name50; long time;int

17、lesson_time;char lesson_name50; int chidao_num;int zaotui_num; int qingjia_num;- 15-學(xué)生考勤管理系統(tǒng)int kuangke_num;struct student *next;void chaxun(struct student *head)int i;char chaxun_name50;coutchaxun_name;struct student *p;if(head=NULL)cout 聯(lián)系人為空 ;p=head;for(i=0;iname)=0)cout 缺課時間 :time學(xué)生姓名 :name課程名稱

18、:lesson_name節(jié)次 :lesson_timeendl遲 到 次 數(shù) :chidao_num早 退 次數(shù) :zaotui_num請假次數(shù) :qingjia_num曠課次數(shù) :kuangke_numnext; struct student *xiugai(struct student *head)char xiugai_name50;char xiugai_xueke_name50;int k;coutxiugai_namexiugai_xueke_name;struct student *p1,*p2;p2=(struct student *)malloc(LEN);p1=head;i

19、f(head=NULL)coutname)!=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_name,p1-less on_name)=0)cout= 修 改 信 息=n;- 16-學(xué)生考勤管理系統(tǒng)cout1-修改缺課時間n;cout2-修改學(xué)生姓名n;cout3-修改課程名稱n;cout4-修改第幾節(jié)缺課n;cout5-修改遲到次數(shù)n;cout6-修改早退次數(shù)n;cout7-修改請假次數(shù)n

20、;cout8-修改曠課次數(shù)nn;coutk;switch(k)case 1:coutp1-time;break;case 2:coutp1-name;break;case 3:coutp1-lesson_name;break;case 4:coutp1-lesson_time;break;case 5:coutp1-chidao_num;break;case 6:coutp1-zaotui_num;- 17-學(xué)生考勤管理系統(tǒng)break;case 7:coutp1-qingjia_num;break;case 8:coutp1-kuangke_num;break; return head;str

21、uct student *creat()int i,b;struct student *head,*p1,*p2;coutb;head=p2=NULL;p1=(struct student *)malloc(LEN);cout 【輸入格式:缺課時間 ( 空格 ) 學(xué)生姓名 ( 空格 ) 課程名稱 ( 空格 ) 第幾節(jié) ( 空格 ) 遲到次數(shù) ( 空格 ) 早退次數(shù) ( 空格 ) 請假次數(shù) ( 空格 ) 曠課次數(shù)】 n;coutp1-timep1-namep1-lesson_namep1-lesson_timep1-chidao _nump1-zaotui_nump1-qingjia_nump1

22、-kuangke_num;head=p1;p2=p1;student_num+=1;for(i=1;ib;i+)p1=(struct student*)malloc(LEN);cout 請輸入第 i+1p1-timep1-namep1-lesson_namep1-lesson_timep1-chidao _nump1-zaotui_nump1-qingjia_nump1-kuangke_num;p2-next=p1;p2=p1;student_num+=1;p2-next=NULL;return head;void print(struct student *head)- 18-學(xué)生考勤管理系

23、統(tǒng)struct student *p;p=head;if(p=NULL)cout 沒有學(xué)生信息 n;while(p!=NULL)cout缺課時間:time學(xué)生姓名 :setw(10)name課程名稱 :lesson_name節(jié)次 :lesson_timeendl遲 到 次 數(shù) :chidao_num早 退 次數(shù) :zaotui_num請假次數(shù) :qingjia_num曠課次數(shù) :kuangke_numnext;struct student *tongji_lesson(struct student *head) struct student *p1,*p2,*p3; char lesson50

24、;long look_time1,look_time2; int xunhuan_num=0; p3=(struct student *)malloc(LEN); if(head=NULL)coutnext; while(xunhuan_numkuangke_nump1-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-tim

25、e=p2-time; strcpy(p3-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;- 19-學(xué)生考勤管理系統(tǒng)strcpy(p2-lesson_name,p1-lesson_name);strcpy(p2-nam

26、e,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-lesson_name);strcpy(p1-name,p3-name);p1=p2;p2=p2-next;p1=head;p2=p1-next;xunhuan_num+;coutlesson;coutl

27、ook_time1look_time2;p1=head;while(p1!=NULL)if(strcmp(lesson,p1-lesson_name)=0&look_time1time&p1- time=look_time2)cout學(xué)生姓名:name曠課次數(shù) :kuangke_numnext; return head;struct student *tongji_student(struct student *head)struct xueke a10;int n,i,j,zhongjian;struct student *p1;char zhongjian_name50;long look

28、_time1,look_time2;if(head=NULL)cout 沒有學(xué)生信息 n;return head;coutn;- 20-學(xué)生考勤管理系統(tǒng)for(i=0;in;i+)cout 請輸入第 i+1ai.xueke_name;ai.people_num=0;coutlook_time1look_time2;p1=head;for(i=0;in;i+)while(p1!=NULL&look_time1time&p1-timelesson_name)ai.people_num+=p1-kuangke_num;p1=p1-next;p1=head;for(j=0;jn-1;j+)for(i=0;in-1-j;i+)if(ai.people_num0)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_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論