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

下載本文檔

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

文檔簡(jiǎn)介

1、 學(xué)生考勤管理系統(tǒng) 信息科學(xué)與技術(shù)學(xué)院程序設(shè)計(jì)基礎(chǔ)課程設(shè)計(jì)報(bào)告題目名稱: 學(xué)生考勤管理系統(tǒng) 學(xué)生姓名: 喻思遠(yuǎn) 學(xué) 號(hào): 2011508025 專業(yè)班級(jí): 計(jì)科11 指導(dǎo)教師: 郭理 2012年7月6日目錄目錄11. 課程設(shè)計(jì)題目與要求21.1 課題目的和要求21.3 課題意義22 總體設(shè)計(jì)32.1功能模塊設(shè)計(jì)32.2系統(tǒng)設(shè)計(jì)方案33 詳細(xì)設(shè)計(jì)43.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)43.2 主模塊設(shè)計(jì)53.2.1建立學(xué)生缺課記錄子模塊53.2.2修改學(xué)生缺課記錄子模塊63.2.3修改學(xué)生缺課記錄子模塊73.2.4查看單科曠課記錄子模塊73.2.5查看學(xué)生曠課記錄子模塊83.2.6載入學(xué)生曠課記錄子模塊93.2

2、.7儲(chǔ)存學(xué)生曠課記錄子???04. 運(yùn)行結(jié)果124.1運(yùn)行125. 課程設(shè)計(jì)總結(jié)16結(jié)束語(yǔ)16參考文獻(xiàn)16附錄:源代碼17 1. 課程設(shè)計(jì)題目與要求1.1 課題目的和要求設(shè)計(jì)目的:要求實(shí)現(xiàn)-“學(xué)生考勤管理程序”記錄學(xué)生的缺課情況,它包括:缺課日期、第幾節(jié)課、課程名稱、學(xué)生姓名、缺課類型(遲到、早退、請(qǐng)假及曠課)。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ū)?/p>

3、踐是本科生重要教學(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é)生考勤人員的工作量, 方便了平時(shí)上課學(xué)生的出勤率的管理。 2 總體設(shè)計(jì)2.1功能模塊設(shè)計(jì)根據(jù)分析整個(gè)系統(tǒng)主要?jiǎng)澐譃?個(gè)功能模塊,分別執(zhí)行要求中的功能。數(shù)據(jù)管理中實(shí)現(xiàn)對(duì)學(xué)生的基本信息、課程的基本信息、學(xué)生缺課的查詢、添加、刪除和修改,以及具體缺課缺課內(nèi)容,是遲到、早退、請(qǐng)假、曠課。查詢管理通過根據(jù)學(xué)生姓名,課程姓名 時(shí)間段兒等信息,查詢單個(gè)學(xué)生的缺課記錄,單科課的曠課記錄,單個(gè)學(xué)生的曠課記錄。功能模

4、塊圖如圖1所示。、圖1功能模塊圖2.2系統(tǒng)設(shè)計(jì)方案此程序是過程性語(yǔ)言設(shè)計(jì)的。運(yùn)用多種條件語(yǔ)句,主體采用的是鏈表指針。系統(tǒng)的設(shè)計(jì)采用了數(shù)組語(yǔ)句、選擇語(yǔ)句和循環(huán)語(yǔ)句,在需要處理大量同類數(shù)據(jù)時(shí),這樣就使程序書寫更加簡(jiǎn)潔。程序使用了布爾函數(shù)。選擇語(yǔ)句多采用if多分支選擇結(jié)構(gòu)與switch語(yǔ)句。首先計(jì)算switch表達(dá)式,然后在caes子句中尋找值相等的常量表達(dá)式,并以此為入口符號(hào),由此開始順序執(zhí)行。循環(huán)語(yǔ)句采用了for語(yǔ)句等、do-while語(yǔ)句,for語(yǔ)句用于已知循環(huán)次數(shù)的循環(huán)結(jié)構(gòu),括號(hào)中的三個(gè)量分別用來(lái)表示循環(huán)變量初值、循環(huán)終值和循環(huán)增量。do-while語(yǔ)句先循環(huán)后判斷, Break語(yǔ)句在swi

