學生成績管理系統(tǒng)實訓報告_第1頁
學生成績管理系統(tǒng)實訓報告_第2頁
學生成績管理系統(tǒng)實訓報告_第3頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、鄭州輕工業(yè)學院實訓報告實訓名稱:學生成績管理系統(tǒng)姓 名:褚超院(系):軟件學院專業(yè)班級:網(wǎng)絡(luò)軟件開發(fā) 14-01班學 號:0103指導(dǎo)教師:孫海燕成 績:時間:2015年1月5日至2015年1月9日目錄實訓任務(wù)書 實訓進度日歷 實訓報告實訓感想實訓任務(wù)書一、題目“學生成績管理系統(tǒng)”設(shè)計二、學生信息專業(yè)學號姓名三、用戶需求及約束條件1用C語言實現(xiàn) “學生成績管理系統(tǒng)”。2、設(shè)計“學生成績管理系統(tǒng)”的用戶界面,系統(tǒng)啟動進入后,只能通過界面菜單指令才能退出。3、“學生成績管理系統(tǒng)”具有以下功能:1)系統(tǒng)啟動后,彈出一個用戶界面,能實現(xiàn)人機交互的功能。而且只能通過界面菜單命令實現(xiàn)各種功能(包括系統(tǒng)退出

2、功能)。2) 錄入學生成績(信息有:班級、姓名、學號、五門課程成績);3)計算每門功課的平均成績和學生五門功課的平均成績并存檔。下面的功能必須是第 3)項功能完成以后才能進行。4)輸出學生的信息和對應(yīng)的原始成績以及平均成績;5)按平均成績進行排序,輸出排序后的學生信息以及對應(yīng)的課程成績和平均成績。6)對成績修改,分別有兩種模式,一種是按學號查找后進行修改;另一種是按姓名查找后進行修改;修改后重新排序?qū)W生的順序,并輸出學生信息和對應(yīng)課程成績和平均成績。7)增補遺漏的學生以及對應(yīng)的信息和對應(yīng)的課程成績,并計算出平均成績,增補以后重新排序?qū)W生順序,并輸出學生信息和對應(yīng)課程成績和平均成績。8)附加功能

3、:把學生信息和對應(yīng)的課程成績和平均成績存入到文件中。9)附加功能:輸出文件中的內(nèi)容。10)附加功能:試著從文件中導(dǎo)入數(shù)據(jù)到成績管理系統(tǒng)中,然后進行管理。四、設(shè)計要求、技術(shù)參數(shù)及設(shè)計規(guī)格1、 原始成績由老師統(tǒng)一給出,在Excel表中;2、設(shè)計的系統(tǒng)能夠運行,提交源程序、目標文件和可執(zhí)行文件;3、 提交實訓報告,實訓報告中列寫:1)軟件需求分析;2)軟件規(guī)格說明和設(shè)計要求;3)對數(shù)據(jù)的管理方案;4) “學生成績管理系統(tǒng)”設(shè)計的思路和整體框架;5)各功能或者模塊實現(xiàn)的思路(或者用帶注釋的程序代替)并交待模塊之間的接口關(guān)系;6) “學生成績管理系統(tǒng)”設(shè)計的結(jié)果(可以用一些屏幕拷貝的圖來補充說明)。4、

4、程序設(shè)計環(huán)境為 Visual C+ 或DEV C+5、所有的設(shè)計工作需要同學自己真實地、獨立地完成。五、工作量天/日期任務(wù)描述通過標準2015 年上午:熟悉系統(tǒng)功能,文檔通過1月5日完成三項任務(wù)(用文檔記錄):1)軟件需求分析;2)軟件規(guī)格說方案通過明和設(shè)計要求;3)對數(shù)據(jù)的管理方案。數(shù)據(jù)結(jié)構(gòu)通過下午:構(gòu)思“學生成績管理系統(tǒng)”的思路和整體框架。設(shè)計的函數(shù)框架通過設(shè)計數(shù)據(jù)結(jié)構(gòu)(命名),設(shè)計函數(shù)框架(命名,考慮參數(shù)的類型和要求數(shù)據(jù)傳遞接口正常,main函個數(shù),即考慮數(shù)據(jù)之間的傳遞關(guān)系)。設(shè)計被系統(tǒng)調(diào)用的 main函數(shù);數(shù)能運行。實現(xiàn)界面函數(shù);設(shè)計各功能子函數(shù)的框架;2015 年上午:實現(xiàn)成績錄入功

