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

下載本文檔

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

文檔簡介

1、信息科學(xué)與技術(shù)學(xué)院程序設(shè)計(jì)基礎(chǔ)課程設(shè)計(jì)報(bào)告題目名稱:學(xué)生考勤管理系統(tǒng)學(xué)生姓名:郭晨晨學(xué) 號(hào):二專業(yè)班級(jí):13 級(jí)計(jì)科(3)班指導(dǎo)教師:郭理2013年6月6日目錄目錄 錯(cuò)誤!未指定書簽。1 .課程設(shè)計(jì)題目與要求 錯(cuò)誤!未指定書簽。1.1 課題目的和要求 錯(cuò)誤!未指定書簽。1.3 課題意義 錯(cuò)誤!未指定書簽。2總體設(shè)計(jì) 錯(cuò)誤!未指定書簽。2.1 功能模塊設(shè)計(jì) 錯(cuò)誤!未指定書簽。2.2 系統(tǒng)設(shè)計(jì)方案 錯(cuò)誤!未指定書簽。3詳細(xì)設(shè)計(jì) 錯(cuò)誤!未指定書簽。1.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì) 錯(cuò)誤!未指定書簽。1.2 豐模塊設(shè)計(jì) 錯(cuò)誤!未指定書簽。1.2.1 建立學(xué)生缺課記錄子模塊 錯(cuò)誤!未指定書簽。1.2.2 修改學(xué)生缺

2、課記錄子模塊 錯(cuò)誤!未指定書簽。1.2.3 修改學(xué)生缺課記錄子模塊 錯(cuò)誤!未指定書簽。1.2.4 查看單科曠課記錄子模塊 錯(cuò)誤!未指定書簽。1.2.5 查看學(xué)生曠課記錄子模塊 錯(cuò)誤!未指定書簽。1.2.6 載入學(xué)生曠課記錄子模塊 錯(cuò)誤!未指定書簽。1.2.7 儲(chǔ)存學(xué)生曠課記錄子???錯(cuò)誤!未指定書簽。4 .運(yùn)行結(jié)果 錯(cuò)誤!未指定書簽。4.1 運(yùn)行 錯(cuò)誤!未指定書簽。5 .課程設(shè)計(jì)總結(jié) 錯(cuò)誤!未指定書簽。結(jié)束語 錯(cuò)誤!未指定書簽。參考文獻(xiàn) 錯(cuò)誤!未指定書簽。附錄:源代碼 錯(cuò)誤!未指定書簽。1. 課程設(shè)計(jì)題目與要求1.1 課題目的和要求設(shè)計(jì)目的:要求實(shí)現(xiàn)一 “學(xué)生考勤管理程序”記錄學(xué)生的缺課情況,

3、 它包括: 缺課日期、第幾節(jié)課、課程名稱、學(xué)生姓名、缺課類型(遲到、早退、請假及曠 課)。1.2 設(shè)計(jì)要求:1 .錄入學(xué)生的缺課記錄;2 .修改某個(gè)學(xué)生的缺課記錄;3,查詢某個(gè)學(xué)生的缺課情況;4 .統(tǒng)計(jì)某段時(shí)間內(nèi),某門課曠課學(xué)生姓名及曠課次數(shù),按曠課次數(shù)由多到少排序;5 .統(tǒng)計(jì)某段時(shí)間內(nèi),有學(xué)生曠課的課程及曠課人次,按曠課人次由 多到少排序;6 .系統(tǒng)以菜單方式工作。1.3課題意義程序?qū)嵺`是本科生重要教學(xué)環(huán)節(jié)之一。通過程序?qū)嵺`,強(qiáng)化學(xué)生的計(jì)算機(jī)應(yīng)用技能,使學(xué)生驗(yàn)證、鞏固和充實(shí)所學(xué)的理論知識(shí),加深對(duì)相關(guān)內(nèi)容的理解,拓寬知識(shí)面,培養(yǎng)學(xué)生的創(chuàng)新精神和實(shí)踐能力學(xué)生考勤管理程序可以大大減緩學(xué)生考勤人員的

