




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、摘摘 要要本設計是一個基于 C 語言實現(xiàn)的學生成績查詢系統(tǒng)。學生成績管理涉及到的算法都是以鏈表或順序表的基本運算作為基礎的,此程序包括:添加學生成績,查詢學生成績,修改學生成績, ,刪除學生成績,錯誤查詢。 查詢學生所有成績輸出顯示的功能。通過鏈表存儲結(jié)構(gòu)實現(xiàn)數(shù)據(jù)的輸入,實現(xiàn)各子程序過程的演示,對異常輸入信息報錯。 本系統(tǒng)以單片機的 C 語言進行軟件設計,為了便于擴展和更改,軟件的設計采用模塊化結(jié)構(gòu),使程序設計的邏輯關系更加簡潔明了。基于我們所學的知識,范圍及深度,在此建立一個功能較為簡單的查詢系統(tǒng)。 .關鍵詞:關鍵詞:C 語言,學生成績管理庫的建立,學生成績的刪除,查找,添加,修改。 目 錄
2、摘要摘要 1 1 設計方案論證設計方案論證2 程序設計程序設計3 測試程序測試程序 1 設計方案論證1.1 功能要求1.1.1主菜單界面如下: 歡迎使用學生成績管理系統(tǒng) 設計者: 請選擇功能: 1、 成績錄入2、 成績查詢3、 成績統(tǒng)計 1.1.2 各菜單項要求完成的功能 成績錄入:輸入學生的學號、姓名及三門課的成績;并輸出所有學生所有信息。 成績查詢: 按學號查詢學生記錄。 按學生姓名查詢學生記錄。 查詢不及格學生的記錄。 查詢及格學生的記錄。 成績統(tǒng)計: 計算每個學生的平均分,并輸出。 計算各科的總分及平均分,并輸出。 輸出各科狀元的記錄。1.1.3 定義的結(jié)構(gòu)體數(shù)組可以定義如下:defi
3、ne N 30struct student int num; /* 定義學號*/ char name20; /* 定義姓名*/float score3; /* 定義存貯三門課成績的數(shù)組*/float average; /* 定義平均成績*/stuN; /* 定義結(jié)構(gòu)體數(shù)組,存貯多個學生的記錄*/ 1.2 方案確定我們學過 C 語言及匯編語言,相對而言對 C 語言更加的熟悉,應用起來更加的熟練。所以使用 C 語言會在在程序編寫上會減少不小的難度,同時減少不少的失誤。在同組同學協(xié)商后,一致同意使用 C 語言來實現(xiàn)本次程序的編寫。 2 程序設計程序設計程序流程圖 #include #include
4、#define NULL 0 typedef struct node char name20; int number,chinese,maths,english; struct node *next; Student; /建一個結(jié)點(姓名,學號,語文,數(shù)學,英語,指向下個結(jié)點的指針) /*-查詢學生-*/ int searchList(int key) /*-增加新學生結(jié)點-*/ void addToList() /*-刪除學生結(jié)點-*/ void deleteFromList(int key) /*-修改學生結(jié)點-*/ void modify(int key) /*-顯示查詢到的學生結(jié)點-*
5、/ void findByNumber(int key) /*-打印除所有學生結(jié)點-*/ void printAll() /*-主函數(shù)-*/ void main() 接下來就是利用 C 語言,對此進行編程。一下就是本程序的源代碼:#include #include #include#define MENU_NUM 7#define N 3typedef struct s1 char no11; /*學號由 10 個字符組成*/ char name15; /*學生姓名*/ float scoreN; /*各門課成績*/ float sum; /*總分*/ float average; /*平均分
6、*/ int order; /*名次*/ struct s1 *next; /*指向后繼結(jié)點的指針*/STUDENT; /*定義結(jié)構(gòu)體類型*/STUDENT * head=NULL;void InputData( STUDENT * ptr );void PrintMenu( );int Menu_Select( );void Init( );void create( );void print( ) ;void Delete( );void append();void computer(); main() int key; while(1) key=Menu_Select(); switch(
7、key) case 0: Init(); /初試化鏈表。也就是若鏈表不為空則釋放鏈表中所有數(shù)據(jù),將 head置為空(NULL) break; case 1: create(); /創(chuàng)建鏈表,輸入數(shù)據(jù) break; case 2: Delete(); /刪除一個指定學號的記錄數(shù)據(jù) break; case 3: print(); /打印鏈表中所有數(shù)據(jù) break; case 4: computer(); /計算鏈表中所有人的總分和平均分 break; case 5: append(); /追加一個數(shù)據(jù)到鏈表的尾部 break; case 6: Init(); /釋放鏈表 exit(0); ;voi
8、d PrintMenu( ) int i; char * menu= 0. Init list, 1. Enter list, 2. Delete a record from list, 3. Print list, 4. Compute the score, 5. Insert record to list, 6. Quit ; printf(nn); for (i=0;inext;/ptr 指向下一個結(jié)構(gòu)數(shù)據(jù) free(p);/釋放 p 所指向的結(jié)構(gòu)數(shù)據(jù)的內(nèi)存 p=ptr;/將 p 指向 ptr 所指向的數(shù)據(jù) head=NULL;/將 head 指向 NULLvoid create( )
9、/創(chuàng)建單鏈表 STUDENT *pt, *pth=NULL; /定義兩個指針變量:pt 指向即將申請新的數(shù)據(jù)內(nèi)存,pth 指向當前數(shù)據(jù) while(1) pt=(STUDENT *)malloc(sizeof(STUDENT);/讓 pt 指向新申請的內(nèi)存空間 InputData(pt);/輸入數(shù)據(jù),存放到 pt 所指向的結(jié)構(gòu)數(shù)據(jù)。注意讓 pt 的 next指向 NULL if (strcmp(pt-no,)=0) free(pt);/釋放 pt 所指向的內(nèi)存空間 break;/退出循環(huán) else if (head=NULL) pth=pt; head=pt;/將頭指針 head 和 pth
10、指向 pt else pth-next=pt; /將 pth 的 next 指向 pt; pth=pt; /將 pth 指向 pt; ;void print( ) /打印單鏈表中所有數(shù)據(jù) int i=0; STUDENT *p;/第一個指針 p p=head;/將 p 指向 head printf(n); printf(*STUDENT*n); printf(|rec|no | name | sc1| sc2| sc3| sum | ave |order|n); printf(|-|-|-|-|-|-|-|-|-|n); /打印表頭 while (p!=NULL) printf(|%3d|%1
11、0s|%-16s|%4.1f|%4.1f|%4.1f|%6.2f|%5.1f|%5d|n, +i,p-no,p-name,p-score0,p-score1,p-score2, p-sum,p-average,p-order); /打印 p 所指向的結(jié)構(gòu)中的所有數(shù)據(jù)。注意打印數(shù)據(jù)間的分隔線 p=p-next;/將 p 指向 p 的下一個結(jié)構(gòu)數(shù)據(jù) printf(*END*n);/打印表尾void Delete( ) /刪除一個記錄 STUDENT *p,*pth;/定義兩個指針 p,pth char no11;/定義一個整數(shù) no(用來存儲輸入的學號) printf(intput delete
12、non); scanf(%s,no);/用輸入語句輸入一個學號存儲到 no 中 p=head;pth=head;/將 p 和 pth 都指向頭指針 if (strcmp(p-no,no)=0) /也就是若頭指針指向的數(shù)據(jù)需要刪除 head=head-next;/將 head 指針指向 head 的下一個數(shù)據(jù); free(p);/釋放 p 所指向的數(shù)據(jù) else p=p-next;/將 p 指向 p 的下一個數(shù)據(jù) while ( p!=NULL) if (strcmp(p-no,no)=0) /找到了要刪除的數(shù)據(jù) pth-next=p-next;/將 pth 的 next 指向 p 的 next
13、 free(p);/釋放 p break;/退出循環(huán) else pth=pth-next;/將 pth 指向 pth 的 next 或 將 pth 指向 p p=p-next;/將 p 指向 p 的 next void append() STUDENT *p,*pth;/定義兩個指針變量 p,pth pth=head;/將 pth 指向 head while ( pth-next!=NULL) pth=pth-next;/ptr 指向 ptr 的 next p=(STUDENT *)malloc(sizeof(STUDENT);/將 p 指向新申請的內(nèi)存空間 InputData(p);p-ne
14、xt=NULL;/數(shù)據(jù)數(shù)據(jù)存儲到 p 所指向的內(nèi)存空間,注意將p 的 next 置為 NULL pth-next=p;/將 ptr 的 next 指向 pvoid InputData( STUDENT *ptr ) int i; printf(enter no:); scanf(%s,ptr-no); if (strcmp(ptr-no,)=0 ) return; printf(enter name:); scanf(%s,ptr-name); for(i=0;iscorei); ptr-sum=0; ptr-average=0; ptr-order=0; ptr-next=NULL;void computer() STUDEN
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 標準合同-室外景觀工程施工合同
- 高三年級上冊9月月考語文試卷匯編:文學類文本閱讀
- 餐飲部工作計劃表
- 消化內(nèi)科診療規(guī)范與臨床實踐
- 心內(nèi)科診療知識體系
- 老年人日常生活護理
- 醫(yī)院保潔培訓課件
- 護士主班工作流程
- 學校炊事員食品安全培訓
- 整流模塊培訓課件
- 2024年河北唐山國控港口管理有限公司招聘筆試真題
- 2025新七年級語文下冊期末字音字形專題復習課件
- 妊娠合并貧血護理課件
- 荊州中學2024-2025學年高二下學期6月月考語文試題(定)
- 腦機接口硬件優(yōu)化-洞察及研究
- 2025年上海市中考數(shù)學真題試卷及答案
- 預算與績效管理制度
- 2025貴州省專業(yè)技術人員繼續(xù)教育公需科目考試題庫(2025公需課課程)
- 電大本科《人文英語4》期末題庫及答案
- 網(wǎng)課智慧樹知道《人工智能引論(浙江大學)》章節(jié)測試答案
- (完整版)施工占道施工方案
評論
0/150
提交評論