C語言課程設計報告學生信息管理系統(tǒng)_第1頁
C語言課程設計報告學生信息管理系統(tǒng)_第2頁
C語言課程設計報告學生信息管理系統(tǒng)_第3頁
C語言課程設計報告學生信息管理系統(tǒng)_第4頁
C語言課程設計報告學生信息管理系統(tǒng)_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、C語言是一門通用的計算機編程語言,應用廣泛。 C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產(chǎn)生少量的機器碼以及不需要任何運行環(huán)境支持便能運行的編程語言。近年來,C語言在國內得到了迅速的推廣和應用。作為一門通用的語言,在過去很流行嗎,將來依然會如此。幾乎每一個理工科或者其他專業(yè)的學生毫不例外的要學習它,同時,C語言作為“全國計算機二級等級考試”中的一門可選語言,也是用來衡量計算機程序設計水平的一個重要標準。從C語言產(chǎn)生到現(xiàn)在,它已成為最重要和最流行的編程語言之一。在各種 流行編程語言中,都能看到 C語言的影子,如JAVA的語法與C語言基本相同c 學習、掌握C語言是每一個計算機技

2、術人員的基本功之一。C 語言具有高級語言的強大功能,卻又有很多直接操作計算機硬件的功能(這些都是匯編語言的功能),因此,C語言通常又被稱為中級語言。學習和掌 握C語言,即可以增進對于計算機底層工作機制的了解,又為進一步學習其他 高級語言打下了堅實的基礎。C 語言程序設計是一門實踐性很強的課程,所以本學科的實驗實訓非常重要。所以我們進行了本次課程設計實踐。在這個過程中我們都學到了很多,此報告便是這次課程設計的經(jīng)過、流程,介紹了部分自己編寫的程序。02目錄.問題概述 TOC o 1-5 h z .系統(tǒng)需求分析 02.系統(tǒng)概要設計 02 HYPERLINK l bookmark18 o Curren

3、t Document .系統(tǒng)的詳細設計 06 HYPERLINK l bookmark62 o Current Document .系統(tǒng)的測試及調試 15 HYPERLINK l bookmark64 o Current Document .用戶手冊 21.總結 21 HYPERLINK l bookmark68 o Current Document .參考文獻 22.附錄 231.問題概述設計一個學生綜合測評的信息及成績的管理系統(tǒng),以解決傳統(tǒng)紙質信息統(tǒng) 計的不易修改,儲存及放置等諸多不便及弊端。來簡化學校的辦公,節(jié)約時間 及人力。1.系統(tǒng)需求分析在學生信息的日常管理中,經(jīng)常需要對學生相關信息

