2022年c語言成績查詢系統(tǒng)_第1頁
2022年c語言成績查詢系統(tǒng)_第2頁
2022年c語言成績查詢系統(tǒng)_第3頁
2022年c語言成績查詢系統(tǒng)_第4頁
2022年c語言成績查詢系統(tǒng)_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、姓 C語言大作業(yè)名: 班 級(jí): 學(xué) 號(hào): 指 導(dǎo) 教 師: 設(shè) 計(jì) 時(shí) 間:目 錄一.目的 . 3 二.題目描述和要求 . 3 三.報(bào)告內(nèi)容 . 5 3.1需求分析 . 5 3.2 概要設(shè)計(jì) . 5 3.3 具體設(shè)計(jì) . 7 3.4 主要源程序代碼. 8 3.5 測試分析 . 15 3.6 設(shè)計(jì)結(jié)果 . 16 四.結(jié)論與心得 . 21 一.目的1.1 、通過本次大作業(yè),錘煉我們應(yīng)用C語言的語法規(guī)章和已經(jīng)把握的算法,自己解決一個(gè)較簡潔的課題,初步積存編程體會(huì);1.2 、 通過學(xué)習(xí)把握程序設(shè)計(jì)的方法與編程技術(shù),為運(yùn)算機(jī)在不同領(lǐng)域的應(yīng)用打下堅(jiān)實(shí)的基礎(chǔ);學(xué)會(huì)良好的程序設(shè)計(jì)風(fēng)格,1.3 、 要求我們能利

2、用運(yùn)算機(jī)解決實(shí)際問題;從分析問題入手,設(shè)計(jì)可行的算法,進(jìn)而編出相應(yīng)的程序的實(shí)際應(yīng)用;C程序;強(qiáng)調(diào)上機(jī)實(shí)踐過程,從實(shí)際應(yīng)用動(dòng)身,注意二.題目描述和要求題目 :同學(xué)成果治理系統(tǒng)應(yīng)用鏈表及外部文件,獨(dú)立設(shè)計(jì)上述應(yīng)用系統(tǒng),并編程實(shí)現(xiàn)以下功能:2.1 信息錄入錄入同學(xué)信息(包括姓名、學(xué)號(hào)、各科成果);2.2 信息查詢輸入學(xué)號(hào),查詢與學(xué)號(hào)相對(duì)應(yīng)的信息(包括成果),并按可選的自定義規(guī)就進(jìn)行排序;按班級(jí)查詢同學(xué)成果;按班級(jí)統(tǒng)計(jì)學(xué)科總分、平均分等;2.3 信息刪除與修改輸入學(xué)號(hào),刪除該學(xué)號(hào)對(duì)應(yīng)的成果信息;輸入學(xué)號(hào),查詢并顯示出該學(xué)號(hào)信息,并在此基礎(chǔ)上進(jìn)行修改;2.4 運(yùn)算同學(xué)成果運(yùn)算每位同學(xué)的總分;運(yùn)算每位同學(xué)

3、的平均分;成果排序;2.5 信息儲(chǔ)存將同學(xué)信息儲(chǔ)存在文件中;2.6 依據(jù)以上功能需求, 定義通訊錄信息結(jié)構(gòu), 并采納鏈表結(jié)構(gòu)對(duì)數(shù)據(jù)進(jìn)行存 儲(chǔ);2.7 供應(yīng)友好的用戶界面,便利用戶操作;三.報(bào)告內(nèi)容3.1 需求分析隨著當(dāng)今社會(huì)進(jìn)展,信息化水平逐步提高,對(duì)教務(wù)治理有了新的要求,因此,編寫一個(gè)信息治理系統(tǒng)是非常有必要的;該軟件主要是實(shí)現(xiàn)對(duì)同學(xué)信息進(jìn)行系統(tǒng)化的治理,第一可以對(duì)同學(xué)基本信息 進(jìn)行輸入和讀取,其次查找并顯示特定同學(xué)的相關(guān)信息,然后可以插入同學(xué)的相 關(guān)信息,仍有就是可按同學(xué)相關(guān)信息排序,以求達(dá)到簡易操作的目的;3.2 概要設(shè)計(jì)1系統(tǒng)結(jié)構(gòu)圖(功能模塊圖)和數(shù)據(jù)變量說明主菜單輸入列表查找增加修改