5、能;各子函數(shù)調(diào)試通過,能被main函1月6日下午:實現(xiàn)計算平均成績功能;實現(xiàn)輸出功能;數(shù)成功調(diào)用,其子功能能實現(xiàn)。2015 年上午:實現(xiàn)排序功能;各子函數(shù)調(diào)試通過,能被main函1月7日下午:實現(xiàn)修改功能;實現(xiàn)增補功能 (選做);數(shù)成功調(diào)用,其子功能能實現(xiàn)。2015 年上午:實現(xiàn)查找功能,按學號查找、按姓名查找;各子函數(shù)調(diào)試通過。1月8日下午:實現(xiàn)自身特色功能,如登陸、鏈表操作、文件存儲數(shù)據(jù);2015 年上午:完善“成績管理系統(tǒng)的各項功能”。撰寫實訓報告。系統(tǒng)能正確運行,界面友好);1月8日實踐能力強的同學實現(xiàn)附加功能。各功能能夠?qū)崿F(xiàn),性能良好操作方下午:繼續(xù)寫實訓報告并且驗收設(shè)計的項目。便。

6、備注:做得慢的同學選做部分可不做。六、考核形式、考核時間、考核指標及成績評定實訓成績由下面構(gòu)成: 實訓紀律、實訓態(tài)度和平時表現(xiàn)占 20%實訓結(jié)果占30%實訓報告占30% 實踐操作能力占20%考核形式:1)老師每日對學生的考察、評估和考核;2)最后對實訓項目完成的質(zhì)量進行考核和驗收。完成期限:2015年01月09日指導(dǎo)教師簽章: 孫海燕專業(yè)負責人簽章:崔建濤教學院長簽章宋勝利實訓進度日歷題 目學生成績管理系統(tǒng)指導(dǎo)教師孫海燕、張玲、 陳明學 生 班 級軟件學院網(wǎng)絡(luò)軟件 14-01 網(wǎng)絡(luò)軟件14-02, 技14-02學年 學期14 15學年第1學期天實訓任務(wù)詳細描述教師實訓任務(wù)的指導(dǎo)(解決方案、實現(xiàn)

7、步驟、 技術(shù)路線、難點提示)通過標準15年1月5日上午完成:1)軟件需求 分析;2)軟件規(guī)格 說明和設(shè)計要求; 3)對數(shù)據(jù)的管理方 案。對軟件功能進行分類。用戶界面操作簡單、功能完備,系統(tǒng)啟動后先 錄入數(shù)據(jù),再求平均成績;平均成績求出后, 其他的功能才能實現(xiàn)。數(shù)據(jù)結(jié)構(gòu)可以采用數(shù)組也可以采用鏈表。文檔通過驗收下午構(gòu)思“學生成績管 理系統(tǒng)”的思路和 整體框架。設(shè)計數(shù)據(jù)結(jié)構(gòu)(命 名),設(shè)計函數(shù)框架(命名,考慮參數(shù) 的類型和個數(shù),即 考慮數(shù)據(jù)之間的傳 遞關(guān)系) 設(shè)計被系統(tǒng)調(diào)用的 main函數(shù);設(shè)計界 面函數(shù);如果采用數(shù)組管理數(shù)據(jù)結(jié)構(gòu),則數(shù)組必須按地 址傳遞,這樣數(shù)據(jù)才能在各個函數(shù)間共享。難點1:系統(tǒng)的

8、退出,exit()函數(shù)需要包含難點2 :清屏函數(shù)clrscr();難點3 :數(shù)據(jù)的傳遞設(shè)計的 函數(shù)框 架通過 調(diào)試, 要求數(shù) 據(jù)傳遞 接口正 八t /丿吊,main 函數(shù)能 運行。15年1月6日上午設(shè)計數(shù)據(jù)錄入函 數(shù),從鍵盤讀數(shù)據(jù) 到數(shù)組中,或者創(chuàng) 建鏈表難點1:數(shù)據(jù)輸入完后,怎樣控制結(jié)束?用一 個什么標志。難點2:結(jié)構(gòu)體數(shù)組中的子域又是一個數(shù)組 時,數(shù)據(jù)不能直接從鍵盤讀入, 需用一個臨時 變量中轉(zhuǎn)一下。難點3:從鍵盤錄入數(shù)據(jù)時,要給完全的提示 信息,便于操作指導(dǎo)。各子函 數(shù)調(diào)試 通過,能 被 mai n 函數(shù)成 功調(diào)用下午計算平均成績的函數(shù)實現(xiàn); 輸出原始成績;難點4:想一想:在錄入數(shù)據(jù)時數(shù)