4、進行處理,采用傳統(tǒng) 的手工記錄,查詢方式,顯然有很多不便,如多次的增、刪、改可能使信息變 得混亂,為今后的信息提取帶來很多麻煩。為了解決這一問題,可采用現(xiàn)代化 的手段一一計算機進行系統(tǒng)的管理。這樣可大大提高管理的質量和效率,并且 使學生的信息管理也從手工操作中解脫出來,減少紙制材料的數(shù)量,對日常信息的查詢、方便、快捷。因此,基于這些方面的考慮,決定開發(fā)本系統(tǒng)。設計一個學生綜合測評的信息及成績的管理系統(tǒng),以解決傳統(tǒng)紙質信息統(tǒng) 計的不易修改,儲存及放置等諸多不便及弊端。來簡化學校的辦公,節(jié)約時間 及人力。系統(tǒng)的主要功能系統(tǒng)的主要功能是實現(xiàn)學生基本的信息及成績的錄入和管理。主要包括:A學生信息處理(

5、1)學生信息的錄入。(2)學生信息的修改。(3)學生信息的瀏覽B、學生數(shù)據(jù)處理:(1)學生考試數(shù)據(jù)輸入并計算平均分及名次(2)學生測評數(shù)據(jù)輸入并計算綜合測評總分及名次(3)學生數(shù)據(jù)的修。(4)學生數(shù)據(jù)的查詢C學生綜合信息顯示系統(tǒng)的總體結構(1)程序主界面的設計(書界面主界面學生信息處理系統(tǒng)CT TH22吐、學工 上“四質紜|界面結構圖學生信教處哂界面設計據(jù)據(jù)卜卜3學生綜合息顯示理處自d4用戶指南5退由系統(tǒng)錄入學圖系統(tǒng)工用f結 學生數(shù)據(jù)處理/1考試梟錄A1及MU至-2-測 處藍錄入學生信取、順序存入學號、修 姓函、性別返、回 主 菜4 4界W結樗圖2生 一數(shù)據(jù)5返回主菜電話,按學號以,排序后可寫

6、到文件中(2)修改同學信息。2、學生數(shù)據(jù)處理:(1)考試成績錄入及處理:考試成績=(語文+數(shù)學+外語)/3計算考試成績,并計算考試名次,提 示:先把學生信息讀入數(shù)組,然后按提示輸入每科成績,計算考試成績,求出 名次,最后把學生記錄寫入一個文件中。(2)測評成績錄入及處理:綜合測評總分=(考試成績)*+ (同學互評分)*+品德成績*+任課老師評 分*。(3)學生數(shù)據(jù)修改:輸入學號,讀出并顯示該同學信息,輸入郵型數(shù)據(jù)婀1息寫入文件(4)學生數(shù)據(jù)查詢:輸入學號,即讀出所有數(shù)據(jù)信息,并顯示出來。3、查詢學生綜合信息輸入學號即讀出綜合信息,并顯示出來系統(tǒng)軟硬件環(huán)境本程序所適用的計算機系統(tǒng)軟硬件環(huán)境要求為

7、 :硬件環(huán)境 : Pentium?III?500 以上內存: 256M? 軟件環(huán)境 : Windows 7數(shù)據(jù)結構設計學生信息數(shù)據(jù)結構類型如下:struct student TOC o 1-5 h z int num;/*學號*/char name20;/* 學生姓名*/char sex10;/*性別男/女*/char home200;/* 家庭住址*/int s1;/*語文成績*/int s2;/* 數(shù)學成績*/int s3;/* 英語成績*/int ave;/*三科平均成績*/int Tel;/*聯(lián)系方式*/int m1;/*考試名次 */int a1;/* 同學互評分*/int a2;/

8、* 品德成績 */int a3;/*任課教師評分*/int z;/* 綜合測評總分*/int m2;/*綜合測評名次*/stuN;4 系統(tǒng)的詳細設計根據(jù)系統(tǒng)總體結構對問題進行的模塊劃分,對總的問題可劃分為:學生信息處理、 學生數(shù)據(jù)處理、學生綜合信息查詢三個大模塊,另還設置了用戶 幫助函數(shù)及退出系統(tǒng)。首先在主函數(shù)中調用了 void one() 函數(shù)來顯示主菜單,主菜單中調用子菜單也就是學生信息處理、學生數(shù)據(jù)處理的菜單。學生信息處理用 void info() 來顯示子菜單1,子菜單 1 中調用了 voidinfo_1();void info_2() 。兩個函數(shù)來實現(xiàn)學生信息的錄入和修改。學生數(shù)據(jù)處

9、理用 void data() 來顯示子菜2,子菜單2 中調用了 void data_2;void data_1; void data_3; void data_4 等函數(shù)來實現(xiàn)數(shù)據(jù)的錄入修改及查詢。還使用了 void sort_num(struct student a, int n);void sort_ave(struct student a, int n);void sort_z(struct student a, int n);三個排序函數(shù)來處理學生的數(shù)據(jù)在最后的學生綜合信息查詢中使用的是void look() 來實現(xiàn)其功能在用戶指南中使用了 void help() 函數(shù)來實現(xiàn)其功能以上

10、就是此系統(tǒng)中使用的函數(shù)來實現(xiàn)其功能。主菜單 void one()系統(tǒng)流程該函數(shù)主要用來顯示主菜單的內容以及進入子菜單實現(xiàn)功能,該函數(shù)實現(xiàn)過程中首先定義了一個變量opt1 ,這是用戶選擇進入那個模塊的選項。首先判斷 opt1 的值,如果為 1 則調用 void info() 進入信息管理模塊,如果為 2 則調用 void data() 進入數(shù)據(jù)管理模塊,如果為3 則調用 void look() 進入學生綜合信息查詢功,如果為 4 則調用 void help() 進入用戶指南函數(shù)查看,如果為 5 則退出系統(tǒng)。如果用戶沒有輸入12345 中的選項,則會提示輸入錯誤請重新輸入。代碼實現(xiàn) TOC o 1

11、-5 h z void one()/* 主菜單函數(shù)*/int opt1;/*主菜單選項*/printf(歡迎使用學生綜合測評系統(tǒng)nn);printf( 1: 學生信息處理2:學生數(shù)據(jù)處理nn 3: 學生綜合信息);printf( 4 :用戶使用指南nn);printf(5:退出 nn);printf( 請輸入 1 2 3 4 5 中的任意一個選項進行操作:);loop: scanf(%d, &opt1);switch (opt1)info();break;data();break;look();break;help();break;break;default:printf( 輸入錯誤,請重新輸

12、入 1 2 3 4 5 中的一項 );scanf(%d, &opt1);goto loop;子菜單 1 void info()系統(tǒng)流程該函數(shù)主要用來顯示子菜單1 的內容以及進入功能實現(xiàn)函數(shù),該函數(shù)實現(xiàn)過程中首先定義了一個變量opt2 ,這是用戶選擇進入那個功能的選項。首先判斷 opt2 的值,如果為 1 則調用 void info_1() 進入學生信息錄入功能,如果為 2 則調用 void info_2() 進入學生信息修改功能,如果為3 則調用 void one() 返回到主菜單。如果用戶沒有輸入123 中的選項,則會提示輸入錯誤請重新輸入。代碼實現(xiàn) TOC o 1-5 h z void i

13、nfo()/*信息處理函數(shù)*/int opt2; /*子菜單選項*/printf(nn 歡迎進入信息處理nn);printf(1.學生信息錄入nn2.學生信息的修改nn);printf(3.返回nn);printf(請輸入 1 2 3 中的任意一個選項進行操作);loop: scanf(%d, &opt2);switch (opt2)info_1();break;info_2();break;one();break; default: printf( 輸入錯誤,請重新輸入1 2 3 中的一項 );goto loop; 學生信息錄入void info_1()系統(tǒng)流程該函數(shù)運行后,首先打開文件,然

14、后判斷文件是否為空。如果為空設置一個變量count來記錄錄入學生的數(shù)目。如果不為空,則從文件中讀取count 的值。然后開始錄入學生信息,設置變量輸入s,用switch語句來決定是否錄入或退出。輸入 1錄入0退出2返回上一層。在 1 中用 goto 語句實現(xiàn)循環(huán)錄入到數(shù)組中。在2 中調用 void one(). 最后將學生信息的數(shù)組和 count 寫入文件,然后關閉文件。代碼實現(xiàn)void info_1() /*信息錄入函數(shù)*/FILE *fp;int s, i,count;count=0;= 1;if(fp = fopen(stu,rb+) = NULL)if(fp = fopen(stu,w

15、b) = NULL)printf(Cont open filen);exit(1); stu0.num=0; else fclose(fp); if(fp = fopen(stu,ab+) = NULL) printf(Cont open filen);exit(1);fread(stu,sizeof(struct student),N,fp);fscanf(fp,%d,&stu0.num);loop:printf(nn您將開始錄入學生信息n輸入1將繼續(xù)n輸入2返回上一層n輸入0將退 出 n);looo: scanf(%d, &s);switch (s)case 0:break;count+;

16、printf(nn 您將輸入第%d 學生的信息: ,count);printf(n 學號:);scanf(%d,&stui.num);printf( 姓名:);scanf(%s,);printf( 性別 :);scanf(%s,stui.sex);printf( 家庭住址: );scanf(%s,stui.home);printf( 聯(lián)系電話 :);scanf(%d,&stui.Tel);i+;goto loop;break;info();break;default:printf(n 輸入錯誤,請重新輸入 0 1 2 中的一項 );goto looo;sort_num(stu

17、, i);stui+1.num=0;stu0.num += count;fseek(fp, 0, SEEK_SET);fwrite(stu, sizeof(struct student), N, fp);fseek(fp, 0, SEEK_SET);fread(stu, sizeof(struct student), N, fp);for(i=1;i=stu0.num;i+)printf(%dn,stui.num);system(pause);fclose(fp);學生信息修改 void info_2()系統(tǒng)流程該函數(shù)運行后,首先打開文件,讀取文件內容到數(shù)組中。設置變量 num 用戶輸入一個學

18、號。然后用一個for循環(huán)將num與數(shù)組中的學號的值進行比較,如果相同,跳出循環(huán)。找到 后將其輸出。詢問是否修改。修改后將其寫入文件中。關閉文件。代碼實現(xiàn)void info_2() /*信息修改函數(shù)*/FILE *fp;int j;if (fp = fopen(stu, rb) = NULL)printf(Can not open filen);exit(1);/* 打開文件 */fread(stu, sizeof(struct student),1 , fp);for(j = 1;j =stu0.num;j+)fread(&stuj, sizeof(struct student),1 ,fp)

19、;fclose(fp);int i, num, xu, a;llll: printf(nn 請輸入需要修改信息的學生的學號: n);scanf(%d, &num);for (i = 1; i= stu0.num) printf( 查無此人 );return ;printf( 請問您是否是需要修改此生的信息: );printf( 學號 %d 姓名 %s 性別 %s 家庭住址 %s 聯(lián)系電話 %d, stui.num, , stui.sex, stui.home, stui.Tel);printf(nn 如果是請輸入 1 不是請輸入 2: n);loop:scanf(%d, &x

20、u);switch (xu)printf( 請輸入新的信息 n);printf( 學號: );scanf(%d, &stui.num);printf(姓名:);scanf(%s, );printf( 性別 :);scanf(%s, stui.sex);printf( 家庭住址: );scanf(%s, stui.home);printf( 聯(lián)系電話 :);scanf(%d, &stui.Tel);printf( 完成修改! );break;break;default:printf(n 輸入錯誤,請重新輸入 0 1 中的一項 );goto loop;/* 修改學生信息*/if

21、(fp = fopen(stu, wb) = NULL)printf(Can not open filen);exit(1);/* 打開文件 */fwrite(stu, sizeof(struct student), stu0.num, fp); /* 寫入文件中 */fclose(fp);rintf(n 是否繼續(xù)修改學生信息 n 是請輸入 1 n 退出請輸入 2n 返回上一層請輸 入 0);lllk:scanf(%d, &a);switch (a)case 0:info();break;goto llll;break;break;default:printf(n 輸入錯誤,請重新輸入 0 1

22、 中的一項 );goto lllk;/* 關閉文件 */學生數(shù)據(jù)模塊的函數(shù)與學生信息模塊的函數(shù)相似,錄入,修改,查詢功能。學生綜合信息查詢 void look()系統(tǒng)流程2.該函數(shù)運行后,首先打開文件,讀取文件內容到數(shù)組中。設置變量num用戶輸入一個學號。然后用一個for循環(huán)將num與數(shù)組中的學號的值進行比較,如果相同,跳出循環(huán)。找到 后將其輸出。然后詢問是否繼續(xù)修改,如果是goto 語句回到輸入學號那里,如果不是,關閉文件退出。代碼實現(xiàn)void look()/*綜合信息顯示函數(shù)*/int m;FILE *fp;if (fp = fopen(stu, rb) = NULL) printf(Ca

23、n not open filen);exit(1);fread(stu, sizeof(struct student),1 , fp);for(m = 1;m =stu0.num;m+)fread(&stum, sizeof(struct student),1 ,fp);fclose(fp);/* 讀取文件 */int i, num, a;llll: printf(nn 請輸入需要查詢綜合信息的學生的學號: n);scanf(%d, &num);for (i = 1; i= stu0.num) printf( 查無此人 );return ;printf( 學生數(shù)據(jù)顯示: nn);printf(

24、 學號 %d 姓名 %s 性別 %s 家庭住址 %s 聯(lián)系電話 %d n, stui.num, , stui.sex, stui.home, stui.Tel);printf( 語文 %d 數(shù)學 %d 英語 %d 平均分 %d 考試名次 %d n, stui.s1, stui.s2, stui.s3, stui.ave, stui.m1);printf( 同學互評分%d 品德成績 %d 任課教師評分%d 綜合測評總分%d 綜合排名 %d, stui.a1, stui.a2, stui.a3, stui.z, stui.m2);printf(n 是否繼續(xù)查詢學生數(shù)據(jù) 是請輸入

25、1 否請輸入 2n);lllk:scanf(%d, &a);switch (a)goto llll;break;break;default:printf(n 輸入錯誤,請重新輸入 0 1 中的一項 );goto lllk;fclose(fp);/* 關閉文件 */用戶指南 void help()系統(tǒng)流程該函數(shù)主要用來提示用戶此系統(tǒng)的信息,進入后瀏覽信息,最后定義一個變量i,請用戶輸入 1 返回到主菜單進行操作。如果用戶輸入的不是1 則提示請輸入 1。代碼實現(xiàn)void help()int i;printf( 本系統(tǒng)可以存儲學生的基本信息和各科成績,并能計算考試成績,綜合測評成績和排名。 nn )

26、;printf( 基本信息包括:學號、姓名、性別、家庭住址、聯(lián)系電話; nn 各科成績包括:語文、數(shù)學、英語成績; nn);printf( 其它包括:考試名次、同學互評分、品德成績、任課教師評分等。 nn);printf( 說明:考試成績排名是按照考試成績平均分計算的 ( 平均分=(語 +數(shù) +外 )/3)nn);printf( 綜合測評總分=(考試成績)*+ (同學互評分) *+( 品德成績 )*n+(任課教師評分 )*nn);printf( 此系統(tǒng)最多可管理5000人信息。 );printf( 其它請按照提示操作即可。 n);printf(返回上一層請輸入1);loop:scanf(%d,

27、&i);if(i=1)one();elseprintf(輸入錯誤請重新輸入:);goto loop;系統(tǒng)測試及調試系統(tǒng)的測試及調試是為了發(fā)現(xiàn)程序中錯誤,而執(zhí)行程序的過程。運行過程:1)運行該程序,進入一個主菜單函數(shù),出現(xiàn)了選擇的菜單:可輸入選項進入子菜單(兩個子菜單分別進入):2)在進入第一個子菜單后可進行學生的信息處理:在輸入 1 后可進行學生信息的錄入:每錄完一個信息后會詢問是否繼續(xù)錄入或者返回上一層或者退出返回上一層,便回到了主菜單可繼續(xù)進行操作:在信息處理內選擇 2 來修改學生的信息:3)在進入第二個子菜單后可進行學生的數(shù)據(jù)處理:數(shù)據(jù)錄入:數(shù)據(jù)查詢:3)在主菜單選擇3 進入后可查詢綜合