4、工作量, 方便了平時(shí)上課學(xué)生的出勤率的管理。2 總體設(shè)計(jì)2.1 功能模塊設(shè)計(jì)根據(jù)分析整個(gè)系統(tǒng)主要?jiǎng)澐譃?7 個(gè)功能模塊,分別執(zhí)行要求中的功能。數(shù)據(jù)管理中可以對(duì)學(xué)生的基本信息、課程的基本信息、學(xué)生缺課的查詢、添加、刪除和修改。查詢管理通過根據(jù)學(xué)生姓名,課程姓名 時(shí)間段兒等信息,查詢單個(gè)學(xué)生的缺課記錄,單科課的曠課記錄,單個(gè)學(xué)生的曠課記錄。功能模塊圖如圖 1 所示:圖 1 功能模塊圖2.2 系統(tǒng)設(shè)計(jì)方案這個(gè)程序是過程性語言設(shè)計(jì)的。運(yùn)用多種條件語句,主體采用的是鏈表指針。系統(tǒng)的設(shè)計(jì)采用了數(shù)組語句、選擇語句和循環(huán)語句 , 在需要處理大量同類數(shù)據(jù)時(shí) , 這樣就使程序書寫更加簡潔。程序使用了布爾函數(shù)。選擇

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

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

7、, 分別存放學(xué)生名字,缺 課 課 程 名 字 ; int 型 變lesson_time,chidao_num,zaotui_num,qingjia_num,kuangke_num,分別來存放,缺課節(jié)次,遲到次數(shù),早退次數(shù),請假次數(shù),曠課次數(shù) long 型變量 time ,記錄時(shí)間。3.2 主模塊設(shè)計(jì)要建立的學(xué)生人數(shù),學(xué)生基本信息(包括缺課時(shí)間、學(xué)生姓名、課程名稱、節(jié)次、遲到次數(shù)、早退次數(shù)、請假次數(shù)、曠課次數(shù))可用 creat ()函數(shù)如圖 1.圖1根據(jù)要修改的學(xué)生姓名以及科目名稱找到相應(yīng)的信息,再選擇要修改的項(xiàng)目進(jìn)行單項(xiàng)修改如圖2根據(jù)人名可以查出該學(xué)生的所有缺課記錄如圖3圖3如圖4根據(jù)學(xué)科名稱

8、和時(shí)間范圍查出所有在該范圍內(nèi)曠課的學(xué)生以及次數(shù)根據(jù)要查詢的學(xué)科名稱及時(shí)間段查出在改時(shí)間段內(nèi)該門課上曠課的人數(shù) 如圖5可以載入實(shí)現(xiàn)儲(chǔ)存在當(dāng)前文件夾中txt文件中所儲(chǔ)存的數(shù)據(jù) 如圖6進(jìn)入系統(tǒng)界面,順序的完成各項(xiàng)操作,進(jìn)行數(shù)據(jù)的輸入,信息的保存調(diào)用相應(yīng)的函數(shù)打開相應(yīng)的地址,查詢各項(xiàng)信息。如圖 7圖74. 運(yùn)行結(jié)果4.1 運(yùn)行開始菜單圖 1 開始菜單主菜單圖 2 主菜單建立學(xué)生缺課記錄圖 2 建立學(xué)生缺課記錄儲(chǔ)存學(xué)生曠課記錄圖 3 儲(chǔ)存學(xué)生曠課記錄5. 課程設(shè)計(jì)總結(jié)課程設(shè)計(jì)順利完成,題目所要求的功能基本實(shí)現(xiàn),可以對(duì)學(xué)生的缺課信息進(jìn)行添加,修改,刪除以及查詢的顯示。不過這個(gè)程序還不夠完善,例如不能往當(dāng)前

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

10、學(xué)習(xí) 并嘗試努力中能做出完善的系統(tǒng)。參考文獻(xiàn)譚浩強(qiáng).C+語言程序設(shè)計(jì).清華大學(xué)出版社求是科技.Visual C+ 6.0信息系統(tǒng)開發(fā).人民郵電出版社附錄:源代碼#include<cstdio> / cstdio是將stdio.h的內(nèi)容用C+頭文件的形式表示出來#include<iostream>#include<malloc.h> / malloc 的全稱是 memory allocation ,中文叫動(dòng)態(tài)內(nèi)查分配,當(dāng)無法知道內(nèi)存具體位置的時(shí)候,想要綁定真正的內(nèi)存空間,就需要用到動(dòng)態(tài)的分配內(nèi)存。#include<cstring> /當(dāng)調(diào)用庫函數(shù),