9、據(jù)保存到一 數(shù)組,那么在算平均值時,怎樣能接觸到此數(shù) 組中的數(shù)據(jù)。輸出按照一定的格式,好看。各子函數(shù)調(diào)試 通過,能被 main函數(shù)成 功調(diào)用。15年1月7日上午排序功能實現(xiàn)并輸 出排序后的成績。按平均成績排序。排序的算法可以是泡泡法或者選擇法等思考1:你還可以分別在每個班中按平均成績 排序嗎?思考2:能輸出有不及格課程的同學信息和成 績嗎?各子函 數(shù)調(diào)試 通過,能 被 mai n 函數(shù)成 功調(diào)用。下午實現(xiàn)查找功能按姓名查找以后,再修改;按學號查找以后,再修改; 如果要用對半查找法,需要數(shù)據(jù)是有序的。各子函 數(shù)調(diào)試 通過,能 被 mai n 函數(shù)成 功調(diào)用。15年1月8日上午能對某一學生信息 和

10、成績進行修改; 能增加學生的信息(選做);查找到某一學生,修改某一屬性,如果需要重 新排序,重新排序,把結(jié)構(gòu)存入文件; 難點:怎樣從鍵盤中把成績存入文件。增加后重新排序,重新輸出。難點:怎樣從文件中讀出數(shù)據(jù)下午自定義功能實現(xiàn)女口:登陸:密碼輸入顯示 * ;等15年1月9日上午完成實訓報告難點:清晰、明確、簡單、評價合理、有自己 的見解、創(chuàng)新。實訓報告內(nèi)容:任務(wù)書、實訓進度計劃、大綱 性的目錄、正文、實訓感想、附件。實訓報告要求裝訂整齊。系統(tǒng)能 正確運 行,界面 友好); 各功能 能夠?qū)?現(xiàn),性能 良好操 作方便。下午驗收程序 討論系統(tǒng)能 正確運 行,界面 友好); 各功能 能夠?qū)?現(xiàn),性能 良

11、好操 作方便。制訂教師:孫海燕、張玲實訓報告1.軟件需求分析、用C語言編寫程序?qū)崿F(xiàn)“學生成績管理系統(tǒng)”。 、設(shè)計“學生成績管理系統(tǒng)”的用戶界面,系統(tǒng)啟動進入后,只能通過界面菜單指 令才能退出。、系統(tǒng)啟動后,彈出一個用戶界面,能實現(xiàn)人機交互的功能。而且只能通過界面菜 單命令實現(xiàn)各種功能(包括系統(tǒng)退出功能) ;、錄入學生成績(信息有:班級、姓名、學號、五門課程成績) ; 、計算每門功課的平均成績和學生五門功課的平均成績并存檔; 、輸出學生的信息和對應(yīng)的原始成績以及平均成績;、按平均成績進行排序,輸出排序后的學生信息以及對應(yīng)的課程成績和平均成績; 、對成績修改,有兩種模式,一種是按學號查找后進行修改

12、;另一種是按姓名查找 后進行修改; 修改后重新排序?qū)W生的順序, 并輸出學生信息和對應(yīng)課程成績和平均 成績;、增補遺漏的學生以及對應(yīng)的信息和對應(yīng)的課程成績, 并計算出平均成績, 增補以 后重新排序?qū)W生順序,并輸出學生信息和對應(yīng)課程成績和平均成績;、附加功能:把學生信息和對應(yīng)的課程成績和平均成績存入到文件中; 、附加功能:輸出文件中的內(nèi)容;、附加功能:試著從文件中導(dǎo)入數(shù)據(jù)到成績管理系統(tǒng)中,然后進行管理。2系統(tǒng)詳細設(shè)計及實現(xiàn)、系統(tǒng)用戶界面盡量居中,體現(xiàn)美觀效果; 、編寫的程序具有人機交互功能;、通過菜單選擇軟件的功能;、軟件只能由菜單退出系統(tǒng); 、操作信息提示(界面友好) ; 、具有攔截一些誤操作錯