28、信息:4)在主菜單選擇4 進入后可查看用戶指南:輸入 5便退出系統(tǒng):系統(tǒng)調試過程中遇到的問題:1)錄入學生信息后能夠寫進文件,但是只能查詢時只能查詢到第一個人的信息錯誤原因:錄入信息后儲存后。無法知道信息的條數(shù)。讀取的時候只讀取了第一條。解決方案:在信息錄入的時候設置一個變量來記錄學生信息錄入的條數(shù)。并且將條數(shù)寫進文件中,讀取的時候將它先讀出來,再讀取學生信息。2)錄入學生信息后再次讀取,學生學號變?yōu)閬y碼。錯誤原因:錄入完信息后儲存了一個記錄學生信息條數(shù)的變量。這個數(shù)儲存的時候儲存在了文件的第一個位置。而學生信息所在的結構體則在后面,所以讀取的時候出錯。解決方法:將結構體的第一個用來儲存記錄學

29、生信息變化的數(shù)據(jù)。信息錄入則從第二個開始錄入。3)第二次錄入學生信息與第一次錄入學生信息的時候變量的設置問題。錯誤原因:在第一次錄入時讀不到設置的變量而第二次需要讀取設置的變 量。解決方案:在打開文件時增加一個判斷,文件是否為空,若是空則便是第一次寫入學生信息,則設置變量為0。若不為空,則讀取變量,并繼續(xù)進行累加。其他錯誤與此類似,便不一一舉例。用戶手冊)本系統(tǒng)執(zhí)行文件為:。) 進入系統(tǒng)界面后,在主菜單的中,選擇相應的操作前的數(shù)字,出現(xiàn)提示界面。根據(jù)提示輸入相關信息或得到預期結果。3)在輸入信息時:學號為字符型。姓名15 個漢字或110 個英文字母。性別男或女聯(lián)系方式為11 個數(shù)字家庭住址為1

