




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、程序設(shè)計課程設(shè)計說明書課程名稱 程序設(shè)計 設(shè)計題目 C語言課程設(shè)計學(xué)生考勤系統(tǒng) 專業(yè)班級 學(xué)生姓名 指導(dǎo)教師 起止日期2013年6月8日至2013年6月14日福建林業(yè)職業(yè)技術(shù)學(xué)院自動化工系目錄第1章 設(shè)計目的 .第2章 總體設(shè)計第3章 詳細設(shè)計第4章 調(diào)試與測試第5章 總結(jié)與體會附:源程序清單和執(zhí)行結(jié)果.第1章 設(shè)計目的 本次C語言課程設(shè)計是對本學(xué)期程序設(shè)計基礎(chǔ)課程的實際應(yīng)用,也算是對所學(xué)知識的一次檢驗,通過本次課程設(shè)計能達到的目的如下:1.鞏固和加深對C課程基本內(nèi)容和理論知識的理解和掌握。2.掌握C語言編譯和程序調(diào)試的基本技能。3.利用C語言進行基本的程序設(shè)計從而逐步了解文件的一些相關(guān)操作和
2、掌握函數(shù)的使用技巧,包括函數(shù)類型的選擇,含參數(shù)的傳遞方式。4.掌握使用數(shù)組,指針,引用,文件等編譯的方法,提高運用C語言解決實際問題的能力。5.通過對學(xué)生考勤系統(tǒng)的設(shè)計、編寫源代碼,以及對C語言中各個語法和函數(shù)的使用,使得對比較復(fù)雜的結(jié)構(gòu)體、鏈接、文件的操作更加熟悉。6.通過課程設(shè)計,將本學(xué)期所學(xué)知識與實際應(yīng)用聯(lián)系和結(jié)合起來,培養(yǎng)自己的動手能力,以及加強各學(xué)科之間的聯(lián)系,從而提高個人的團隊意識,增強團隊之間協(xié)調(diào)和配合第2章 總體設(shè)計2.1學(xué)生考勤信息記錄系統(tǒng)的要求通過該系統(tǒng)實現(xiàn)對學(xué)生考勤信息進行創(chuàng)建、錄入、修改、查詢、保存等操作的管理。實驗考勤信息包括學(xué)生姓名,學(xué)號,學(xué)科種類,各科的考勤信息。
3、主要功能:1)、能夠完成對考勤的錄入和修改2)、創(chuàng)建一個班級的信息3)、設(shè)備的查詢4)、將考勤信息保存到文件中2.2流程圖根據(jù)設(shè)計要求,畫出如下流程圖:開 始 菜 單2 4修改6.退出5查詢23創(chuàng)建2查詢11錄入結(jié) 束2.3設(shè)置的主要函數(shù)void creat(void);void save(struct Student *,char );struct Student *load(char );void enter(void); /*錄入函數(shù)*/void search_1(void); /*查詢函數(shù)_1*/void search_2(void); /*查詢函數(shù)_2*/void add(void)
4、;void modify(void); /*修改函數(shù)*/void back(void); /*退出函數(shù)*/void mune_1(); /*界面-1*/void mune_2(); /*界面-2*/mune_1();mune_2();第3章 詳細設(shè)計3.1函數(shù)以及調(diào)用關(guān)系void mune_1(); /*菜單函數(shù)1*/void mune_2() /*菜單函數(shù)2*/開始錄入記錄查詢個人創(chuàng)建信息修改信息查詢整班結(jié)束Menu_2退出系統(tǒng) 1 2 3 4 5 6 Break Break Break Break Break break void enter(void); /*錄入函數(shù)*/開始 輸入班級和
5、學(xué)生學(xué)號 p->num=a 大學(xué)體育大學(xué)口語C語言大學(xué)物理馬克思大學(xué)英語高等數(shù)學(xué) 輸入學(xué)生本節(jié)課息y/n 返回菜單2 n 退出開始void search_1(void); /*查詢個人信息*/輸入此人所在班級和學(xué)號ap->num=a 真 假輸出此人的考勤信息 返回菜單2開始void search_2(void); /*查詢班級信息*/輸入要查詢的班別輸出此班的考勤信息返回菜單2void modify(void); /*修改函數(shù)*/開始 輸入你要修改的班級和座位號ap->num=a 真 假重新輸入這位學(xué)生的考勤信息返回菜單2void save(struct Student *,
6、char );退出關(guān)閉文件開始打開文件數(shù)據(jù)寫入文件struct Student *load(char filename)開始關(guān)閉文件讀出數(shù)據(jù)打開文件退 出3.2結(jié)構(gòu)的應(yīng)用Ifelse結(jié)構(gòu)和 while 結(jié)構(gòu)嵌套結(jié)構(gòu):while(p1->num!=0)n=n+1;if(n=1)head=p1;else p2->next=p1;p2=p1;p1=(struct Student *)malloc(LEN); scanf("%s%d%s",p1->name,&p1->num,p1->sex);p1->math=p1->English
7、=p1->physics=p1->Mks=p1->C=p1->teal=p1->PE=0;p2->next=NULL;p=head;while(p!=NULL)fwrite(p,LEN,1,fp);p=p->next;fclose(fp);printf("ttt創(chuàng)建成功,按任意鍵返回主菜單n");getch(); system("cls");mune_2();2 switch結(jié)構(gòu)switch(sub) case 1: p->math+=num;break;case 2: p->English+=num
8、;break;case 3: p->physics+=num;break;case 4: p->Mks+=num;break;case 5: p->C+=num;break;case 6: p->teal+=num;break;case 7: p->PE+=num;break;3while結(jié)構(gòu) while(p!=NULL) if(p->num=a)printf("ntt請重新輸入高等數(shù)學(xué)缺勤節(jié)數(shù):"); scanf("%d",&p->math); printf("ntt請重新輸入大學(xué)英語缺勤節(jié)數(shù)
9、:"); scanf("%d",&p->English); printf("ntt請輸入大學(xué)物理缺勤節(jié)數(shù):"); scanf("%d",&p->physics); printf("ntt請重新輸入馬克思主義基本原理與概論缺勤節(jié)數(shù):"); scanf("%d",&p->Mks); printf("ntt請重新輸入C語言缺勤節(jié)數(shù):"); scanf("%d",&p->C); printf(&qu
10、ot;ntt請重新輸入英語口語缺勤節(jié)數(shù):"); scanf("%d",&p->teal); printf("ntt請重新輸入體育缺勤節(jié)數(shù)目:"); scanf("%d",&p->PE); flag=1;save(head,cla); printf("ntt修改成功!ntt");break;p=p->next;第4章 調(diào)試與測試4.1調(diào)試執(zhí)行程序時,顯示如下信息選擇不同的選項,執(zhí)行相應(yīng)的功能。(選擇3),創(chuàng)建一個班級的基本信息。(選擇1),錄入本次課考勤情況。選擇要修改的科
11、目的界面:輸入缺勤同學(xué)和缺勤節(jié)數(shù):結(jié)束輸入則輸入n后返回菜單2:(選擇2),查詢學(xué)生個人考勤信息。(選擇4),修改學(xué)生個人考勤信息。(選擇5),查看一個班級的考勤信息。(選擇6),退出學(xué)生考勤信息系統(tǒng)。第5章 總結(jié)與體會三周的課程設(shè)計已經(jīng)結(jié)束了?;叵雽W(xué)習(xí)C語言 的過程中,既有快樂又有煩惱。從領(lǐng)到書的那一刻,我就很郁悶,C 語言程序設(shè)計到底事學(xué)什么的,有什么用。剛開始上課時,還在迷茫這門課程是用來做什么的。不過,這些感受都是在對這門課程不了解的情況下產(chǎn)生的。后來慢慢的接觸多了,聽老師講的多了,了解多了,漸漸的產(chǎn)生了興趣。尤其是學(xué)到語句和函數(shù)時,上機操作程序,經(jīng)過編譯,調(diào)試和運行后,出現(xiàn)界面,當(dāng)時
12、覺得很好奇,想真正的學(xué)好這門課程。通過半個學(xué)期的學(xué)習(xí),我掌握了基本知識。下學(xué)期開始時,被通知要進行課程設(shè)計。當(dāng)時有點懵,感覺學(xué)的東西很少,很零散,不知該怎么連到一起,就要課程設(shè)計,是不是太難為我們了。第一天基本上都是在看書,把基本知識再熟悉一遍。到了下午的時候,看了很多練習(xí)題,從這些練習(xí)題上我得到了不少啟發(fā),然后我們組把整個程序的思路理清了,開始著手寫程序。第一周結(jié)束的時候,我感覺自己收獲挺大的,從一開始的迷茫,不知道從何下手到把程序中的幾個模塊編寫出來,心里挺開心的。但是,接下來,我們又不得不再次陷入困境。在整個程序的編寫過程中,最難的就是修改和刪除這兩個模塊,這也是我們要解決的重點問題。開
13、始編寫修改和刪除時,很頭疼,去向其他人尋求幫助,在別人的幫助和提示下,我編完了修改程序,但編譯時老出錯,修改后的內(nèi)容將文本內(nèi)的信息全部覆蓋了。困難之時,我們組的其他人,幫助了我,完成了修改和刪除,這讓我認識到團隊的力量。這樣的話,整個程序基本上全部完成了,就剩下完善工作了。我們組寫了兩個程序,最后,兩個程序相互組合,互補,大功告成雖然設(shè)計時完成了,但是我覺得其中還是有一些不足之處:1. 警告句。程序中缺少一些警告句,例如:“是否真的刪除(y/n)?”。2. 重名的情況。由于考慮的不周全,沒有設(shè)計遇到重名的情況該怎么處理。3. 選擇單一。我們設(shè)計的程序中,只設(shè)計了按名字選擇,進行操作,忽略了重名
14、的情況。整個程序完成了,還有很多不完善的地方,希望自己以后辦事的時候要認真,仔細,考慮周全。短短的幾周課程設(shè)計結(jié)束了,但是這段時間里,我又學(xué)到了更多C 知識,如:對象數(shù)組,string類,文件流,鏈表以及文件對鏈表的操作等,同時我也被提醒以后辦事的時候要認真,仔細,考慮周全,也看到了團隊精神和互幫互助的重要性。這一點會讓我終生受益。通過這次課程設(shè)計,我覺得自己肚子里的墨水多了,收獲也挺大的,這幾周過的挺充實!*附:源程序清單和執(zhí)行結(jié)果#include<stdio.h>#include<stdlib.h>#include <conio.h>#include&l
15、t;string.h>#define LEN sizeof(struct Student)struct Studentint num;char name15;char sex4;int math, English,physics,Mks,C,teal,PE;struct Student *next;int n;void main()void creat(void);void save(struct Student *,char );struct Student *load(char );void enter(void); /*錄入函數(shù)*/void search_1(void); /*查詢
16、函數(shù)_1*/void search_2(void); /*查詢函數(shù)_2*/void modify(void); /*修改函數(shù)*/void back(void); /*退出函數(shù)*/void mune_1(); /*界面-1*/void mune_2(); /*界面-2*/mune_1();mune_2();printf("n");void mune_1() printf("nnnnnn"); printf("t*"); printf("ttt * * "); printf("ttt* 歡 迎 使 用 班 級
17、 考 勤 系 統(tǒng) *"); printf("ttt * * "); printf("nt*nnn"); printf("="); printf("nnntttt<按任意鍵進入>nttttt"); getch(); system("cls");void mune_2()int option,ch; /*定義一個選項的數(shù)據(jù)類型*/ printf("nnn"); /*制作的一個漂亮的選擇界面*/printf("t*n");printf(&q
18、uot;t*ttttttt *n");printf("t*ttttttt *n");printf("t* 1、錄入本次課考勤情況t 2、查詢學(xué)生考勤信息t *n");printf("t*ttttttt *n");printf("t* 3、創(chuàng)建學(xué)生信息tt 4、修改學(xué)生信息t *n");printf("t*ttttttt *n"); printf("t* 5、查看班級考勤情況 t 6、退出考勤系統(tǒng)t *n");printf("t*ttttttt *n&quo
19、t;);printf("t*ttttttt *n");printf("t*n");printf("n");printf("ttt請輸入您所需的操作(16):ntttt");while(1)scanf("%d",&option);switch(option)case 1: ch=getchar();system("cls");enter();break;case 2: ch=getchar();system("cls");search_1();bre
20、ak;case 3: ch=getchar();system("cls");creat();break;case 4: ch=getchar();system("cls");modify();break;case 5: ch=getchar();system("cls");search_2();break;case 6: ch=getchar();system("cls");back();break;default: printf("ttt輸入錯誤,請重新輸入!");printf("n
21、tttt");ch=getchar();void save(struct Student *head,char filename) FILE *fp;struct Student *p=head;if(fp=fopen(filename,"wb")=NULL)printf("can not open filen");exit(0);while(p!=NULL)fwrite(p,LEN,1,fp);p=p->next;fclose(fp);struct Student *load(char filename)FILE *fp;struct
22、Student *head,*p1,*p2;head=NULL;p1=NULL;if(fp=fopen(filename,"rb")=NULL)printf("can not open filen");exit(0);while(!feof(fp)p2=(struct Student *)malloc(LEN);if(fread(p2,LEN,1,fp)=1)if(head=NULL)head=p2;if(p1)p1->next=p2;p1=p2;p1->next=NULL;return (head);void enter() /*錄入函數(shù)*
23、/struct Student *head,*p;char select='y',cla10;int sub,stu,num,flag=0;printf("請輸入上課班級:");scanf("%s",cla);strcat(cla,".dat");p=head=load(cla);system("cls");while(select='y'|select='Y')printf("nnn"); printf("t* * * * * * *
24、* * * * * * * * * * * * * * * * * * * * * * * * *n"); printf("t*ttttttt *n"); printf("t*ttttttt *n"); printf("t* 1、高等數(shù)學(xué)tt 2、大學(xué)英語tt *n"); printf("t*ttttttt *n"); printf("t* 3、大學(xué)物理tt 4、馬克思基本原理概論 *n"); printf("t*ttttttt *n"); printf("
25、;t* 5、C程序設(shè)計基礎(chǔ) t 6、教師口語tt *n"); printf("t*ttttttt *n"); printf("t* 7、體育tttttt *n"); printf("t*ttttttt *n"); printf("t*ttttttt *n"); printf("t* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *n"); printf("n");printf("tt
26、t請輸入科目選項(17):ntttt");scanf("%d",&sub);while(1)if(sub>0&&sub<8)break;elseprintf("ttt輸入錯誤,請重新輸入ntttt");scanf("%d",&sub);system("cls"); printf("請輸入本次課缺席同學(xué)的座號:"); scanf("%d",&stu); printf("n"); printf(&q
27、uot;請輸入該同學(xué)的缺課節(jié)數(shù):"); scanf("%d",&num);while(p!=NULL)if(p->num=stu)switch(sub) case 1: p->math+=num;break;case 2: p->English+=num;break;case 3: p->physics+=num;break;case 4: p->Mks+=num;break;case 5: p->C+=num;break;case 6: p->teal+=num;break;case 7: p->PE+=n
28、um;break;p=p->next; printf("nntt*輸入成功*!n");printf("是否繼續(xù)輸入(yn):");scanf("%c",&select);save(head,cla);getch(); system("cls");mune_2();void search_1(void) /*查詢個人信息*/struct Student *head,*p;char select='y',cla10;int num,flag=0;printf("請輸入上課班級:&
29、quot;);scanf("%s",cla);strcat(cla,".dat");p=head=load(cla);printf("請輸入要查詢同學(xué)的座號:");scanf("%d",&num);system("cls");while(p!=NULL)if(p->num=num)printf("nn");printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
30、* * * * * * *n");printf(" 座號 姓名 性別 數(shù)學(xué) 英語 物理 馬克思 C語言 教師口語 體育n");printf(" %3d %8s %4s%5d %5d %5d %5d %3d %7d %8dn",p->num,p->name,p->sex,p->math,p->English,p->physics,p->Mks,p->C,p->teal,p->PE);printf("* * * * * * * * * * * * * * * * * * * *
31、* * * * * * * * * * * * * * * * * * * *n");flag=1;p=p->next;if(flag=0)printf("tt!沒有這個學(xué)生信息,請核對后再輸入!nn");getch(); system("cls");mune_2();void search_2(void) /*查詢某班級信息*/char cla10;struct Student *head,*p;printf("請輸入您要查詢的班級名:");gets(cla);system("cls");prin
32、tf("n ttt%s班的考勤情況nn",cla);strcat(cla,".dat");p=head=load(cla);printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *n");printf(" 座號 姓名 性別 數(shù)學(xué) 英語 物理 馬克思 C語言 教師口語 體育n");while(p!=NULL)printf(" %3d %8s %4s%5d %5d %5d %5d %3d %7
33、d %8dn",p->num,p->name,p->sex,p->math,p->English,p->physics,p->Mks,p->C,p->teal,p->PE);p=p->next;printf("n* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *n");getch(); system("cls");mune_2();void modify(void) /*修
34、改函數(shù)*/ int a,flag=0;char cla10; struct Student *head,*p;printf("ntt請輸入要修改的班級:");scanf("%s",cla);strcat(cla,".dat");p=head=load(cla); printf("ntt請輸入要修改的學(xué)生的座號:"); scanf("%d",&a);while(p!=NULL) if(p->num=a)printf("ntt請重新輸入高等數(shù)學(xué)缺勤節(jié)數(shù):"); sc
35、anf("%d",&p->math); printf("ntt請重新輸入大學(xué)英語缺勤節(jié)數(shù):"); scanf("%d",&p->English); printf("ntt請輸入大學(xué)物理缺勤節(jié)數(shù):"); scanf("%d",&p->physics); printf("ntt請重新輸入馬克思主義基本原理與概論缺勤節(jié)數(shù):"); scanf("%d",&p->Mks); printf("ntt請重新輸入C語言缺勤節(jié)數(shù):"); scanf("%d",&p->C); printf("ntt請重新輸入英語口語缺勤節(jié)數(shù):"); scanf("%d",&p->teal); printf("ntt請重新輸入體育缺勤節(jié)數(shù)目:"); scanf("%d",&p->PE); flag=1;sa
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 商業(yè)餐飲合同范例
- 商業(yè)住房借貸合同范本
- 合同范本材料
- 合同范本發(fā)布通知
- 回收手機抵押合同范本
- 土地確權(quán)房屋租賃合同范本
- 卸車合同范本
- 商業(yè)住房定金合同范本
- 住建補充合同范本
- 國際運輸咨詢合同范本
- YY/T 1860.1-2024無源外科植入物植入物涂層第1部分:通用要求
- 中央2025年全國婦聯(lián)所屬在京事業(yè)單位招聘93人筆試歷年參考題庫附帶答案詳解
- 人教版高中物理選擇性必修第二冊電磁波的發(fā)射與接收課件
- 《建筑冷熱源》全冊配套最完整課件1
- 封條模板A4直接打印版
- 文化遺產(chǎn)導(dǎo)論 教學(xué)大綱
- 微差爆破施工方案
- 同一直線上的二力合成導(dǎo)學(xué)案
- 2022年度八年級美術(shù)抽測題庫
- 義務(wù)教育《地理》課程標(biāo)準(zhǔn)(2022年版)
- 單細胞蛋白論文
評論
0/150
提交評論