5、tch語(yǔ)句中,保證多分支情況的正確執(zhí)行,在循環(huán)語(yǔ)句中,強(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ì) struct xuekechar xueke_name50;int people_num;這是定義了一個(gè)xueke結(jié)構(gòu)體,用來(lái)存放一個(gè)學(xué)科名及其相應(yīng)的曠課人數(shù);struct studentchar name50;long time;int lesson_time;char lesson_name50;int chidao_num;int zaotui_num;int qingjia_num

6、;int kuangke_num;struct student *next;這是定義了一個(gè)student的結(jié)構(gòu)體,用來(lái)存放一個(gè)學(xué)生的考勤記錄,其中有,字符數(shù)組name50,lesson_name50,分別存放學(xué)生名字,缺課課程名字;int型變量lesson_time,chidao_num,zaotui_num,qingjia_num, kuangke_num,分別來(lái)存放,缺課節(jié)次,遲到次數(shù),早退次數(shù),請(qǐng)假次數(shù),曠課次數(shù) long型變量time,記錄時(shí)間。 3.2 主模塊設(shè)計(jì)3.2.1建立學(xué)生缺課記錄子模塊要建立的學(xué)生人數(shù),學(xué)生基本信息(包括缺課時(shí)間、學(xué)生姓名、課程名稱、節(jié)次、遲到次數(shù)、早退次數(shù)

7、、請(qǐng)假次數(shù)、曠課次數(shù))可用creat()函數(shù)如圖1. 圖13.2.2修改學(xué)生缺課記錄子模塊根據(jù)要修改的學(xué)生姓名以及科目名稱找到相應(yīng)的信息,再選擇要修改的項(xiàng)目進(jìn)行單項(xiàng)修改 如圖2 圖23.2.3修改學(xué)生缺課記錄子模塊根據(jù)人名可以查出該學(xué)生的所有缺課記錄 如圖3 圖33.2.4查看單科曠課記錄子模塊根據(jù)學(xué)科名稱和時(shí)間范圍查出所有在該范圍內(nèi)曠課的學(xué)生以及次數(shù) 如圖4 圖43.2.5查看學(xué)生曠課記錄子模塊根據(jù)要查詢的學(xué)科名稱及時(shí)間段查出在改時(shí)間段內(nèi)該門課上曠課的人數(shù) 如圖5 圖53.2.6載入學(xué)生曠課記錄子模塊可以載入實(shí)現(xiàn)儲(chǔ)存在當(dāng)前文件夾中txt文件中所儲(chǔ)存的數(shù)據(jù) 如圖6 圖63.2.7儲(chǔ)存學(xué)生曠課記

8、錄子??爝M(jìn)入系統(tǒng)界面,順序的完成各項(xiàng)操作,進(jìn)行數(shù)據(jù)的輸入,信息的保存調(diào)用相應(yīng)的函數(shù)打開相應(yīng)的地址,查詢各項(xiàng)信息。如圖7 圖7 4. 運(yùn)行結(jié)果4.1運(yùn)行開始菜單圖1 開始菜單主菜單 圖2 主菜單1.建立學(xué)生缺課記錄圖2建立學(xué)生缺課記錄2. 修改學(xué)生缺課紀(jì)錄3.圖3修改學(xué)生缺課記錄3.查詢學(xué)生缺課記錄圖4查詢學(xué)生缺課記錄4.查看單科曠課記錄圖5查看單科曠課記錄5.查看學(xué)生曠課記錄圖6查看學(xué)生曠課記錄6.載入學(xué)生曠課記錄圖7載入學(xué)生曠課記錄7. 儲(chǔ)存學(xué)生曠課記錄圖8儲(chǔ)存學(xué)生曠課記錄 5. 課程設(shè)計(jì)總結(jié)課程設(shè)計(jì)順利完成,題目所要求的功能也都一一實(shí)現(xiàn),可以對(duì)學(xué)生的缺課信息進(jìn)行添加,修改,刪除以及查詢的顯