4、排序儲(chǔ)存退出2. 系統(tǒng)總體流程圖開頭編譯運(yùn)行有有/ 錯(cuò)無MAIN 調(diào)用 MENU K=0 K 0 連接EXIT 調(diào)用各個(gè)功能函數(shù)( K= ?)執(zhí)行錯(cuò)誤 輸入正確3.3 具體設(shè)計(jì)源文件函數(shù)名或其他成分功能student.cpp 函數(shù)名或其他成分功能student.h main 總控函數(shù)int choice 菜單挑選switchchoice 菜單處理IO_WriteInfo 新建同學(xué)信息記錄exit 終止運(yùn)行Student_Insert 增加同學(xué)信息Student_Display 顯示信息Student_Delete 刪除指定的記錄Student_Select 查詢指定同學(xué)的信息Student_M

5、odify 修改指定同學(xué)的信息Student_SortByAverage 排序結(jié)構(gòu)聲明同學(xué)成果結(jié)構(gòu)庫函數(shù)及函數(shù)原型聲明引用庫函數(shù)及函數(shù)3.4 主要源程序代碼#include #include #include struct Student char ID20; char Name20; float scor_eng; float scor_math; float scor_phy; float Average; ; struct Student students1000; int num=0; float Avgstruct Student stu return stu.scor_eng+st

6、u.scor_math+stu.scor_phy/3; int Student_SearchByIndexchar id int i; for i=0;inum;i+ if strcmpstudentsi.ID,id=0 return i; return -1; int Student_SearchByNamechar name int i; for i=0;inum;i+ if strcmpstudentsi.Name,name=0 return i; return -1; void Student_DisplaySingleint index printf%10s%10s%8s%8s%8s

7、%10sn, 學(xué)號(hào) , 姓名 ,英語成果 , 數(shù)學(xué)成果 ,物理成果 , 平 均成果 ; printf-n; printf%10s%10s%8.2f%8.2f%8.2f%10.2fn,studentsindex.ID,studentsindex.Name, studentsindex.scor_eng,studentsindex.scor_math,studentsindex.scor_phy,studentsindex.Average; void Student_Insert while1 printf 請(qǐng)輸入學(xué)號(hào) :; scanf%s,&studentsnum.ID; getchar; pr

8、intf 請(qǐng)輸入姓名 :; scanf%s,&studentsnum.Name; getchar; printf 請(qǐng)輸入英語成果 :; scanf%f,&studentsnum.scor_eng; getchar; printf 請(qǐng)輸入數(shù)學(xué)成果 :; scanf%f,&studentsnum.scor_math; getchar; printf 請(qǐng)輸入物理成果 :; scanf%f,&studentsnum.scor_phy; getchar; studentsnum.Average=Avgstudentsnum; num+; printf 是否連續(xù) .y/n; if getchar=n br

9、eak; void Student_Modify while1 char id20; int index; printf 請(qǐng)輸入要修改的同學(xué)的學(xué)號(hào) :; scanf%s,&id; getchar; index=Student_SearchByIndexid; if index=-1 printf 同學(xué)不存在 .n; else printf 你要修改的同學(xué)信息為 :n; Student_DisplaySingleindex; printf- 請(qǐng)輸入新值 -n; printf 請(qǐng)輸入學(xué)號(hào) :; scanf%s,&studentsindex.ID; getchar; printf 請(qǐng)輸入姓名 :;

10、scanf%s,&studentsindex.Name; getchar; printf 請(qǐng)輸入英語成果 :; scanf%f,&studentsindex.scor_eng; getchar; printf 請(qǐng)輸入數(shù)學(xué)成果 :; scanf%f,&studentsindex.scor_math; getchar; printf 請(qǐng)輸入物理成果 :; scanf%f,&studentsindex.scor_phy; getchar; studentsindex.Average=Avgstudentsindex; printf 是否連續(xù) .y/n; if getchar=n break; voi

11、d Student_Delete int i; while1 char id20; int index; printf 請(qǐng)輸入要?jiǎng)h除的同學(xué)的學(xué)號(hào) :; scanf%s,&id; getchar; index=Student_SearchByIndexid; if index=-1 printf 同學(xué)不存在 .n; else printf 你要?jiǎng)h除的同學(xué)信息為 :n; Student_DisplaySingleindex; printf 是否真的要?jiǎng)h除 .y/n; if getchar=y for i=index;inum-1;i+ studentsi=studentsi+1; num-; ge

12、tchar; printf 是否連續(xù) .y/n; if getchar=n break; void Student_Select while1 char name20; int index; printf 請(qǐng)輸入要查詢的同學(xué)的姓名 :; scanf%s,&name; getchar; index=Student_SearchByNamename; if index=-1 printf 同學(xué)不存在 .n; else printf 你要查詢的同學(xué)信息為 :n; Student_DisplaySingleindex; printf 是否連續(xù) .y/n; if getchar=n break; voi

