版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C語言課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告一、設(shè)計(jì)目的:學(xué)生信息包括:學(xué)號(hào)、姓名、性別、系名、班級(jí)名、出生年月、住址、電話號(hào)碼。設(shè)計(jì)一學(xué)生信息管理系統(tǒng),使之能提供以下功能:1.系統(tǒng)以菜單方式工作;2.學(xué)生信息錄入功能(輸入);3.學(xué)生信息瀏覽功能(輸出);4.學(xué)生信息檢索功能;5.學(xué)生信息的刪除與修改功能;二、總體設(shè)計(jì)思路:1程序設(shè)計(jì)組成框圖主菜單添加新的學(xué)生信息瀏覽所有學(xué)生信息檢索學(xué)生信息按學(xué)號(hào)檢索按姓名檢索修改此同學(xué)信息刪除此同學(xué)信息檢索信息庫添加新的學(xué)生信息刪除所有記錄保存并退出2N-S流程圖case 4case 3Case 2case 1結(jié)束調(diào)用add()添加新的學(xué)生信息fileopen()Menu()輸
2、入選擇x調(diào)用scan()瀏覽所有學(xué)生信息退出系統(tǒng)調(diào)用res()檢索學(xué)生信息x開始filesave()三、詳細(xì)設(shè)計(jì)說明:1頭文件#include #include#include#include2數(shù)入口說明main();主函數(shù);void menu();主菜單界面;void add();添加新的學(xué)生信息;void print(int i);打印學(xué)生信息;void scan();查找學(xué)生信息;void res();檢索學(xué)生信息界面;void res_name();按姓名檢索;void res_num();按學(xué)號(hào)檢索;void del(int i);刪除學(xué)生信息;void modify(int i);
3、修改學(xué)生信息;void fileopen();打開文件;void filesave();保存文件;2調(diào)用關(guān)系add()menu() add()fileopen()res()add()menu()scan()menu()main()modify(int i)res_name()res()del(int i)menu()res_num()filesave()4.調(diào)試與測(cè)試: 編譯工具1.C/C+程序設(shè)計(jì)學(xué)習(xí)與實(shí)驗(yàn)系統(tǒng)2.Tc3.VC+6.0均通過調(diào)試! 主菜單 添加新的學(xué)生信息 瀏覽所有學(xué)生信息 檢索信息庫 繼續(xù)查找下一條 修改學(xué)生信息 刪除信息庫所有記錄五、調(diào)試中所遇到的問題及解決方法1問題:程
4、序退出后,再次打開,上次輸入的數(shù)據(jù)無法保存。 解決:調(diào)用fileopen()與filesave()保存文件數(shù)據(jù),方便第二次打開程序時(shí)仍能調(diào)用上次輸入的數(shù)據(jù)。2問題:跳出的界面與選擇分支中的對(duì)應(yīng)項(xiàng)不符合。 解決:改getchar()為getch(),頭文件中加”conio.h”.因?yàn)間etchar()從輸入輸出流中一次只能讀取一個(gè)字符,而且需要以回車來確認(rèn)輸入。本文件中多次用到getchar(),鍵盤緩沖區(qū)的n會(huì)被下次調(diào)用getchar()時(shí)接收。而getch()則不會(huì),從鍵盤上讀入一個(gè)數(shù)據(jù),不給回顯,不需要回車確認(rèn),按下鍵就實(shí)現(xiàn)了函數(shù)。 3問題:誤輸入X,導(dǎo)致退出。 解決:加標(biāo)志變量flag=
5、1,用while(flag)循環(huán)switch語句,當(dāng)正確輸入時(shí),flag=1,跳出循環(huán)。4問題:檢索時(shí)只能查到第一個(gè)學(xué)生信息。 解決:定義數(shù)組log(100)記錄符合的結(jié)構(gòu)體數(shù)組。循環(huán)打印。5問題:不能刷新界面。 解決:調(diào)用system(“cls”)清屏函數(shù)。6問題:刪除某項(xiàng)信息,返回主函數(shù)時(shí)不能暫停。 解決:調(diào)用system(“PAUSE”)暫停函數(shù)。六、程序源碼#include stdio.h#include string.h#include stdlib.h#include conio.hvoid menu(); /聲明所有函數(shù);void add();void print(int i);
6、void scan();void res();void res_name();void res_num();void del(int i);void modify(int i);void fileopen();void filesave(); /定義全局變量x,減少代碼量;int n=0; /定義全局變量n,代表信息條數(shù);struct student /定義結(jié)構(gòu)體數(shù)組stu100;char num15;char name30;char sex2;char xi30;char ban10;char birth10;char address30;char tel20;stu100;void mai
7、n() /主函數(shù);fileopen(); menu(); /調(diào)用menu()函數(shù),打開主界面;filesave();void fileopen() /打開data文件;FILE *fp;int i;if(fp=fopen(data,r+)=NULL) /若無data文件,則新建;fp=fopen(data,w+);for(i=0;i100;i+) /讀取數(shù)據(jù);fread(&stui,sizeof(struct student),1,fp);fread(&n,4,1,fp);fclose(fp);void menu() /主菜單; int flag=1; /定義標(biāo)志標(biāo)量flag;system(c
8、ls); /清屏函數(shù); printf(n); /主界面; printf( 歡迎登錄學(xué)生信息管理系統(tǒng) n); printf( n); printf( 1.添加新的學(xué)生信息 n); printf( 2.瀏覽所有學(xué)生信息 n); printf( 3.檢索學(xué)生信息 n); printf( 4.保存并退出系統(tǒng) n); printf( n); printf( by rlkn); printf(n); while(flag) /防止用戶誤選導(dǎo)致退出; switch(getch() /用switch分支選擇語句;getch()獲取用戶鍵入值;case 1:flag=0;add();break;/當(dāng)用戶選擇1時(shí)
9、,調(diào)用add()函數(shù),添加新的學(xué)生信息;case 2:flag=0;scan();break;/當(dāng)用戶選擇2時(shí),調(diào)用scan()函數(shù),瀏覽所有學(xué)生信息; case 3:flag=0;res();break;/當(dāng)用戶選擇3時(shí),調(diào)用res()函數(shù),檢索學(xué)生信息;case 4:flag=0;printf(保存成功!);break; /當(dāng)用戶選擇4時(shí),調(diào)用flag()函數(shù),退出系統(tǒng); default:printf(錯(cuò)誤!請(qǐng)重新輸入.n); /其它輸入,提示錯(cuò)誤; void add() /信息添加函數(shù);int flag=1;system(cls); /清屏函數(shù);printf(%2dn,n+1); /逐一
10、輸入各項(xiàng)數(shù)據(jù);printf( *添加新的學(xué)生信息*n);printf( 學(xué)號(hào):);scanf(%s,&stun.num);printf( 姓名:);scanf(%s,&);printf( 性別:);scanf(%s,&stun.sex);printf( 系名:);scanf(%s,&stun.xi);printf( 班級(jí)名:);scanf(%s,&stun.ban); printf( 出生年月:); scanf(%s,&stun.birth); printf( 住址:); scanf(%s,&stun.address); printf( 電話號(hào)碼:); scanf(%s,&s
11、tun.tel); printf(n); printf(n添加成功!nn 請(qǐng)選擇 : 1.繼續(xù)添加 2.返回主菜單n); n+; /總信息量增加一項(xiàng); while(flag) switch(getch() case 1:flag=0;add();break; /選擇1,重新調(diào)用add(); case 2:flag=0;menu();break; /選擇2,調(diào)用menu(),返回主菜單; default:printf(錯(cuò)誤!請(qǐng)重新輸入.n); /其它輸入,提示錯(cuò)誤; void print(int i) /學(xué)生信息打印函數(shù); printf(%2dn,i+1); printf( 學(xué)號(hào):%sn,stu
12、i.num); printf( 姓名:%sn,); printf( 性別:%sn,stui.sex); printf( 系名:%sn,stui.xi); printf( 班級(jí)名:%sn,stui.ban); printf( 出生年月:%sn,stui.birth); printf( 住址:%sn,stui.address); printf( 電話號(hào)碼:%sn,stui.tel); printf(n);void scan() /信息瀏覽函數(shù);int i,flag=1;system(cls);if(n=0) /當(dāng)n=0時(shí),信息庫中無記錄; printf(n); printf( 當(dāng)
13、前信息庫記錄為0!n); printf(n); printf( 請(qǐng)選擇 : 1.添加新的學(xué)生信息 2.返回主菜單n); while(flag) switch(getch() case 1:flag=0;add();break;case 2:flag=0;menu();break;default:printf(錯(cuò)誤!請(qǐng)重新輸入.n); else /當(dāng)n不為0時(shí),打印信息; printf(*目前信息庫里共有%d條記錄.*n,n);for(i=0;in;i+)print(i);printf( 請(qǐng)選擇 : 1.檢索信息庫 2.添加新的學(xué)生信息n);printf( 3.刪除所有記錄4.返回主菜單 n);
14、while(flag)switch(getch()case 1:flag=0;res();break;case 2:flag=0;add();break;case 3: flag=0; printf(n!警告:您將刪除信息庫所有記錄!n); printf( n 請(qǐng)選擇 : 1.確認(rèn)刪除 2.返回n); flag=1; while(flag) switch(getch() case 1:flag=0;n=0;printf(已刪除!n);system(PAUSE);scan();break;case 2:flag=0;scan(); default:printf(錯(cuò)誤!請(qǐng)重新輸入.n); brea
15、k;case 4:flag=0;menu();break;default:printf(錯(cuò)誤!請(qǐng)重新輸入.n); void modify(int i) /信息修改函數(shù); int flag=1;printf( n); /信息修改界面;printf( 請(qǐng)輸入你想修改的內(nèi)容:n);printf( 1.學(xué)號(hào) 2.姓名 3.性別 4.系名n);printf( 5.班級(jí)名 6.出生年月 7.住址 8.電話號(hào)碼n);printf( n);while(flag) switch(getch() case 1:flag=0;printf(請(qǐng)重新輸入學(xué)號(hào):);scanf(%s,&stui.num);break;ca
16、se 2:flag=0;printf(請(qǐng)重新輸入姓名:);scanf(%s,&);break;case 3:flag=0;printf(請(qǐng)重新輸入性別:);scanf(%s,&stui.sex);break;case 4:flag=0;printf(請(qǐng)重新輸入系名:);scanf(%s,&stui.xi);break;case 5:flag=0;printf(請(qǐng)重新輸入班級(jí)名:);scanf(%s,&stui.ban);break; case 6:flag=0;printf(請(qǐng)重新輸入出生年月:);scanf(%s,&stui.birth);break; case 7:fla
17、g=0;printf(請(qǐng)重新輸入住址:);scanf(%s,&stui.address);break; case 8:flag=0;printf(請(qǐng)重新輸入電話號(hào)碼:);scanf(%s,&stui.tel);break; default:printf(錯(cuò)誤!請(qǐng)重新輸入.); printf(修改成功!n修改后的學(xué)生信息:n); print(i); system(PAUSE); /暫停函數(shù):按任意鍵繼續(xù).; printf( 請(qǐng)選擇 : 1.繼續(xù)修改此學(xué)生信息 2.查看下一條相關(guān)信息 3.返回主菜單n); flag=1; while(flag) switch(getch() case 1:flag
18、=0;modify(i);break; case 2:flag=0;break; case 3:flag=0;menu(); default:printf(錯(cuò)誤!請(qǐng)重新輸入.n); void del(int i) /信息刪除函數(shù);int a,flag=1;printf(n!警告:您將刪除此條學(xué)生信息!);printf(n 請(qǐng)輸入 : 1.繼續(xù)刪除);printf(n 2.不刪除,返回主菜單n); while(flag) switch(getch()case 1: flag=0; for(a=i;an-1;a+) /拷貝后一個(gè)學(xué)生信息到前一個(gè)人上。 strcpy(stua.num,stua+1.
19、num); strcpy(,stua+1.name); strcpy(stua.sex,stua+1.sex);strcpy(stua.xi,stua+1.xi);strcpy(stua.ban,stua+1.ban);strcpy(stua.birth,stua+1.birth);strcpy(stua.address,stua+1.address);strcpy(stua.tel,stua+1.tel); n-; printf(刪除成功!n);/總信息量減少一項(xiàng); system(PAUSE); menu(); break; case 2: flag=0; system(P
20、AUSE); /暫停函數(shù):按任意鍵繼續(xù).; menu(); /返回主菜單; break; default:printf(錯(cuò)誤!請(qǐng)重新輸入.n);void res_num() /按學(xué)號(hào)檢索函數(shù);int i,j=0,flag=1,log100;char xh15;system(cls);printf(*n); printf(n請(qǐng)輸入要檢索的學(xué)號(hào):);scanf(%s,&xh);for(i=0;in;i+)if(!strcmp(stui.num,xh) /字符串比較函數(shù);while(j100)logj=i;j+;break; /記錄下相關(guān)的信息; if(!j) /信息庫中沒查找到所需信息;print
21、f( 對(duì)不起,信息庫里沒要你想要查找的信息!n);printf(n*n);printf(n 請(qǐng)選擇 :1.繼續(xù)查找 2.返回主菜單n); while(flag)switch(getch()case 1:flag=0;res();break;case 2:flag=0;menu();break;default:printf(錯(cuò)誤!請(qǐng)重新輸入.n);elseprintf(n在信息庫中共找到%d條相關(guān)信息.n,j);for(i=0;ij;i+)flag=1;printf(n第%d條n,i+1);print(logi);printf(n*n);printf(n 請(qǐng)選擇 :1.修改此學(xué)生信息 2.刪除此
22、學(xué)生信息n);printf( 3.繼續(xù)查找下一條 4.返回主菜單n);while(flag)switch(getch()case 1:flag=0;modify(logi);break;case 2:flag=0;del(logi);break;case 3:flag=0;break;case 4:flag=0;menu();break;default:printf(錯(cuò)誤!請(qǐng)重新輸入.n);printf(n已到最后一條相關(guān)信息.n);system(PAUSE); /暫停函數(shù):按任意鍵繼續(xù).; menu();void res_name() /按姓名檢索函數(shù);int i,j=0,flag=1,lo
23、g100;char mz20;system(cls);printf(*n); printf(n請(qǐng)輸入要檢索的姓名:);scanf(%s,&mz);for(i=0;in;i+)if(!strcmp(,mz) /字符串比較函數(shù);while(j100)logj=i;j+;break; /記錄下相關(guān)的信息; if(!j) /信息庫中沒查找到所需信息;printf( 對(duì)不起,信息庫里沒要你想要查找的信息!n);printf(n*n);printf(n 請(qǐng)選擇 :1.繼續(xù)查找 2.返回主菜單n); while(flag)switch(getch()case 1:flag=0;res();
24、break;case 2:flag=0;menu();break;default:printf(錯(cuò)誤!請(qǐng)重新輸入.n);elseprintf(n在信息庫中共找到%d條相關(guān)信息.n,j);for(i=0;ij;i+)flag=1;printf(n第%d條n,i+1);print(logi);printf(n*n);printf(n 請(qǐng)選擇 :1.修改此學(xué)生信息 2.刪除此學(xué)生信息n);printf( 3.繼續(xù)查找下一條 4.返回主菜單n);while(flag)switch(getch()case 1:flag=0;modify(logi);break;case 2:flag=0;del(logi);break;case 3:flag=0;break;case 4:flag=0;menu();break;default:printf(錯(cuò)誤!請(qǐng)重新輸入.n);printf(n已到最后一條相關(guān)信息.n);system(PAUSE);menu();void res() /檢索函數(shù);int flag=1;system(cls);printf( n); /檢索界面;printf( *檢索模式選擇*n);printf( 1.按學(xué)號(hào)檢索n);printf( 2.按姓名檢索n);print
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 有機(jī)介質(zhì)電容器裝配工班組評(píng)比評(píng)優(yōu)考核試卷含答案
- 工業(yè)爐及電爐電氣控制裝調(diào)工成果轉(zhuǎn)化競(jìng)賽考核試卷含答案
- 靜電成像設(shè)備耗材制造工發(fā)展趨勢(shì)評(píng)優(yōu)考核試卷含答案
- 電池配料工安全操作考核試卷含答案
- 有害生物防制員復(fù)試測(cè)試考核試卷含答案
- 化工檢修鉗工崗前實(shí)操綜合知識(shí)考核試卷含答案
- 衡器總裝調(diào)試工操作能力水平考核試卷含答案
- 巡游出租汽車司機(jī)崗前紀(jì)律考核試卷含答案
- 2024年廣西科技大學(xué)馬克思主義基本原理概論期末考試題附答案
- 農(nóng)機(jī)服務(wù)經(jīng)紀(jì)人標(biāo)準(zhǔn)化競(jìng)賽考核試卷含答案
- 自動(dòng)控制原理仿真實(shí)驗(yàn)課程智慧樹知到答案2024年山東大學(xué)
- JBT 7946.2-2017 鑄造鋁合金金相 第2部分:鑄造鋁硅合金過燒
- 流程與TOC改善案例
- 【當(dāng)代中國婚禮空間設(shè)計(jì)研究4200字(論文)】
- GB/T 20322-2023石油及天然氣工業(yè)往復(fù)壓縮機(jī)
- 提撈采油安全操作規(guī)程
- DB3211-T 1048-2022 嬰幼兒日間照料托育機(jī)構(gòu)服務(wù)規(guī)范
- YY/T 1846-2022內(nèi)窺鏡手術(shù)器械重復(fù)性使用腹部沖吸器
- GB/T 15390-2005工程用焊接結(jié)構(gòu)彎板鏈、附件和鏈輪
- GA 1016-2012槍支(彈藥)庫室風(fēng)險(xiǎn)等級(jí)劃分與安全防范要求
- 安全管理人員紅頭任命文件
評(píng)論
0/150
提交評(píng)論