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

下載本文檔

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

文檔簡介

1、C語言成績查詢系統(tǒng)C 語言大作業(yè)姓名:班級(jí):學(xué)號(hào):指導(dǎo)教師:設(shè)計(jì)時(shí)間:目錄一.目的 4二 .題目描述和要求 4三 .報(bào)告內(nèi)容 63.1 需求分析 63.2 概要設(shè)計(jì) 63.3 詳細(xì)設(shè)計(jì) 83.4 主要源程序代碼 93.5 測(cè)試分析 253.6 設(shè)計(jì)結(jié)果 26四 .結(jié)論與心得 31目的1.1 、 通過本次大作業(yè),鍛煉我們應(yīng)用 C語言的語法規(guī)則和已經(jīng)掌握的 算法,自己解決一個(gè)較簡單的課題,初步積累編程經(jīng)驗(yàn)。1.2 、 通過學(xué)習(xí)掌握程序設(shè)計(jì)的方法與編程技術(shù), 學(xué)會(huì)良好的程序設(shè)計(jì)風(fēng)格, 為計(jì)算機(jī)在不同領(lǐng)域的應(yīng)用打下堅(jiān)實(shí)的基礎(chǔ)。1.3 、 要求我們能利用計(jì)算機(jī)解決實(shí)際問題。從分析問題入手,設(shè)計(jì)可行的 算

