天天看點

c語言大作業成績查詢系統,C語言成績查詢系統

《C語言成績查詢系統》由會員分享,可線上閱讀,更多相關《C語言成績查詢系統(35頁珍藏版)》請在人人文庫網上搜尋。

1、C語言成績查詢系統C 語言大作業姓名:班級:學号:指 導 教 師:設 計 時 間:2目錄一 .目的4二 .題目描述和要求4三 .報告内容63.1 需求分析63.2 概要設計63.3 詳細設計83.4 主要源程式代碼93.5 測試分析253.6 設計結果26四 .結論與心得313一 .目的1.1 、通過本次大作業,鍛煉我們應用C語言的文法規則和已經掌握的算法,自己解決一個較簡單的課題,初步積累程式設計經驗。1.2 、 通過學習掌握程式設計的方法與程式設計技術,學會良好的程式設計風格,為計算機在不同領域的應用打下堅實的基礎。1.3 、 要求我們能利用計算機解決實際問題。從分析問題入手,設計可行的算法,進而。

2、編出相應的C 程式。強調上機實踐過程,從實際應用出發,注重程式的實際應用。二 .題目描述和要求題目:學生成績管理系統4應用連結清單及外部檔案,獨立設計上述應用系統,并程式設計實作以下功能:2.1資訊錄入錄入學生資訊(包括姓名、學号、各科成績) 。2.2資訊查詢輸入學号,查詢與學号相對應的資訊(包括成績) ,并按可選的自定義規則進行排序。按班級查詢學生成績。按班級統計學科總分、平均分等。2.3資訊删除與修改輸入學号,删除該學号對應的成績資訊。輸入學号,查詢并顯示出該學号資訊,并在此基礎上進行修改。2.4計算學生成績計算每位學生的總分。計算每位學生的平均分。成績排序。2.5 資訊儲存将學生資訊儲存在檔案中。

3、。2.6根據以上功能需求,定義通訊錄資訊結構,并采用連結清單結構對資料進行存儲。52.7 提供友好的使用者界面,友善使用者操作。三 .報告内容3.1 需求分析随着當今社會發展, 資訊化水準逐漸提高, 對教務管理有了新的要求,是以,編寫一個資訊管理系統是十分有必要的。該軟體主要是實作對學生資訊進行系統化的管理,首先可以對學生基本資訊進行輸入和讀取,其次查找并顯示特定學生的相關資訊,然後可以插入學生的相關資訊,還有就是可按學生相關資訊排序,以求達到簡易操作的目的。3.2 概要設計1系統結構圖(功能子產品圖)和資料變量說明6主菜單輸列查增修排保退2. 系統總體流程圖開始編譯有有 /無MAIN調用K=0K連接配接E。

4、XI調用各個功能函數( K=?)7執行錯輸入3.3 詳細設計源檔案函數名或其他成分功能student.cpp函數名或其他成分功能main總控函數int choice菜單選擇switch(choice)菜單處理IO_WriteInfo建立學生資訊記錄exit結束運作Student_Insert增加學生資訊Student_Display顯示資訊Student_Delete删除指定的記錄Student_Select查詢指定學生的資訊Student_Modify修改指定學生的資訊Student_SortByAverage排序8student.h結構聲明學生成績結構庫函數及函數原型聲明引用庫函數及函數3。

5、.4 主要源程式代碼#include#include#include struct Studentchar ID20;char Name20;float scor_eng;float scor_math;float scor_phy;float Average;struct Student students1000;int num=0;9float Avg(struct Student stu)return(stu.scor_eng+stu.scor_math+stu.scor_phy)/3;int Student_SearchByIndex(char id)int i;for (i=0;in。