30、20 個漢字??荚嚦煽兗皽y評成績都為 0100 的數(shù)字總結在五天的苦力后,我的學生信息綜合管理系統(tǒng)項目課程設計終于完工了,雖然系統(tǒng)還不夠完善,但是已經(jīng)具備了一個信息管理系統(tǒng)的基本功能。一周的課程設計,雖然很忙碌,但我感覺收獲很多,不僅僅在知識和技術上,而且我也懂得了很多人生哲理,懂得怎么樣去制定計劃,怎么樣去實現(xiàn)這個計劃。曾經(jīng)有過放棄本系統(tǒng)的念頭,曾經(jīng)有過敷衍了事的想法。但是每一次技術突破的喜悅,都讓我堅定了勝利的信念。通過這次程序設計,讓我更好的了解C 語言,對系統(tǒng)的編譯有了更深刻的認識。在測試和調試方面,曾經(jīng)天真的一位編程才是最浪費時間的,在這次實踐中,讓我更加清楚的認識到,軟件測試和調試

31、在整個工作中所占的比例。也讓我更加相信調試是軟件開發(fā)中最艱巨的腦力勞動。本次課程設計中出現(xiàn)了許多隱藏的錯誤,令我收獲不少。但我相信也一定會有很多未發(fā)現(xiàn)的問題,特別是在以后的系統(tǒng)擴展中,種些問題會更明顯,但我相信問題的出現(xiàn)就是需要我們去解決。通過這次課程設計我通徹的體會到了一個問題:在做實驗前一定要將課本上的知識吃透,因為這是實驗的基礎,否則,這將使你做實驗的難度加大,浪費做實驗的寶貴時間。比如說文件的使用,因為沒有將文件的使用學習貫徹,所以導致在調試的時候出現(xiàn)各種錯誤。在做實驗的時候才去摸索,這將使我極大地浪費時間。在這次課程設計中我學到了很多很多。受益匪淺??傮w來說,這次 C語言程序設計實驗