9、示。不過這個(gè)程序還有些不夠完善,例如不能往當(dāng)前文件夾中的txt文件中添加記錄。結(jié)束語(yǔ)整個(gè)系統(tǒng)的設(shè)計(jì)過程對(duì)于我來(lái)說算是個(gè)學(xué)習(xí)、探索的過程,通過實(shí)踐和對(duì)比別人開發(fā)程序的過程。在整個(gè)設(shè)計(jì)過程中,出現(xiàn)過很多的問題,很多繁瑣的東西都需要反復(fù)的修改,主要是前期工作不徹底,對(duì)系統(tǒng)的需求分析的要求認(rèn)識(shí)不夠清楚,使得在后邊的工作中不得不經(jīng)常反復(fù)去修改。使我體會(huì)到設(shè)置中每一步的重要性。所以在分析一個(gè)問題時(shí),我們需要站在一個(gè)有遠(yuǎn)見的高度。通過此次設(shè)計(jì),我不但對(duì)C+語(yǔ)言編程有了更深刻的認(rèn)識(shí),積累了使用軟件工程的思想來(lái)開發(fā)軟件的經(jīng)驗(yàn),更重要的是學(xué)會(huì)了在對(duì)待問題時(shí)應(yīng)該考慮到哪些方面和怎么解決問題。雖然時(shí)間緊迫但我學(xué)會(huì)了很

10、多,也感到自身知識(shí)的貧乏,希望在日后的努力中能做出更完善的系統(tǒng)。參考文獻(xiàn)1譚浩強(qiáng).C+語(yǔ)言程序設(shè)計(jì).清華大學(xué)出版社2求是科技.Visual C+ 6.0信息系統(tǒng)開發(fā).人民郵電出版社附錄:源代碼 #include<cstdio>#include<iostream>#include<malloc.h>#include<cstring>#include<iomanip>#define NULL 0#define guding 10#define LEN sizeof(struct student)using namespace std;in

11、t student_num;FILE *fp1;struct xuekechar xueke_name50;int people_num;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;void chaxun(struct student *head)int i;char chaxun_name50;cout<<"請(qǐng)

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

13、;lesson_name<<" 節(jié)次:"<<p->lesson_time<<endl <<"遲到次數(shù):"<<p->chidao_num<<" 早退次數(shù):"<<p->zaotui_num<<" 請(qǐng)假次數(shù):"<<p->qingjia_num<<" 曠課次數(shù):"<<p->kuangke_num<<endl;p=p->next

14、; struct student *xiugai(struct student *head)char xiugai_name50;char xiugai_xueke_name50;int k;cout<<"請(qǐng)輸入要修改的學(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<<"沒有

15、學(xué)生信息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_name,p1->lesson_name)=0) cout<<"= 修改信息 =n" cout<<&q

16、uot; 1-修改缺課時(shí)間 n"cout<<" 2-修改學(xué)生姓名 n"cout<<" 3-修改課程名稱 n"cout<<" 4-修改第幾節(jié)缺課 n"cout<<" 5-修改遲到次數(shù) n"cout<<" 6-修改早退次數(shù) n"cout<<" 7-修改請(qǐng)假次數(shù) n"cout<<" 8-修改曠課次數(shù) nn"cout<<"=n"cin>

17、;>k;switch(k)case 1:cout<<"請(qǐng)輸入新的缺課時(shí)間:"cin>>p1->time;break;case 2:cout<<"請(qǐng)輸入新的學(xué)生姓名:"cin>>p1->name;break;case 3:cout<<"請(qǐng)輸入新的課程名稱:"cin>>p1->lesson_name;break;case 4:cout<<"請(qǐng)輸入新的缺課節(jié)次:"cin>>p1->lesson_t

