學(xué)生成績管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)_第1頁
學(xué)生成績管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)_第2頁
學(xué)生成績管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)_第3頁
學(xué)生成績管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)_第4頁
學(xué)生成績管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、洛 陽 理 工 學(xué) 院課 程 設(shè) 計(jì) 報(bào) 告 課程名稱 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 設(shè)計(jì)題目 學(xué)生成績管理系統(tǒng) 專 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 課 程 設(shè) 計(jì) 任 務(wù) 書設(shè)計(jì)題目: 學(xué)生成績管理系統(tǒng) 設(shè)計(jì)內(nèi)容與要求:編寫一個(gè)簡單的學(xué)生信息管理程序,能實(shí)現(xiàn)對學(xué)生信息的簡單管理。建立一個(gè)4個(gè)學(xué)生的信息登記表,每個(gè)學(xué)生的信息包括:學(xué)號,姓名,和3門課程的成績(FOX,C,ENGLISH)。程序運(yùn)行時(shí)顯示一個(gè)簡單的菜單,例如:(1)信息輸入(INPUT)(2)總分統(tǒng)計(jì)(COUNT)(3)總分排序(SORT)(4)查詢(QUERY)其中:(1)對4個(gè)學(xué)生的信息進(jìn)行輸入;(2)對每個(gè)學(xué)生的3門課程統(tǒng)計(jì)總分;(3)對4個(gè)學(xué)

2、生的總分按降序排序并顯示出來;(4)查詢輸入一個(gè)學(xué)號后,顯示出該學(xué)生的有關(guān)信息; 課 程 設(shè) 計(jì) 評 語 成績: 指導(dǎo)教師:_ 年 月 日目 錄一問題描述2二基本要求2三數(shù)據(jù)結(jié)構(gòu)2四總體設(shè)計(jì)31.結(jié)構(gòu)圖32.流程圖3五詳細(xì)設(shè)計(jì)51.錄入模塊52.瀏覽模塊53.排序模塊54.查找模塊5六測試與調(diào)試5七源程序清單9一問題描述編寫一個(gè)簡單的學(xué)生信息管理程序,能實(shí)現(xiàn)對學(xué)生信息的簡單管理。二基本要求建立一個(gè)4個(gè)學(xué)生的信息登記表,每個(gè)學(xué)生的信息包括:學(xué)號,姓名,和3門課程的成績(FOX,C,ENGLISH)。程序運(yùn)行時(shí)顯示一個(gè)簡單的菜單,例如:(1)信息輸入(INPUT)(2)總分統(tǒng)計(jì)(COUNT)(3)

3、總分排序(SORT)(4)查詢(QUERY)其中:(1)對4個(gè)學(xué)生的信息進(jìn)行輸入;(2)對每個(gè)學(xué)生的3門課程統(tǒng)計(jì)總分;(3)對4個(gè)學(xué)生的總分按降序排序并顯示出來;(4)查詢輸入一個(gè)學(xué)號后,顯示出該學(xué)生的有關(guān)信息;三數(shù)據(jù)結(jié)構(gòu)struct studentchar num10;/*學(xué)號*/char name20;/*姓名*/int fgrade;/*佛學(xué)成績*/int cgrade;/*C語言成績*/int egrade;/*英語成績*/int total;/*總分*/st100;四總體設(shè)計(jì)學(xué)生信息管理系統(tǒng)菜單選擇信息錄入信息瀏覽信息排序信息查詢按學(xué)號查詢按姓名查詢1.結(jié)構(gòu)圖圖4.12.流程圖2.1

4、錄入函數(shù)開始創(chuàng)建文件輸入信息保存關(guān)閉文件返回菜單圖4.2開始輸出排序結(jié)果結(jié)束創(chuàng)建數(shù)組排序2.2 排序函數(shù)圖4.3開始輸入查詢方式調(diào)用按學(xué)號查詢函數(shù)調(diào)用按姓名查詢函數(shù)返回菜單2.3 查詢函數(shù)開始輸入要查找的學(xué)號輸出該學(xué)生的信息結(jié)束for循環(huán)圖4.42.4 按學(xué)號查詢函數(shù)圖4.52.5 按姓名查詢函數(shù)(同上)五 詳細(xì)設(shè)計(jì)1.錄入模塊定義一個(gè)結(jié)構(gòu)struct student和數(shù)組stN用來儲(chǔ)存N個(gè)學(xué)生的所有信息(學(xué)號sti.num、姓名、佛學(xué)成績sti.fgrade、C語言成績sti.cgrade、英語成績sti.egrade)。通過for循環(huán)輸入所有學(xué)生信息。用printf語句提示