32、還是比較成功的,雖然最終程序還存在一些不足,但能取得這樣的成績我還是比較高興的。最后,要感謝學校為我們提供這次實驗機會,也要感謝老師的教導,幫助與支持參考文獻1張磊編著C語言程序設計教程第2版中國鐵道出版社2薛小龍編著開發(fā)日記:深入體驗C語言項目開發(fā)清華大學出版社3劉宇君張月琴葉瑤王慶生編著C+卷序設計案例分析清華大學出版社附錄/* 學生綜合測評系統(tǒng)*/#include#include#include#define N 5000 struct studentint num;char name20;char sex10;char home200;int s1;int s2;int s3;int

33、ave;int Tel;int m1;int a1;int a2;int a3;double z;int m2;stuN;void one();void info();void data();void look();void help();void info_1();/* 學號 */* 學生姓名 */*性別 男/女*/ TOC o 1-5 h z /* 家庭住址*/*語文成績*/*數(shù)學成績*/*英語成績*/*三科平均成績*/*聯(lián)系方式*/*考試名次 */* 同學互評分*/* 品德成績 */*任課教師評分*/*綜合測評總分*/*綜合測評名次*/*主菜單函數(shù)聲明 */* 信息處理函數(shù)聲明*/*數(shù)據(jù)

34、處理函數(shù)聲明*/*綜合信息顯示函數(shù)聲明 */* 用戶指南函數(shù)聲明*/*信息錄入函數(shù)聲明*/void sort_num(struct student a, int n);/* 學號排序函數(shù)聲明 */void sort_ave(struct student a, int n);/*平均分排序函數(shù)聲明 */void sort_z(struct student a, int n);/* 綜合成績排序函數(shù)聲明 */void info_2();/*信息修改函數(shù)聲明*/void info_3();/*信息瀏覽函數(shù)聲明*/void data_1();/*考試成績錄入及處理函數(shù)聲明 */void data_2(

35、);/*測評成績錄入及處理函數(shù)聲明 */void data_3();/*數(shù)據(jù)修改函數(shù)聲明 */void data_4();/*數(shù)據(jù)查詢函數(shù)聲明 */ int count;int main(void)one();return 0;void one()/* 主菜單函數(shù)*/int opt1;/*主菜單選項*/printf( 歡迎使用學生綜合測評系統(tǒng)nn);printf( 1: 學生信息處理2:學生數(shù)據(jù)處理nn 3: 學生綜合信息);printf( 4 :用戶使用指南nn);printf( 5:退出 nn);printf( 請輸入 1 2 3 4 5 中的任意一個選項進行操作:);loop: scan