13、d Student_SortByAverage int i,j; struct Student tmp; for i=0;inum;i+ for j=1;jnum-i;j+ if studentsj-1.Averagestudentsj.Average tmp=studentsj-1; studentsj-1=studentsj; studentsj=tmp; void Student_Display int i; printf%10s%10s%8s%8s%8s%10sn, 學(xué)號(hào) ,姓名 , 英語成果 , 數(shù)學(xué)成果 , 物理成果 , 平均成果 ; printf-n; for i=0;inum;

14、i+ printf%10s%10s%8.2f%8.2f%8.2f%10.2fn,studentsi.ID,studentsi.Name, studentsi.scor_eng,studentsi.scor_math,studentsi.scor_phy,studentsi.Average; void IO_ReadInfo FILE *fp; int i; if fp=fopenDatabase.txt,rb=NULL printf 不能打開文件 .n; return; if fread&num,sizeofint,1,fp.=1 num=-1; else fori=0;inum;i+ fre

15、ad&studentsi,sizeofstruct Student,1,fp; fclosefp; void IO_WriteInfo FILE *fp; int i; if fp=fopenDatabase.txt,wb=NULL printf 不能打開文件 .n; return; if fwrite&num,sizeofint,1,fp.=1 printf 寫入文件錯(cuò)誤 .n; for i=0;inum;i+ if fwrite&studentsi,sizeofstruct Student,1,fp.=1 printf 寫入文件錯(cuò)誤 .n; fclosefp; int main int c

16、hoice; IO_ReadInfo; while1 printfn- 同學(xué)成果治理系統(tǒng)-n; printf1. 增加同學(xué)記錄 n; printf2. 修改同學(xué)記錄 n; printf3. 刪除同學(xué)記錄 n; printf4. 按姓名查詢同學(xué)記錄 n; printf5. 按平均成果排序 n; printf6. 儲(chǔ)存文件 n; printf7. 退出 n; printf 請(qǐng)?zhí)暨x 1-7:; scanf%d,&choice; getchar; switchchoice case 1: Student_Insert; break; case 2: Student_Modify; break; cas

17、e 3: Student_Delete; break; case 4: Student_Select; break; case 5: Student_SortByAverage; Student_Display; break; case 6: IO_WriteInfo; break; case 7: exit0; break; 3.5 測試分析C 語言是上學(xué)期的學(xué)習(xí)內(nèi)容,現(xiàn)在生疏了很多,以致程序運(yùn)行過程中有很多bug,測試也有很多想不到的錯(cuò)誤;下面列舉幾個(gè)例子:1)IO_ReadInfo 讀出文件If(fp=fopen“ database.txt” ,” rb” )=NULL )以二進(jìn)制的格式

18、讀取文件的模式打開 database.txt文件,并把文件指針賦值為文件讀取指針I(yè)O_WriteInfo 寫入文件If(fp=fopen“ database.txt” ,” rb” )=NULL )以二進(jìn)制寫入方式打開文件,和讀 取 類 似 ; 在 寫 這 個(gè) 函 數(shù) 的 時(shí) 候 總 是 不 能 讀 出 , 而 且 寫 入 也 有 問 題 , if fwrite&num,sizeofint,1,fp.=1由于 sizeof(int)是指一次讀入的二進(jìn)制數(shù)據(jù)單位個(gè)數(shù),后面的“1” 表示要讀取的次數(shù), fread 返回值有 1、0,分別是勝利,失敗的意思;2)在程序中 float 與 int 要依據(jù)數(shù)據(jù)得取值情形,仍有字符串類型的使用,在求同學(xué)成果平均值的時(shí)候,由于字符串類型不一樣,導(dǎo)致數(shù)據(jù)結(jié)果失真,這樣 的錯(cuò)誤不應(yīng)再犯;3.6 設(shè)計(jì)結(jié)果錄入一條或多條同學(xué)數(shù)據(jù)刪除一條或多條同學(xué)數(shù)據(jù)按姓名查找一條或多條同學(xué)數(shù)據(jù)增加一條或多條同學(xué)數(shù)據(jù)修改一條或多條同學(xué)數(shù)據(jù)按同學(xué)平均成果排序儲(chǔ)存文件到根目錄退出程序四.結(jié)論與心得通過一周的上機(jī)實(shí)習(xí),我對(duì)C語言又有了自己的一點(diǎn)熟悉;C語言的學(xué)習(xí)是一個(gè)系統(tǒng)的過程,不像其它學(xué)科學(xué)問

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論