2、法,進(jìn)而編出相應(yīng)的 C 程序。強(qiáng)調(diào)上機(jī)實(shí)踐過程,從實(shí)際應(yīng)用出發(fā),注重 程序的實(shí)際應(yī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 計(jì)算學(xué)生成績 計(jì)算每位學(xué)生的總分。 計(jì)算每位學(xué)生的平均分。 成績排序。2.5

3、 信息保存將學(xué)生信息保存在文件中。2.6 根據(jù)以上功能需求,定義通訊錄信息結(jié)構(gòu),并采用鏈表結(jié)構(gòu)對(duì)數(shù)據(jù)進(jìn)行 存儲(chǔ)。2.7 提供友好的用戶界面,方便用戶操作。三.報(bào)告內(nèi)容3.1 需求分析隨著當(dāng)今社會(huì)發(fā)展, 信息化水平逐步提高, 對(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ù)變量說明主菜單輸 列 查 增 修 排 保2. 系統(tǒng)總體流程

4、圖3.3 詳細(xì)設(shè)計(jì)源文件函數(shù)名或其他成分功能student.cpp函數(shù)名或其他成分功能main總控函數(shù)int choice菜單選擇switch(choice)菜單處理IO WriteInfo新建學(xué)生信息記錄exit結(jié)束運(yùn)行Student_Insert增加學(xué)生信息Student_Display顯示信息Student Delete刪除指定的記錄Student Select查詢指定學(xué)生的信息Student_Modify修改指定學(xué)生的信息Student_SortByAverage排序student.h結(jié)構(gòu)聲明學(xué)生成績結(jié)構(gòu)庫函數(shù)及函數(shù)原型聲明引用庫函數(shù)及函數(shù)3.4 主要源程序代碼#include<

5、stdio.h>#include<string.h>#include <cstdlib> struct Studentchar ID20; char Name20; float scor_eng; float scor_math; float scor_phy; float Average;struct Student students1000;int num=0;float Avg(struct Student stu)return(stu.scor_eng+stu.scor_math+stu.scor_phy)/3; int Student_SearchByI

6、ndex(char id)int i;for (i=0;i<num;i+)if (strcmp(studentsi.ID,id)=0)return i;return -1;int Student_SearchByName(char name) int i;for (i=0;i<num;i+)if(strcmp(studentsi.Name,name)=0)return i;return -1;void Student_DisplaySingle(int index)printf("%10s%10s%8s%8s%8s%10sn"," 學(xué) 號(hào)",

7、" 姓名 "," 英語成績 "," 數(shù)學(xué)成績 "," 物理成績 "," 平均成績 ");printf("n");printf("%10s%10s%8.2f%8.2f%8.2f%10.2fn",s tudentsindex.ID,studentsindex.Name,studentsindex.scor_eng,studentsindex.scor_m ath,studentsindex.scor_phy,studentsindex.Average);voi

8、d Student_Insert()while(1)printf(" 請(qǐng)輸入學(xué)號(hào) :");scanf("%s",&studentsnum.ID); getchar();printf(" 請(qǐng)輸入姓名 :"); scanf("%s",&studentsnum.Name); getchar();printf(" 請(qǐng)輸入英語成績 :");scanf("%f",&studentsnum.scor_eng);getchar();printf(" 請(qǐng)輸入數(shù)

9、學(xué)成績 :");scanf("%f",&studentsnum.scor_math);getchar();printf(" 請(qǐng)輸入物理成績 :");scanf("%f",&studentsnum.scor_phy);getchar();studentsnum.Average=Avg(studentsnum);num+;printf(" 是否繼續(xù) ?(y/n)");if (getchar()='n')break;void Student_Modify()while(1)cha

10、r id20;int index;printf(" 請(qǐng) 輸 入 要 修 改 的 學(xué) 生 的 學(xué)號(hào):");scanf("%s",&id);getchar();index=Student_SearchByIndex(id);if (index=-1)printf(" 學(xué)生不存在 !n");elseprintf(" 你 要 修 改 的 學(xué) 生 信 息 為:n");Student_DisplaySingle(index); printf("- 請(qǐng)輸入新值 -n"); printf("

11、請(qǐng)輸入學(xué)號(hào) :");scanf("%s",&studentsindex.ID);getchar(); printf(" 請(qǐng)輸入姓名 :");scanf("%s",&studentsindex.Name);getchar(); printf(" 請(qǐng)輸入英語成績 :");scanf("%f",&studentsindex.scor_eng);getchar();printf(" 請(qǐng)輸入數(shù)學(xué)成績 :");scanf("%f",&

12、amp;studentsindex.scor_math);getchar();printf(" 請(qǐng)輸入物理成績 :");scanf("%f",&studentsindex.scor_phy);getchar();studentsindex.Average=Avg(studentsindex);printf(" 是否繼續(xù) ?(y/n)");if (getchar()='n')break;void Student_Delete()int i; while(1) char id20; int index; print

13、f(" 請(qǐng) 輸 入 要 刪 除 的 學(xué) 生 的 學(xué) 號(hào):");scanf("%s",&id); getchar();index=Student_SearchByIndex(id);if (index=-1) printf(" 學(xué)生不存在 !n"); else printf(" 你 要 刪 除 的 學(xué) 生 信 息 為:n");Student_DisplaySingle(index); printf(" 是 否 真 的 要 刪除?(y/n)");if (getchar()='y

14、9;)for (i=index;i<num-1;i+)studentsi=studentsi+1;num-;getchar();printf(" 是否繼續(xù) ?(y/n)");if (getchar()='n')break;void Student_Select()while(1)char name20;int index;printf(" 請(qǐng)輸入 要查詢的 學(xué)生的姓名:");scanf("%s",&name);getchar();index=Student_SearchByName(name);if (i

15、ndex=-1)printf(" 學(xué)生不存在 !n");elseprintf(" 你 要 查 詢 的 學(xué) 生 信 息為:n");Student_DisplaySingle(index);printf(" 是否繼續(xù) ?(y/n)");if (getchar()='n')break;void Student_SortByAverage()int i,j;struct Student tmp;for (i=0;i<num;i+)for (j=1;j<num-i;j+)if(studentsj-1.Average&

16、lt;studentsj.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;i<num;i+)

17、printf("%10s%10s%8.2f%8.2f%8.2f%10.2fn",s tudentsi.ID,studentsi.Name,studentsi.scor_eng,studentsi.scor_math,studen tsi.scor_phy,studentsi.Average);void IO_ReadInfo()FILE *fp;int i;if (fp=fopen("Database.txt","rb")=NULL)printf(" 不能打開文件 !n");return;if (fread(&am

18、p;num,sizeof(int),1,fp)!=1)num=-1;elsefor(i=0;i<num;i+)fread(&studentsi,sizeof(struct Student),1,fp);fclose(fp);void IO_WriteInfo()FILE *fp;int i;if (fp=fopen("Database.txt","wb")=NULL)printf(" 不能打開文件 !n"); return;if (fwrite(&num,sizeof(int),1,fp)!=1)printf(&

19、quot; 寫入文件錯(cuò)誤 !n");for (i=0;i<num;i+)if (fwrite(&studentsi,sizeof(struct Student),1,fp)!=1)printf(" 寫入文件錯(cuò)誤 !n");fclose(fp);int main()int choice;IO_ReadInfo();while(1)printf("n 學(xué) 生 成 績 管 理 系 統(tǒng)n");printf("1. 增加學(xué)生記錄 n");printf("2. 修改學(xué)生記錄 n");printf(&qu

20、ot;3. 刪除學(xué)生記錄 n");printf("4. 按姓名查詢學(xué)生記錄 n");printf("5. 按平均成績排序 n");printf("6. 保存文件 n");printf("7. 退出 n"); printf(" 請(qǐng)選擇 (1-7):"); scanf("%d",&choice);getchar(); switch(choice) case 1:Student_Insert(); break;case 2: Student_Modify(); b

21、reak;case 3:Student_Delete(); break;case 4:Student_Select(); break;case 5:Student_SortByAverage();Student_Display(); break;case 6:IO_WriteInfo();break;case 7: exit(0); break;3.5 測(cè)試分析C 語言是上學(xué)期的學(xué)習(xí)內(nèi)容,現(xiàn)在生疏了很多,以致程序運(yùn)行過程中有許多 bug,測(cè)試也有很多想不到的錯(cuò)誤。下面列舉幾個(gè)例子:1)IO_ReadInfo 讀出文件If (fp=fopen( “database.txt ”,”rb ”)=NULL )以二進(jìn)制的格式讀取文件的模式打 開 database.txt 文件,并把文件指針賦值為文件讀取指針I(yè)O_WriteInfo 寫入文件If (fp=fopen( “database.txt ”,”rb ”)=NU

溫馨提示

  • 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)論