13、誤的功能;、按原始成績格式輸出。設(shè)計要求:、根據(jù)老師給出的數(shù)據(jù)寫入;、設(shè)計的系統(tǒng)能夠運行,提交源程序、目標文件和可執(zhí)行文件; 、提交實訓報告,實訓報告中列寫;、程序設(shè)計環(huán)境為 DEV C+; 、所有的設(shè)計工作需要同學自己真實地、獨立地完成。3、對數(shù)據(jù)的管理方案結(jié)構(gòu)體數(shù)組和文件: 輸入的數(shù)據(jù)可以保存在文件中, 下次重新打開程序, 原先 已輸入的數(shù)據(jù)還在;(難度中等)顯示主菜單界面 */ 將信息加載到內(nèi)存中 */ 輸入指定的學生信息 */ 添加指定的學生信息 */ 將數(shù)組保存到磁盤 */ 輸出所有學生信息 */ 輸出指定的學生信息 */ 排序 */ 查找 */ 按學生學號查找 */ 修改指定的學生

14、信息 */ 刪除*/ 刪除所有學生信息 */ 刪除指定的學生信息 */以下為該程序的定義部分typedef struct studentchar clas5;char ID5;char name15;double score5;double sum;double avg;STU;在此處,我將學生的班級、學號和姓名都定義為 char 型,方便整體的使用。 特別是后面的部分子函數(shù)中用到的字符串比較函數(shù) strcmp ,方便了排序比較;將學生的成績定義為雙精度實型變量( double ),為了使計算的平均分更為精確。講 此定義放在程序的頭部, 作為整個程序使用。 為了使后面的子函數(shù)調(diào)用方便、 簡介,

15、 我用到 typedef struct student 定義。以下是該程序的函數(shù)聲明部分/* 以下是該程序的函數(shù)聲明部分 */ void Display(void); /* void Load(STU stu, int *n);/*void InputOne(STU stu, int i); /* void Add(STU stu, int *n); /* void Save(STU stu, int n); /* void Output(STU stu, int n);/*void Print(STU *s);/*void Sort(STU stu, int n);/*void Find(S

16、TU stu, int n); /* int FindID(STU stu, int n, char clas, char ID); /* void Edit(STU stu, int n);/*void Del(STU stu, int *n);/*void DeleteAll(STU stu, int *n); /* void DeleteOne(STU stu, int *n);/*以上是該程序的全部聲明部分,這些聲明函數(shù)與下文的各功能函數(shù)相互對應(yīng),且順序依次排列, 方便查找和修改。 在這些聲明的函數(shù)中, 用到了引用數(shù)組以及指 針,方便了下面各功能函數(shù)的使用以及調(diào)用。以下是該程序的主函數(shù)

17、部分int main()STU stuN;int n;int select;Load(stu, &n);while(1)Display();scanf("%d", &select);switch(select)case 1:/* 輸入 */Add(stu, &n); break;case 2: /* 輸出 */Output(stu, n); break;case 3: /*排序 */Sort(stu, n); break;case 4: /*查找 */Find(stu, n); break;case 5:/*修改 */Edit(stu, n); br