11、客戶程序提供的是string類型參數(shù),而庫函數(shù)內(nèi)部實(shí)現(xiàn)用的是c-串,因此需要將string對(duì)象,轉(zhuǎn)化為char*對(duì)象,而c_str()提供了這樣一種方法,它返回一個(gè)客戶程序可讀不可改的指向字符數(shù)組的 指針。#include<iomanip> / 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;struc

12、t 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 student *head) int i;char chaxun_name50;cout<<"請輸入要查詢的人名:"cin>>chaxun_name;struct student *p;if(head=NULL)c

13、out<<"聯(lián)系人為空"p=head;for(i=0;i<student_num;i+)if(strcmp(chaxun_name,p->name)=0)cout<<”缺課時(shí)間:"<<p->time<<"學(xué)生姓名:"<<p->name<<” 課程名稱:"<<p->lesson_name<<"節(jié)次:"<<p->lesson_time<<endl<<&q

14、uot; 遲到次數(shù):"<<p->chidao_num<<"早退次數(shù):"<<p->zaotui_num<<”請假次數(shù):"<<p->qingjia_num<<” 曠課次數(shù):"<<p->kuangke_num<<endl;)p=p->next; )struct student *xiugai(struct student *head)char xiugai_name50;char xiugai_xueke_name50;int

15、 k;cout<<"請輸入要修改的學(xué)生姓名與學(xué)科名稱【格式:學(xué)生姓名(空格)學(xué)科名稱】: ;cin>>xiugai_name>>xiugai_xueke_name;struct student *p1,*p2;p2=(struct student *)malloc(LEN);p1=head;if(head=NULL)cout<<"沒有學(xué)生信息n"return head; while(strcmp(xiugai_name,p1->name)!=0|strcmp(xiugai_xueke_name,p1->l

16、e sson_name)!=0)&&(p1->next!=NULL)p1=p1->next;if(strcmp(xiugai_name,p1->name)=0&&strcmp(xiugai_xueke_name,p1->lesson_na me)=0)cout<<"= 修改 信息n"cout<<"1-修改缺課時(shí)間2-修改學(xué)生姓名3-修改課程名稱 修改第幾節(jié)缺課5-修改遲到次數(shù)6-修改早退次數(shù)7-修改請假次數(shù)8-修改曠課次數(shù)n"cout<<"n"

17、cout<<"n"cout<<"4-n"cout<<"n"cout<<"n"cout<<"n"cout<<"nn"cout<<"= =n"cin>>k;switch(k)case 1:cout<<"請輸入新的缺課時(shí)間:"cin>>p1->time;break;case 2:cout<<”請輸入新的學(xué)生

18、姓名:"cin>>p1->name;break;case 3:cout<<”請輸入新的課程名稱:"cin>>p1->lesson_name;break;case 4:cout<<"請輸入新的缺課節(jié)次:"cin>>p1->lesson_time;break;case 5:cout<<"請輸入新的遲到次數(shù):"cin>>p1->chidao_num;break;case 6:cout<<"請輸入新的早退次數(shù):&q

19、uot;cin>>p1->zaotui_num;break;case 7:cout<<" 請輸入新的請假次數(shù):"cin>>p1->qingjia_num;break;case 8:cout<<" 請輸入新的曠課次數(shù):"cin>>p1->kuangke_num;break; return head;struct student *creat()int i,b;struct student *head,*p1,*p2;cout<<" 請輸入要建立資料的學(xué)生人數(shù)

20、: "cin>>b;head=p2=NULL;p1=(struct student *)malloc(LEN);cout<<" 【輸入格式:缺課時(shí)間 (空格 )學(xué)生姓名 (空格 )課程名稱(空格 )第幾節(jié)( 空格 ) 遲到次數(shù) ( 空格 ) 早退次數(shù) ( 空格 ) 請假次數(shù) ( 空格 ) 曠課次數(shù)】 n"cout<<" 請輸入第 1 名學(xué)生信息 :"cin>>p1->time>>p1->name>>p1->lesson_name>>p1->