36、f(%d, &opt1);switch (opt1)info();break;data();break;look();break;help();break;break;default:printf( 輸入錯誤,請重新輸入 1 2 3 4 5 中的一項 );scanf(%d, &opt1);goto loop;void help()int i;printf( 本系統(tǒng)可以存儲學生的基本信息和各科成績,并能計算考試成績,綜合測評成績和排名。 nn );printf( 基本信息包括:學號、姓名、性別、家庭住址、聯(lián)系電話; nn 各科成績包括:語文、數(shù)學、英語成績; nn);printf( 其它包括:考

37、試名次、同學互評分、品德成績、任課教師評分等。 nn);printf( 說明:考試成績排名是按照考試成績平均分計算的 ( 平均分=(語 +數(shù) +外 )/3)nn);printf( 綜合測評總分=(考試成績 )*+ (同學互評分) *+( 品德成績 )*n+(任課教師評分 )*nn);printf( 此系統(tǒng)最多可管理5000人信息。 );printf( 其它請按照提示操作即可。 n);printf(返回上一層請輸入1);loop:scanf(%d,&i);if(i=1)one();elseprintf(輸入錯誤請重新輸入:”);goto loop; TOC o 1-5 h z void info

38、()/*信息處理函數(shù)*/int opt2; /*子菜單選項*/printf(nn 歡迎進入信息處理nn);printf(1.學生信息錄入nn 2.學生信息的修改nn);printf(3.返回nn);printf(請輸入 1 2 3 中的任意一個選項進行操作);loop: scanf(%d, &opt2);switch (opt2)info_1();break;info_2();break;one();break;default: printf( 輸入錯誤,請重新輸入1 2 3 中的一項 );goto loop; void info_1() /*信息錄入函數(shù)*/FILE *fp;int s, i

39、,count;count=0;i = 1;if(fp = fopen(stu,rb+) = NULL)if(fp = fopen(stu,wb) = NULL)printf(Cont open filen);exit(1);stu0.num=0;elsefclose(fp);if(fp = fopen(stu,ab+) = NULL)printf(Cont open filen);exit(1);fread(stu,sizeof(struct student),N,fp);fscanf(fp,%d,&stu0.num);loop:printf(nn您將開始錄入學生信息n輸入1將繼續(xù)n輸入0將退

40、出n輸入2將返回上一層 );looo: scanf(%d, &s);switch (s)case 0:break;count+;printf(nn 您將輸入第%d 學生的信息: ,count);printf(n 學號:);scanf(%d,&stui.num);printf( 姓名:);scanf(%s,);printf( 性別 :);scanf(%s,stui.sex);printf( 家庭住址: );scanf(%s,stui.home);printf( 聯(lián)系電話 :);scanf(%d,&stui.Tel);i+;goto loop;break;info();break

41、;default:printf(n 輸入錯誤,請重新輸入 0 1 2 中的一項 );goto looo;sort_num(stu, i);stui+1.num=0;stu0.num += count;fseek(fp, 0, SEEK_SET);fwrite(stu, sizeof(struct student), N, fp);fseek(fp, 0, SEEK_SET);fread(stu, sizeof(struct student), N, fp);for(i=1;i=stu0.num;i+)printf(%dn,stui.num);system(pause);fclose(fp);v

