版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
..C程序設(shè)計(jì)實(shí)習(xí)報(bào)告題目:學(xué)生證管理系統(tǒng)學(xué)院:機(jī)電學(xué)院專業(yè):機(jī)械設(shè)計(jì)制造及其自動(dòng)化__李奇班級(jí)__072095-05指導(dǎo)徐凱2011年7月16日
目錄TOC\t"二層小標(biāo)題,2,三號(hào)小標(biāo)題,3,章標(biāo)題,1"\h14333一、需求分析2279471.1題目要求220818二、總體設(shè)計(jì)2243742.1設(shè)計(jì)思想2302562.2運(yùn)行平臺(tái)及開(kāi)發(fā)環(huán)境2246372.3數(shù)據(jù)結(jié)構(gòu)36012.4系統(tǒng)結(jié)構(gòu)簡(jiǎn)圖3285313.1主函數(shù)3186403.2信息輸入4252903.3總信息的顯示5158993.4查詢信息577043.4.1按學(xué)號(hào)查詢579993.4.2按班級(jí)查詢650273.5修改信息7320933.6刪除信息882383.7統(tǒng)計(jì)信息8147633.7.1統(tǒng)計(jì)班級(jí)總?cè)藬?shù)8241173.7.2統(tǒng)計(jì)學(xué)院或?qū)I(yè)總?cè)藬?shù)958803.7.3排序932158四、測(cè)試結(jié)果分析982034.1輸入信息部分效果圖9230664.2輸出總信息效果圖1068144.3查詢信息效果圖11217424.4修改信息效果圖1268074.5刪除效果圖13295004.6統(tǒng)計(jì)信息效果圖145665五、心得體會(huì)1527109六、參考文獻(xiàn)1512399七、附錄15一、需求分析1.1題目要求題目:學(xué)生證管理系統(tǒng)該系統(tǒng)應(yīng)該具有下列功能:錄入某位學(xué)生的學(xué)生證信息給定學(xué)號(hào),顯示某位學(xué)生的學(xué)生證信息給定某個(gè)班級(jí)的班號(hào),顯示該班所有學(xué)生的學(xué)生證信息給定某位學(xué)生的學(xué)號(hào),修改該學(xué)生的學(xué)生證信息給定某位學(xué)生的學(xué)號(hào),刪除該學(xué)生的學(xué)生證信息提供一些統(tǒng)計(jì)各類信息的功能輸入要求:應(yīng)用程序運(yùn)行之后,在屏幕生顯示一個(gè)菜單。用戶可以根據(jù)需求,選定相應(yīng)的操作項(xiàng)目。進(jìn)入每個(gè)操作后,根據(jù)應(yīng)用程序的提示信息,從鍵盤(pán)輸入相應(yīng)的信息。輸出要求:應(yīng)用程序運(yùn)行之后,要在屏幕上顯示一個(gè)菜單。要求用戶輸入數(shù)據(jù)時(shí),要給出清、晰明確的提示信息,包括輸入的數(shù)據(jù)內(nèi)容、格式及結(jié)束方式等。提示:設(shè)計(jì)時(shí)可以采用結(jié)構(gòu)體類型和以為數(shù)組類型,用來(lái)保存學(xué)生證的內(nèi)容??傮w設(shè)計(jì)2.1設(shè)計(jì)思想經(jīng)分析,整個(gè)系統(tǒng)可分為以下幾大塊:學(xué)生證信息的輸入和輸出:輸入輸出學(xué)號(hào)、班號(hào)、姓名、性別、民族、學(xué)院、專業(yè)、生日、身份證號(hào)等信息。學(xué)生證信息的保存:在輸入、修改或刪除后,通過(guò)文件將學(xué)生的信息保存。學(xué)生證信息的的查詢:根據(jù)學(xué)號(hào)查詢某學(xué)生的信息或者根據(jù)班號(hào)查找該班所有學(xué)生的信息。學(xué)生證信息的修改:根據(jù)學(xué)號(hào)修改該學(xué)生的信息。學(xué)生證信息的刪除:根據(jù)學(xué)號(hào)刪除該學(xué)生的信息。信息的統(tǒng)計(jì):根據(jù)班號(hào)統(tǒng)計(jì)該班總?cè)藬?shù)、根據(jù)學(xué)院統(tǒng)計(jì)該學(xué)院的總?cè)藬?shù)或者根據(jù)專業(yè)統(tǒng)計(jì)該專業(yè)的總?cè)藬?shù)。信息的排序:按照學(xué)號(hào)從大到小對(duì)學(xué)生的信息進(jìn)行排序。2.2運(yùn)行平臺(tái)及開(kāi)發(fā)環(huán)境此程序是在MicrosoftVisualC++軟件平臺(tái)上編譯的,具有集成開(kāi)發(fā)環(huán)境,可提供編輯C語(yǔ)言,C++以及C++/CLI等等編程語(yǔ)言。VC++整合了便利的除錯(cuò)工具,特別是整合了微軟視窗程式設(shè)計(jì)〔WindowsAPI、三維動(dòng)畫(huà)DirectXAPI,Microsoft.NET框架2.3數(shù)據(jù)結(jié)構(gòu)綜合以上的分析及開(kāi)發(fā)平臺(tái)特點(diǎn),我決定采用結(jié)構(gòu)體數(shù)據(jù)結(jié)構(gòu),將學(xué)生的基本信息與成績(jī)?cè)O(shè)計(jì)為結(jié)構(gòu)體數(shù)據(jù),用來(lái)存放多個(gè)學(xué)生的信息,把學(xué)生的姓名、學(xué)號(hào)、宿舍號(hào)、成績(jī)作為結(jié)構(gòu)體成員,從而實(shí)現(xiàn)信息之間的對(duì)應(yīng)輸入輸出。但要注意的是要用兩個(gè)不同的結(jié)構(gòu)體分別定義學(xué)生基本信息和學(xué)生成績(jī),以便于后續(xù)的一些功能的實(shí)現(xiàn)。2.4系統(tǒng)結(jié)構(gòu)簡(jiǎn)圖主函數(shù)主函數(shù)輸入模塊查詢模塊修改模塊刪除模塊統(tǒng)計(jì)模塊圖2-1三、詳細(xì)設(shè)計(jì)3.1主函數(shù)主函數(shù)的功能是對(duì)各個(gè)子函數(shù)進(jìn)行調(diào)用,并且輸出一個(gè)菜單界面,只需按照菜單輸入相應(yīng)數(shù)字就可以選擇相應(yīng)功能。實(shí)現(xiàn)這一功能主要通過(guò)switch語(yǔ)句,首先通過(guò)printf函數(shù)打印出菜單,然后通過(guò)scanf函數(shù)輸入數(shù)字選擇菜單,經(jīng)過(guò)switch語(yǔ)句判斷調(diào)用相應(yīng)的函數(shù),從而實(shí)現(xiàn)預(yù)定的功能。開(kāi)始開(kāi)始輸入a,選擇菜單判斷調(diào)用相應(yīng)子函數(shù)輸出結(jié)果結(jié)束3.2信息輸入在定義變量時(shí)采用結(jié)構(gòu)體數(shù)據(jù)結(jié)構(gòu),學(xué)號(hào)、班號(hào)、生日、身份證號(hào)是整型,姓名、性別民族、學(xué)院、專業(yè)是字符型,采用字符型數(shù)組,但數(shù)組長(zhǎng)度一定要足夠,否則會(huì)出現(xiàn)數(shù)據(jù)丟失錯(cuò)誤,考慮到姓名性別的字符長(zhǎng)度,定義它們?yōu)殚L(zhǎng)度為20的字符數(shù)組。且由于涉及到學(xué)生一系列的的基本信息,將基本信息定義為結(jié)構(gòu)體。在將學(xué)生的基本信息輸入時(shí),要將其保存為.txt文件,用來(lái)存放學(xué)生的信息。這時(shí)就涉及到文件的建立和寫(xiě)入,由于fwrite、fread函數(shù)是以二進(jìn)制形式將數(shù)據(jù)寫(xiě)入、讀出文件的,所以在文件中會(huì)出現(xiàn)亂碼,而fprintf、fscanf煩函數(shù)則會(huì)將ASCII碼轉(zhuǎn)化為二進(jìn)制碼,不會(huì)出現(xiàn)亂碼,所以決定選取較為簡(jiǎn)單的fprintf函數(shù)作為寫(xiě)入文件的函數(shù)。首先定義一個(gè)指向文件的指針,再定義一個(gè)整型的外部變量變量N,定義整形的外部變量是為了控制輸入的人數(shù),并用for函數(shù)進(jìn)行循環(huán),在輸入數(shù)據(jù)之后當(dāng)然,自動(dòng)調(diào)用save函數(shù),循環(huán)N次,通過(guò)指針打開(kāi)建立一個(gè)文本文件,fprintf函數(shù)自動(dòng)建立一個(gè)文本文件,實(shí)現(xiàn)向文件中寫(xiě)入N組數(shù)據(jù)的功能。循環(huán)結(jié)束后文件件中已經(jīng)寫(xiě)入要輸入的信息。在程序的最后通過(guò)一個(gè)if和else判斷語(yǔ)句,結(jié)合printf和scanf函數(shù)判斷是否繼續(xù)執(zhí)行輸入函數(shù)或者返回菜單。流程圖如圖3-2。主函數(shù)主函數(shù)輸入人數(shù)N輸入N組數(shù)據(jù)輸入t調(diào)用save〔函數(shù)保存信息t=1主函數(shù)輸入函數(shù)NY圖3-23.3總信息的顯示這部分比較簡(jiǎn)單,主要是通過(guò)主函數(shù)調(diào)用,先打開(kāi)文件用fprintf函數(shù)將數(shù)據(jù)全部讀入,然后經(jīng)過(guò)for循環(huán),經(jīng)數(shù)據(jù)全部輸出,最后通過(guò)一個(gè)if和else判斷語(yǔ)句,結(jié)合printf和scanf函數(shù)判斷是否繼續(xù)執(zhí)行本函數(shù)或者返回菜單。流程圖如圖3-3。主函數(shù)主函數(shù)輸出信息輸入tt=1主函數(shù)NY圖3-33.4查詢信息3.4.1按學(xué)號(hào)查詢此函數(shù)通過(guò)主函數(shù)調(diào)用,先將文件打開(kāi)讀入數(shù)據(jù),然后輸入學(xué)號(hào),經(jīng)過(guò)循環(huán)查找最終確定該學(xué)生的位置,進(jìn)行輸出;當(dāng)輸入的學(xué)號(hào)沒(méi)有時(shí),會(huì)重新執(zhí)行本函數(shù)。主函數(shù)主函數(shù)輸入學(xué)號(hào)t=1查找該學(xué)生輸出信息主函數(shù)輸入tt=1Y圖3-4N3.4.2按班級(jí)查詢此函數(shù)通過(guò)主函數(shù)調(diào)用,先將文件打開(kāi)讀入數(shù)據(jù),然后輸入班號(hào),經(jīng)過(guò)循環(huán)查找最終確定該班所有學(xué)生的位置,進(jìn)行輸出;當(dāng)輸入的班號(hào)沒(méi)有時(shí),會(huì)重新執(zhí)行本函數(shù)。主函數(shù)主函數(shù)輸入班號(hào)t=1查找該班的學(xué)生輸出信息主函數(shù)輸入tt=1 NYNY圖3-53.5修改信息本程序采用的基本思路是先查找,找到之后再對(duì)信息逐條修改。查找仍是用for循環(huán),輸入一個(gè)學(xué)號(hào),然后逐個(gè)進(jìn)行比對(duì),找到之后再輸入你想修改的信息,將原數(shù)據(jù)替換,最后保存。開(kāi)始仍然有對(duì)學(xué)號(hào)的判斷,最后仍然有返回主菜單的判斷。輸入學(xué)號(hào)主函數(shù)輸入學(xué)號(hào)主函數(shù)t=1Nt=1 Y查找該學(xué)號(hào)查找該學(xué)號(hào)輸入修改信息輸入修改信息修改修改調(diào)用save〔進(jìn)行保存調(diào)用save〔進(jìn)行保存輸入t輸入tt=1t=1NY主函數(shù)主函數(shù)圖3-63.6刪除信息刪除的基本思想就是后面的信息覆蓋前面的信息,后面的信息被0代替,從而實(shí)現(xiàn)刪除功能。具體實(shí)現(xiàn)方法就是選擇刪除功能,利用文件指針和fscanf函數(shù),將文件內(nèi)容讀出,顯示在屏幕上,讓用戶決定刪除哪一個(gè)學(xué)生的基本信息,然后輸入該學(xué)生的學(xué)號(hào)賦值給一個(gè)整型變量,利用for循環(huán)在文件中查找與該變量值相同的學(xué)生,找到之后將后面一個(gè)結(jié)構(gòu)體的全部信息賦值給前面一個(gè)結(jié)構(gòu)體,從而將該學(xué)生信息"刪除"。同時(shí)要實(shí)現(xiàn)的是在存放成績(jī)的文件中也要該同學(xué)的成績(jī)信息刪除,原理相同,就是在找到該同學(xué)的信息之后,保留循環(huán)變量的值,再對(duì)成績(jī)文件里該同學(xué)的進(jìn)行相同覆蓋操作,即可實(shí)現(xiàn)同時(shí)在B文件刪除信息。流程圖如下;主菜單主菜單選擇刪除輸入要?jiǎng)h除的學(xué)生學(xué)號(hào)在文件中刪除該學(xué)生的所有信息刪除完畢圖3-73.7統(tǒng)計(jì)信息首先定義一個(gè)變量x=0,讀入數(shù)據(jù),然后輸入你想統(tǒng)計(jì)的班號(hào),學(xué)院或?qū)I(yè)名稱,然后通過(guò)for循環(huán),進(jìn)行比較,當(dāng)數(shù)據(jù)中的班號(hào),學(xué)院或?qū)I(yè)名稱與你輸入的相同時(shí),x+1,循環(huán)結(jié)束最后將x的值輸出,即為統(tǒng)計(jì)的總?cè)藬?shù)。主函數(shù)輸入班號(hào)統(tǒng)計(jì)人數(shù)輸出人數(shù)3.7.1統(tǒng)計(jì)班級(jí)總?cè)藬?shù)主函數(shù)輸入班號(hào)統(tǒng)計(jì)人數(shù)輸出人數(shù)主函數(shù)判斷主函數(shù)判斷輸出人數(shù)輸出人數(shù)統(tǒng)計(jì)人數(shù)統(tǒng)計(jì)人數(shù)3.7.2統(tǒng)計(jì)學(xué)院或?qū)I(yè)總?cè)藬?shù)學(xué)院專業(yè)圖3-93.7.3排序排序的基本思想即為"冒泡法"。在編寫(xiě)函數(shù)時(shí),要注意如何實(shí)現(xiàn)結(jié)構(gòu)體變量之間的交換,由于結(jié)構(gòu)體中成員較多,數(shù)據(jù)結(jié)構(gòu)較為復(fù)雜,因此需要采用中間變量進(jìn)行替換。具體的操作在程序開(kāi)始成績(jī)定義結(jié)構(gòu)體變量時(shí),需要定義兩組成績(jī)結(jié)構(gòu)體變量,一組用于存放數(shù)據(jù),另一組即用來(lái)作為零時(shí)替換變量,用來(lái)接受將需要交換的變量值。首先還是需要進(jìn)行問(wèn)基金按內(nèi)容的讀出。再用冒泡法排序,冒泡法就是用第一個(gè)值分別與后面的每一個(gè)值進(jìn)行比較,如果小于后一個(gè)值則交換它們的值,再將已變換過(guò)的第一個(gè)值與后面的每一個(gè)值比較,直到一個(gè)for循環(huán)結(jié)束,然后再進(jìn)行相同的過(guò)程,直到一個(gè)大的for循環(huán)結(jié)束。然后將排序后的文件內(nèi)容顯示出來(lái),。流程圖如下:選擇排序選擇排序按實(shí)得學(xué)分排序讀出文件內(nèi)容顯示結(jié)果開(kāi)始圖3-10以上就是各模塊的詳細(xì)設(shè)計(jì),在主菜單中選擇調(diào)用各個(gè)模塊子的函數(shù),從而實(shí)現(xiàn)不同功能。四、測(cè)試結(jié)果分析4.1輸入信息部分效果圖圖4-1圖4-24.2輸出總信息效果圖圖4-3文件如圖4-4圖4-44.3查詢信息效果圖圖4-5圖4-6圖4-74.4修改信息效果圖圖4-8圖4-94.5刪除效果圖圖4-10圖4-114.6統(tǒng)計(jì)信息效果圖圖4-12圖4-13圖4-14五、心得體會(huì)在本次實(shí)習(xí)中,我又重新熟悉了一遍c,感覺(jué)很多東西都已經(jīng)遺忘了,所以在編程的時(shí)候需要不斷的翻書(shū)查資料,用了很多時(shí)間,不過(guò)編程還算順利,遇到的問(wèn)題在看課本之后都解決了。程序的缺點(diǎn)還有很多,比如沒(méi)有實(shí)現(xiàn)對(duì)文本的添加功能,不能在已有的數(shù)據(jù)上添加新的數(shù)據(jù),在程序的輸入和輸出的地方也有很多的不足,輸出的效果也不是很好。我會(huì)在以后進(jìn)一步熟悉c,改掉這些缺點(diǎn)和錯(cuò)誤。六、參考文獻(xiàn)[1]譚浩強(qiáng)《C程序設(shè)計(jì)》第三版清華大學(xué)出版社2005[2]張冬梅等《C語(yǔ)言課程設(shè)計(jì)與實(shí)習(xí)指導(dǎo)》第一版中國(guó)鐵道出版社2008七、附錄主函數(shù)主函數(shù)通過(guò)菜單,用switch函數(shù)調(diào)用子函數(shù),來(lái)實(shí)現(xiàn)各個(gè)模塊的功能。voidmain<>{ inta;voiddi1<>;voiddi2<>;voiddi3<>;voiddi4<>;voiddi5<>; voiddi6<>;/*子函數(shù)的申明*/ voiddi7<>; voiddi8<>; voiddi9<>;printf<"\n\n">;printf<"學(xué)生證管理系統(tǒng)\n\n">; printf<"菜單\n">;printf<"***********************************************">;printf<"**1.錄入學(xué)生的學(xué)生證信息**\n">;printf<"**2.顯示所有學(xué)生的學(xué)生證信息**\n">;printf<"**3.按學(xué)號(hào)查找某學(xué)生的學(xué)生證信息**\n">;printf<"**4.按班級(jí)查找某班所有學(xué)生的學(xué)生證信息**\n">;printf<"**5.修改某學(xué)生的學(xué)生證信息**\n">;printf<"**6.刪除某學(xué)生的學(xué)生證信息**\n">; printf<"**7.統(tǒng)計(jì)某班的總?cè)藬?shù)**\n">; printf<"**8.統(tǒng)計(jì)某學(xué)院或某專業(yè)的總?cè)藬?shù)**\n">; printf<"**9.按照學(xué)號(hào)從小到大排序并輸出排序后的總信息**\n">; printf<"**退出請(qǐng)按其余的任意鍵**\n">;printf<"***********************************************">;printf<"\n\n\n">;printf<"請(qǐng)輸入數(shù)字后選擇菜單\n">;scanf<"%d",&a>;switch<a> { case1:di1<>;break;case2:di2<>;break;case3:di3<>;break;/*選擇菜單*/case4:di4<>;break;case5:di5<>;break; case6:di6<>;break;case7:di7<>;break; case8:di8<>;break; case9:di9<>;break; default:printf<"按任意鍵確認(rèn)\n">; }}保存模塊voidsave<>/*打開(kāi)一個(gè)文件并寫(xiě)入數(shù)據(jù)*/{ FILE*fp;inti;if<<fp=fopen<"stu_list.txt","w">>==NULL> { printf<"cannotopenfile\n">;return; }for<i=0;i<N;i++> fprintf<fp,"%-5d%-5d%-10s%-5s%-5s%-10s%-10s%-5d%-5d\n\n",stu[i].xuehao,stu[i].banhao,stu[i].name,stu[i].sex,stu[i].minzu,stu[i].xueyuan,stu[i].zhuanye,stu[i].shengri,stu[i].shenfenzheng>; fclose<fp>;}錄入函數(shù)voiddi1<>/*錄入數(shù)據(jù)*/{ inti;intt;FILE*fp3;fp3=fopen<"Num.txt","w">;printf<"你需要錄入幾位學(xué)生的信息\n">;scanf<"%d",&N>;putw<N,fp3>;printf<"請(qǐng)依次輸入\n">;for<i=0;i<N;i++> { printf<"第%d個(gè)學(xué)生\n",i+1>; printf<"__">; scanf<"%d",&stu[i].xuehao>; printf<"班號(hào):">; scanf<"%d",&stu[i].banhao>; printf<"__">; scanf<"%s",stu[i].name>; printf<"性別:">; scanf<"%s",stu[i].sex>; printf<"民族:">; scanf<"%s",stu[i].minzu>; printf<"學(xué)院:">; scanf<"%s",stu[i].xueyuan>; printf<"專業(yè):">; scanf<"%s",stu[i].zhuanye>; printf<"生日:">; scanf<"%d",&stu[i].shengri>; printf<"身份證:">; scanf<"%d",&stu[i].shenfenzheng>; } save<>;fclose<fp3>;printf<"錄入成功\n">;printf<"--返回主菜單按:1\n">;printf<"--重新錄入按其他任意數(shù)字\n">; scanf<"%d",&t>; if<t==1>main<>; elsedi1<>;}顯示所有學(xué)生的信息voiddi2<>/*顯示所有學(xué)生的數(shù)據(jù)*/{ inti; intt;FILE*fp; FILE*fp3; fp3=fopen<"Num.txt","r">;fp=fopen<"stu_list.txt","r">;N=getw<fp3>;printf<"所有學(xué)生信息如下\n">;for<i=0;i<N;i++>{ fscanf<fp,"%d%d%s%s%s%s%s%d%d",&stu[i].xuehao,&stu[i].banhao,stu[i].name,&stu[i].sex,&stu[i].minzu,&stu[i].xueyuan,&stu[i].zhuanye,&stu[i].shengri,&stu[i].shenfenzheng>;printf<"第%d個(gè)學(xué)生\n",i+1>; printf<"學(xué)號(hào):%-5d班號(hào):%-5d姓名:%-10s性別:%-5s民族:%-5s\n學(xué)院:%-10s專業(yè):%-10s生日:%-5d身份證:%-5d\n\n",stu[i].xuehao,stu[i].banhao,stu[i].name,stu[i].sex,stu[i].minzu,stu[i].xueyuan,stu[i].zhuanye,stu[i].shengri,stu[i].shenfenzheng>; }fclose<fp>; fclose<fp3>;printf<"--返回主菜單按:1\n">;printf<"--重新錄入按其他任意數(shù)字\n">; scanf<"%d",&t>; if<t==1>main<>; elsedi2<>;}按學(xué)號(hào)查找voiddi3<>/*按學(xué)號(hào)查找學(xué)生信息*/{ inti;intb; intt; intg=0;FILE*fp; FILE*fp3; fp3=fopen<"Num.txt","r">;fp=fopen<"stu_list.txt","r">;N=getw<fp3>; printf<"請(qǐng)輸入您要顯示的學(xué)生的學(xué)號(hào)\n">;scanf<"%d",&b>;for<i=0;i<N;i++> { fscanf<fp,"%d%d%s%s%s%s%s%d%d",&stu[i].xuehao,&stu[i].banhao,stu[i].name,stu[i].sex,stu[i].minzu,stu[i].xueyuan,stu[i].zhuanye,&stu[i].shengri,&stu[i].shenfenzheng>; if<stu[i].xuehao==b> g=g+1; }if<g!=0> { printf<"該學(xué)生信息如下\n">;for<i=0;i<N;i++> { if<stu[i].xuehao==b>printf<"學(xué)號(hào):%-5d班號(hào):%-5d姓名:%-10s性別:%-5s民族:%-5s\n學(xué)院:%-10s專業(yè):%-10s生日:%-5d身份證:%-5d\n\n",stu[i].xuehao,stu[i].banhao,stu[i].name,stu[i].sex,stu[i].minzu,stu[i].xueyuan,stu[i].zhuanye,stu[i].shengri,stu[i].shenfenzheng>; } } else printf<"沒(méi)有該學(xué)生\n">;fclose<fp>; fclose<fp3>; printf<"\n">;printf<"--返回主菜單按:1\n">;printf<"--重新錄入按其他任意數(shù)字\n">; scanf<"%d",&t>; if<t==1>main<>; elsedi3<>;按班號(hào)查找voiddi4<>/*顯示某班所有學(xué)生的數(shù)據(jù)*/{ inti;intc; intt; intg=0;FILE*fp; FILE*fp3; fp3=fopen<"Num.txt","r">;fp=fopen<"stu_list.txt","r">;N=getw<fp3>; printf<"請(qǐng)輸入您要顯示的班的班號(hào)\n">;scanf<"%d",&c>;for<i=0;i<N;i++> { fscanf<fp,"%d%d%s%s%s%s%s%d%d",&stu[i].xuehao,&stu[i].banhao,stu[i].name,stu[i].sex,stu[i].minzu,stu[i].xueyuan,stu[i].zhuanye,&stu[i].shengri,&stu[i].shenfenzheng>; if<stu[i].banhao==c> g=g+1; }if<g!=0> { printf<"該班的所有學(xué)生的信息如下\n">;for<i=0;i<N;i++> { if<stu[i].banhao==c>printf<"學(xué)號(hào):%-5d班號(hào):%-5d姓名:%-10s性別:%-5s民族:%-5s\n學(xué)院:%-10s專業(yè):%-10s生日:%-5d身份證:%-5d\n\n",stu[i].xuehao,stu[i].banhao,stu[i].name,stu[i].sex,stu[i].minzu,stu[i].xueyuan,stu[i].zhuanye,stu[i].shengri,stu[i].shenfenzheng>; } } else printf<"沒(méi)有該班\n">;fclose<fp>; fclose<fp3>; printf<"\n">;printf<"--返回主菜單按:1\n">;printf<"--重新錄入按其他任意數(shù)字\n">; scanf<"%d",&t>; if<t==1>main<>; elsedi4<>;}修改voiddi5<>/*按學(xué)號(hào)修改學(xué)生的信息*/{ inti;intd;intm;intn; intt; intg=0;charp[20];charq[20]; charr[20]; chars[20]; chart1[20]; intu; intv; FILE*fp; FILE*fp3; fp3=fopen<"Num.txt","r">;fp=fopen<"stu_list.txt","r">;N=getw<fp3>;printf<"請(qǐng)輸入您要修改的學(xué)生的學(xué)號(hào)\n">;scanf<"%d",&d>;for<i=0;i<N;i++> { fscanf<fp,"%d%d%s%s%s%s%s%d%d",&stu[i].xuehao,&stu[i].banhao,stu[i].name,stu[i].sex,stu[i].minzu,stu[i].xueyuan,stu[i].zhuanye,&stu[i].shengri,&stu[i].shenfenzheng>; if<stu[i].xuehao==d> g=g+1; } if<g!=0> { for<i=0;i<N;i++> { if<stu[i].xuehao==d> { printf<"該學(xué)生的原信息如下\n">;printf<"學(xué)號(hào):%-5d班號(hào):%-5d姓名:%-10s性別:%-5s民族:%-5s\n學(xué)院:%-10s專業(yè):%-10s生日:%-5d身份證:%-5d\n\n",stu[i].xuehao,stu[i].banhao,stu[i].name,stu[i].sex,stu[i].minzu,stu[i].xueyuan,stu[i].zhuanye,stu[i].shengri,stu[i].shenfenzheng>;printf<"請(qǐng)依次輸入該學(xué)生的新信息\n">; printf<"__">; scanf<"%d",&m>; printf<"班號(hào):">; scanf<"%d",&n>; printf<"__">; scanf<"%s",p>; printf<"性別:">; scanf<"%s",q>; printf<"民族:">; scanf<"%s",r>; printf<"學(xué)院:">; scanf<"%s",s>; printf<"專業(yè):">; scanf<"%s",t1>; printf<"生日:">; scanf<"%d",&u>; printf<"身份證:">; scanf<"%d",&v>;stu[i].xuehao=m;stu[i].banhao=n;strcpy<stu[i].name,p>;strcpy<stu[i].sex,q>; strcpy<stu[i].minzu,r>; strcpy<stu[i].xueyuan,s>; strcpy<stu[i].zhuanye,t1>; stu[i].shengri=u; stu[i].shenfenzheng=v; printf<"\n">;printf<"該學(xué)生的新信息如下〔已經(jīng)保存,可以查詢驗(yàn)證\n">;printf<"學(xué)號(hào):%-5d班號(hào):%-5d姓名:%-10s性別:%-5s民族:%-5s\n學(xué)院:%-10s專業(yè):%-10s生日:%-5d身份證:%-5d\n\n",stu[i].xuehao,stu[i].banhao,stu[i].name,stu[i].sex,stu[i].minzu,stu[i].xueyuan,stu[i].zhuanye,stu[i].shengri,stu[i].shenfenzheng>; } save<>; } } else printf<"沒(méi)有該學(xué)生\n">;fclose<fp>; fclose<fp3>; printf<"\n">;printf<"--返回主菜單按:1\n">;printf<"--重新錄入按其他任意數(shù)字\n">; scanf<"%d",&t>; if<t==1>main<>; elsedi5<>;}刪除voiddi6<>/*按學(xué)號(hào)刪除學(xué)生的信息*/{ inti;inte; intt;intm=0;intn=0;charq[20]={"NULL"};charp[20]={"NULL"}; intg=0; charr[20]={"NULL"}; chars[20]={"NULL"}; chart1[20]={"NULL"}; intu=0; intv=0;FILE*fp; FILE*fp3; fp3=fopen<"Num.txt","r">;fp=fopen<"stu_list.txt","r">;N=getw<fp3>;printf<"請(qǐng)輸入您要?jiǎng)h除的學(xué)生的學(xué)號(hào)\n">;scanf<"%d",&e>;for<i=0;i<N;i++> { fscanf<fp,"%d%d%s%s%s%s%s%d%d",&stu[i].xuehao,&stu[i].banhao,stu[i].name,stu[i].sex,stu[i].minzu,stu[i].xueyuan,stu[i].zhuanye,&stu[i].shengri,&stu[i].shenfenzheng>; if<stu[i].xuehao==e> g=g+1; } if<g!=0> { for<i=0;i<N;i++> { if<stu[i].xuehao==e> { printf<"該學(xué)生的原信息如下\n">;printf<"學(xué)號(hào):%-5d班號(hào):%-5d姓名:%-10s性別:%-5s民族:%-5s\n學(xué)院:%-10s專業(yè):%-10s生日:%-5d身份證:%-5d\n\n",stu[i].xuehao,stu[i].banhao,stu[i].name,stu[i].sex,stu[i].minzu,stu[i].xueyuan,stu[i].zhuanye,stu[i].shengri,stu[i].shenfenzheng>;stu[i].xuehao=m;stu[i].banhao=n;strcpy<stu[i].name,p>;strcpy<stu[i].sex,q>; strcpy<stu[i].minzu,r>; strcpy<stu[i].xueyuan,s>; strcpy<stu[i].zhuanye,t1>; stu[i].shengri=u; stu[i].shenfenzheng=v;printf<"該學(xué)生的信息已經(jīng)刪除〔已經(jīng)保存,可以查詢驗(yàn)證\n">;printf<"學(xué)號(hào):%-5d班號(hào):%-5d姓名:%-10s性別:%-5s民族:%-5s\n學(xué)院:%-10s專業(yè):%-10s生日:%-5d身份證:%-5d\n\n",stu[i].xuehao,stu[i].banhao,stu[i].name,stu[i].sex,stu[i].minzu,stu[i].xueyuan,stu[i].zhuanye,stu[i].shengri,stu[i].shenfenzheng>; } save<>; } } else printf<"沒(méi)有該學(xué)生\n">;fclose<fp>; fclose<fp3>; printf<"\n">;printf<"--返回主菜單按:1\n">;printf<"--重新錄入按其他任意數(shù)字\n">; scanf<"%d",&t>; if<t==1>main<>; elsedi6<>;}統(tǒng)計(jì)某班學(xué)生總?cè)藬?shù)voiddi7<>/*統(tǒng)計(jì)某班的學(xué)生總數(shù)*/{ inti;intf; intt;intg=0;FILE*fp; FILE*fp3; fp3=fopen<"Num.txt","r">;fp=fopen<"stu_list.txt","r">;N=getw<fp3>;for<i=0;i<N;i++> { fscanf<fp,"%d%d%s%s%s%s%s%d%d",&stu[i].xuehao,&stu[i].banhao,stu[i].name,stu[i].sex,stu[i].minzu,stu[i].xueyuan,stu[i].zhuanye,&stu[i].shengri,&stu[i].shenfenzheng>; }printf<"請(qǐng)輸入班號(hào)\n">;scanf<"%d",&f>;for<i=0;i<3;i++> { if<stu[i].banhao==f>g=g+1; }fclose<fp>; fclose<fp3>; if<g==0> printf<"該班的總?cè)藬?shù)為:0或沒(méi)有該班\n">; else printf<"該班的總?cè)藬?shù)為:%d\n",g>; printf<"\n">;printf<"--返回主菜單按:1\n">;printf<"--重新錄入按其他任意數(shù)字\n">; scanf<"%d",&t>; if<t==1>main<>; elsedi7<>;}統(tǒng)計(jì)學(xué)院或?qū)I(yè)的總?cè)藬?shù)voiddi8<>/*統(tǒng)計(jì)學(xué)院或?qū)I(yè)的總?cè)藬?shù)*/{ inti;charx[20]; inty; intt;intg=0;FILE*fp; FILE*fp3; fp3=fopen<"Num.txt","r">;fp=fopen<"stu_list.txt","r">;N=getw<fp3>;for<i=0;i<N;i++> { fscanf<fp,"%d%d%s%s%s%s%s%d%d",&stu[i].xuehao,&stu[i].banhao,stu[i].name,stu[i].sex,stu[i].minzu,stu[i].xueyuan,stu[i].zhuanye,&stu[i].shengri,&stu[i].shenfenzheng>; }printf<"請(qǐng)問(wèn)您要統(tǒng)計(jì)學(xué)院總?cè)藬?shù)還是專業(yè)總?cè)藬?shù)\n">;printf<"學(xué)院按1\n">;printf<"專業(yè)按其余任意數(shù)字\n">; scanf<"%d",&y>; if<y==1> { printf<"請(qǐng)輸入學(xué)院名稱\n">;scanf<"%s",&x>;for<i=0;i<N;i++> { if<strcmp<stu[i].xueyuan,x>==0>g=g+1; } if<g==0> printf<"該學(xué)院的總?cè)藬?shù)為:0或沒(méi)有該學(xué)院\n">; else printf<"該學(xué)院的總?cè)藬?shù)為:%d\n",g>; } else { printf<"請(qǐng)輸入專業(yè)名稱\n">;scanf<"%s",&x>;for<i=0;i<N;i++> { if<strcmp<stu[i].zhuanye,x>==0>g=g+1; } if<g==0> printf<"該專業(yè)的總?cè)藬?shù)為:0或沒(méi)有該專業(yè)">; else printf<"該專業(yè)的總?cè)藬?shù)為:%d",g>; }fclose<fp>; fclose<fp3>; printf<"\n">;printf<"--返回主菜單按:1\n">;printf<"--重新錄入按其他任意數(shù)字\n">; scanf<"%d",&t>; if<t==1>main<>; elsedi8<>;}3.11排序voiddi9<>/*按學(xué)號(hào)的大小對(duì)所有學(xué)生的信息進(jìn)行排序*/{ inti;inth; intt; ints; chark[20];FILE*fp; FILE*fp3; fp3=fopen<"Num.txt","r">;fp=fopen<"stu_list.txt","r">;N=getw<fp3>;for<i=0;i<N;i++> { fscanf<fp,"%d%d%s%s%s%s%s%d%d
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年知識(shí)產(chǎn)權(quán)侵權(quán)案例分析題集
- 2026年餐飲業(yè)服務(wù)員等級(jí)認(rèn)證考試復(fù)習(xí)題
- 2026年廣東農(nóng)工商職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)附答案
- 2026年科技創(chuàng)新與知識(shí)產(chǎn)權(quán)知識(shí)測(cè)試題
- 2026年通訊行業(yè)顧問(wèn)模擬考試題5G技術(shù)與應(yīng)用發(fā)展前景
- 2026年物流設(shè)備評(píng)估與審計(jì)筆試模擬題
- 2026年航空行業(yè)精英訓(xùn)練飛行員專業(yè)知識(shí)測(cè)試題集
- 2026年航空服務(wù)專業(yè)高級(jí)技能考試模擬題
- 2026年化學(xué)實(shí)驗(yàn)操作與安全規(guī)范中級(jí)全考點(diǎn)練習(xí)題
- 2026年文學(xué)創(chuàng)作與編輯專業(yè)考試題目
- 糧食行業(yè)競(jìng)爭(zhēng)對(duì)手分析報(bào)告
- 北京通州產(chǎn)業(yè)服務(wù)有限公司招聘參考題庫(kù)必考題
- 兒科MDT臨床技能情景模擬培訓(xùn)體系
- 【高三上】2026屆12月八省聯(lián)考(T8聯(lián)考)語(yǔ)文試題含答案
- (人教版)必修第一冊(cè)高一物理上學(xué)期期末復(fù)習(xí)訓(xùn)練 專題02 連接體、傳送帶、板塊問(wèn)題(原卷版)
- 護(hù)理不良事件根本原因分析
- 社會(huì)心理學(xué)考試題及答案
- 門(mén)窗工程掛靠協(xié)議書(shū)
- 醫(yī)療器械經(jīng)營(yíng)企業(yè)質(zhì)量管理體系文件(2025版)(全套)
- 出鐵廠鐵溝澆注施工方案
- 2025年中小學(xué)教師正高級(jí)職稱評(píng)聘答辯試題(附答案)
評(píng)論
0/150
提交評(píng)論