


版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、鄭州輕工業(yè)學(xué)院實(shí)訓(xùn)報(bào)告實(shí)訓(xùn)名稱:學(xué)生成績(jī)管理系統(tǒng)姓 名:褚超院(系):軟件學(xué)院專業(yè)班級(jí):網(wǎng)絡(luò)軟件開發(fā) 14-01班學(xué) 號(hào):621413560103指導(dǎo)教師:孫海燕成 績(jī):時(shí)間:2015年1月5日至2015年1月9日目錄實(shí)訓(xùn)任務(wù)書實(shí)訓(xùn)進(jìn)度日歷實(shí)訓(xùn)報(bào)告實(shí)訓(xùn)感想實(shí)訓(xùn)任務(wù)書一、題目“學(xué)生成績(jī)管理系統(tǒng)”設(shè)計(jì)二、學(xué)生信息專業(yè)學(xué)號(hào)姓名三、用戶需求及約束條件1、用C語(yǔ)言實(shí)現(xiàn) “學(xué)生成績(jī)管理系統(tǒng)”。2、設(shè)計(jì)“學(xué)生成績(jī)管理系統(tǒng)”的用戶界面,系統(tǒng)啟動(dòng)進(jìn)入后,只能通過(guò)界面菜單指令才能退出。3、“學(xué)生成績(jī)管理系統(tǒng)”具有以下功能:1)系統(tǒng)啟動(dòng)后,彈出一個(gè)用戶界面,能實(shí)現(xiàn)人機(jī)交互的功能。而且只能通過(guò)界面菜單命令實(shí)現(xiàn)各種功能
2、(包括系統(tǒng)退出功能)。2) 錄入學(xué)生成績(jī)(信息有:班級(jí)、姓名、學(xué)號(hào)、五門課程成績(jī));3)計(jì)算每門功課的平均成績(jī)和學(xué)生五門功課的平均成績(jī)并存檔。下面的功能必須是第 3)項(xiàng)功能完成以后才能進(jìn)行。4)輸出學(xué)生的信息和對(duì)應(yīng)的原始成績(jī)以及平均成績(jī);5)按平均成績(jī)進(jìn)行排序,輸出排序后的學(xué)生信息以及對(duì)應(yīng)的課程成績(jī)和平均成績(jī)。6)對(duì)成績(jī)修改,分別有兩種模式,一種是按學(xué)號(hào)查找后進(jìn)行修改;另一種是按姓名查找后進(jìn)行修改;修改后重新排序?qū)W生的順序,并輸出學(xué)生信息和對(duì)應(yīng)課程成績(jī)和平均成績(jī)。7)增補(bǔ)遺漏的學(xué)生以及對(duì)應(yīng)的信息和對(duì)應(yīng)的課程成績(jī),并計(jì)算出平均成績(jī),增補(bǔ)以后重新排序?qū)W生順序,并輸出學(xué)生信息和對(duì)應(yīng)課程成績(jī)和平均成績(jī)
3、。8)附加功能:把學(xué)生信息和對(duì)應(yīng)的課程成績(jī)和平均成績(jī)存入到文件中。9)附加功能:輸出文件中的內(nèi)容。10)附加功能:試著從文件中導(dǎo)入數(shù)據(jù)到成績(jī)管理系統(tǒng)中,然后進(jìn)行管理。四、設(shè)計(jì)要求、技術(shù)參數(shù)及設(shè)計(jì)規(guī)格1、原始成績(jī)由老師統(tǒng)一給出,在 Excel表中;2、設(shè)計(jì)的系統(tǒng)能夠運(yùn)行,提交源程序、目標(biāo)文件和可執(zhí)行文件;3、 提交實(shí)訓(xùn)報(bào)告,實(shí)訓(xùn)報(bào)告中列寫:1)軟件需求分析;2)軟件規(guī)格說(shuō)明和設(shè)計(jì)要求;3)對(duì)數(shù)據(jù)的管理方案;4)學(xué)生成績(jī)管理系統(tǒng)”設(shè)計(jì)的思路和整體框架;5)各功能或者模塊實(shí)現(xiàn)的思路(或者用帶注釋的程序代替)并交待模塊之間的接口關(guān)系;6) “學(xué)生成績(jī)管理系統(tǒng)”設(shè)計(jì)的結(jié)果(可以用一些屏幕拷貝的圖來(lái)補(bǔ)充說(shuō)
4、明)。4、程序設(shè)計(jì)環(huán)境為 Visual C+ 6.0 或DEV C+5、所有的設(shè)計(jì)工作需要同學(xué)自己真實(shí)地、獨(dú)立地完成。五、工作量天/日期任務(wù)描述通過(guò)標(biāo)準(zhǔn)2015 年上午:熟悉系統(tǒng)功能,文檔通過(guò)1月5日完成三項(xiàng)任務(wù)(用文檔記錄):1)軟件需求分析;2)軟件規(guī)格說(shuō)方案通過(guò)明和設(shè)計(jì)要求;3)對(duì)數(shù)據(jù)的管理方案。數(shù)據(jù)結(jié)構(gòu)通過(guò)下午:構(gòu)思“學(xué)生成績(jī)管理系統(tǒng)”的思路和整體框架。設(shè)計(jì)的函數(shù)框架通過(guò)設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)(命名),設(shè)計(jì)函數(shù)框架(命名,考慮參數(shù)的類型和要求數(shù)據(jù)傳遞接口正常,main函個(gè)數(shù),即考慮數(shù)據(jù)之間的傳遞關(guān)系)。設(shè)計(jì)被系統(tǒng)調(diào)用的 main函數(shù);數(shù)能運(yùn)行。實(shí)現(xiàn)界面函數(shù);設(shè)計(jì)各功能子函數(shù)的框架;2015 年上
5、午:實(shí)現(xiàn)成績(jī)錄入功能;各子函數(shù)調(diào)試通過(guò),能被main函1月6日下午:實(shí)現(xiàn)計(jì)算平均成績(jī)功能;實(shí)現(xiàn)輸出功能;數(shù)成功調(diào)用,其子功能能實(shí)現(xiàn)。2015 年上午:實(shí)現(xiàn)排序功能;各子函數(shù)調(diào)試通過(guò),能被main函1月7日下午:實(shí)現(xiàn)修改功能;實(shí)現(xiàn)增補(bǔ)功能 (選做);數(shù)成功調(diào)用,其子功能能實(shí)現(xiàn)。2015 年上午:實(shí)現(xiàn)查找功能,按學(xué)號(hào)查找、按姓名查找;各子函數(shù)調(diào)試通過(guò)。1月8日下午:實(shí)現(xiàn)自身特色功能,如登陸、鏈表操作、文件存儲(chǔ)數(shù)據(jù);2015 年上午:完善“成績(jī)管理系統(tǒng)的各項(xiàng)功能”。撰寫實(shí)訓(xùn)報(bào)告。系統(tǒng)能正確運(yùn)行,界面友好);1月8日實(shí)踐能力強(qiáng)的同學(xué)實(shí)現(xiàn)附加功能。各功能能夠?qū)崿F(xiàn),性能良好操作方下午:繼續(xù)寫實(shí)訓(xùn)報(bào)告并且驗(yàn)
6、收設(shè)計(jì)的項(xiàng)目。便。備注:做得慢的同學(xué)選做部分可不做。六、考核形式、考核時(shí)間、考核指標(biāo)及成績(jī)?cè)u(píng)定實(shí)訓(xùn)成績(jī)由下面構(gòu)成:實(shí)訓(xùn)紀(jì)律、實(shí)訓(xùn)態(tài)度和平時(shí)表現(xiàn)占20%實(shí)訓(xùn)結(jié)果占30%實(shí)訓(xùn)報(bào)告占30%實(shí)踐操作能力占20%考核形式:1)老師每日對(duì)學(xué)生的考察、評(píng)估和考核;2)最后對(duì)實(shí)訓(xùn)項(xiàng)目完成的質(zhì)量進(jìn)行考核和驗(yàn)收。完成期限:2015年01月09日指導(dǎo)教師簽章:孫海燕專業(yè)負(fù)責(zé)人簽章:崔建濤教學(xué)院長(zhǎng)簽章實(shí)訓(xùn)進(jìn)度日歷題 目學(xué)生成績(jī)管理系統(tǒng)指導(dǎo)教師孫海燕、張玲、 陳明學(xué) 生 班 級(jí)軟件學(xué)院網(wǎng)絡(luò)軟件 14-01 網(wǎng)絡(luò)軟件14-02 , .net 技14-02學(xué)年學(xué)期1415學(xué)年第1學(xué)期天實(shí)訓(xùn)任務(wù)詳細(xì)描述教師實(shí)訓(xùn)任務(wù)的指導(dǎo)(解
7、決方案、實(shí)現(xiàn)步驟、 技術(shù)路線、難點(diǎn)提示)通過(guò)標(biāo)準(zhǔn)15年1月5日上午完成:1 )軟件需求 分析;2 )軟件規(guī)格 說(shuō)明和設(shè)計(jì)要求; 3)對(duì)數(shù)據(jù)的管理方 案。對(duì)軟件功能進(jìn)行分類。用戶界面操作簡(jiǎn)單、功能完備,系統(tǒng)啟動(dòng)后先 錄入數(shù)據(jù),再求平均成績(jī);平均成績(jī)求出后, 其他的功能才能實(shí)現(xiàn)。數(shù)據(jù)結(jié)構(gòu)可以采用數(shù)組也可以采用鏈表。文檔通過(guò)驗(yàn)收下午構(gòu)思“學(xué)生成績(jī)管 理系統(tǒng)”的思路和 整體框架。設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)(命 名),設(shè)計(jì)函數(shù)框架(命名,考慮參數(shù) 的類型和個(gè)數(shù),即 考慮數(shù)據(jù)之間的傳 遞關(guān)系) 設(shè)計(jì)被系統(tǒng)調(diào)用的 main函數(shù);設(shè)計(jì)界 面函數(shù);如果采用數(shù)組管理數(shù)據(jù)結(jié)構(gòu),則數(shù)組必須按地 址傳遞,這樣數(shù)據(jù)才能在各個(gè)函數(shù)間共享
8、。難點(diǎn)1:系統(tǒng)的退出,exit()函數(shù)需要包含stdlib.h難點(diǎn)2 :清屏函數(shù) clrscr();難點(diǎn)3 :數(shù)據(jù)的傳遞設(shè)計(jì)的 函數(shù)框 架通過(guò) 調(diào)試, 要求數(shù) 據(jù)傳遞 接口正八t /丿吊,main 函數(shù)能 運(yùn)行。15年1月6日上午設(shè)計(jì)數(shù)據(jù)錄入函 數(shù),從鍵盤讀數(shù)據(jù) 到數(shù)組中,或者創(chuàng) 建鏈表難點(diǎn)1:數(shù)據(jù)輸入完后,怎樣控制結(jié)束?用一 個(gè)什么標(biāo)志。難點(diǎn)2:結(jié)構(gòu)體數(shù)組中的子域又是一個(gè)數(shù)組 時(shí),數(shù)據(jù)不能直接從鍵盤讀入, 需用一個(gè)臨時(shí) 變量中轉(zhuǎn)一下。難點(diǎn)3:從鍵盤錄入數(shù)據(jù)時(shí),要給完全的提示 信息,便于操作指導(dǎo)。各子函 數(shù)調(diào)試 通過(guò),能 被 mai n 函數(shù)成 功調(diào)用下午計(jì)算平均成績(jī)的函 數(shù)實(shí)現(xiàn);輸出原始成績(jī)
9、;難點(diǎn)4:想一想:在錄入數(shù)據(jù)時(shí)數(shù)據(jù)保存到一 數(shù)組,那么在算平均值時(shí),怎樣能接觸到此數(shù) 組中的數(shù)據(jù)。輸出按照一定的格式,好看。各子函數(shù)調(diào)試 通過(guò),能被 main函數(shù)成 功調(diào)用。15年1月7日上午排序功能實(shí)現(xiàn)并輸 出排序后的成績(jī)。按平均成績(jī)排序。排序的算法可以是泡泡法或者選擇法等思考1 :你還可以分別在每個(gè)班中按平均成績(jī) 排序嗎?思考2:能輸出有不及格課程的同學(xué)信息和成 績(jī)嗎?各子函 數(shù)調(diào)試 通過(guò),能 被 mai n 函數(shù)成 功調(diào)用。下午實(shí)現(xiàn)查找功能按姓名查找以后,再修改;按學(xué)號(hào)查找以后,再修改; 如果要用對(duì)半查找法,需要數(shù)據(jù)是有序的。各子函 數(shù)調(diào)試 通過(guò),能 被 mai n 函數(shù)成 功調(diào)用。15
10、年1月8日上午能對(duì)某一學(xué)生信息 和成績(jī)進(jìn)行修改;能增加學(xué)生的信息(選做);查找到某一學(xué)生,修改某一屬性,如果需要重 新排序,重新排序,把結(jié)構(gòu)存入文件; 難點(diǎn):怎樣從鍵盤中把成績(jī)存入文件。增加后重新排序,重新輸出。難點(diǎn):怎樣從文件中讀出數(shù)據(jù)下午自定義功能實(shí)現(xiàn)女口:登陸:密碼輸入顯示 * ;等15年1月9日上午完成實(shí)訓(xùn)報(bào)告難點(diǎn):清晰、明確、簡(jiǎn)單、評(píng)價(jià)合理、有自己 的見解、創(chuàng)新。實(shí)訓(xùn)報(bào)告內(nèi)容:任務(wù)書、實(shí)訓(xùn)進(jìn)度計(jì)劃、大綱 性的目錄、正文、實(shí)訓(xùn)感想、附件。實(shí)訓(xùn)報(bào)告要求裝訂整齊。系統(tǒng)能 正確運(yùn) 行,界面 友好); 各功能 能夠?qū)?現(xiàn),性能 良好操 作方便。下午驗(yàn)收程序 討論系統(tǒng)能 正確運(yùn) 行,界面 友好)
11、; 各功能 能夠?qū)?現(xiàn),性能 良好操 作方便。制訂教師:孫海燕、張玲實(shí)訓(xùn)報(bào)告1. 軟件需求分析1.1、 用C語(yǔ)言編寫程序?qū)崿F(xiàn)“學(xué)生成績(jī)管理系統(tǒng)”。1.2、設(shè)計(jì)“學(xué)生成績(jī)管理系統(tǒng)”的用戶界面,系統(tǒng)啟動(dòng)進(jìn)入后,只能通過(guò) 界面菜單指令才能退出。1.3、系統(tǒng)啟動(dòng)后,彈出一個(gè)用戶界面,能實(shí)現(xiàn)人機(jī)交互的功能。而且只能 通過(guò)界面菜單命令實(shí)現(xiàn)各種功能(包括系統(tǒng)退出功能);1.4、 錄入學(xué)生成績(jī)(信息有:班級(jí)、姓名、學(xué)號(hào)、五門課程成績(jī));1.5、計(jì)算每門功課的平均成績(jī)和學(xué)生五門功課的平均成績(jī)并存檔;1.6、輸出學(xué)生的信息和對(duì)應(yīng)的原始成績(jī)以及平均成績(jī);1.7、按平均成績(jī)進(jìn)行排序,輸出排序后的學(xué)生信息以及對(duì)應(yīng)的課程
12、成績(jī)和 平均成績(jī);1.8、對(duì)成績(jī)修改,有兩種模式,一種是按學(xué)號(hào)查找后進(jìn)行修改;另一種是 按姓名查找后進(jìn)行修改;修改后重新排序?qū)W生的順序,并輸出學(xué)生信息和對(duì) 應(yīng)課程成績(jī)和平均成績(jī);1.9、增補(bǔ)遺漏的學(xué)生以及對(duì)應(yīng)的信息和對(duì)應(yīng)的課程成績(jī),并計(jì)算出平均成 績(jī),增補(bǔ)以后重新排序?qū)W生順序,并輸出學(xué)生信息和對(duì)應(yīng)課程成績(jī)和平均成 績(jī);1.10、附加功能:把學(xué)生信息和對(duì)應(yīng)的課程成績(jī)和平均成績(jī)存入到文件中;1.11、附加功能:輸出文件中的內(nèi)容;1.12、 附加功能:試著從文件中導(dǎo)入數(shù)據(jù)到成績(jī)管理系統(tǒng)中,然后進(jìn)行管理2. 系統(tǒng)詳細(xì)設(shè)計(jì)及實(shí)現(xiàn)2.1、系統(tǒng)用戶界面盡量居中,體現(xiàn)美觀效果;2.2、編寫的程序具有人機(jī)交互功
13、能;2.3、通過(guò)菜單選擇軟件的功能;2.4、軟件只能由菜單退出系統(tǒng);2.5、操作信息提示(界面友好);2.6、具有攔截一些誤操作錯(cuò)誤的功能;2.7、按原始成績(jī)格式輸出。設(shè)計(jì)要求:2.1、根據(jù)老師給出的數(shù)據(jù)寫入;2.2、設(shè)計(jì)的系統(tǒng)能夠運(yùn)行,提交源程序、目標(biāo)文件和可執(zhí)行文件;2.3、提交實(shí)訓(xùn)報(bào)告,實(shí)訓(xùn)報(bào)告中列寫;2.4、程序設(shè)計(jì)環(huán)境為 DEV C+;2.5、所有的設(shè)計(jì)工作需要同學(xué)自己真實(shí)地、獨(dú)立地完成。3、對(duì)數(shù)據(jù)的管理方案結(jié)構(gòu)體數(shù)組和文件:輸入的數(shù)據(jù)可以保存在文件中,下次重新打開程序,原先已輸入的數(shù)據(jù)還在;(難度中等)以下為該程序的定義部分typedef struct stude ntchar c
14、las5;char ID5;char n ame15;double score5;double sum;double avg;STU;在此處,我將學(xué)生的班級(jí)、學(xué)號(hào)和姓名都定義為char型,方便整體的使用。特別是后面的部分子函數(shù)中用到的字符串比較函數(shù)strcmp,方便了排序比較;將學(xué)生的成績(jī)定義為雙精度實(shí)型變量(double),為了使計(jì)算的平 均分更為精確。講此定義放在程序的頭部,作為整個(gè)程序使用。為了使后面的子函數(shù)調(diào)用方便、簡(jiǎn)介,我用到 typedef structstudent定義。以下是該程序的函數(shù)聲明部分/*以下是該程序的函數(shù)聲明部分*/void Display(void);/*顯示主菜
15、單界面*/void Load(STU stu, i nt *n);/*將信息加載到內(nèi)存中*/void InputOne(STU stu, int i);/*輸入指定的學(xué)生信息*/void Add(STU stu, i nt *n);/*添加指定的學(xué)生信息*/void Save(STU stu, i nt n);/*將數(shù)組保存到磁盤*/void Output(STU stu, i nt n);/*輸出所有學(xué)生信息*/void Prin t(STU *s);/*輸出指定的學(xué)生信息*/void Sort(STU stu, i nt n);/*排序*/void Fi nd(STU stu, i nt
16、n);/*查找*/int FindID(STU stu, int n, char clas, char ID); /*按學(xué)生學(xué)號(hào)查找*/void Edit(STU stu, i nt n);/*修改指定的學(xué)生信息*/void Del(STU stu, i nt *n);/*刪除*/void DeleteAll(STU stu, i nt *n);/*刪除所有學(xué)生信息*/void Delete On e(STU stu, i nt *n);/*刪除指定的學(xué)生信息*/以上是該程序的全部聲明部分,這些聲明函數(shù)與下文的各功能函數(shù)相互 對(duì)應(yīng),且順序依次排列,方便查找和修改。在這些聲明的函數(shù)中,用到了引
17、用數(shù)組以及指針,方便了下面各功能函數(shù)的使用以及調(diào)用。以下是該程序的主函數(shù)部分int mai n()STU stuN;int n;int select;Load(stu, &n);while(1)Display。;scan f(%d, &select);switch(select)case 1:/*輸入 */Add(stu, &n); break;case 2:/*輸出 */Output(stu, n); break;case 3:/*排序 */Sort(stu, n); break;case 4:/*查找 */Fin d(stu, n); break;case 5:/*修改 */Edit(st
18、u, n); break;case 6:/*刪除 */Del(stu, &n); break;case 7:/*退出 */return 0;以上是該函數(shù)的函數(shù)部分,用到了 switch語(yǔ)句,分別針對(duì)7種功能分 情況列出。在下面的各分函數(shù)中,處理完的數(shù)據(jù)值會(huì)根據(jù)具體需要返還到主 函數(shù)中,并且顯示在主界面中。方便用戶查看。利用switch的好處在于,分情況列出各種需要的可能性,條例清晰,可讀性強(qiáng),并且十分方便。以下是該程序的主界面部分/*以下為該程序的主界面*/void Display。system(cls); printf(” prin tf(n); printf( prin tf(n); pr
19、intf( prin tf(n); printf(鄭州輕工業(yè)學(xué)院考試成績(jī)管理系統(tǒng)n);班級(jí):網(wǎng)絡(luò)軟件開發(fā)14-01班n);學(xué)號(hào):621413560103n);作者:褚超n);printf(”* n)printf(” prin tf(n);1:輸入學(xué)生資料n);printf(”2:輸出學(xué)生成績(jī)3:資料進(jìn)行排序n)prin tf(n);printf(”4:查找學(xué)生資料5:修改學(xué)生資料n)prin tf(n);printf(”6:刪除學(xué)生資料7:退出管理系統(tǒng)n)prin tf(n);prin tf(*n );printf(歡迎進(jìn)入成績(jī)管理系統(tǒng),請(qǐng)選擇(你只需輸入17中的其中一個(gè)數(shù)字便可進(jìn)行下一步操作
20、)n);以上為該程序?qū)嶋H操作的主界面,具有 6大基本功能。用戶可以根據(jù)需要進(jìn)行相關(guān)操作,實(shí)現(xiàn)所需要的功能。在此界面中,用到了清屏函數(shù),方便用戶更好的體驗(yàn)該程序,不至于界面混亂void Load(STU stu, int *n)FILE *fp;int i;if(fp=fope n(d:stude nt.dat,*n = 0;return;”r+”)= NULL) /* 以r+打開可讀寫的文件 */for(i=0; fread( &stui,sizeof(STU),1,fp)!=0;i+); /*將信息讀取到stu中*/*n = i;中當(dāng)前學(xué)生數(shù)量*/fclose(fp);/*/*這里*n的作用
21、為記錄文件關(guān)閉文件*/*以上是該程序的從文件中讀取數(shù)據(jù)的函數(shù)部分。用到了指針,從所指定的文件student.dat讀取到輸入后保存在該文件中的信息,并顯示在主界面中。用戶可以直接將該文件拷貝到指定文件夾中,當(dāng)執(zhí)行一次源代碼的編譯 后,該系統(tǒng)就知道了這些數(shù)據(jù)所在的文件,當(dāng)用戶執(zhí)行程序運(yùn)行時(shí),選擇相 關(guān)的功能時(shí),便可直接在主界面顯示,無(wú)需再次輸入信息。這樣以來(lái),該程 序就具有了很強(qiáng)的實(shí)用性與使用性,方便了用戶處理數(shù)據(jù)。以下是該程序的輸入部分/*輸入第i個(gè)學(xué)生信息,保存到stu數(shù)組中*/void In putO ne(STU stu, i nt i)int j;/*輸入學(xué)生信息*/printf(”請(qǐng)
22、輸入學(xué)生班級(jí)、學(xué)號(hào)、姓名(數(shù)據(jù)間以空格隔開):);scanf(%s%s%s, &stui.clas, &stui.ID, &);/*輸入五門課程成績(jī)并累加*/printf(”請(qǐng)依次輸入課程1、2、3、4、5成績(jī)(數(shù)據(jù)間以空格隔開):);stui.sum = 0.0;for(j=0; j5; j+)scan f(%lf, & stui.scorej);stui.sum += stui.scorej;/*計(jì)算五門課程的平均分*/stui.avg = stui.sum / 5;/*調(diào)用InputOne函數(shù)添加若干學(xué)生信息,并把新添加的學(xué)生信息依次保存到文件中*/void Add(S
23、TU stu, i nt *n)int i=0;char s = y;while(s = y)In put On e(stu, (*n)+);/*添加第 n+1 個(gè)學(xué)生的信息 */printf(是否繼續(xù)添加(請(qǐng)輸入y or n)n);scanf(” %c, &s);Save (stu, * n);void Save(STU stu, i nt n)FILE *fp;if(fp=fopen(d:student.dat, w) = NULL)printf(”打開文件失敗n);exit(O);fwrite(stu, n * sizeof(stu0), 1, fp);fclose(fp);/*/以上為
24、該程序的第一個(gè)功能函數(shù)部分,可實(shí)現(xiàn)學(xué)生信息的錄入功能,所 錄入的文件即student.dat。用戶可以根據(jù)需要輸入一個(gè)或多個(gè)學(xué)生信息。只需要在輸入一個(gè)學(xué)生信息完成后,判斷是否繼續(xù)錄入學(xué)生信息即可。當(dāng)輸 入y時(shí),可繼續(xù)輸入一個(gè)或多個(gè)學(xué)生信息,操作與之前相同;當(dāng)輸入其它字 母時(shí),輸入學(xué)生信息結(jié)束,程序返回到該程序的原始主界面??衫^續(xù)選擇其 它相關(guān)操作。方便用戶處理數(shù)據(jù),解決了單次功能實(shí)現(xiàn)后,程序退出的問題以下是該程序的輸出部分/*輸出所有學(xué)生信息*/void Output(STU stu, i nt n)int i;/*打印數(shù)據(jù)表頭*/printf(”您需要的所有學(xué)生成績(jī)?nèi)缦拢簄);prin tf
25、(n);printf(%8s%8s%8s%8s%8s%8s%8s%8s%8s%8s,班級(jí),學(xué)號(hào),姓名,成績(jī) 1,成績(jī)2,成績(jī)3,成績(jī)4,成績(jī)5,總分,平均分);for(i=0; iclas, s-ID, s-name);for(i=0; iscorei);printf(%8.2f%8.2f, s-sum, s-avg);prin tf(n ”); /*/以上是學(xué)生信息輸出部分的函數(shù),系統(tǒng)會(huì)自動(dòng)打印出表頭信息。相關(guān)的 學(xué)生信息會(huì)在其下一行依次展開并與表頭對(duì)齊。程序?qū)崿F(xiàn)了信息的讀出功 能,方便了用戶的查看與處理。其中,輸出的學(xué)生成績(jī)都采用了double型,并保留兩位有效數(shù)字,使數(shù)據(jù)更為準(zhǔn)確。F面給
26、出輸出學(xué)生信息時(shí)的主界面顯示情況鄭冊(cè)I輕工業(yè)學(xué)院考試成績(jī)管理系統(tǒng)班級(jí):網(wǎng)絡(luò)軟件幵發(fā)1471班學(xué)號(hào):621413560103作者:褚超4=M=+=I4=M=M=M=M=+=I=+=I=I=M=M=M=M=+=I=+=M=M=M=M=M=+=I=+=M=M=M=M=M=+=I=I=M=M=M=M=+=I=+=M=M=M=M=M=+=I=+:1:輸入學(xué)生資料2:輸出學(xué)生成綣出資料進(jìn)行排序加查找學(xué)生資料E:修改學(xué)生資料已刪除學(xué)生資料退出管理系統(tǒng)歡迎進(jìn)入成績(jī)管理系統(tǒng),請(qǐng)選擇(你只需諭入廣亍中的其中一個(gè)數(shù)字僵可進(jìn)行下一步操作2您需要的所有學(xué)生成績(jī)?nèi)缦拢喊嗉?jí)601學(xué)號(hào)3姓容 lin成績(jī)189.00成績(jī)288
27、,00成績(jī)393.00咸績(jī)481.00成績(jī)?nèi)?3.00總分494.00平均列86. B06016ling67,0058,0076.0079,0076,00356.0071, 206016kang77*0076.0078.0079,0078.00338.0077*606017ddd77.0073.0079.0083.0080.00392.0078.406018chenzi89.0094,0082,0080,0087,00432.0086.406021hua65.0077*0075.0078.007400369.007j.8j6023Iiao56.0071.0073.0075.0074.00349
28、.0069.806024guang78.0085.0089.0092.0090,00434.0086.806025qun88,00S9,0094.0083,0082,00436.0087, 20以下是該程序的排序部分/*對(duì)學(xué)生的信息進(jìn)行排序*/void Sort(STU stu, int n)int select;int ScoreAsc(c onst void *a, const void *b);int ScoreDes(c onst void *a, const void *b);int NameAsc(c onst void *a, const void *b);prin tf(1:按
29、總成績(jī)升序排列n);prin tf(n);prin tf(2:按總成績(jī)降序排列n);prin tf(n);printf(3:按學(xué)生姓名排序n);scan f(%d, & select);switch(select)case 1: qsort(stu, n, 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);/
30、*以下是按成績(jī)升序排序的分函數(shù)*/int ScoreAsc(c onst void *a, const void *b) return (STU *)a)-sum (STU *)b)-sum ? 1 : -1;/*以下是按成績(jī)降序排列的分函數(shù)*/int ScoreDes(c onst void *a, const void *b)return (STU *)a)-sum sum ? 1 : -1;/*以下是按學(xué)生姓名升序排列的分函數(shù)*/int NameAsc(c onst void *a, const void *b)return strcmp(STU *)a)-name, (STU *)b)
31、-name);/*以上為該程序的排序函數(shù)部分,該函數(shù)實(shí)現(xiàn)了排序的功能,并且可以分 別根據(jù)總成績(jī)的高低進(jìn)行升序以及降序排序,也可以根據(jù)學(xué)生的姓名進(jìn)行排 序。在這里,為了使三種排序功能方便處理、簡(jiǎn)潔,我用到了switch語(yǔ)句,根據(jù)三種情況分別判斷。并根據(jù)用戶需要,將特定的排序方式信息反饋給用 戶,用戶可以直接在該程序的主界面進(jìn)行查看,方便用戶處理學(xué)生信息。F面給出資料進(jìn)行排序中的按總成績(jī)降序排列主界面顯示情況1按總成績(jī)升序排列E按總成績(jī)隆序排列壯扌安學(xué)生姓名排序您需要的所有學(xué)生成績(jī)?nèi)缦拢簩W(xué)號(hào)姓名成績(jī)1成績(jī)2成績(jī)3成績(jī)4成績(jī)5總分平均分6025qun88,0089,0094.0083.0082,00
32、436.0087. 205024guang73.0085.0039.0092.0090,00434.0086.806013lin89*0088.0093.0081.0083.00434.0086.806018chenKi89.0094,0082.0080.0087.00432.0086.406011vang78,0085.0092.0088,0084,00427.0085,4060310qun78.0079.0080.0083*00S8.00408.0081. S06038bo80.0081.0082.0079.0085.00407.0081.406017ddd77,0073,0079.008
33、3.0080,00392.00?8.406028 dongfei73.0079.0080.0082.0077*00391.0078. 206016kang77*0076.0073.0079.0078.00388.0077. S0602711178,0076,0065.0082.0080,00381.0076. 201deng81.0085.0073.006S,0066,00373.0074.606021hua65*0077.007E.OO73*0074.00369.0073.806035hegang75.0076.0073.0072.0071.00367.0073.406029feisian7
34、1,0065.0072.00?7.0074,00359.007L806015ling67.0058.0076.0079.0076.00356.007L 20以下是該程序的查找部分/*按學(xué)號(hào)查找學(xué)生信息*/void Fi nd(STU stu, i nt n)int in dex;char clas5,ID5;printf(”請(qǐng)輸入班級(jí)和學(xué)號(hào)(數(shù)據(jù)間以空格隔開):);scan f(%s%s, clas, ID);index = FindID(stu, n, clas, ID);if(in dex 0)Prin t(&stui ndex);elseprin tf(該學(xué)生信息不存在!n);syste
35、m(pause);/*分別對(duì)學(xué)生班級(jí)和學(xué)號(hào)進(jìn)行確定*/int FindID(STU stu, int n, char clas, char ID)int i;for(i=0; in; i+)/*一旦找到該學(xué)生信息,則會(huì)自動(dòng)返回對(duì)應(yīng)的下標(biāo) */if(strcmp(stui.ID, ID)=0 & strcmp(stui.clas, clas) =0)return i;return -1; /*/以上是查找學(xué)生信息的功能函數(shù)部分。在此,因?yàn)橛卸鄠€(gè)班級(jí)的信息存在,因此,避免不了學(xué)號(hào)一致的情況出現(xiàn)??蓪W(xué)號(hào)相同的學(xué)生,班級(jí)肯定不 相同,因此為了使查找的學(xué)生信息是用戶所需要的信息。我在查找函數(shù)中, 同時(shí)查
36、找學(xué)生班級(jí)與學(xué)生學(xué)號(hào),這樣以來(lái),就可以確定所需要查找的學(xué)生信 息在主界面反饋給用戶時(shí)是正確的。因此就需要用到一個(gè)if語(yǔ)句,只有在班級(jí)和學(xué)號(hào)都一致的情況下,才將信息返回給用戶,否則輸出該學(xué)生的信息 不存在。這樣以來(lái),學(xué)生信息的查找功能就得以實(shí)現(xiàn)了。F面給出查找學(xué)生成績(jī)的主界面顯示情況以下是該程序的修改部分/*修改指定的學(xué)生信息*/void Edit(STU stu, i nt n)int i, i ndex;char s;char clas5,ID5;printf(”請(qǐng)輸入班級(jí)和學(xué)號(hào)(數(shù)據(jù)間以空格隔開):);scan f(%s%s, clas, ID);index = FindID(stu, n
37、, clas, ID);if(in dex 0)prin tf(該學(xué)生信息不存在!n);return;printf(”以下是修改前的學(xué)生信息n);Prin t(&stui ndex);/*修改學(xué)生成績(jī)*/printf(是否修改成績(jī)?(請(qǐng)輸入y or n)n);scanf(” %c, &s);if(s = y)stui ndex.sum = 0;printf(請(qǐng)輸入五門學(xué)科的成績(jī)(數(shù)據(jù)間以空格隔開):);for(i=0; i5; i+)scanf(%lf, &stuindex.scorei);stui ndex.sum += stui ndex.scorei;stui ndex.avg = st
38、ui ndex.sum / 5;Save(stu, n);/*/以上是修改學(xué)生信息的函數(shù)部分,用戶可以通過(guò)輸入需要查找的學(xué)生的 班級(jí)和學(xué)號(hào)先找到該學(xué)生的具體信息,主界面也會(huì)在同一時(shí)間將該學(xué)生的信 息反饋到程序的主界面。用戶可以通過(guò)判斷來(lái)確定是否修改學(xué)生信息,如用 戶確定修改該學(xué)生的信息,就會(huì)顯示請(qǐng)輸入需要修改的學(xué)生的成績(jī)。用戶只 需要將更新后的成績(jī)?cè)俅屋斎?,就可以完成學(xué)生信息的修改功能,并且將該 次更新的成績(jī)存儲(chǔ)到指定的2文件中,覆蓋原來(lái)的該學(xué)生信息。這樣以來(lái), 學(xué)生成績(jī)修改的功能就可以完成了。下面給出修改學(xué)生資料主界面顯示情況(待修改狀態(tài))1 ;輸入學(xué)生資料吋俞出學(xué)生成績(jī)3:資料進(jìn)行排序缶查
39、找學(xué)生資料5:修改學(xué)主資料I曰:刪除學(xué)生資料退出管理系統(tǒng)歡迎進(jìn)入成績(jī)管理系統(tǒng),請(qǐng)選擇你只需輔k入中的其中一個(gè)數(shù)字便可逛行下一步操作)養(yǎng)輸入班級(jí)和學(xué)號(hào)(數(shù)拯間臥空格隔幵)1 1以下是修改前的學(xué)生信息6011 W3ELE 78.0085. 0092.0088.0084.00427. 0085. 40是否修改咸續(xù)?(請(qǐng)諭入y ox n)奮輸入五門學(xué)科的成績(jī)(數(shù)據(jù)間以空格隔幵):100 100 100 100 100F面給出修改學(xué)生資料主界面顯示情況(修改完成狀態(tài))班級(jí):咻軟件開發(fā)14-01班6 21413560103作者:褚超1:輸入學(xué)主資料2:輸出學(xué)生成績(jī)3 :資豐斗進(jìn)廳排序心查找學(xué)生資料5 :修
40、改學(xué)生資料乩刪除學(xué)生資料7 :退出管理系統(tǒng)歡迎進(jìn)入成績(jī)管理系統(tǒng),請(qǐng)選擇C你只需諭入中的其中一個(gè)數(shù)字便可進(jìn)行下一步操作4請(qǐng)輸入喊和學(xué)號(hào)(數(shù)據(jù)間以空格隔開):占。1 16011 wang 100.00100.00100.00100. 00100.00500.00100. 00請(qǐng)按任意鍵縮續(xù)-以下是該程序的刪除部分/*刪除*/void Del(STU stu, i nt *n)int select;prin tf(1:刪除指定的學(xué)生信息n);prin tf(n);prin tf(2:刪除所有的學(xué)生信息n);scan f(%d, & select);switch(select)case 1: Dele
41、te On e(stu, n); break; case 2: DeleteAll(stu, n); break;/*從文件中刪除全部學(xué)生信息*/void DeleteAll(STU stu, i nt *n)char s;FILE *fp;printf(”信息是否全部刪除?(請(qǐng)輸入y or n)n);scanf(” %c, &s);if(s = y)以w方式打開可覆蓋原來(lái)的文件*/內(nèi)存中的數(shù)組stu中元素個(gè)數(shù)變?yōu)?*/fp = fope n(d:stude nt.dat, w); /* *n = 0;/*prin tf(刪除完成! n);fclose(fp);/*刪除指定的學(xué)生信息*/voi
42、d Delete On e(STU stu, i nt *n)int i, i ndex;FILE *fp;char clas5,ID5;printf(”請(qǐng)輸入班級(jí)和學(xué)號(hào)(數(shù)據(jù)間以空格隔開):);scan f(%s%s, clas, ID);index = FindID(stu, *n, clas, ID);if(in dex 0)prin tf(n該學(xué)生信息不存在! n);return;for(i=i ndex; i *n-1; i+)stui = stui+1;(*n)-;if(fp=fopen(d:student.dat, w)=NULL) /*以w的方式打開可清除文件 */prin t
43、f(打開文件失?。);exit(0);printf(n刪除成功 n);Save(stu, *n);/*保存到文件 */*/以上是該程序的刪除功能函數(shù)部分,當(dāng)用戶選擇該項(xiàng)功能時(shí)。會(huì)彈出兩個(gè)選擇項(xiàng),分別是刪除指定的學(xué)生信息與刪除全部的學(xué)生信息。用戶可以根據(jù)需要進(jìn)行具體的操作。當(dāng)確定需要?jiǎng)h除學(xué)生信息時(shí),同樣需要輸入需要?jiǎng)h 除的學(xué)生的班級(jí)與學(xué)號(hào),這樣,就可以確定刪除的學(xué)生信息就是我們需要?jiǎng)h 除的那個(gè)學(xué)生的信息。這樣以來(lái),刪除學(xué)生信息的功能,就可以實(shí)現(xiàn)了。F面給出刪除學(xué)生資料主界面顯示情況(待刪除狀態(tài))F面給出刪除學(xué)生資料主界面顯示情況(刪除完成狀態(tài))鄭州輕工業(yè)學(xué)院考試成績(jī)管理系統(tǒng)班纏:網(wǎng)絡(luò)軟件開發(fā)1
44、471班學(xué):521413560103作者:褚超丄:輸入學(xué)生資料2:輸出學(xué)生成績(jī)3:資料進(jìn)行排序4:查找學(xué)生資料&修改學(xué)生資料6:刪除學(xué)生資料1:退出管理系統(tǒng)歡迎進(jìn)入成績(jī)管理系統(tǒng),請(qǐng)選擇(你只需輸入中的其中一個(gè)數(shù)字便可進(jìn)行下一歩操作)4請(qǐng)輸入班級(jí)和學(xué)號(hào)(數(shù)據(jù)間以空格隔開)泊01 1該學(xué)生信息不存在!請(qǐng)按任意鍵樂續(xù)*實(shí)訓(xùn)感想回想,5天的C語(yǔ)言實(shí)訓(xùn)經(jīng)歷,讓我受益匪淺。從一開始做的時(shí)候的各 種迷茫(沒有思路、對(duì)大程序產(chǎn)生恐懼、不知如何下手 )到現(xiàn)在的思路清晰, 雖然這幾天走來(lái)實(shí)在不易,但我覺得還是非常值得的。這次實(shí)訓(xùn)讓我對(duì)編程 有了更深層次的理解,我越來(lái)越喜歡 C語(yǔ)言了?,F(xiàn)在想想,這樣的一個(gè)程序 才算
45、是真正的一個(gè)程序,之前的一個(gè)個(gè)小的題目,一個(gè)小的問題,一個(gè)小的 程序,只是這樣一個(gè)程序的一部分。當(dāng)我把那些小程序綜合放在一塊,進(jìn)行 整體的處理,最終變成一個(gè)可讀性很高的、整體性很強(qiáng)的大程序時(shí),我明白 了小程序就是大程序的分支,只要將小程序處理好,再融入到一個(gè)整體中, 一個(gè)看似復(fù)雜的大程序就可以迎刃而解了。記得,剛開始學(xué) C語(yǔ)言的時(shí)候,覺得很難。一句簡(jiǎn)單的This is a Cprogram,加頭加尾都有四五行,我在想如果是一個(gè)很大的內(nèi)容,那要打多 少,一定很麻煩吧!就覺得那是好大的一個(gè)工程,很難實(shí)現(xiàn)?,F(xiàn)在想想,只 要用心去學(xué),掌握完成C語(yǔ)言的語(yǔ)法技巧,是可以完成的。我現(xiàn)在對(duì) C語(yǔ)言 的認(rèn)識(shí)就是
46、,把數(shù)學(xué)的思想應(yīng)用在程序上,體現(xiàn)在各種函數(shù)上,面對(duì)一個(gè)程 序題時(shí),首先要有思路,該怎樣去處理。然后開始對(duì)需要處理的數(shù)據(jù)進(jìn)行定 義,需要幾個(gè)變量,變量的類型是什么。如果是數(shù)組的話,還要考慮這個(gè)數(shù) 組有多大,需要定義多長(zhǎng)的數(shù)組才能夠用。然后就是編寫程序的核心部分, 將數(shù)學(xué)的算法思想,用函數(shù)體現(xiàn)出來(lái),通過(guò)賦值語(yǔ)句,引用,互換等,完成 數(shù)據(jù)間的計(jì)算。在程序輸出的部分,確定好需要輸出數(shù)據(jù)的控制符,比如如 果是int型,那輸出時(shí)的控制符就用%d將各種數(shù)據(jù)一一對(duì)應(yīng)的輸入輸出, 就基本上可以完成一個(gè)程序。這周C語(yǔ)言的實(shí)訓(xùn),讓我明白。做出一個(gè)程序系統(tǒng)并不是一件簡(jiǎn)單的事, 雖然說(shuō)也不是非常難的那種,但是卻很考驗(yàn)一
47、個(gè)人的耐心以及細(xì)心程度。第 一天的時(shí)候,其實(shí),我不知道該怎樣做,一直坐在電腦旁想啊想,往往想的 一頭霧水。這么大的一個(gè)程序,要怎么入手。后來(lái)明白,我不該把它想的這 么復(fù)雜,而是應(yīng)該像平時(shí)那些小程序一樣,一個(gè)一個(gè)來(lái),然后合起來(lái)成為一 個(gè)大的程序。當(dāng)思路清晰以后,我明白該怎么去寫才能寫成。所以我覺得思 路很重要,然后就是對(duì)語(yǔ)法的靈活運(yùn)用,這樣,才能自由的編寫一個(gè)程序。為什么要學(xué)習(xí)程序設(shè)計(jì)?計(jì)算機(jī)的本質(zhì)是“程序的機(jī)器”,程序和指令的思想是計(jì)算機(jī)系統(tǒng)中最基本的概念。 學(xué)習(xí)程序設(shè)計(jì)能使我們了解計(jì)算機(jī)事 怎樣工作的,更好地理解和應(yīng)用計(jì)算機(jī);能使我們懂得怎樣讓計(jì)算機(jī)按照人 們的意圖進(jìn)行工作;學(xué)習(xí)使用計(jì)算機(jī)處理問題的方法,能培養(yǎng)我們分析問題 和解決問題的能力以及具有編寫程序的初步能力。非計(jì)算機(jī)專業(yè)的學(xué)生學(xué)習(xí) 程序設(shè)計(jì),可以了解
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度跨區(qū)域交叉作業(yè)安全管理與服務(wù)協(xié)議書
- 2025年度智能科技產(chǎn)業(yè)公司股東合伙人協(xié)議書
- 二零二五年度農(nóng)業(yè)勞務(wù)用工服務(wù)合同范本(含農(nóng)業(yè)生物質(zhì)能源開發(fā))
- 2025年度金融借貸合同解除通知期限與還款計(jì)劃調(diào)整
- 2025年山西貨物運(yùn)輸從業(yè)資格考試答題技巧
- 2025年江西貨運(yùn)資格證考試
- 婚禮父母發(fā)言稿
- 2025年葫蘆島駕校考試貨運(yùn)從業(yè)資格證模擬考試
- 《乒乓球冠軍》幼兒園小學(xué)少兒美術(shù)教育繪畫課件創(chuàng)意教程教案
- 數(shù)學(xué)分析微積分概念應(yīng)用題匯編
- 2025年內(nèi)蒙古建筑職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)及答案1套
- 部編人教版小學(xué)一年級(jí)道德與法制教案全冊(cè)
- 眼視光行業(yè)現(xiàn)狀及展望
- 2024年云南省高等職業(yè)技術(shù)教育招生考試數(shù)學(xué)試題
- 2025-2030年中國(guó)電船行業(yè)運(yùn)行狀況及發(fā)展?jié)摿Ψ治鰣?bào)告
- 2025年黑龍江農(nóng)墾職業(yè)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)完整版
- 2025年時(shí)事政治考題及參考答案(350題)
- 2025年02月黃石市殘聯(lián)專門協(xié)會(huì)公開招聘工作人員5人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 1.1 青春的邀約 課件 2024-2025學(xué)年七年級(jí)道德與法治下冊(cè)
- 取水許可申請(qǐng)書范本
- 蚌埠介紹-蚌埠簡(jiǎn)介課件(經(jīng)典版)
評(píng)論
0/150
提交評(píng)論