42、oid info_2() /*信息修改函數(shù)*/FILE *fp;int j;if (fp = fopen(stu, rb) = NULL)printf(Can not open filen);exit(1);/* 打開文件 */fread(stu, sizeof(struct student),1 , fp);for(j = 1;j =stu0.num;j+)fread(&stuj, sizeof(struct student),1 ,fp);fclose(fp);int i, num, xu, a;llll: printf(nn 請輸入需要修改信息的學生的學號: n);scanf(%d, &

43、num);for (i = 1; i= stu0.num) printf( 查無此人 );return ;printf( 請問您是否是需要修改此生的信息: );printf( 學號 %d 姓名 %s 性別 %s 家庭住址 %s 聯(lián)系電話 %d, stui.num, , stui.sex, stui.home, stui.Tel);printf(nn 如果是請輸入 1 不是請輸入 2: n);loop:scanf(%d, &xu);switch (xu)printf( 請輸入新的信息 n);printf( 學號: );scanf(%d, &stui.num);printf(姓名

44、:);scanf(%s, );printf( 性別 :);scanf(%s, stui.sex);printf( 家庭住址: );scanf(%s, stui.home);printf( 聯(lián)系電話 :);scanf(%d, &stui.Tel);printf( 完成修改! );break;break;default:printf(n 輸入錯誤,請重新輸入 0 1 中的一項 );goto loop;/* 修改學生信息*/if (fp = fopen(stu, wb) = NULL)printf(Can not open filen);exit(1);/* 打開文件 */fwri

45、te(stu, sizeof(struct student), stu0.num, fp); /* 寫入文件中 */fclose(fp);printf(n 是否繼續(xù)修改學生信息 n 是請輸入 1 n 退出請輸入 2n 返回上一層請輸入 0);lllk:scanf(%d, &a);switch (a)case 0:info();break;goto llll;break;break;default:printf(n 輸入錯誤,請重新輸入 0 1 2 中的一項 );goto lllk;/* 關閉文件 */void data()/*數(shù)據(jù)處理函數(shù)*/int opt3;printf(nn/*子菜單選項*

46、/歡迎進入數(shù)據(jù)處理nn);printf(1.考試成績錄入及處理nn2.測評成績錄入及處理nn);printf(3.學生數(shù)據(jù)修改nn 4.學生數(shù)據(jù)查詢n);printf(5.返回nn);printf(nn 請輸入 1 2 3 4 5 中的任意一個選項進行操作);loop: scanf(%d, &opt3);switch (opt3)data_1();break;data_2();break;data_3();break;data_4();break;one();break;default:printf( n 輸入錯誤,請重新輸入 1 2 3 4 中的一項 n);goto loop;void da

47、ta_1()/*數(shù)據(jù)修改函數(shù)*/int m;FILE *fp;if (fp = fopen(stu, rb) = NULL)printf(Can not open filen);exit(1);fread(stu, sizeof(struct student),1 , fp);for(m = 1;m = stu0.num;m+)fread(&stum, sizeof(struct student),1 ,fp);fclose(fp);int i, num, xu, a;llll: printf(nn 請輸入需要錄入成績的學生的學號: n);scanf(%d, &num);for (i = 1;

48、 i= stu0.num) printf( 查無此人 );return ;printf( 請問您是否是需要錄入此生的考試成績的數(shù)據(jù): );printf( 學號 %d 姓名 %s 性別 %s 家庭住址 %s 聯(lián)系電話 %d n, stui.num, , stui.sex, stui.home, stui.Tel);printf(nn 如果是請輸入 1 不是請輸入 2: n);loop:scanf(%d, &xu);switch (xu)printf(nn 您將輸入此學生的考試成績: n);looo:printf( 語文成績: );scanf(%d, &stui.s1);if (

49、stui.s1100) printf( 輸入錯誤請重新輸入);goto looo;printf( 數(shù)學成績: );looi:scanf(%d, &stui.s2);if (stui.a2100) printf( 輸入錯誤請重新輸入);goto looi;printf( 英語成績: );looy:scanf(%d, &stui.s3);if (stui.a1100) printf( 輸入錯誤請重新輸入);goto looy;break;default:printf(n 輸入錯誤,請重新輸入 0 1 中的一項 );goto loop;int j;for (j = 1; j=a; j+)/* 求其平

50、均分*/* 根據(jù)平均分排序*/* 錄入其考試名次*/* 根據(jù)學號排序*/stuj.ave = (stuj.s1 + stuj.s2 + stuj.s3) / 3);sort_ave(stu, a);for (j = 1; j=a; j+)stuj.m1 = j;sort_num(stu, a);if (fp = fopen(stu, wb) = NULL)printf(Can not open filen);exit(1);/* 打開文件 */fwrite(stu, sizeof(struct student), N, fp); /* 寫入文件中 */fclose(fp);printf(n 是

51、否繼續(xù)錄入學生數(shù)據(jù) 是請輸入 1 否請輸入 2n);lllk:scanf(%d, &a);switch (a)goto llll;break;break;default:printf(n 輸入錯誤,請重新輸入 0 1 中的一項 );goto lllk;fclose(fp);/* 關閉文件 */void data_2()/*測評成績錄入及處理函數(shù)*/int m;FILE *fp;if (fp = fopen(stu, rb) = NULL)printf(Can not open filen);exit(1);fread(stu, sizeof(struct student),1 , fp);fo