18、ime;break;case 5:cout<<"請(qǐng)輸入新的遲到次數(shù):"cin>>p1->chidao_num;break;case 6:cout<<"請(qǐng)輸入新的早退次數(shù):"cin>>p1->zaotui_num;break;case 7:cout<<"請(qǐng)輸入新的請(qǐng)假次數(shù):"cin>>p1->qingjia_num;break;case 8:cout<<"請(qǐng)輸入新的曠課次數(shù):"cin>>p1->ku

19、angke_num;break; return head;struct student *creat()int i,b;struct student *head,*p1,*p2; cout<<"請(qǐng)輸入要建立資料的學(xué)生人數(shù):"cin>>b;head=p2=NULL;p1=(struct student *)malloc(LEN);cout<<"【輸入格式:缺課時(shí)間(空格)學(xué)生姓名(空格)課程名稱(空格)第幾節(jié)(空格)遲到次數(shù)(空格)早退次數(shù)(空格)請(qǐng)假次數(shù)(空格)曠課次數(shù)】n"cout<<"請(qǐng)輸入第

20、1名學(xué)生信息:" 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;student_num+=1;for(i=1;i<b;i+)p1=(struct student*)malloc(LEN);cout<<

21、;"請(qǐng)輸入第"<<i+1<<"名學(xué)生信息:" cin>>p1->time>>p1->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=

22、NULL; return head;void print(struct student *head)struct student *p;p=head;if(p=NULL)cout<<"沒有學(xué)生信息n"while(p!=NULL) cout<<"缺課時(shí)間:"<<p->time<<" 學(xué)生姓名:"<<setw(10)<<p->name<<" 課程名稱:"<<p->lesson_name<<&qu

23、ot; 節(jié)次:"<<p->lesson_time<<endl <<"遲到次數(shù):"<<p->chidao_num<<" 早退次數(shù):"<<p->zaotui_num<<" 請(qǐng)假次數(shù):"<<p->qingjia_num<<" 曠課次數(shù):"<<p->kuangke_num<<endl;p=p->next;struct student *tongji

24、_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<<"沒有學(xué)生信息"return(head); p1=head;p2=p1->next;while(xunhuan_num<student_num)while(p2!=NULL)if(p2->kuangke_num>

25、;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->lesson_name,p2->lesson_name);strcpy(p3->name,p2-&g

26、t;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,p1->lesson_name);strcpy(p2->name,p1->name);p1-&

27、gt;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->

28、;next;p1=head;p2=p1->next;xunhuan_num+;cout<<"請(qǐng)輸入要查看的學(xué)科名稱:"cin>>lesson;cout<<"請(qǐng)輸入要查看的時(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->

29、;time<=look_time2)cout<<"學(xué)生姓名:"<<p1->name<<" 曠課次數(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 lo

30、ok_time1,look_time2;if(head=NULL)cout<<"沒有學(xué)生信息n"return head; cout<<"請(qǐng)輸入一共的學(xué)科數(shù):"cin>>n;for(i=0;i<n;i+)cout<<"請(qǐng)輸入第"<<i+1<<"個(gè)學(xué)科名稱:"cin>>ai.xueke_name;ai.people_num=0; cout<<"請(qǐng)輸入要查看的時(shí)間范圍由小到大【輸入格式:時(shí)間(空格)時(shí)間】&qu

31、ot;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->next;p1=head; for(j=0;j<n-1;j+) for(i=0;i<n-1-j;i+)if(ai.

32、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.people_num=ai+1.people_num&&strcmp(ai.xueke_name,ai+1.xue

33、ke_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<<"學(xué)科名稱:"<<ai.xueke_name<<" 曠課次數(shù):&qu

34、ot;<<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+")=NULL) printf("cannot open filen");return(head); while(!f

35、eof(fp1)if(fread(&student_ziliaoi,LEN,1,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;strc

36、py(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=p1;p1=(struct student*)malloc(LEN); p2->next=NULL;return(head);void chucun(struct student *hea

溫馨提示

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

評(píng)論

0/150

提交評(píng)論