學生考勤系統(tǒng)C語言課程設(shè)計_第1頁
學生考勤系統(tǒng)C語言課程設(shè)計_第2頁
學生考勤系統(tǒng)C語言課程設(shè)計_第3頁
學生考勤系統(tǒng)C語言課程設(shè)計_第4頁
學生考勤系統(tǒng)C語言課程設(shè)計_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

-.z.《程序設(shè)計》課程設(shè)計說明書課程名稱《程序設(shè)計》設(shè)計題目C語言課程設(shè)計學生考勤系統(tǒng)專業(yè)班級學生**指導教師起止日期2013年6**林業(yè)職業(yè)技術(shù)學院自動化工系目錄設(shè)計目的……….總體設(shè)計…………詳細設(shè)計…………調(diào)試與測試………總結(jié)與體會………附:源程序清單和執(zhí)行結(jié)果……………..第1章設(shè)計目的本次C語言課程設(shè)計是對本學期程序設(shè)計基礎(chǔ)課程的實際應(yīng)用,也算是對所學知識的一次檢驗,通過本次課程設(shè)計能達到的目的如下:1.鞏固和加深對C課程基本內(nèi)容和理論知識的理解和掌握。2.掌握C語言編譯和程序調(diào)試的基本技能。3.利用C語言進行基本的程序設(shè)計從而逐步了解文件的一些相關(guān)操作和掌握函數(shù)的使用技巧,包括函數(shù)類型的選擇,含參數(shù)的傳遞方式。4.掌握使用數(shù)組,指針,引用,文件等編譯的方法,提高運用C語言解決實際問題的能力。5.通過對學生考勤系統(tǒng)的設(shè)計、編寫源代碼,以及對C語言中各個語法和函數(shù)的使用,使得對比較復雜的結(jié)構(gòu)體、、文件的操作更加熟悉。6.通過課程設(shè)計,將本學期所學知識與實際應(yīng)用聯(lián)系和結(jié)合起來,培養(yǎng)自己的動手能力,以及加強各學科之間的聯(lián)系,從而提高個人的團隊意識,增強團隊之間協(xié)調(diào)和配合第2章總體設(shè)計2.1學生考勤信息記錄系統(tǒng)的要求通過該系統(tǒng)實現(xiàn)對學生考勤信息進行創(chuàng)建、錄入、修改、查詢、保存等操作的管理。實驗考勤信息包括學生**,**,學科種類,各科的考勤信息。主要功能:1)、能夠完成對考勤的錄入和修改2)、創(chuàng)建一個班級的信息3)、設(shè)備的查詢4)、將考勤信息保存到文件中2.2流程圖根據(jù)設(shè)計要求,畫出如下流程圖:開開始菜菜單24.修改6.退出5.查詢234.修改6.退出5.查詢23.創(chuàng)建2.查詢11.錄入結(jié)束2.3設(shè)置的主要函數(shù)voidcreat(void); voidsave(structStudent*,char[]); structStudent*load(char[]); voidenter(void);/*錄入函數(shù)*/ voidsearch_1(void);/*查詢函數(shù)_1*/ voidsearch_2(void);/*查詢函數(shù)_2*/ voidadd(void); voidmodify(void);/*修改函數(shù)*/voidback(void);/*退出函數(shù)*/ voidmune_1();/*界面-1*/ voidmune_2();/*界面-2*/ mune_1(); mune_2();第3章詳細設(shè)計3.1函數(shù)以及調(diào)用關(guān)系voidmune_1();/*菜單函數(shù)1*/voidmune_2()/*菜單函數(shù)2*/開始開始錄入記錄查詢個人創(chuàng)建信息修改信息查詢整班結(jié)束MMenu_2退出系統(tǒng)123456退出系統(tǒng)BreakBreakBreakBreakBreakbreakvoidenter(void);/*錄入函數(shù)*/開始開始輸入輸入班級和學生**p->num==ap->num==a大學體育大學口語C語言大學物理馬克思大學英語大學體育大學口語C語言大學物理馬克思大學英語高等數(shù)學輸入學生本節(jié)課息輸入學生本節(jié)課息y/ny/n②返回菜單返回菜單2n退出退出開始voidsearch_1(void);/*查詢個人信息*/開始輸入此人所在班級和**輸入此人所在班級和**ap->num==ap->num==a真假輸出此人的考勤信息輸出此人的考勤信息返回菜單返回菜單2開始voidsearch_2(void);/*查詢班級信息*/開始輸入要查詢的班別輸入要查詢的班別輸出此班的考勤信息輸出此班的考勤信息返回菜單返回菜單2voidmodify(void);/*修改函數(shù)*/開始開始輸入你要修改的班級和座位號輸入你要修改的班級和座位號ap->num==ap->num==a真假重新輸入這位學生的考勤信息重新輸入這位學生的考勤信息返回菜單返回菜單2voidsave(structStudent*,char[]);退出關(guān)閉文件退出關(guān)閉文件開始開始打開文件打開文件數(shù)據(jù)寫入文件數(shù)據(jù)寫入文件structStudent*load(charfilename[])開始關(guān)閉文件讀出數(shù)據(jù)開始關(guān)閉文件讀出數(shù)據(jù)打開文件打開文件退退出3.2結(jié)構(gòu)的應(yīng)用If…else結(jié)構(gòu)和while結(jié)構(gòu)嵌套結(jié)構(gòu):while(p1->num!=0) { n=n+1; if(n==1) head=p1; elsep2->ne*t=p1; p2=p1; p1=(structStudent*)malloc(LEN); scanf("%s%d%s",p1->name,&p1->num,p1->se*); p1->math=p1->English=p1->physics=p1->Mks=p1->C=p1->teal=p1->PE=0; } p2->ne*t=NULL; p=head; while(p!=NULL) { fwrite(p,LEN,1,fp); p=p->ne*t; } fclose(fp);printf("\t\t\t創(chuàng)建成功,按任意鍵返回主菜單\n");getch();system("cls"); mune_2();2switch結(jié)構(gòu)switch(sub) { case1:{p->math+=num;}break; case2:{p->English+=num;}break; case3:{p->physics+=num;}break; case4:{p->Mks+=num;}break; case5:{p->C+=num;}break; case6:{p->teal+=num;}break; case7:{p->PE+=num;}break; }3while結(jié)構(gòu)while(p!=NULL){ if(p->num==a) {printf("\n\t\t請重新輸入高等數(shù)學缺勤節(jié)數(shù):");scanf("%d",&p->math);printf("\n\t\t請重新輸入大學英語缺勤節(jié)數(shù):");scanf("%d",&p->English);printf("\n\t\t請輸入大學物理缺勤節(jié)數(shù):");scanf("%d",&p->physics);printf("\n\t\t請重新輸入馬克思主義基本原理與概論缺勤節(jié)數(shù):");scanf("%d",&p->Mks);printf("\n\t\t請重新輸入C語言缺勤節(jié)數(shù):");scanf("%d",&p->C);printf("\n\t\t請重新輸入英語口語缺勤節(jié)數(shù):");scanf("%d",&p->teal);printf("\n\t\t請重新輸入體育缺勤節(jié)數(shù)目:");scanf("%d",&p->PE); flag=1; save(head,cla);printf("\n\t\t修改成功!\n\t\t");break; } p=p->ne*t; }第4章調(diào)試與測試4.1調(diào)試執(zhí)行程序時,顯示如下信息選擇不同的選項,執(zhí)行相應(yīng)的功能。(選擇3),創(chuàng)建一個班級的基本信息。(選擇1),錄入本次課考勤情況。選擇要修改的科目的界面:輸入缺勤同學和缺勤節(jié)數(shù):結(jié)束輸入則輸入n后返回菜單2:(選擇2),查詢學生個人考勤信息。(選擇4),修改學生個人考勤信息。(選擇5),查看一個班級的考勤信息。(選擇6),退出學生考勤信息系統(tǒng)。第5章總結(jié)與體會三周的課程設(shè)計已經(jīng)結(jié)束了。回想學習C語言的過程中,既有快樂又有煩惱。從領(lǐng)到書的那一刻,我就很郁悶,《C語言程序設(shè)計》到底事學什么的,有什么用。剛開始上課時,還在迷茫這門課程是用來做什么的。不過,這些感受都是在對這門課程不了解的情況下產(chǎn)生的。后來慢慢的接觸多了,聽老師講的多了,了解多了,漸漸的產(chǎn)生了興趣。尤其是學到語句和函數(shù)時,上機操作程序,經(jīng)過編譯,調(diào)試和運行后,出現(xiàn)界面,當時覺得很好奇,想真正的學好這門課程。通過半個學期的學習,我掌握了基本知識。下學期開始時,被通知要進行課程設(shè)計。當時有點懵,感覺學的東西很少,很零散,不知該怎么連到一起,就要課程設(shè)計,是不是太難為我們了。第一天基本上都是在看書,把基本知識再熟悉一遍。到了下午的時候,看了很多練習題,從這些練習題上我得到了不少啟發(fā),然后我們組把整個程序的思路理清了,開始著手寫程序。第一周結(jié)束的時候,我感覺自己收獲挺大的,從一開始的迷茫,不知道從何下手到把程序中的幾個模塊編寫出來,心里挺開心的。但是,接下來,我們又不得不再次陷入困境。在整個程序的編寫過程中,最難的就是修改和刪除這兩個模塊,這也是我們要解決的重點問題。開始編寫修改和刪除時,很頭疼,去向其他人尋求幫助,在別人的幫助和提示下,我編完了修改程序,但編譯時老出錯,修改后的內(nèi)容將文本內(nèi)的信息全部覆蓋了。困難之時,我們組的其他人,幫助了我,完成了修改和刪除,這讓我認識到團隊的力量。這樣的話,整個程序基本上全部完成了,就剩下完善工作了。我們組寫了兩個程序,最后,兩個程序相互組合,互補,大功告成雖然設(shè)計時完成了,但是我覺得其中還是有一些不足之處:1.警告句。程序中缺少一些警告句,例如:"是否真的刪除(y/n)"”。2.重名的情況。由于考慮的不周全,沒有設(shè)計遇到重名的情況該怎么處理。3.選擇單一。我們設(shè)計的程序中,只設(shè)計了按名字選擇,進行操作,忽略了重名的情況。整個程序完成了,還有很多不完善的地方,希望自己以后辦事的時候要認真,仔細,考慮周全。短短的幾周課程設(shè)計結(jié)束了,但是這段時間里,我又學到了更多C知識,如:對象數(shù)組,string類,文件流,鏈表以及文件對鏈表的操作等,同時我也被提醒以后辦事的時候要認真,仔細,考慮周全,也看到了團隊精神和互幫互助的重要性。這一點會讓我終生受益。通過這次課程設(shè)計,我覺得自己肚子里的墨水多了,收獲也挺大的,這幾周過的挺充實!*附:源程序清單和執(zhí)行結(jié)果#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>#defineLENsizeof(structStudent)structStudent{ intnum; charname[15]; charse*[4]; intmath,English,physics,Mks,C,teal,PE; structStudent*ne*t;};intn;voidmain(){ voidcreat(void); voidsave(structStudent*,char[]); structStudent*load(char[]);voidenter(void);/*錄入函數(shù)*/voidsearch_1(void);/*查詢函數(shù)_1*/voidsearch_2(void);/*查詢函數(shù)_2*/voidmodify(void);/*修改函數(shù)*/voidback(void);/*退出函數(shù)*/voidmune_1();/*界面-1*/voidmune_2();/*界面-2*/mune_1(); mune_2(); printf("\n");}voidmune_1(){printf("\n\n\n\n\n\n");printf("\t************************************************************");printf("\t\t\t********************");printf("\t\t\t