6、um;i+)if (strcmp(studentsi.ID,id)=0)return i;return -1;int Student_SearchByName(char name)int i;for (i=0;inum;i+)10if(strcmp(studentsi.Name,name)=0)return i;return -1;void Student_DisplaySingle(int index)printf(%10s%10s%8s%8s%8s%10sn, 學号 , 姓名 , 英語成績 , 數學成績 , 實體成績 , 平均成績 );printf(-n);printf(%10s%10s%。

7、8.2f%8.2f%8.2f%10.2fn,s tudentsindex.ID,studentsindex.Name,studentsindex.scor_eng,studentsindex.scor_m ath,studentsindex.scor_phy,studentsindex.Ave11rage);void Student_Insert()while(1)printf( 請輸入學号 :);scanf(%s,&studentsnum.ID);getchar();printf( 請輸入姓名 :);scanf(%s,&studentsnum.Name);getchar();printf( 。

8、請輸入英語成績 :);scanf(%f,&studentsnum.scor_eng);getchar();printf( 請輸入數學成績 :);scanf(%f,&studentsnum.scor_math);getchar();printf( 請輸入實體成績 :);12scanf(%f,&studentsnum.scor_phy); getchar();studentsnum.Average=Avg(studentsnum);num+;printf( 是否繼續 ?(y/n);if (getchar()=n)break;void Student_Modify()while(1)char id2。

9、0;int index;printf(請 輸 入 要 修 改 的 學 生 的 學号 :);scanf(%s,&id);getchar();13index=Student_SearchByIndex(id);if (index=-1)printf( 學生不存在 !n);elseprintf(你 要 修 改 的 學生 信 息為 :n);Student_DisplaySingle(index);printf(-請輸入新值 -n);printf( 請輸入學号 :);scanf(%s,&studentsindex.ID);getchar();printf( 請輸入姓名 :);scanf(%s,&stud。

10、entsindex.Name);getchar();printf( 請輸入英語成績 :);scanf(%f,&studentsindex.scor_eng);14getchar();printf( 請輸入數學成績 :);scanf(%f,&studentsindex.scor_math);getchar();printf( 請輸入實體成績 :);scanf(%f,&studentsindex.scor_phy); getchar();studentsindex.Average=Avg(studentsindex);printf( 是否繼續 ?(y/n);if (getchar()=n)brea。

11、k;void Student_Delete()15int i;while(1)char id20;int index;printf(請 輸 入 要 删 除 的 學 生 的 學号 :);scanf(%s,&id);getchar();index=Student_SearchByIndex(id);if (index=-1)printf( 學生不存在 !n);elseprintf(你 要 删 除 的 學生 信 息為 :n);Student_DisplaySingle(index); printf( 是 否 真 的 要 删除 ?(y/n);16if (getchar()=y)for (i=index。

12、;inum-1;i+)studentsi=studentsi+1;num-;getchar();printf( 是否繼續 ?(y/n);if (getchar()=n)break;void Student_Select()while(1)17char name20;int index;printf(請 輸入 要查 詢的 學生 的姓名 :);scanf(%s,&name);getchar();index=Student_SearchByName(name); if (index=-1)printf( 學生不存在 !n);elseprintf(你 要 查 詢 的 學生 信 息為 :n);Stude。

13、nt_DisplaySingle(index);printf( 是否繼續 ?(y/n);if (getchar()=n)break;18void 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;19void Student_Display()int i;printf(%10s%10s%8s%。

14、8s%8s%10sn,學号 , 姓名 , 英語成績 , 數學成績 , 實體成績 , 平均成績 );printf(-n);for (i=0;inum;i+)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()20FILE *fp;int i;if(fp=fopen(Database.txt,rb)=NULL)printf( 不。

15、能打開檔案 !n);return;if (fread(&num,sizeof(int),1,fp)!=1)num=-1;elsefor(i=0;inum;i+)fread(&studentsi,sizeof(structStudent),1,fp);fclose(fp);21void 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( 寫入檔案錯誤 !n);for (i=0;inu。

16、m;i+)if (fwrite(&studentsi,sizeof(struct Student),1,fp)!=1)printf( 寫入檔案錯誤 !n);22fclose(fp);int main()int choice;IO_ReadInfo();while(1)printf(n-學 生 成 績 管 理 系 統-n);printf(1. 增加學生記錄 n); printf(2. 修改學生記錄 n); printf(3. 删除學生記錄 n); printf(4. 按姓名查詢學生記錄 n); printf(5. 按平均成績排序 n);printf(6.儲存檔案 n);printf(7.退出 n。

17、);printf( 請選擇 (1-7):);scanf(%d,&choice);23getchar();switch(choice)case 1:Student_Insert();break;case 2:Student_Modify();break;case 3:Student_Delete();break;case 4:Student_Select();break;case 5:Student_SortByAverage();Student_Display();break;case 6:IO_WriteInfo();break;24case 7:exit(0);break;3.5 測試分析。

18、C 語言是上學期的學習内容,現在生疏了很多,以緻程式運作過程中有許多bug,測試也有很多想不到的錯誤。下面列舉幾個例子:1)IO_ReadInfo 讀出檔案If (fp=fopen( “database.txt ”,”rb ”))=NULL )以二進制的格式讀取檔案的模式打開 database.txt 檔案,并把檔案指針指派為檔案讀取指針IO_WriteInfo 寫入檔案If (fp=fopen( “database.txt ”,”rb ”))=NULL )以二進制寫入方式打開檔案,和讀取 類 似 。 在寫 這個 函數 的 時候 總是 不能 讀出 , 而 且 寫 入 也有 問 題 , if (。

19、fwrite(&num,sizeof(int),1,fp)!=1) 因為 sizeof( int )是指一次讀入的二進制資料機關個數,後面的“ 1”表示要讀取的次數, fread 傳回值有 1、0,分别是成功,失敗的意思。2)在程式中 float 與 int 要根據資料得取值情況,還有字元串類型的使用,在求學生成績平均值的時候,因為字元串類型不一緻,導緻資料結果失真,這樣的錯誤不應再犯。253.6 設計結果錄入一條或多條學生資料删除一條或多條學生資料26按姓名查找一條或多條學生資料27增加一條或多條學生資料修改一條或多條學生資料28按學生平均成績排序儲存檔案到根目錄29退出程式30四 .結論與。

20、心得通過一周的上機實習,我對C 語言又有了自己的一點認識。C語言的學習是一個系統的過程,不像其它學科知識, C 語言必須自己親自一個個代碼打出來,自己對那個代碼要有自己的了解,怎麼用,如何用更好,還可以怎麼用,都要通過自己聯系才有體會,在實踐中成長,在實踐中求知。這次設計的課題是學生資訊管理系統。課題要求對學生資訊實作一系列基本操作。我選擇通過結構體數組和指針來實作這個設計。但是,設計完成後關于用學号輸出成績還是用姓名都是可以的。但用學号輸入時有很多麻煩都是之前沒有料到的,換成姓名輸入後,就簡單多了。總之,通過這次實習,我也認識到了我自己在程式設計這門課程上的不足,在以後的學習實踐中,要更加的嚴謹踏實,對知識的把握要更加的細緻入微,要活學活用,争取在這個學科上取得更大的進步。3132。