5、需要輸入的內(nèi)容,接著用scanf語句輸入相應(yīng)內(nèi)容。輸入完畢后套用保存函數(shù)save(m)將所輸入的信息寫入指定文件。2.瀏覽模塊聲明整形變量i和count,其中記錄輸出的學(xué)生序數(shù),count用來接收調(diào)用瀏覽函數(shù)時(shí)所傳遞過來的實(shí)參,將其值傳遞給導(dǎo)出函數(shù)load(m),使得導(dǎo)出的學(xué)生人數(shù)與瀏覽的學(xué)生人數(shù)保持一致。通過調(diào)用load函數(shù)后(即給em數(shù)組賦值),用for循環(huán)輸出每一個(gè)學(xué)生的各種信息。3.排序模塊聲明整形變量i,j和結(jié)構(gòu)體變量struct student temp,用for循環(huán)實(shí)現(xiàn)排序功能,利用冒泡法,以sti.total<stj.total為條件進(jìn)行排序。最后用printf輸出排序結(jié)

6、果。4.查找模塊聲明整型變量k,先用printf語句顯示查詢菜單,用scanf輸入選擇的查詢方式的代號,用switch(k)進(jìn)入所選擇的具體查詢函數(shù),包括學(xué)號查詢,姓名查詢兩種方式。學(xué)號查詢中,用scanf語句輸入需要查詢的學(xué)號,并賦值給num。用for循環(huán),循環(huán)主體判斷emi.num中是否有輸入的學(xué)號。如果有,用printf語句輸出與學(xué)號相對應(yīng)的該學(xué)生的所有信息,再跳出循環(huán)。按姓名查詢與此方法類似,不再敘述。六 測試與調(diào)試1. 運(yùn)行程序,進(jìn)入主菜單圖6.1 主菜單2輸入數(shù)字“1”,創(chuàng)建學(xué)生信息圖6.2 輸入職工信息3.輸入數(shù)字“2”,瀏覽學(xué)生信息圖6.3 瀏覽職工信息4.輸入數(shù)字“3”,按總

7、分排序圖6.4 按總分排序5.輸入數(shù)字“4”,查詢學(xué)生信息5.1 選擇查詢方式“1”圖6.5 按學(xué)號查詢5.2 選擇查詢方式“2”圖6.6 按姓名查詢七 源程序清單#include <stdio.h>#include <stdlib.h>#include <string.h>struct studentchar num10;/*學(xué)號*/char name20;/*姓名*/int fgrade;/*佛學(xué)成績*/int cgrade;/*C語言成績*/int egrade;/*英語成績*/int total;/*總分*/st100;void menu();voi

8、d input();void save(int m);void save();void display();void search();void search_num();void search_name();void sort_total(); int load();/*定義各函數(shù)*/int m;void main()menu();int n=0,flag;char a;doprintf("請選擇你需要操作的步驟(1-4):n");scanf("%d",&n);if(n>=0&&n<=4)flag=1;break;e

9、lseflag=0;printf("您輸入有誤,請重新選擇!");while(flag=0);while(flag=1)switch(n)case 1:printf("n 輸入學(xué)生信息n");printf("n");input();break;case 2:printf("n 瀏覽學(xué)生信息n");printf("n");display();break; case 3:printf("n 按總分排序n");printf("n");sort_total();b