18、eak;case 6:/*刪除 */Del(stu, &n); break;case 7:/*退出 */return 0;以上是該函數(shù)的函數(shù)部分,用到了 switch 語句,分別針對 7 種功能分情況列 出。在下面的各分函數(shù)中, 處理完的數(shù)據(jù)值會根據(jù)具體需要返還到主函數(shù)中, 并且 顯示在主界面中。方便用戶查看。利用 switch 的好處在于,分情況列出各種需要 的可能性,條例清晰,可讀性強,并且十分方便。以下是該程序的主界面部分/* 以下為該程序的主界面 */ void Display()system("cls");printf("鄭州輕工業(yè)學院考試成績管

19、理系統(tǒng) n");printf("n");printf("班級:網(wǎng)絡(luò)軟件開發(fā)14-01班n");printf("n");printf("學號:0103n");printf("n");printf("作者:褚超n");printf("*n");printf("1:輸入學生資料 n");printf("n");printf("2:輸出學生成績3:資料進行排序n");printf("n

20、");printf("4:查找學生資料5:修改學生資料n");printf("n");printf("6:刪除學生資料7:退出管理系統(tǒng)n");printf("n");printf("*n");printf(" 歡迎進入成績管理系統(tǒng),請選擇(你只需輸入 17 中的其中一個數(shù)字便可進行下一 步操作) n");以上為該程序?qū)嶋H操作的主界面, 具有 6大基本功能。 用戶可以根據(jù)需要進行相關(guān)操作,實現(xiàn)所需要的功能。在此界面中,用到了清屏函數(shù),方便用戶更好的體 驗該程序,不至于

21、界面混亂。void Load(STU stu, int *n)FILE *fp;int i;if(fp=fopen("d:", "r+") = NULL) /*n = 0;return;for(i=0; fread(&stui,sizeof(STU),1,fp)!=0;i+); /*n = i; /* 學生數(shù)量 */fclose(fp); /*以'r+'打開可讀寫的文件*/將信息讀取到 stu 中 */ 這里 *n 的作用為記錄文件中當前關(guān)閉文件 */*/以上是該程序的從文件中讀取數(shù)據(jù)的函數(shù)部分。 用到了指針, 從所指定的文件 讀

22、取到輸入后保存在該文件中的信息, 并顯示在主界面中。 用戶可以直接將該文件 拷貝到指定文件夾中, 當執(zhí)行一次源代碼的編譯后, 該系統(tǒng)就知道了這些數(shù)據(jù)所在 的文件,當用戶執(zhí)行程序運行時,選擇相關(guān)的功能時,便可直接在主界面顯示,無 需再次輸入信息。 這樣以來, 該程序就具有了很強的實用性與使用性, 方便了用戶 處理數(shù)據(jù)。以下是該程序的輸入部分/* 輸入第 i 個學生信息, 保存到 stu 數(shù)組中 */void InputOne(STU stu, int i)int j;/* 輸入學生信息 */printf(" 請輸入學生班級、學號、姓名 ( 數(shù)據(jù)間以空格隔開 ):"); sca

23、nf("%s%s%s", &stui.clas, &stui.ID, &);/* 輸入五門課程成績并累加 */printf(" 請依次輸入課程 1、2、3、4、5成績 (數(shù)據(jù)間以空格隔開 ):");stui.sum = ;for(j=0; j<5; j+)scanf("%lf", &stui.scorej);stui.sum += stui.scorej;/* 計算五門課程的平均分 */stui.avg = stui.sum / 5;/* 調(diào)用 InputOne 函數(shù)添加若干學生

24、信息,并把新添加的學生信息依次保存到文件中 */ void Add(STU stu, int *n)int i=0;char s = 'y'while(s = 'y')InputOne(stu, (*n)+); /* 添加第 n+1 個學生的信息 */printf(" 是否繼續(xù)添加 ( 請輸入 y or n)n");scanf(" %c", &s);Save (stu, *n);void Save(STU stu, int n)FILE *fp;if(fp=fopen("d:", "w

25、") = NULL)printf(" 打開文件失敗 n");exit(0);fwrite(stu, n * sizeof(stu0), 1, fp);fclose(fp);/*以上為該程序的第一個功能函數(shù)部分, 可實現(xiàn)學生信息的錄入功能, 所錄入的 文件即。用戶可以根據(jù)需要輸入一個或多個學生信息。 只需要在輸入一個學生信息 完成后,判斷是否繼續(xù)錄入學生信息即可。 當輸入 y 時,可繼續(xù)輸入一個或多個學 生信息,操作與之前相同;當輸入其它字母時,輸入學生信息結(jié)束,程序返回到該 程序的原始主界面。 可繼續(xù)選擇其它相關(guān)操作。 方便用戶處理數(shù)據(jù), 解決了單次功 能實現(xiàn)后,

26、程序退出的問題。" 成績 1", "成績 2",相關(guān)的學生信以下是該程序的輸出部分/* 輸出所有學生信息 */void Output(STU stu, int n)int i;/* 打印數(shù)據(jù)表頭 */printf(" 您需要的所有學生成績?nèi)缦?:n"); printf("n");printf("%8s%8s%8s%8s%8s%8s%8s%8s%8s%8s","班級","學號","姓名” "成績 3", " 成績 4&

27、quot;, " 成績 5", " 總分", " 平均分");for(i=0; i<n; i+)Print(&stui); system("pause");void Print(STU *s)int i;/* 打印所有學生的信息 */printf("%8s%8s%8s", s->clas, s->ID, s->name);for(i=0; i<5; i+)printf("%", s->scorei);printf("%&q

28、uot;, s->sum, s->avg);printf("n");/*/以上是學生信息輸出部分的函數(shù), 系統(tǒng)會自動打印出表頭信息。息會在其下一行依次展開并與表頭對齊。 程序?qū)崿F(xiàn)了信息的讀出功能, 方便了用戶 的查看與處理。 其中,輸出的學生成績都采用了 double 型,并保留兩位有效數(shù)字, 使數(shù)據(jù)更為準確。F面給出輸出學生信息時的主界面顯示情況以下是該程序的排序部分/* 對學生的信息進行排序 */void Sort(STU stu, int n)int select;int ScoreAsc(const void *a, const void *b);int

29、 ScoreDes(const void *a, const void *b);int NameAsc(const void *a, const void *b);printf("1: 按總成績升序排列 n"); printf("n");printf("2: 按總成績降序排列 n"); printf("n");printf("3: 按學生姓名排序 n"); scanf("%d", &select);switch(select)case 1: qsort(stu, n,

30、 sizeof(stu0), ScoreAsc); break; case 2: qsort(stu, n, sizeof(stu0), ScoreDes); break; case 3: qsort(stu, n, sizeof(stu0), NameAsc); break; default: return;Output(stu, n);/* 以下是按成績升序排序的分函數(shù) */int ScoreAsc(const void *a, const void *b)return (STU *)a)->sum > (STU *)b)->sum ? 1 : -1;/* 以下是按成績降

31、序排列的分函數(shù) */int ScoreDes(const void *a, const void *b)return (STU *)a)->sum < (STU *)b)->sum ? 1 : -1;/* 以下是按學生姓名升序排列的分函數(shù) */int NameAsc(const void *a, const void *b)return strcmp(STU *)a)->name, (STU *)b)->name);/*以上為該程序的排序函數(shù)部分,該函數(shù)實現(xiàn)了排序的功能,并且可以分別根據(jù) 總成績的高低進行升序以及降序排序,也可以根據(jù)學生的姓名進行排序。在這里, 為

32、了使三種排序功能方便處理、簡潔,我用到了switch語句,根據(jù)三種情況分別判斷。并根據(jù)用戶需要,將特定的排序方式信息反饋給用戶,用戶可以直接在該程 序的主界面進行查看,方便用戶處理學生信息。下面給出資料進行排序中的按總成績降序排列主界面顯示情況31:按憩成績升序排列2:抜邕成績降序排列.1 1 . IIJ 11 1k您需宴的所有學生戢績史口下:班級L1姓名成績L成績2成鄴成績4成績5總分平均分SO 25qua88*0089.0094.0083.0082.00436.00BT. 206024guang:73,00S5.0090.0093.0090.00434.0086.805019lin89.0

33、088.0093.0081,0083.CO434.0085.80501BchenKigg,oo54.0082,0080.00s?.co432.0088.405011wan£78.00S5.0092.0088.0084.00427.OC85.4050 Squn?8,0079.00瞅0083.0086,004084081,605038bo80.0081.0032.0079.0085.00407,0081.400017ddd77,0073,007B.Q063.0030.00392.0C78.40SO 28 dongfei73.0079.0080-0082.0077.00391.0078.

34、209016kanj77,0070.0076-0079.0076.00333,0077.00SO 2711178.0076.0055-0082.0080.00381.007S. 306031dent81.00S5.0073.006S.00Q6. CO373,00?4.0OSO 21hua65.0077.00T5-0078,0074.003S9,0C73.806035hesang;75,0070.0073_OO72.00n.co397,0073.40SO 29f eluiang:71.0065.00T2-0077,0074.00359.0071.800015lint67.0053.007C-00

35、79.0076.00356.0071. 20以下是該程序的查找部分/* 按學號查找學生信息 */void Find(STU stu, int n)int index;char clas5,ID5;printf(" 請輸入班級和學號 ( 數(shù)據(jù)間以空格隔開 ):");scanf("%s%s", clas, ID);index = FindID(stu, n, clas, ID);if(index > 0)Print(&stuindex);elseprintf(" 該學生信息不存在 !n");system("paus

36、e");/* 分別對學生班級和學號進行確定 */int FindID(STU stu, int n, char clas, char ID)int i;for(i=0; i<n; i+) /* 一旦找到該學生信息,則會自動返回對應(yīng)的下標 */if(strcmp(stui.ID, ID)=0 && strcmp(stui.clas, clas) =0)return i;return -1; /*/以上是查找學生信息的功能函數(shù)部分。 在此,因為有多個班級的信息存在, 因 此,避免不了學號一致的情況出現(xiàn)??蓪W號相同的學生,班級肯定不相同,因此為 了使查找的學生信息是用

37、戶所需要的信息。 我在查找函數(shù)中, 同時查找學生班級與 學生學號,這樣以來,就可以確定所需要查找的學生信息在主界面反饋給用戶時是 正確的。因此就需要用到一個 if 語句,只有在班級和學號都一致的情況下,才將 信息返回給用戶, 否則輸出該學生的信息不存在。 這樣以來, 學生信息的查找功能 就得以實現(xiàn)了。下面給出查找學生成績的主界面顯示情況以下是該程序的修改部分/* 修改指定的學生信息 */void Edit(STU stu, int n)int i, index;char s;char clas5,ID5;printf(" 請輸入班級和學號 ( 數(shù)據(jù)間以空格隔開 ):");s

38、canf("%s%s", clas, ID);index = FindID(stu, n, clas, ID);if(index < 0)printf(" 該學生信息不存在 !n");return;printf(" 以下是修改前的學生信息 n");Print(&stuindex);/* 修改學生成績 */printf(" 是否修改成績 ?( 請輸入 y or n)n");scanf(" %c", &s);if(s = 'y')stuindex.sum = 0

39、;printf(" 請輸入五門學科的成績 ( 數(shù)據(jù)間以空格隔開 ):");for(i=0; i<5; i+)scanf("%lf", &stuindex.scorei);stuindex.sum += stuindex.scorei;stuindex.avg = stuindex.sum / 5;Save(stu, n);/*/以上是修改學生信息的函數(shù)部分, 用戶可以通過輸入需要查找的學生的班級和 學號先找到該學生的具體信息, 主界面也會在同一時間將該學生的信息反饋到程序 的主界面。用戶可以通過判斷來確定是否修改學生信息, 如用戶確定修改該

40、學生的 信息,就會顯示請輸入需要修改的學生的成績。 用戶只需要將更新后的成績再次輸 入,就可以完成學生信息的修改功能, 并且將該次更新的成績存儲到指定的 2 文件 中,覆蓋原來的該學生信息。這樣以來,學生成績修改的功能就可以完成了。 下面給出修改學生資料主界面顯示情況 ( 待修改狀態(tài) )F面給出修改學生資料主界面顯示情況(修改完成狀態(tài))以下是該程序的刪除部分/* 刪除 */void Del(STU stu, int *n)int select;printf("1: 刪除指定的學生信息 n"); printf("n");printf("2: 刪除

41、所有的學生信息 n");scanf("%d", &select);switch(select)case 1: DeleteOne(stu, n); break;case 2: DeleteAll(stu, n); break;/* 從文件中刪除全部學生信息 */void DeleteAll(STU stu, int *n)char s;FILE *fp;printf(" 信息是否全部刪除? ( 請輸入 y or n)n");scanf(" %c", &s);if(s = 'y')fp = fo

42、pen("d:", "w"); /*以 'w' 方式打開可覆蓋原來的文件 */0*/*n = 0; /* 內(nèi)存中的數(shù)組 stu 中元素個數(shù)變?yōu)?printf(" 刪除完成! n");fclose(fp);/* 刪除指定的學生信息 */void DeleteOne(STU stu, int *n)int i, index;FILE *fp;char clas5,ID5;printf(" 請輸入班級和學號 ( 數(shù)據(jù)間以空格隔開 ):");scanf("%s%s", clas, ID)

43、;index = FindID(stu, *n, clas, ID);if(index < 0)printf("n 該學生信息不存在! n"); return;for(i=index; i < *n-1; i+)stui = stui+1;(*n)-;if(fp=fopen("d:", "w")=NULL) /*以 'w' 的方式打開可清除文件 */printf(" 打開文件失?。?n");exit(0);printf("n 刪除成功 n");Save(stu, *n

44、); /* 保存到文件 */*/以上是該程序的刪除功能函數(shù)部分, 當用戶選擇該項功能時。 會彈出兩個選擇 項,分別是刪除指定的學生信息與刪除全部的學生信息。 用戶可以根據(jù)需要進行具 體的操作。當確定需要刪除學生信息時, 同樣需要輸入需要刪除的學生的班級與學 號,這樣,就可以確定刪除的學生信息就是我們需要刪除的那個學生的信息。 這樣 以來,刪除學生信息的功能,就可以實現(xiàn)了。F面給出刪除學生資料主界面顯示情況(待刪除狀態(tài))F面給出刪除學生資料主界面顯示情況(刪除完成狀態(tài))實訓感想回想,5天的C語言實訓經(jīng)歷,讓我受益匪淺。從一開始做的時候的各種迷茫 (沒有思路、對大程序產(chǎn)生恐懼、 不知如何下手 )到

45、現(xiàn)在的思路清晰, 雖然這幾天走 來實在不易,但我覺得還是非常值得的。 這次實訓讓我對編程有了更深層次的理解, 我越來越喜歡C語言了。現(xiàn)在想想,這樣的一個程序才算是真正的一個程序, 之前 的一個個小的題目,一個小的問題,一個小的程序,只是這樣一個程序的一部分。 當我把那些小程序綜合放在一塊,進行整體的處理,最終變成一個可讀性很高的、 整體性很強的大程序時, 我明白了小程序就是大程序的分支, 只要將小程序處理好, 再融入到一個整體中,一個看似復(fù)雜的大程序就可以迎刃而解了。記得,剛開始學C語言的時候,覺得很難。一句簡單的 This is a C program, 加頭加尾都有四五行, 我在想如果是一

46、個很大的內(nèi)容, 那要打多少,一定很麻煩吧! 就覺得那是好大的一個工程,很難實現(xiàn)。現(xiàn)在想想,只要用心去學,掌握完成C語言的語法技巧,是可以完成的。我現(xiàn)在對C語言的認識就是,把數(shù)學的思想應(yīng)用 在程序上,體現(xiàn)在各種函數(shù)上, 面對一個程序題時, 首先要有思路, 該怎樣去處理。 然后開始對需要處理的數(shù)據(jù)進行定義, 需要幾個變量, 變量的類型是什么。 如果是 數(shù)組的話, 還要考慮這個數(shù)組有多大, 需要定義多長的數(shù)組才能夠用。 然后就是編 寫程序的核心部分,將數(shù)學的算法思想,用函數(shù)體現(xiàn)出來,通過賦值語句,引用, 互換等,完成數(shù)據(jù)間的計算。在程序輸出的部分,確定好需要輸出數(shù)據(jù)的控制符, 比如如果是int型,那

47、輸出時的控制符就用d將各種數(shù)據(jù)一一對應(yīng)的輸入輸出, 就基本上可以完成一個程序。這周C語言的實訓,讓我明白。做出一個程序系統(tǒng)并不是一件簡單的事, 雖然 說也不是非常難的那種, 但是卻很考驗一個人的耐心以及細心程度。 第一天的時候, 其實,我不知道該怎樣做,一直坐在電腦旁想啊想,往往想的一頭霧水。這么大的 一個程序,要怎么入手。后來明白,我不該把它想的這么復(fù)雜,而是應(yīng)該像平時那 些小程序一樣,一個一個來,然后合起來成為一個大的程序。當思路清晰以后,我 明白該怎么去寫才能寫成。所以我覺得思路很重要,然后就是對語法的靈活運用, 這樣,才能自由的編寫一個程序。為什么要學習程序設(shè)計?計算機的本質(zhì)是“程序的機器” ,程序和指令的思想 是計算機系統(tǒng)中最基本的概念。學習程序設(shè)計能使我們了解計算機事怎樣工作的, 更好地理解和應(yīng)用計算機;能使我們懂得怎樣讓計算機按照人們的意圖進行工作; 學習使用計算機處理問題的方法, 能培養(yǎng)我們分析問題和解決問題的能力以及具有 編寫程序的初步能力。 非計算機專業(yè)的學生學習程序設(shè)計, 可以了解軟件的特點和 生產(chǎn)過程,能與程序開發(fā)人員更好的溝通, 有利于共同合作進行應(yīng)用軟件的開發(fā)

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論