![c語(yǔ)言學(xué)生證管理系統(tǒng)設(shè)計(jì)_第1頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-8/27/042deec0-5aa8-4fb4-bea8-aaef084f9de7/042deec0-5aa8-4fb4-bea8-aaef084f9de71.gif)
![c語(yǔ)言學(xué)生證管理系統(tǒng)設(shè)計(jì)_第2頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-8/27/042deec0-5aa8-4fb4-bea8-aaef084f9de7/042deec0-5aa8-4fb4-bea8-aaef084f9de72.gif)
![c語(yǔ)言學(xué)生證管理系統(tǒng)設(shè)計(jì)_第3頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-8/27/042deec0-5aa8-4fb4-bea8-aaef084f9de7/042deec0-5aa8-4fb4-bea8-aaef084f9de73.gif)
![c語(yǔ)言學(xué)生證管理系統(tǒng)設(shè)計(jì)_第4頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-8/27/042deec0-5aa8-4fb4-bea8-aaef084f9de7/042deec0-5aa8-4fb4-bea8-aaef084f9de74.gif)
![c語(yǔ)言學(xué)生證管理系統(tǒng)設(shè)計(jì)_第5頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-8/27/042deec0-5aa8-4fb4-bea8-aaef084f9de7/042deec0-5aa8-4fb4-bea8-aaef084f9de75.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、hubei university of automotive technologyc語(yǔ)言程序設(shè)計(jì)報(bào)告學(xué) 院: 電氣與信息工程學(xué)院 專(zhuān) 業(yè): 電子信息產(chǎn)業(yè)題 目: 學(xué) 生 證 管 理 系 統(tǒng) 班 號(hào): t-132316 姓 名: 樊帥昌 學(xué) 號(hào): 20130231611 指導(dǎo)教師: 吳年志 2014年7月2日目錄c語(yǔ)言程序設(shè)計(jì)報(bào)告1一.課程設(shè)計(jì)目的3二設(shè)計(jì)要求3三具體模塊分析51頭文件及定義結(jié)構(gòu)體5頭文件:5結(jié)構(gòu)體:52主函數(shù)63分塊設(shè)計(jì)6首頁(yè)面6系統(tǒng)菜單6用戶(hù)選擇7添加模塊8查詢(xún)模塊12修改模塊15刪除模塊19四.測(cè)試分析21五.課程設(shè)計(jì)總結(jié)26六.程序源代碼27一. 課程設(shè)計(jì)目的1鞏固和加深
2、學(xué)生對(duì)c語(yǔ)言程序設(shè)計(jì)課程基本知識(shí)的理解和掌握。2掌握c語(yǔ)言編程和程序調(diào)試的基本技能。3掌握書(shū)寫(xiě)程序設(shè)計(jì)說(shuō)明文檔的能力。4提高學(xué)生分析問(wèn)題和解決問(wèn)題的能力,培養(yǎng)嚴(yán)謹(jǐn)?shù)墓ぷ髯黠L(fēng)和良好的程序設(shè)計(jì)習(xí)慣,為后續(xù)課程的學(xué)習(xí)打下良好的基礎(chǔ)。二設(shè)計(jì)要求題目:學(xué)生證管理程序題目描述:請(qǐng)?jiān)O(shè)計(jì)一個(gè)學(xué)生證管理的程序,以方便輔導(dǎo)員對(duì)學(xué)生證的管理,該程序應(yīng)該具有以下功能:(1)能從鍵盤(pán)輸入某位學(xué)生的學(xué)生證信息(學(xué)生證應(yīng)該包含的信息可以參考自己的學(xué)生證)。(2)給定學(xué)號(hào),顯示該學(xué)生的學(xué)生證信息。(3)給定班號(hào),顯示該班所有學(xué)生的學(xué)生證信息。(4)給定學(xué)號(hào),修改該學(xué)生的學(xué)生證信息。(5)給定學(xué)號(hào),刪除該學(xué)生的學(xué)生證信息。題目
3、要求:(1)按照分析、設(shè)計(jì)、編碼、調(diào)試、測(cè)試的軟件過(guò)程完成這個(gè)應(yīng)用程序。(2)學(xué)生證應(yīng)該包含的信息參考自己的學(xué)生證。(3)為各項(xiàng)操作功能設(shè)計(jì)一個(gè)菜單,應(yīng)用程序運(yùn)行后,先顯示這個(gè)菜單,然后用戶(hù)通過(guò)菜單項(xiàng)選擇希望進(jìn)行的操作項(xiàng)目。輸入要求: (1)應(yīng)用程序運(yùn)行后在屏幕上顯示一個(gè)菜單。用戶(hù)可以根據(jù)需求,選定相應(yīng)的操作項(xiàng)目。進(jìn)入每個(gè)操作后,根據(jù)應(yīng)用程序的提示信息,從鍵盤(pán)輸入相應(yīng)的信息。程序根據(jù)用戶(hù)輸入的信息完成相應(yīng)的處理,實(shí)現(xiàn)要求的功能。 (2)能對(duì)輸入的數(shù)據(jù)進(jìn)行簡(jiǎn)單的校驗(yàn),例如,學(xué)生的入學(xué)時(shí)間必須是一個(gè)合法的日期格式,學(xué)號(hào)是唯一的(一個(gè)學(xué)號(hào)對(duì)應(yīng)一條學(xué)生證信息)。輸出要求: (1)應(yīng)用程序運(yùn)行后,要在屏
4、幕上顯示一個(gè)菜單。 (2)要求用戶(hù)輸入數(shù)據(jù)時(shí),給出清晰、明確的提示信息,包括輸入的數(shù)據(jù)內(nèi)容、格式以及結(jié)束方式等。(3)在程序完成處理后,要清楚地給出程序的處理結(jié)果。例如,在給定學(xué)號(hào)刪除學(xué)生證信息時(shí),如果該學(xué)生不存在,要提示沒(méi)能刪除,如果刪除成功要提示刪除成功。實(shí)現(xiàn)要求: (1)在程序中使用鏈表存儲(chǔ)學(xué)生證信息。 (2)采用模塊化程序設(shè)計(jì)的方法,將程序中的各項(xiàng)功能用函數(shù)實(shí)現(xiàn)。提示: (1)使用結(jié)構(gòu)體表示學(xué)生證信息,一個(gè)結(jié)點(diǎn)保存一條學(xué)生證信息。 擴(kuò)展功能: (1)學(xué)生證信息從文件讀入。 (2)將學(xué)生證信息保存到文件中。(一)基本要求1掌握c 語(yǔ)言程序設(shè)計(jì)的方法,熟悉使用vc6.0作為開(kāi)發(fā)軟件開(kāi)發(fā)c語(yǔ)
5、言程序及c 程序的調(diào)試過(guò)程。2熟悉c 語(yǔ)言中的數(shù)據(jù)類(lèi)型,數(shù)據(jù)結(jié)構(gòu)、語(yǔ)句結(jié)構(gòu)、運(yùn)算方法、函數(shù),鞏固和加深對(duì)理論課中知識(shí)的理解,提高基本編程能力。3綜合編程題,每組完成一個(gè)課題(一組不能超過(guò)2人),每組成員必須明確各自的任務(wù)。4要求利用結(jié)構(gòu)化程序設(shè)計(jì)方法以及c的編程思想來(lái)完成題目問(wèn)題描述中所要求的設(shè)計(jì)任務(wù),功能模塊化,設(shè)計(jì)內(nèi)容符合題目要求;5概要設(shè)計(jì)模塊劃分合理,清晰,系統(tǒng)結(jié)構(gòu)圖符合功能操作要求;6詳細(xì)設(shè)計(jì),主要功能模塊有較完善的程序流程圖,每個(gè)主要功能模塊有較完善的入口、功能、出口等的清晰的描述,說(shuō)明符合結(jié)構(gòu)化程序設(shè)計(jì)要求;7每個(gè)模塊的程序代碼,具有較好的可讀性和可靠性;程序書(shū)寫(xiě)風(fēng)格:鋸齒型書(shū)寫(xiě)
6、格式,并有詳盡的注釋。8用戶(hù)界面要求盡可能友好,提示信息充分、完整;對(duì)輸入內(nèi)容有較完善的判誤處理并方便操作;9程序必須上機(jī)調(diào)試通過(guò),不應(yīng)出現(xiàn)語(yǔ)法型、功能型錯(cuò)誤,并獲得滿(mǎn)意的結(jié)果;10所設(shè)計(jì)的程序,必須在提交驗(yàn)收前,通過(guò)測(cè)試用例做必要的功能測(cè)試,盡可能避免原則性錯(cuò)誤的出現(xiàn)。(二)設(shè)計(jì)步驟在進(jìn)行綜合編程時(shí)需要遵循以下的步驟:1問(wèn)題分析、確定解決方案框架,充分地分析和理解問(wèn)題本身,弄清要求做什么。在確定解決方案框架過(guò)程中,仔細(xì)考慮如何使用數(shù)據(jù),數(shù)據(jù)結(jié)構(gòu)有哪些?程序結(jié)構(gòu)清晰、合理、簡(jiǎn)單和易于調(diào)試,并確定每個(gè)模塊的簡(jiǎn)單功能,以及模塊之間的調(diào)用關(guān)系。2詳細(xì)設(shè)計(jì)和編碼:確定程序的主要流程,在此基礎(chǔ)上進(jìn)行代碼
7、設(shè)計(jì),每個(gè)功能模塊程序一般不超過(guò)60行,否則要進(jìn)一步劃分。3上機(jī)前編寫(xiě)程序與檢查。4上機(jī)調(diào)試程序。5每個(gè)功能在輸入值集范圍內(nèi),確定好幾組測(cè)試用例數(shù)據(jù),通過(guò)盡可能詳盡的測(cè)試用例,找出程序中存在的或有可能出現(xiàn)的功能錯(cuò)誤。(三)綜合報(bào)告要求課程設(shè)計(jì)報(bào)告要求內(nèi)容:1系統(tǒng)設(shè)計(jì)分析預(yù)覽:(1)系統(tǒng)功能模塊劃分:根據(jù)需求分析,可以把這個(gè)系統(tǒng)的設(shè)計(jì)分為學(xué)生信息預(yù)覽、管理系統(tǒng)、添加、從文件讀入、查詢(xún)、修改、刪除、退出系統(tǒng)七大模塊,其中查詢(xún)模塊可以分為兩個(gè)子模塊,系統(tǒng)功能模塊圖如下所示:學(xué)生信息預(yù)覽學(xué)生證管理系統(tǒng)退出刪除修改查詢(xún)讀入添加按照班級(jí)查詢(xún)按照學(xué)號(hào)查詢(xún)?nèi)唧w模塊分析1頭文件及定義結(jié)構(gòu)體頭文件:#inclu
8、de /輸入輸出函數(shù) #include /常用函數(shù)庫(kù)#include /字符串函數(shù)#define n 1000 結(jié)構(gòu)體:struct studentchar name10; /姓名,只能輸入5個(gè)漢字char sex2; /性別,只能輸入1個(gè)漢字int age; /年齡char department48; /所在院系char banji30; /班級(jí)char sno20; /學(xué)號(hào)stuinfon; /結(jié)構(gòu)體數(shù)組,用作讀取和存放臨時(shí)數(shù)據(jù)2主函數(shù)main()preprintmenu(); /首頁(yè)面printmenu(); /系統(tǒng)菜單selmenu(); /選擇菜單3分塊設(shè)計(jì)首頁(yè)面void prepr
9、intmenu() /首頁(yè)面 system(cls); printf( c語(yǔ)言課程設(shè)計(jì) n);printf(n);printf( 課設(shè)題目: 學(xué)生證管理程序n); printf( 學(xué)生班級(jí): t1323-16班n);printf( 學(xué)生姓名: 樊帥昌n); printf( 學(xué)生聯(lián)系方式: 電話(huà)); printf( 學(xué)生聯(lián)系方式: qq:2026555785n);printf( 完成日期: 2014年7月1日); printf(n請(qǐng)按enter進(jìn)入系統(tǒng)!n); getchar(); system(cls); /清屏函數(shù)設(shè)計(jì)目的:首頁(yè)面顯示學(xué)生設(shè)計(jì)的題目及學(xué)生的相關(guān)信息,
10、用于教師知道學(xué)生應(yīng)該完成題目,教師了解后,提示按enter鍵進(jìn)入系統(tǒng)。系統(tǒng)菜單void printmenu() /使用菜單 system(cls);printf(*歡迎使用學(xué)生證管理系統(tǒng)*n);printf(n);printf( 1. 添加學(xué)生的學(xué)生證信息n );printf( 2. 從文件讀入學(xué)生的學(xué)生證信息n);printf( 3. 查詢(xún)學(xué)生的學(xué)生證信息n);printf( 4. 給定學(xué)號(hào)修改該學(xué)生的學(xué)生證信息n);printf( 5. 給定學(xué)號(hào)刪除該學(xué)生的學(xué)生證信息n);printf( 0. 退出系統(tǒng)n); printf(n);printf(*n);printf( 請(qǐng)根據(jù)需要選擇菜單選項(xiàng)
11、(0-5)n);用戶(hù)選擇void selmenu() /選擇菜單 int sel;char ch;while(1)printf(請(qǐng)輸入菜單選項(xiàng): );scanf(%d,&sel);if(sel6) /對(duì)選擇菜單進(jìn)行判斷printf(選擇錯(cuò)誤,請(qǐng)重新選擇!n);continue;switch(sel)case 1: inputinfo();break; /添加模塊case 2: showinfo();break; /從文件讀入模塊case 3: quiry();break; /查詢(xún)模塊case 4: searchreplace();break; /修改模塊case 5: searchdelate
12、();break; /刪除模塊case 0: exit(0);if(sel=0) break; 添加模塊首先要判斷文件stuinfo.txt是否存在,如果存在就以讀寫(xiě)(r+)的方式打開(kāi),如果不存在,就以寫(xiě)(w)的方式創(chuàng)建文件stuinfo.txt。輸入格式要求:性別為男或女,學(xué)號(hào)為11位且不能重復(fù),年齡在0-100之間,班級(jí)號(hào)為6位,程序提供了完善的驗(yàn)證機(jī)制,輸入錯(cuò)誤時(shí)將提示重新輸入直到正確為止。此外,如果以讀寫(xiě)的方式打開(kāi),還要判斷記錄數(shù)numn是否成立,因?yàn)榻Y(jié)構(gòu)體數(shù)組的大小為n,當(dāng)num=n時(shí),表示已滿(mǎn),不能再存儲(chǔ)數(shù)據(jù),需要修改n的值。該模塊具體流程如左圖:代碼:void inputinfo
13、() /輸入學(xué)生信息 int num; int i; int age; char sno20; /臨時(shí)變量,用于驗(yàn)證輸入的學(xué)號(hào)是否滿(mǎn)足條件 char sex20; /臨時(shí)變量,用于驗(yàn)證輸入的性別是否滿(mǎn)足條件 char banji20; /臨時(shí)變量,用于驗(yàn)證輸入的班級(jí)是否滿(mǎn)足條件 int right; file *fp; if(fp=fopen(stuinfo.txt,r+)=null) /以讀寫(xiě)方式打開(kāi) if(fp=fopen(stuinfo.txt,w)=null) /文件不存在則創(chuàng)建文件 printf(n文件不存在且創(chuàng)建失敗,返回!n); printmenu(); printf(n請(qǐng)按照提
14、示輸入學(xué)生信息:nn); printf(姓名:); scanf(%s,&stui); do printf(n性別(男或女):); scanf(%s,sex); if(strcmp(sex,男)!=0)&(strcmp(sex,女)!=0) printf(輸入錯(cuò)誤,請(qǐng)輸入男或女!n); /判斷性別輸入合法性right=1;getchar(); else right=0; while(right=1); strcpy(stuinfo0.sex,sex); do printf(n學(xué)號(hào)(11位):); scanf(%s,sno); if(strlen(sno)!=11) /判斷學(xué)號(hào)輸
15、入合法性 printf(輸入錯(cuò)誤,學(xué)號(hào)長(zhǎng)度應(yīng)為11位數(shù)!n);right=1;getchar(); else right=0; while(right=1); strcpy(stuinfo0.sno,sno); do printf(n年齡:); scanf(%d,&age); if(age25) printf(年齡應(yīng)在15-25之間,請(qǐng)重新輸入年齡!n);right=1;getchar(); else right=0; while(right=1); stuinfo0.age=age; do printf(n班號(hào)(7位):); scanf(%s,banji); if(strlen(banji)
16、!=7) printf(輸入錯(cuò)誤,班號(hào)長(zhǎng)度應(yīng)為7位數(shù)!n);right=1;getchar(); else right=0; while(right=1); strcpy(stuinfo0.banji,banji); printf(n所在院系名:); scanf(%s,&stuinfo0.department); fprintf(fp,n%st%st%st%dt%st%s,stui,stuinfo0.sex,stuinfo0.sno,stuinfo0.age,stuinfo0.banji,stuinfo0.department); fclose(fp); printf(n保存
17、成功!n); /將輸入信息保存至文件 printf(n請(qǐng)按enter鍵返回主菜單!n); getchar(); getchar(); printmenu(); /返回菜單 for(i=0;!feof(fp);i+) fscanf(fp,%s%s%s%d%s%s,&stui,&stuinfoi.sex,&stuinfoi.sno,&stuinfoi.age,&stuinfoi.banji,&stuinfoi.department); /以讀寫(xiě)方式輸入 num=i; /記錄數(shù) if(num=n) printf(n保存記錄數(shù)超出結(jié)構(gòu)體數(shù)組數(shù)的大小,請(qǐng)先修改n的值n); printm
18、enu();注:判斷記錄數(shù)numn是否成立,因?yàn)榻Y(jié)構(gòu)體數(shù)組的大小為n,當(dāng)num=n時(shí),表示已滿(mǎn),不能再存儲(chǔ)數(shù)據(jù),需要修改n的值。 printf(n請(qǐng)按照提示輸入學(xué)生信息:nn); printf(姓名:); scanf(%s,&stui); do printf(n性別(男或女):); scanf(%s,sex); if(strcmp(sex,男)!=0)&(strcmp(sex,女)!=0) printf(輸入錯(cuò)誤,請(qǐng)輸入男或女!n);right=1;getchar(); else right=0; while(right=1); strcpy(stuinfonum.sex
19、,sex); do printf(n學(xué)號(hào)(11位):); scanf(%s,sno); if(strlen(sno)!=11) printf(輸入錯(cuò)誤,學(xué)號(hào)長(zhǎng)度應(yīng)為11位數(shù)!n);right=1;getchar(); else right=0; for(i=0;inum;i+) if(strcmp(sno,stuinfoi.sno)=0) printf(該學(xué)號(hào)已經(jīng)存在,請(qǐng)重新輸入!n); right=1; getchar(); while(right=1); strcpy(stuinfonum.sno,sno); do printf(n年齡:); scanf(%d,&age); if(age2
20、5) printf(年齡應(yīng)在15-25之間,請(qǐng)重新輸入年齡!n);right=1;getchar(); else right=0; while(right=1); stuinfonum.age=age; do printf(n班號(hào)(7位):); scanf(%s,banji); if(strlen(banji)!=7) printf(輸入錯(cuò)誤,班號(hào)長(zhǎng)度應(yīng)為7位數(shù)!n);right=1;getchar(); else right=0; while(right=1); strcpy(stuinfonum.banji,banji); printf(n所在院系名:); scanf(%s,&stuinf
21、onum.department); fprintf(fp,n%st%st%st%dt%st%s,stui,stuinfonum.sex,stuinfonum.sno,stuinfonum.age,stuinfonum.banji,stuinfonum.department); fclose(fp); printf(n保存成功!n); /對(duì)文件進(jìn)行保存 printf(n請(qǐng)按enter鍵返回主菜單!n); getchar(); getchar(); printmenu();查詢(xún)模塊分為按照學(xué)號(hào)查詢(xún)和按照班級(jí)查詢(xún)兩部分,可以通過(guò)菜單形式顯示。1查詢(xún)菜單void quiry()
22、/查詢(xún) int chose; int right; do system(cls); printf(nt1-按學(xué)號(hào)查詢(xún)t2-某班學(xué)生信息t3-返回n); printf(n請(qǐng)輸入數(shù)字選擇:); scanf(%d,&chose); if(chose3) right=1; getchar(); else right=0;while(right=1);switch(chose) case 1:searchshowinfo();break;case 2:searchshowallinfo();break;case 3:printmenu(); 2按照學(xué)號(hào)查詢(xún)輸入學(xué)號(hào),并對(duì)學(xué)號(hào)進(jìn)行查找,查找后顯示出來(lái)。流程
23、圖:該部分代碼:void searchshowinfo()int found=-1;int num,i;char no20;file *fp; if(fp=fopen(stuinfo.txt,r)=null) printf(文件打不開(kāi)!n); printmenu(); for(i=0;!feof(fp);i+) /讀取文件 fscanf(fp,%s%s%s%d%s%s,&stui,&stuinfoi.sex,&stuinfoi.sno,&stuinfoi.age,&stuinfoi.banji,&stuinfoi.department); num=i; fclose(fp);
24、 printf(n請(qǐng)輸入學(xué)生學(xué)號(hào):); scanf(%s,no); for(i=0;inum;i+) if(strcmp(no,stuinfoi.sno)=0) 將輸入學(xué)號(hào)與已存學(xué)號(hào)進(jìn)行對(duì)比,查找出該學(xué)生 found=i; printf(n該學(xué)生的信息為:nn); printf(姓名 性別 學(xué)號(hào) 年齡 班號(hào) 所在院系名n); printf(%st%st%st%dt%stt%sn,stui,stuinfofound.sex,stuinfofound.sno,stuinfofound.age,stuinfofound.banji,stuinfofound.departme
25、nt); if(found0) printf(n沒(méi)有找到該學(xué)號(hào)的記錄!n); printf(n請(qǐng)按enter鍵返回主菜單!n); getchar(); getchar(); quiry(); /調(diào)用該層菜單3按照班號(hào)查詢(xún)將輸入的班號(hào)與已存的班號(hào)進(jìn)行對(duì)比,并將該班所有學(xué)生的學(xué)生證信息輸出流程圖如右:該部分代碼:void searchshowallinfo() int found= -1; int num; int i; char clano20; file*fp; if(fp=fopen(stuinfo.txt,r)=null) printf(文件打不開(kāi)!n); printmenu(); for
26、(i=0;!feof(fp);i+) /讀取文件 fscanf(fp,%s%s%s%d%s%s,&stui,&stuinfoi.sex,&stuinfoi.sno,&stuinfoi.age,&stuinfoi.banji,&stuinfoi.department); num=i; fclose(fp); printf(n請(qǐng)輸入班號(hào):); scanf(%s,clano); for(i=0;inum;i+) if(strcmp(clano,stuinfoi.banji)=0) /查找該班級(jí) found=i; printf(n該班級(jí)的學(xué)生信息為:nn); printf(姓名 性別
27、 學(xué)號(hào) 年齡 班號(hào) 所在院系名n); printf(%st%st%st%dt%st%sn,stui,stuinfofound.sex,stuinfofound.sno,stuinfofound.age,stuinfofound.banji,stuinfofound.department); if(found0) /沒(méi)有查找到該班級(jí) printf(n沒(méi)有找到該班號(hào)的記錄!n); printf(n請(qǐng)按enter鍵返回上級(jí)菜單!n); getchar(); getchar(); quiry();修改模塊先判斷文件stuinfo.txt以讀(r)的方式能否打開(kāi),不能就返回,可
28、以就讀入記錄;然后輸入學(xué)號(hào)查找記錄,沒(méi)找到就返回,找到就按照提示修改該記錄,與輸入模塊一樣,輸入的格式要求:性別為男或女,學(xué)號(hào)為11位且不能與除當(dāng)前修改的記錄的學(xué)號(hào)外的記錄的學(xué)號(hào)重復(fù),年齡在15到25之間,班級(jí)號(hào)為7位,程序提供了完善的驗(yàn)證機(jī)制,輸入錯(cuò)誤時(shí)將提示重新輸入直到正確為止。輸入完成后,再以寫(xiě)(w)的方式創(chuàng)建文件,不能創(chuàng)建就返回,可以就將結(jié)構(gòu)體數(shù)組中的所有記錄保存到文件中,這與添加稍有差別,最后返回主菜單。流程圖如下代碼部分:void searchreplace() /修改 int num; int i; int right; int age; char sex20; /臨時(shí)變量,用于
29、驗(yàn)證輸入的性別是否滿(mǎn)足條件 char banji20; /臨時(shí)變量,用于驗(yàn)證輸入的班級(jí)是否滿(mǎn)足條件 char sno20; /臨時(shí)變量,用于驗(yàn)證輸入的學(xué)號(hào)是否滿(mǎn)足條件 char department30; /臨時(shí)變量,用于驗(yàn)證輸入的院系是否滿(mǎn)足條件 int found=-1; char stuno20; file*fpr,*fpw; if(fpr=fopen(stuinfo.txt,r)=null) printf(文件打不開(kāi)!n); printmenu(); for(i=0;!feof(fpr);i+) /讀取文件 fscanf(fpr,%s%s%s%d%s%s,&stui,
30、&stuinfoi.sex,&stuinfoi.sno,&stuinfoi.age,&stuinfoi.banji,&stuinfoi.department); num=i; fclose(fpr); printf(n請(qǐng)輸入學(xué)號(hào)選擇要修改的學(xué)生證:n); scanf(%s,stuno); for(i=0;inum;i+) if(strcmp(stuno,stuinfoi.sno)=0) found=i; printf(n你要修改的學(xué)生信息為:nn); printf(姓名 性別 學(xué)號(hào) 年齡 班號(hào) 所在院系名n); printf(%st%st%st%dt%st%sn,stui,s
31、tuinfoi.sex,stuinfoi.sno,stuinfoi.age,stuinfoi.banji,stuinfoi.department); printf(n請(qǐng)按照提示輸入學(xué)生的新信息:n); printf(姓名:); scanf(%s,&stui); do printf(n性別(男或女):); scanf(%s,sex); if(strcmp(sex,男)!=0)&(strcmp(sex,女)!=0) printf(輸入錯(cuò)誤,請(qǐng)輸入男或女!n);right=1;getchar(); else right=0; while(right=1); strcpy(s
32、tuinfofound.sex,sex); do printf(n學(xué)號(hào)(11位):); scanf(%s,sno); if(strlen(sno)!=11) printf(輸入錯(cuò)誤,學(xué)號(hào)長(zhǎng)度應(yīng)為11位數(shù)!n);right=1;getchar(); else right=0; for(i=0;inum;i+) if(i!=found)&(strcmp(sno,stuinfoi.sno)=0) /學(xué)號(hào)查重 printf(該學(xué)號(hào)已經(jīng)存在,請(qǐng)重新輸入!n); right=1; getchar(); while(right=1); strcpy(stuinfofound.sno,sno); do pri
33、ntf(n年齡:); scanf(%d,&age); if(age25) printf(年齡應(yīng)在15-25之間,請(qǐng)重新輸入年齡!n);right=1;getchar(); else right=0; while(right=1); stuinfofound.age=age; do printf(n班號(hào)(7位):); scanf(%s,banji); if(strlen(banji)!=7) printf(輸入錯(cuò)誤,班號(hào)長(zhǎng)度應(yīng)為7位數(shù)!n);right=1;getchar(); else right=0; while(right=1); strcpy(stuinfofound.banji,ban
34、ji); printf(n所在院系名:); scanf(%s,&stuinfofound.department); if(fpw=fopen(stuinfo.txt,w)=null) printf(文件打不開(kāi),保存失敗!n); printmenu(); for(i=0;inum;i+) /保存文件 fprintf(fpw,n%st%st%st%dt%st%s,stui,stuinfoi.sex,stuinfoi.sno,stuinfoi.age,stuinfoi.banji,stuinfoi.department); fclose(fpw); printf(n修改成功!n);
35、 printf(n請(qǐng)按enter鍵返回主菜單!n); getchar(); getchar(); printmenu(); if(found0) /查找不到 printf(n沒(méi)有找到該學(xué)號(hào)的記錄:n); printf(n請(qǐng)按enter鍵返回主菜單!n); getchar(); getchar(); printmenu(); 刪除模塊給定學(xué)號(hào),先查找并顯示出來(lái),然后將這個(gè)學(xué)號(hào)對(duì)應(yīng)的學(xué)生信息刪除。代碼:void searchdelate() /刪除 int num; int i; int found=-1; char stuno20; file*fpr,*fpw; if(fpr=fopen(stu
36、info.txt,r)=null) printf(文件打不開(kāi)!n); printmenu(); for(i=0;!feof(fpr);i+) /讀取文件 fscanf(fpr,%s%s%s%d%s%s,&stui,&stuinfoi.sex,&stuinfoi.sno,&stuinfoi.age,&stuinfoi.banji,&stuinfoi.department); num=i; fclose(fpr); printf(n請(qǐng)輸入學(xué)號(hào)選擇你要?jiǎng)h除的學(xué)生證信息:n); scanf(%s,stuno); for(i=0;inum;i+) if(strcmp(stuno,stu
37、infoi.sno)=0) found=i; printf(n你刪除的學(xué)生信息為:nn); printf(姓名 性別 學(xué)號(hào) 年齡 班號(hào) 所在院系n); printf(%st%st%st%dt%st%sn,stui,stuinfofound.sex,stuinfofound.sno,stuinfofound.age,stuinfofound.banji,stuinfofound.department); if(foundnum-1) for(found;foundnum-1;found+) /刪除該學(xué)生的信息 strcpy(stui,stuin
38、fofound+1.name); strcpy(stuinfofound.sex,stuinfofound+1.sex); strcpy(stuinfofound.sno,stuinfofound+1.sno); stuinfofound.age=stuinfofound+1.age; strcpy(stuinfofound.banji,stuinfofound+1.banji); strcpy(stuinfofound.department,stuinfofound+1.department); if(fpw=fopen(stuinfo.txt,w)=null) printf(文件打不開(kāi)!n
39、); printmenu(); for(i=0;inum-1;i+) /保存文件 fprintf(fpw,n%st%st%st%dt%st%s,stui,stuinfoi.sex,stuinfoi.sno,stuinfoi.age,stuinfoi.banji,stuinfoi.department); fclose(fpw); printf(n刪除成功!n); /提示刪除成功 printf(n請(qǐng)按enter鍵返回主菜單!n); getchar(); getchar(); printmenu(); if(found0) printf(n沒(méi)有找到該學(xué)號(hào)的記錄:n); print
40、f(n請(qǐng)按enter鍵返回主菜單!n); getchar(); getchar(); printmenu(); 四.測(cè)試分析主要內(nèi)容:測(cè)試用例數(shù)據(jù),測(cè)試結(jié)果,實(shí)際運(yùn)行結(jié)果截圖,測(cè)試中出現(xiàn)的問(wèn)題、原因與分析。測(cè)試:第一部分:首頁(yè)面第二部分:系統(tǒng)菜單:第三部分:添加模塊選擇1,按照提示輸入相應(yīng)信息:測(cè)試中遇到的問(wèn)題:第一次時(shí)提示后沒(méi)有注意學(xué)號(hào),姓名,性別等方面輸入的合法性,后來(lái)注意到在源代碼中修改,其次,再輸入時(shí)學(xué)號(hào)的重復(fù)問(wèn)題也有一點(diǎn)麻煩,在經(jīng)過(guò)和同學(xué)討論后解決了。第四部分:從文件中讀入選擇2,如圖:測(cè)試中遇到的問(wèn)題:首先,在窗口中顯示的信息排列混亂,所以又不斷的調(diào)試,原因是n%st%st%st%dt%st%s中對(duì)輸出的細(xì)節(jié)沒(méi)注意到。第五部分:查詢(xún)模塊:按照學(xué)號(hào)查詢(xún):按照班號(hào)查詢(xún):遇到問(wèn)題:在代碼中對(duì)查詢(xún)的方法使用不熟練,曾用過(guò)鏈表方法,但是失敗,后來(lái)又改用數(shù)組方法,多次修改后終于成功。原因:對(duì)c語(yǔ)言中的鏈表指針使用不熟練,理解掌握程度不夠,有待提高。第六部分:修改模塊:如圖:修改后:第七部分:刪除模塊:如圖:修改后的結(jié)果:已經(jīng)把樊帥的信息刪除。遇到的問(wèn)題:在代碼中不知道怎么編寫(xiě)代碼才能把指定學(xué)生的信息刪除掉,在上網(wǎng)查找相關(guān)資料,并在課本中查詢(xún)有關(guān)數(shù)組的相關(guān)知識(shí),最后實(shí)現(xiàn)了
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度科技論壇會(huì)務(wù)組織與廣告宣傳服務(wù)合同
- 2025年度房地產(chǎn)公司銷(xiāo)售團(tuán)隊(duì)聘用合同書(shū)
- 2025年度合資成立健康管理機(jī)構(gòu)合同范本
- 2025年度可再生能源項(xiàng)目設(shè)備供應(yīng)合同
- 2025年度建筑勞務(wù)承包合同規(guī)范范本
- 2025年度新型環(huán)保庫(kù)房場(chǎng)地租賃合同
- 2025年度新能源車(chē)輛購(gòu)置借款合同封面
- 2025年度加油站品牌授權(quán)合同協(xié)議書(shū)
- 2025年度消防設(shè)施遠(yuǎn)程監(jiān)控與報(bào)警合同
- 2025年度化妝品原料采購(gòu)質(zhì)量保證合同
- 工業(yè)自動(dòng)化生產(chǎn)線(xiàn)操作手冊(cè)
- 2024年10月時(shí)政100題(附答案)
- 《走進(jìn)神奇》說(shuō)課稿
- 江蘇省無(wú)錫市2024年中考數(shù)學(xué)試卷(含答案)
- 2024年內(nèi)蒙古中考語(yǔ)文試卷五套合卷附答案
- 2024年保密知識(shí)測(cè)試試題及答案(奪冠)
- 湖南2024年湖南省衛(wèi)生健康委直屬事業(yè)單位招聘276人筆試歷年典型考題及考點(diǎn)附答案解析
- SF-36生活質(zhì)量調(diào)查表(SF-36-含評(píng)分細(xì)則)
- 五年級(jí)下冊(cè)語(yǔ)文教案 學(xué)習(xí)雙重否定句 部編版
- 不需公證的遺囑范文
- 南京地區(qū)幼兒園室內(nèi)空氣污染物與兒童健康的相關(guān)性研究
評(píng)論
0/150
提交評(píng)論