********歡迎使用班級考勤系統(tǒng)********

");printf("\t\t\t********************");printf("\n\t************************************************************\n\n\n");printf("================================================================================");printf("\n\n\n\t\t\t\t<按任意鍵進入>\n\t\t\t\t\t");getch();system("cls");}voidmune_2(){intoption,ch;/*定義一個選項的數(shù)據(jù)類型*/printf("\n\n\n");/*制作的一個漂亮的選擇界面*/printf("\t***************************************************************\n"); printf("\t*\t\t\t\t\t\t\t*\n"); printf("\t*\t\t\t\t\t\t\t*\n");printf("\t*1、錄入本次課考勤情況\t2、查詢學生考勤信息\t*\n");printf("\t*\t\t\t\t\t\t\t*\n");printf("\t*3、創(chuàng)建學生信息\t\t4、修改學生信息\t*\n");printf("\t*\t\t\t\t\t\t\t*\n");printf("\t*5、查看班級考勤情況\t6、退出考勤系統(tǒng)\t*\n");printf("\t*\t\t\t\t\t\t\t*\n"); printf("\t*\t\t\t\t\t\t\t*\n"); printf("\t***************************************************************\n"); printf("\n");printf("\t\t\t請輸入您所需的操作(1~6):\n\t\t\t\t");while(1) { scanf("%d",&option); switch(option) { case1:{ch=getchar();system("cls");enter();}break; case2:{ch=getchar();system("cls");search_1();}break; case3:{ch=getchar();system("cls");creat();}break; case4:{ch=getchar();system("cls");modify();}break; case5:{ch=getchar();system("cls");search_2();}break; case6:{ch=getchar();system("cls");back();}break;default:printf("\t\t\t輸入錯誤,請重新輸入!!!"); }printf("\n\t\t\t\t"); } ch=getchar();}voidsave(structStudent*head,charfilename[]){FILE*fp; structStudent*p=head; if((fp=fopen(filename,"wb"))==NULL) { printf("cannotopenfile\n"); e*it(0); } while(p!=NULL) { fwrite(p,LEN,1,fp); p=p->ne*t; } fclose(fp);}structStudent*load(charfilename[]){ FILE*fp; structStudent*head,*p1,*p2; head=NULL; p1=NULL; if((fp=fopen(filename,"rb"))==NULL) { printf("cannotopenfile\n"); e*it(0); } while(!feof(fp)) { p2=(structStudent*)malloc(LEN); if(fread(p2,LEN,1,fp)==1) { if(head==NULL) head=p2; if(p1) p1->ne*t=p2; p1=p2; } } p1->ne*t=NULL; return(head);}voidenter()/*錄入函數(shù)*/{structStudent*head,*p; charselect='y',cla[10]; intsub,stu,num,flag=0;printf("請輸入上課班級:");scanf("%s",cla); strcat(cla,".dat"); p=head=load(cla); system("cls"); while(select=='y'||select=='Y') { printf("\n\n\n"); printf("\t********************************\n"); printf("\t*\t\t\t\t\t\t\t*\n"); printf("\t*\t\t\t\t\t\t\t*\n"); printf("\t*1、高等數(shù)學\t\t2、大學英語\t\t*\n"); printf("\t*\t\t\t\t\t\t\t*\n"); printf("\t*3、大學物理\t\t4、馬克思基本原理概論*\n"); printf("\t*\t\t\t\t\t\t\t*\n");printf("\t*5、C程序設(shè)計基礎(chǔ)\t6、教師口語\t\t*\n"); printf("\t*\t\t\t\t\t\t\t*\n"); printf("\t*7、體育\t\t\t\t\t\t*\n"); printf("\t*\t\t\t\t\t\t\t*\n"); printf("\t*\t\t\t\t\t\t\t*\n"); printf("\t********************************\n"); printf("\n");printf("\t\t\t請輸入科目選項(1~7):\n\t\t\t\t");scanf("%d",&sub); while(1) { if(sub>0&&sub<8) break; elseprintf("\t\t\t輸入錯誤,請重新輸入\n\t\t\t\t");scanf("%d",&sub); } system("cls"); printf("請輸入本次課缺席同學的座號:"); scanf("%d",&stu); printf("\n"); printf("請輸入該同學的缺課節(jié)數(shù):"); scanf("%d",&num); while(p!=NULL) { if(p->num==stu) switch(sub) { case1:{p->math+=num;}break; case2:{p->English+=num;}break; case3:{p->physics+=num;}break; case4:{p->Mks+=num;}break; case5:{p->C+=num;}break; case6:{p->teal+=num;}break; case7:{p->PE+=num;}break; } p=p->ne*t; } printf("\n\n\t\t******輸入成功******!!!\n");printf("是否繼續(xù)輸入(y\\n):");scanf("%c",&select); } save(head,cla); getch();system("cls"); mune_2();}voidsearch_1(void)/*查詢個人信息*/{structStudent*head,*p; charselect='y',cla[10]; intnum,flag=0;printf("請輸入上課班級:");scanf("%s",cla); strcat(cla,".dat"); p=head=load(cla);printf("請輸入要查詢同學的座號:");scanf("%d",&num); system("cls"); while(p!=NULL) { if(p->num==num) { printf("\n\n"); printf("****************************************\n");printf("座號性別數(shù)學英語物理馬克思C語言教師口語體育\n");printf("%3d%8s%4s%5d%5d%5d%5d%3d%7d%8d\n",p->num,p->name,p->se*, p->math,p->English,p->physics,p->Mks,p->C,p->teal,p->PE); printf("****************************************\n"); flag=1; } p=p->ne*t; } if(flag==0)printf("\t\t!!!沒有這個學生信息,請核對后再輸入!!!\n\n");getch();system("cls"); mune_2();}voidsearch_2(void)/*查詢*班級信息*/{charcla[10]; structStudent*head,*p;printf("請輸入您要查詢的班級名:");gets(cla); system("cls");printf("\n\t\t\t%s班的考勤情況\n\n",cla);strcat(cla,".dat"); p=head=load(cla); printf("****************************************\n");printf("座號性別數(shù)學英語物理馬克思C語言教師口語體育\n");while(p!=NULL) {printf("%3d%8s%4s%5d%5d%5d%5d%3d%7d%8d\n",p->num,p->name,p->se*, p->math,p->English,p->physics,p->Mks,p->C,p->teal,p->PE); p=p->ne*t; } printf("\n****************************************\n"); getch();system("cls"); mune_2();}voidmodify(void)/*修改函數(shù)*/{inta,flag=0; charcla[10];structStudent*head,*p;printf("\n\t\t請輸入要修改的班級:");scanf("%s",cla); strcat(cla,".dat"); p=head=load(cla);printf("\n\t\t請輸入要修改的學生的座號:");scanf("%d",&a); while(p!=NULL){ if(p->num==a) {printf("\n\t\t請重新輸入高等數(shù)學缺勤節(jié)數(shù):");scanf("%d",&p->math);printf("\n\t\t請重新輸入大學英語缺勤節(jié)數(shù):");scanf("%d",&p->English);printf("\n\t\t請輸入大學物理缺勤節(jié)數(shù):");scanf("%d",&p->physics);printf("\n\t\t請重新輸入馬克思主義基本原理與概論缺勤節(jié)數(shù):");scanf("%d",&p->Mks);printf("\n\t\t請重新輸入C語言缺勤節(jié)數(shù):");scanf("%d",&p->C);printf("\n\t\t請重新輸入英語口語缺勤節(jié)數(shù):");scanf("%d",&p->teal);printf("\n\t\t請

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論