![C語言課程設(shè)計學(xué)生考勤系統(tǒng)_第1頁](http://file4.renrendoc.com/view/a0fad48240692a73434bc04aa32c7c01/a0fad48240692a73434bc04aa32c7c011.gif)
![C語言課程設(shè)計學(xué)生考勤系統(tǒng)_第2頁](http://file4.renrendoc.com/view/a0fad48240692a73434bc04aa32c7c01/a0fad48240692a73434bc04aa32c7c012.gif)
![C語言課程設(shè)計學(xué)生考勤系統(tǒng)_第3頁](http://file4.renrendoc.com/view/a0fad48240692a73434bc04aa32c7c01/a0fad48240692a73434bc04aa32c7c013.gif)
![C語言課程設(shè)計學(xué)生考勤系統(tǒng)_第4頁](http://file4.renrendoc.com/view/a0fad48240692a73434bc04aa32c7c01/a0fad48240692a73434bc04aa32c7c014.gif)
![C語言課程設(shè)計學(xué)生考勤系統(tǒng)_第5頁](http://file4.renrendoc.com/view/a0fad48240692a73434bc04aa32c7c01/a0fad48240692a73434bc04aa32c7c015.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
語言程序設(shè)計之青柳念文創(chuàng)作課程設(shè)計陳說設(shè)計題目:學(xué)生考勤系統(tǒng)設(shè)計專業(yè)微電子迷信與工程班級微電131學(xué)生趙楊怡指導(dǎo)教員年學(xué)期設(shè)計任務(wù):C語言課程設(shè)計任務(wù)書10題目:學(xué)生考勤系統(tǒng)設(shè)計功能:學(xué)生考勤系統(tǒng)應(yīng)包括各班學(xué)生的所有信息.每一個學(xué)生是一條記錄,包括姓名、性別、學(xué)號、日期、節(jié)次、出勤狀況等信息.本系統(tǒng)能夠模擬考勤過程、記錄考勤成就,并能在課程竣過后依據(jù)設(shè)定的考勤評分尺度自動給出每一個學(xué)生的考勤分?jǐn)?shù).要求:1、用C語言實現(xiàn)程序設(shè)計;2、操控布局體停止有關(guān)信息辦理;3、系統(tǒng)的各個功能模塊要求用函數(shù)的形式實現(xiàn);4、界面友善(優(yōu)秀的人機(jī)交互),程序加需要的說明.平常成績:查收辯論成績:設(shè)計陳說成績:總評成績:指導(dǎo)教員:一、整體設(shè)計1.程序的整體設(shè)計◎確立界面,使用戶可選擇操控項目(錄入,改正,查問,評分).◎錄入功能:使用布局體,要求用戶輸入姓名、性別、學(xué)號、日期、節(jié)次、目前出勤狀況等信息,并寫入文件.◎改正功能:使用戶輸入學(xué)號,姓名此中一項能夠改正考勤其信息.對于改正功能的實現(xiàn),是先將所有文件內(nèi)容讀入到內(nèi)存中,而后改正考勤值,最后再從頭覆蓋寫入文件.◎查問模塊:使用字符串比較函數(shù),操控循環(huán)找到對應(yīng)布局體數(shù)組元素,而后輸出需要信息.關(guān)于查問功能的實現(xiàn),同改正,是先將所有文件內(nèi)容讀入到內(nèi)存中,而后查找到此中某項,最后輸出到屏幕.◎評分模塊:系統(tǒng)依據(jù)總的應(yīng)道考勤數(shù)依據(jù)百分制,求出每一個學(xué)生的分?jǐn)?shù),并輸出到屏幕.數(shù)據(jù)布局學(xué)生信息用布局體記錄,包括姓名(字符數(shù)組)、性別(字符型)、日期(年月日三個字符數(shù)組)、節(jié)次(整型)、出狀況(整型).函數(shù)原型申明voidmain( )
//
主函數(shù)voidinput( );
//
錄入數(shù)據(jù)函數(shù)voidchange( );
//
改正數(shù)據(jù)函數(shù)voidsearch( );
//
查問數(shù)據(jù)函數(shù)voidevaluate( );
//
計算總評函數(shù)二、詳盡設(shè)計1.main( )函數(shù)voidmain( ){voidinput( );//voidchange( );//voidsearch( );//voidevaluate( );//charitem;system("color34");
錄入數(shù)據(jù)函數(shù)改正數(shù)據(jù)函數(shù)查問數(shù)據(jù)函數(shù)計算總評函數(shù)★
★□★
★□★
★□★
★□★
★□★
\n");printf("printf("
●●\n");
學(xué)生
考勤管理系
統(tǒng)
\n");printf("
●●\n");printf("
BY
朱勝佳
\n");printf("printf("
●●\n");★
★□★
★□★
★□★
★□★
★□★
\n");printf("printf("
●●\n");
1.
學(xué)生信息及考勤狀況錄入
\n");printf("●●\n");printf("
2.學(xué)生信息及考勤狀況改正
\n");printf("●●\n");printf("
3.學(xué)生信息及考勤狀況查問
\n");printf("◎◎\n");printf("●4.學(xué)生考勤總評分?jǐn)?shù)查問●\n");printf("
\n");printf("★
★□★
★□★
★□★
★□★
★□★\n");//用戶界面printf("\n");printf("請選擇您需要的操控\n");scanf("%c",&item);switch(item){case'1':input( );break;case'2':change( );break;case'3':search( );break;case'4':evaluate( );break;}//實現(xiàn)功能選擇}流程圖:開始輸出界面switch(item)switch(ite1342record( )search( )goal( )amend( )竣break事2.input( )函數(shù)voidinput( ){inti,j=0,jx=1;printf("************************學(xué)生基本信息錄入*****************************\n");if((fp=fopen("date.txt","w"))==NULL){printf("文件翻開失敗\n");exit(0);}for(i=0;jx==1;i++)//輸入信息循環(huán){for(;j==0;)//輸入確認(rèn)循環(huán){getchar( );printf("請輸入第%d個學(xué)生的姓名",i+1);gets(stu[i].name);printf("請輸入第%d個學(xué)生的學(xué)號",i+1);gets(stu[i].number);printf("請輸入第%d個學(xué)生的性別(男:m女:f)",i+1);stu[i].sex=getchar( );printf("請輸入第%d個學(xué)生的誕辰(格式:年月日)",i+1);scanf("%d%d%d",&stu[i].year,&stu[i].month,&stu[i].day);printf("請輸入第%d個學(xué)生的目前考勤次數(shù)scanf("%d",&stu[i].kq);年
printf("%d
您輸入的信息為月%d日\n
姓名
%s0
學(xué)號重
%s輸
性別
%c1
誕辰確
%d認(rèn)",stu[i].name,stu[i].number,stu[i].sex,stu[i].year,stu[i].month,stu[i].day);scanf("%d",&j);
//
輸入確認(rèn)}j=0;if(fwrite(&stu[i],sizeof(struct
student),1,fp)!=1)printf("
文件寫入錯誤
\n");
//
寫入文件printf("
能否持續(xù)輸入下一個學(xué)生信息
0停止
1持續(xù)\n");scanf("%d",&jx);
//
持續(xù)輸入選擇}fclose(fp);printf("0返回主菜單\n");getchar( );a=getchar( );getchar( );if(a=='0')main( );//返回主菜單}流程圖:初步0=>j翻開文件1=>jx0=>ijx=1?Yj=0?Y輸入
i+1
個學(xué)生信N
輸入
息生信息j值選擇能否確認(rèn)寫入文件輸入jx值選擇能否持續(xù)i+1=>i3.change( )函數(shù)竣事voidchange( ){inti=0,j=0,sway,t,x;charname[10],number[10];printf("**********************學(xué)生考勤改正**************************\n");if((fp=fopen("date.txt","r"))==NULL)將文件內(nèi)容讀入內(nèi)存{printf("文件翻開失敗\n");exit(0);}for(i=0;feof(fp)==0;i++)fread(&stu[i],sizeof(structstudent),1,fp);//讀取文件內(nèi)容fclose(fp);printf("選擇查找方式
//1依據(jù)姓名查找
封閉文件2依據(jù)學(xué)號查找
");scanf("%d",&sway);/**********************
依據(jù)姓名
查找初步*************************///if(sway==1){printf("請輸入需要改正學(xué)生的姓名");//printf("i=%d",i);scanf("%s",name);for(j=0;t!=0;j++){t=strcmp(stu[j].name,name);if(j==i){t=0;printf("
未找到您所查問的數(shù)據(jù)
,請從頭輸入
\n");}}if(j<i)
//
查問成功{printf("誕辰%d
您查找的學(xué)生信息以下\n姓名%s學(xué)號%s性別年%d月%d日目前考勤次數(shù)%d\n",stu[j-
%c1].name,stu[j-1].number,stu[j-1].sex,stu[j-1].year,stu[j-1].month,stu[j-1].day,stu[j-1].kq);printf("能否改正該生考勤信息0否1是");
//
選擇能否改正考勤scanf("%d",&x);//if(x==1){printf("請輸入新的考勤值scanf("%d",&stu[j-1].kq);
");
//
輸當(dāng)選擇變量值
輸入新的考勤值if((fp=fopen("date.txt","w"))==NULL)//以只寫方式翻開文件{printf("文件翻開失敗\n");exit(0);}for(j=0;j<i;j++)if(fwrite(&stu[j],sizeof(struct
student),1,fp)!=1)printf("
文件寫入錯誤fclose(fp);
\n");//
//
寫入文件封閉文件}}printf("能否持續(xù)改正其余學(xué)生考勤0否1是");scanf("%d",&x);if(x==1)change( );}/**********************依據(jù)姓名查找竣事*************************////**********************依據(jù)學(xué)號查找初步*************************///if(sway==2){printf("請輸入需要改正學(xué)生的學(xué)號");//printf("i=%d",i);scanf("%s",number);for(j=0;t!=0;j++){t=strcmp(stu[j].number,number);if(j==i)t=0;printf("
未找到您所查問的數(shù)據(jù)
,請從頭輸入
\n");}}if(j<i)
//
查問成功{printf("誕辰%d
您查找的學(xué)生信息以下\n姓名%s學(xué)號%s性別年%d月%d日目前考勤次數(shù)%d\n",stu[j-
%c1].name,stu[j-1].number,stu[j-1].sex,stu[j-1].year,stu[j-1].month,stu[j-1].day,stu[j-1].kq);printf("能否改正該生考勤信息0否1是");//選擇能否改正考勤scanf("%d",&x);//輸當(dāng)選擇變量值if(x==1){printf("請輸入新的考勤值");scanf("%d",&stu[j-1].kq);//輸入新的考勤值if((fp=fopen("date.txt","w"))==NULL)//以只寫方式翻開文件{printf("文件翻開失敗\n");exit(0);}for(j=0;j<i;j++)if(fwrite(&stu[j],sizeof(structstudent),1,fp)!=1)printf("文件寫入錯誤\n");//寫入文件fclose(fp);//封閉文件}}printf("能否持續(xù)改正其余學(xué)生考勤0否1是");scanf("%d",&x);if(x==1)change( );}/***********************************************///
依據(jù)學(xué)號查找竣事printf("0返回主菜單\n");getchar( );a=getchar( );getchar( );if(a=='0')main( );}初步翻開文件將文件內(nèi)容所有讀入布局輸入sway值選擇查找方體數(shù)組式Sway=1?NY輸入要查Sway=2?輸入要查找找的姓名的學(xué)號查找姓名N輸入X值選擇查找學(xué)號能否改正考勤X=1?Y輸入新的考勤寫入文件值竣事4.search( )函數(shù)voidsearch( ){inti=0,j=0,sway,t,x;charname[10],number[10];printf("***********************學(xué)生信息查問***************************\n");if((fp=fopen("date.txt","r"))==NULL)將文件內(nèi)容讀入內(nèi)存{printf("
文件翻開失敗
\n");exit(0);}for(i=0;feof(fp)==0;i++)fread(&stu[i],sizeof(structstudent),1,fp);//讀取文件內(nèi)容fclose(fp);//封閉文件printf("選擇查找方式1依據(jù)姓名查找2依據(jù)學(xué)號查找");scanf("%d",&sway);/**********************依據(jù)姓名查找初步*************************///if(sway==1){printf("請輸入需要改正學(xué)生的姓名");//printf("i=%d",i);scanf("%s",name);for(j=0;t!=0;j++){t=strcmp(stu[j].name,name);if(j==i){t=0;printf("
未找到您所查問的數(shù)據(jù)
,請從頭輸入
\n");}}查問成功{printf("您查找的學(xué)生信息以下\n姓名%s學(xué)號%s性別%c誕辰%d年%d月%d日目前考勤次數(shù)%d\n",stu[j-1].name,stu[j-1].number,stu[j-1].sex,stu[j-1].year,stu[j-1].month,stu[j-1].day,stu[j-1].kq);}printf("能否持續(xù)查問其余學(xué)生信息0否1是");scanf("%d",&x);if(x==1)search( );}/**********************依據(jù)姓名查找竣事*************************////**********************依據(jù)學(xué)號查找初步*************************///if(sway==2){printf("請輸入需要改正學(xué)生的學(xué)號");//printf("i=%d",i);scanf("%s",number);for(j=0;t!=0;j++){t=strcmp(stu[j].number,number);if(j==i){printf("
未找到您所查問的數(shù)據(jù)
,請從頭輸入
\n");}}if(j<i)
//
查問成功{printf("誕辰%d
您查找的學(xué)生信息以下\n姓名%s學(xué)號%s性別年%d月%d日目前考勤次數(shù)%d\n",stu[j-
%c1].name,stu[j-1].number,stu[j-1].sex,stu[j-1].year,stu[j-1].month,stu[j-1].day,stu[j-1].kq);}printf("能否持續(xù)查問其余學(xué)生信息0否1是");scanf("%d",&x);if(x==1)search( );}/**********************依據(jù)學(xué)號查找竣事*************************///printf("0返回主菜單\n");getchar( );a=getchar( );getchar( );if(a=='0')main( );}流程圖:初步翻開文件將文件內(nèi)容所有讀入布局輸入sway值選擇查找方體數(shù)組式Sway=1?NY輸入要查Sway=2?輸入要查找找的姓名的學(xué)號查找姓名查找學(xué)號5.evaluate( )輸出該生信息函數(shù)voidevaluate( ){inti=0,j=0,sway,t,x;floatscore;charname[10],number[10];printf("***********************學(xué)生考勤分?jǐn)?shù)計算**************************\n");if(kqcs==0){printf("請輸入應(yīng)到考勤總數(shù)");//請輸入應(yīng)到考勤總數(shù)scanf("%f",&kqcs);}if((fp=fopen("date.txt","r"))==NULL)//將文件內(nèi)容讀入內(nèi)存{printf("文件翻開失敗\n");exit(0);}for(i=0;feof(fp)==0;i++)fread(&stu[i],sizeof(structstudent),1,fp);//讀取文件內(nèi)容fclose(fp);//封閉文件printf("選擇查找方式1依據(jù)姓名查找2依據(jù)學(xué)號查找");scanf("%d",&sway);/**********************依據(jù)姓名查找初步*************************///if(sway==1){printf("請輸入需要改正學(xué)生的姓名");//printf("i=%d",i);scanf("%s",name);for(j=0;t!=0;j++){t=strcmp(stu[j].name,name);if(j==i){t=0;printf("
未找到您所查問的數(shù)據(jù)
,請從頭輸入
\n");}}if(j<i)
//
查問成功{printf("
您查找的學(xué)生信息以下\n姓名%s學(xué)號%s性別
%c1].name,stu[j-1].number,stu[j-1].sex,stu[j-1].year,stu[j-1].month,stu[j-1].day,stu[j-1].kq);score=(stu[j-1].kq)/kqcs*100;printf("該生目前考勤分?jǐn)?shù)為%5.2f",score);}printf("能否持續(xù)計算其余學(xué)生考勤分?jǐn)?shù)0否1是");scanf("%d",&x);if(x==1)evaluate( );}/**********************依據(jù)姓名查找竣事*************************////**********************依據(jù)學(xué)號查找初步*************************///if(sway==2){printf("請輸入需要改正學(xué)生的學(xué)號");//printf("i=%d",i);scanf("%s",number);for(j=0;t!=0;j++){t=strcmp(stu[j].number,number);if(j==i){t=0;printf("
未找到您所查問的數(shù)據(jù)
,請從頭輸入
\n");}}if(j<i)
//
查問成功{printf("誕辰%d
您查找的學(xué)生信息以下\n姓名%s學(xué)號%s性別年%d月%d日目前考勤次數(shù)%d\n",stu[j-
%c1].name,stu[j-1].number,stu[j-1].sex,stu[j-1].year,stu[j-1].month,stu[j-1].day,stu[j-1].kq);score=(stu[j-1].kq)/kqcs*100;printf("該生目前考勤分?jǐn)?shù)為%5.2f",score);}printf("能否持續(xù)計算其余學(xué)生考勤分?jǐn)?shù)0否1是");scanf("%d",&x);if(x==1)evaluate( );}/**********************依據(jù)學(xué)號查找竣事*************************///printf("0返回主菜單\n");getchar( );a=getchar( );getchar( );if(a=='0')main( );}流程圖:初步輸入應(yīng)到考勤次數(shù)kqcs值翻開文件將文件內(nèi)容所有讀入布局輸入sway值選擇查找方體數(shù)組式Sway=1?NY輸入要查Sway=2?輸入要查找找的姓名的學(xué)號查找姓名查找學(xué)號輸出該生信息計算考勤分?jǐn)?shù)輸出考勤分?jǐn)?shù)竣事三、測試及調(diào)試(測試方案、存在的問題及辦理方法)測試方案:依據(jù)每一個函數(shù)功能停止測試,在做完每一個函數(shù)對其停止測試,主函數(shù)測試,先將所有需要的功能模塊函數(shù)設(shè)置為空,每一個函數(shù)用一個printf語句來測試主函數(shù).1.存在問題:初步將誕辰定義為字符數(shù)組,當(dāng)用scanf來輸入年月日時,年月日之間用空格分開,但在輸出時發(fā)現(xiàn)年月日出現(xiàn)錯誤.剖析原由:用scanf輸入年月日時,系統(tǒng)會把用來分開的空格當(dāng)成字符讀入.辦理方法:將年月日定義為整型,這樣便能夠用scanf輸入,用空格分開.存在問題2:在查找數(shù)據(jù)時,需要先將所有數(shù)據(jù)讀入一個布局體數(shù)組,在讀取后未封閉文件,履行查找時查找不到有關(guān)信息.剖析原由:再操控for循環(huán)讀取所有文件內(nèi)容后,文件指針將會移至文件末端,這樣再履行查找時就會從文件末端初步,明顯不切合要求,因此會出現(xiàn)錯誤.辦理方法:在讀取完數(shù)據(jù)后先封閉文件,在查找時再次翻開文件,這時文件指針就會指向文件開首.存在問題3:再多個使用getchar或許gets輸入的時候,會出現(xiàn)直接跳過輸入的狀況.剖析原由:在使用getchar或許gets輸入的時候,系統(tǒng)會將前一步用來確認(rèn)履行的回車當(dāng)作字符讀入,致使跳過該步輸入.辦理方法:再getchar或許gets前面加上getchar( )語句,讀掉回車,下邊的getchar或許gets便能夠正常輸入.四、小結(jié)經(jīng)過編寫該程序,熟習(xí)了C語言的基本語法,選擇,循環(huán)等布局,深入演練了函數(shù)的調(diào)用方法,和文件的讀寫方法,熟習(xí)了布局體的使用,更為深入了面向過程語言思想,和一些基本算法.經(jīng)過對程序的后期調(diào)試,熟習(xí)了C稀有錯誤,鍛煉了思想的嚴(yán)實性,和齊備性.經(jīng)過對程序的說明和畫流程圖,形成了一套自己編程的風(fēng)格,和清晰地思路,使思想更為條理化,清楚化.附件:主要源程序代碼(需打?。?include<stdio.
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 加油車配送合同范本
- 公司承包轉(zhuǎn)讓合同范本
- 2025年度高新技術(shù)園區(qū)過橋資金借款申請扶持合同
- 2025年中國當(dāng)歸行業(yè)發(fā)展趨勢預(yù)測及投資戰(zhàn)略咨詢報告
- 0元租賃合同范例
- 個人車輛維修合同范例
- 2025年度環(huán)??⒐を炇湛鐓^(qū)域協(xié)作與支持合同
- 別墅裝修裝飾合同范本
- 買賣小牛犢合同范本
- 農(nóng)村蓋房承攬合同范例
- 歷史時間軸全
- 2019譯林版高中英語全七冊單詞總表
- 高速行業(yè)網(wǎng)絡(luò)安全與維護(hù)
- 2024年能源電力行業(yè)數(shù)字化轉(zhuǎn)型解決方案
- (2024年)房地產(chǎn)銷售人員心態(tài)培訓(xùn)
- 康復(fù)科院感年度工作計劃
- T-BJCC 1003-2024 首店、首發(fā)活動、首發(fā)中心界定標(biāo)準(zhǔn)
- 《海洋自然保護(hù)區(qū)》課件
- 2024年云南機(jī)場集團(tuán)飛機(jī)維修服務(wù)分公司招聘筆試參考題庫含答案解析
- 外科手術(shù)及護(hù)理常規(guī)
- 蘇少版小學(xué)一年級下冊綜合實踐活動單元備課
評論
0/150
提交評論