21、;lesson_time>>p1->chidao_num>>p1->zaotui_num>>p1->qingjia_num>>p1->kuangke_num;head=p1;p2=p1;student_num+=1;for(i=1;i<b;i+)p1=(struct student*)malloc(LEN);cout<<" 請輸入第 "<<i+1<<" 名學(xué)生信息 :"cin>>p1->time>>p1->

22、name>>p1->lesson_name>>p1->lesson_time>>p1->chidao_num>>p1->zaotui_num>>p1->qingjia_num>>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<&

23、lt;" 沒有學(xué)生信息 n"while(p!=NULL) cout<<" 缺課時(shí)間 :"<<p->time<<" 學(xué)生姓名 :"<<setw(10)<<p->name<<"課程名稱 :"<<p->lesson_name<<" 節(jié)次 :"<<p->lesson_time<<endl<<" 遲 到 次 數(shù) :"<<

24、p->chidao_num<<"早 退 次數(shù) :"<<p->zaotui_num<<"請假次數(shù) :"<<p->qingjia_num<<" 曠課次數(shù):"<<p->kuangke_num<<endl;p=p->next;struct student *tongji_lesson(struct student *head) struct student *p1,*p2,*p3;char lesson50;long look_t

25、ime1,look_time2;int xunhuan_num=0;p3=(struct student *)malloc(LEN);if(head=NULL)cout<<" 沒有學(xué)生信息 "return(head); p1=head;p2=p1->next;while(xunhuan_num<student_num)while(p2!=NULL)if(p2->kuangke_num>p1->kuangke_num)p3->chidao_num=p2->chidao_num;p3->kuangke_num=p2-&

26、gt;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->lesson_name,p2->lesson_name);strcpy(p3->name,p2->name);p2->chidao_num=p1->chidao_num;p2->kuangke_num=p1->kuangke_n

27、um;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,p1->lesson_name);strcpy(p2->name,p1->name);p1->chidao_num=p3->chidao_num;p1->kuangke_num=p3->kuangke_num;p1->qi

28、ngjia_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+;cout<<" 請輸入要查看的學(xué)科名稱: "

29、cin>>lesson;cout<<" 請輸入要查看的時(shí)間范圍【輸入格式: 時(shí)間 (空格 ) 時(shí)間】 "cin>>look_time1>>look_time2;p1=head;while(p1!=NULL)if(strcmp(lesson,p1->lesson_name)=0&&look_time1<=p1->time&&p1->time<=look_time2)cout<<" 學(xué) 生 姓 名 :"<<p1->nam

30、e<<"曠 課 次數(shù):"<<p1->kuangke_num<<endl;p1=p1->next; 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_time1,look_time2;if(head=NULL)cout<<" 沒有學(xué)生信息 n"r

31、eturn head;cout<<" 請輸入一共的學(xué)科數(shù): "cin>>n;for(i=0;i<n;i+)cout<<" 請輸入第 "<<i+1<<" 個(gè)學(xué)科名稱: "cin>>ai.xueke_name;ai.people_num=0;cout<<" 請輸入要查看的時(shí)間范圍由小到大【輸入格式: 時(shí)間 ( 空格 ) 時(shí)間】 "cin>>look_time1>>look_time2;p1=head;for

32、(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->next;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;

33、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); elseif(ai.people_num=ai+1.people_num&&strcmp(ai.xueke_name,ai+1.xueke _name)>0) zhongjian=ai+1.people_num;ai+1.people_n

34、um=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<<" 學(xué) 科 名 稱 :"<<ai.xueke_name<<" 曠 課 次 數(shù):"<<ai.people_num<<endl;return

35、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+")=NULL) printf("cannot open filen");return(head); while(!feof(fp1)if(fread(&student_ziliaoi,LEN,1

36、,fp1)!=1)if(feof(fp1)fclose(fp1);break; printf("file read 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_num;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->next=p1;p2=p

溫馨提示

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

評(píng)論

0/150

提交評(píng)論