10、reak;case 4:printf("n 查詢學(xué)生信息n");printf("n");search();break;case 0:exit(0);break;default:break;getchar();printf("n");printf("是否繼續(xù)運(yùn)行(y or n):n");scanf("%c",&a);if(a='y')flag=1;system("cls"); /*清屏*/menu(); /*調(diào)用菜單函數(shù)*/printf("請?jiān)?/p>

11、次選擇你需要操作的步驟(1-4):n");scanf("%d",&n);printf("n");elseexit(0);void menu() /*菜單函數(shù)*/printf(" *歡迎進(jìn)入學(xué)生信息管理系統(tǒng)*n");printf(" 1.錄入學(xué)生信息n");printf(" 2.瀏覽學(xué)生信息n");printf(" 3.按總分排序n");printf(" 4.查詢學(xué)生信息n");printf(" 0.退出n");prin

12、tf(" *謝謝使用*n");printf("n");printf("n");void input() /*輸入學(xué)生信息并保存*/ int i; printf("請輸入需要?jiǎng)?chuàng)建信息的學(xué)生人數(shù)(1-10):n"); scanf("%d",&m); for(i=0;i<m;i+) printf("請輸入學(xué)號:"); scanf("%s",sti.num); printf("請輸入姓名:"); scanf("%s&qu

13、ot;,); printf("請輸入佛學(xué)成績:"); scanf("%d",&sti.fgrade); printf("請輸入C語言成績:"); scanf("%d",&sti.cgrade); printf("請輸入英語成績:"); scanf("%d",&sti.egrade); sti.total=sti.fgrade+sti.cgrade+sti.egrade; /*信息輸入已經(jīng)完成*/ save(m); return;/*返回

14、主界面*/void display()/*瀏覽學(xué)生信息*/int i;int count=0;m=load();printf("n學(xué)號t姓名t佛學(xué)成績tC語言成績t英語成績t總分n");/*輸出學(xué)生信息*/for(i=0;i<m+count;i+) printf("n%st%st%dtt%dtt%dtt%dn",sti.num,,sti.fgrade,sti.cgrade,sti.egrade,sti.total);void sort_total() /*按總分排序*/int i,j;struct student temp; /*聲

15、明結(jié)構(gòu)體變量*/printf("t學(xué)號t姓名t佛學(xué)成績tC語言成績t英語成績t總分n");for(i=0;i<m;i+)/*對數(shù)據(jù)進(jìn)行排序*/ for(j=i+1;j<m;j+)if(sti.total<stj.total)temp=sti; sti= stj; stj=temp; printf("nt%st%st%dtt%dtt%dtt%dn",sti.num,,sti.fgrade,sti.cgrade,sti.egrade,sti.total);void search() /*查詢函數(shù)*/int k; /*定義局部

16、變量*/m=load();printf("n按學(xué)號查詢請按1,t按姓名查詢請按2n"); printf("n請輸入查詢方式:"); scanf("%d",&k);switch(k)/*查詢方式的選擇*/case 1:search_num();break;/*按學(xué)號查詢*/ case 2:search_name();break;/*按姓名查詢*/printf("nPress any key to enter menu.");getchar();return; /*返回主界面*/void search_num(

17、)/*(1)按學(xué)號查找*/int i;char temp30;printf("n 請輸入要查找的學(xué)號:");scanf("%s",temp);for( i=0;i<m;i+)if(strcmp(temp,sti.num)=0) printf("n學(xué)號t姓名t佛學(xué)成績tC語言成績t英語成績t總分n");printf("n%st%st%dtt%dtt%dtt%dn",sti.num,,sti.fgrade,sti.cgrade,sti.egrade,sti.total);void search_n

18、ame()/*(2)按姓名查找*/int i; char temp30;printf("n 請輸入要查找的姓名:");scanf("%s",temp);for( i=0;i<m;i+)if(strcmp(temp,)=0) printf("n學(xué)號t姓名t佛學(xué)成績tC語言成績t英語成績t總分n");printf("n%st%st%dtt%dtt%dtt%dn",sti.num,,sti.fgrade,sti.cgrade,sti.egrade,sti.total);int load() /*導(dǎo)入函數(shù)*/FILE*fp;int n=0;if(fp=fopen("student_list","rb")=NULL)printf("cannot open filen");exit(0);elsedofread(&stn,sizeof(struct student),1,fp);n+;while(feof(fp)=0);fclose(fp);return(n-1);void

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論