52、r(m = 1;m = stu0.num;m+)fread(&stum, sizeof(struct student),1 ,fp);fclose(fp);int i, num, xu, a;llll: printf(nn 請輸入需要錄入成績的學生的學號: n);scanf(%d, &num);for (i = 1; i= stu0.num) printf( 查無此人 );return ;printf( 請問您是否是需要錄入此生的考試成績的數(shù)據(jù): );printf( 學號 %d 姓名 %s 性別 %s 家庭住址 %s 聯(lián)系電話 %d n, stui.num, , stui.s

53、ex, stui.home, stui.Tel);printf(nn 如果是請輸入 1 不是請輸入 2: n);int s;looh: scanf(%d, &s);switch (s)case 0: break;case 1:printf(nn 您將輸入此學生的測評成績: n);printf( 同學互評分: );scanf(%d, &stui.a1);if (stui.a1100) printf( 輸入錯誤請重新輸入);goto looo;printf( 品德成績: );scanf(%d, &stui.a2);if (stui.a2100) printf( 輸入錯誤請重新輸入);goto lo

54、oi;printf(任課老師評分:);looy:scanf(%d, &stui.a3);if (stui.a3100) printf( 輸入錯誤請重新輸入);goto looy;break;default:printf(輸入錯誤,請重新輸入0 1中的一項)scanf(%d, &s); goto looh;int j;for (j = 1; j=a; j+) stuj.m2 = (stuj.m1* + stuj.a1* + stuj.a2*+stuj.a3* );sort_ave(stu, a);/* 求其平均分*/* 根據(jù)平均分排序*/for (j = 1; j=a; j+) /* 錄入其考試

55、名次*/* 根據(jù)學號排序*/stuj.m2 = j;sort_num(stu, a);if (fp = fopen(stu, wb) = NULL)printf(Can not open filen);exit(1);/* 打開文件 */fwrite(stu, sizeof(struct student), N, fp); /* 寫入文件中 */fclose(fp);printf(n 是否繼續(xù)錄入學生數(shù)據(jù) 是請輸入 1 否請輸入 2n);lllk:scanf(%d, &a);switch (a)goto llll;break;break;default:printf(n 輸入錯誤,請重新輸入

56、0 1 中的一項 );goto lllk;fclose(fp);/* 關閉文件 */void data_3()/*數(shù)據(jù)修改函數(shù)*/int m;FILE *fp;if (fp = fopen(stu, rb) = NULL)printf(Can not open filen);exit(1);fread(stu, sizeof(struct student),1 , fp);for(m = 1;m = stu0.num;m+)fread(&stum, sizeof(struct student),1 ,fp);fclose(fp);int i, num, xu, a;llll: printf(n

57、n 請輸入需要修改數(shù)據(jù)的學生的學號: n);scanf(%d, &num);for (i = 1; i= stu0.num) printf( 查無此人 );return ;printf( 請問您是否是需要修改此生的數(shù)據(jù): );printf( 學號 %d 姓名 %s 性別 %s 家庭住址 %s 聯(lián)系電話 %d n, stui.num, , stui.sex, stui.home, stui.Tel);printf( 語文 %d 數(shù)學 %d 英語 %d 平均分 %d 考試名次 %d n, stui.s1, stui.s2, stui.s3, stui.ave, stui.m1);

58、printf( 同學互評分%d 品德成績 %d 任課教師評分%d 綜合測評總分%d 綜合排名 %d, stui.a1, stui.a2, stui.a3, stui.z, stui.m2);printf(nn 如果是請輸入 1 不是請輸入 2: n);loop:scanf(%d, &xu);switch (xu)printf( 請輸入新的信息 n);printf( 語文成績:);scanf(%d, &stui.s1);printf( 數(shù)學成績:);scanf(%d, &stui.s2);printf( 英語成績 :);scanf(%d, &stui.s3);printf(平均分:);scanf

59、(%s, &stui.ave);printf( 考試排名 :);scanf(%d, &stui.m1);printf( 同學互評分: );scanf(%d, &stui.a1);printf( 品德成績: );scanf(%d, &stui.a2);printf( 任課教師評分:);scanf(%d, &stui.a3);printf( 綜合成績: );scanf(%fl, &stui.z);printf( 綜合排名 :);scanf(%d, &stui.m2);printf( 完成修改! );break;break;default:printf(n 輸入錯誤,請重新輸入 0 1 中的一項 )

60、;goto loop;/* 修改學生數(shù)據(jù)*/if (fp = fopen(stu, wb) = NULL)printf(Can not open filen);exit(1);/* 打開文件 */fwrite(stu, sizeof(struct student), stu0.num, fp); /* 寫入文件中 */ fclose(fp);printf(n 是否繼續(xù)查詢學生數(shù)據(jù) 是請輸入 1 否請輸入 2n);lllk:scanf(%d, &a);switch (a)goto llll;break;break;default:printf(n 輸入錯誤,請重新輸入 0 1 中的一項 );go

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論