學(xué)生成績管理系統(tǒng)含附源代碼18_第1頁
學(xué)生成績管理系統(tǒng)含附源代碼18_第2頁
學(xué)生成績管理系統(tǒng)含附源代碼18_第3頁
學(xué)生成績管理系統(tǒng)含附源代碼18_第4頁
學(xué)生成績管理系統(tǒng)含附源代碼18_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 西 安 郵 電 學(xué) 院 高級語言課程設(shè)計報告題 目: 學(xué) 生 成 績 管 理 系 統(tǒng) 系部名稱: 電子與信息工程系專業(yè)名稱:電子科學(xué)與技術(shù)班 級:科技0701班內(nèi)序號:18學(xué)生姓名 : 段 曉 騰指導(dǎo)教師:黃 茹時間:2008年6月8日 至2008年6月18日實驗題目:學(xué)生成績管理系統(tǒng)一、 實驗?zāi)康?. 熟悉c語言的編譯連接和運行過程。2. 掌握c語言的數(shù)據(jù)類型,熟悉整型、實型、字符型變量的定義方式及如何給它們賦值。3. 掌握if語句及switch語句的運用方法及嵌套應(yīng)用方法。4. 掌握實現(xiàn)循環(huán)結(jié)構(gòu)的三種語句while、 do-while.、for 的使用。5. 掌握函數(shù)的定義方法和調(diào)用方法

2、。6. 能夠采用模塊化思想調(diào)試程序。二實驗內(nèi)容1. 編寫程序并進(jìn)行調(diào)試運行。2. 輸入學(xué)生資料,并保存于文件。每個學(xué)生包含信息如:學(xué)號、姓名、性別.成績信息等。3. 對已存入的學(xué)生信息進(jìn)行更新操作,包括添加一個學(xué)生信息、刪除某個學(xué)生信息和修改某個學(xué)生信息。4. 通過輸入姓名、學(xué)號的方式查詢學(xué)生信息。5. 最后輸出學(xué)生信息。 二、 需求分析1. 該程序可用于對學(xué)生的宿舍情況基本信息的存儲、更新、查詢、輸出等操作,以實現(xiàn)對學(xué)生成績的管理。2. 其中更新功能包括:添加信息、刪除信息、修改信息、可根據(jù)需要添加一個或多個學(xué)生信息,也可對個別學(xué)生信息進(jìn)行適當(dāng)?shù)膭h除或修改。以便隨時更新學(xué)生信息。3. 程序中

3、設(shè)計的查詢功能可根據(jù)需要從若干數(shù)據(jù)中查詢某個學(xué)生信息,并且可根據(jù)兩種不同的方法查詢:按學(xué)號查詢和按姓名查詢。以滿足不同的需要。四、概要設(shè)計1、方案設(shè)計對系統(tǒng)進(jìn)行分析,給出結(jié)構(gòu)圖 分析:系統(tǒng)要求實現(xiàn)許多的功能,因此遵循結(jié)構(gòu)化程序設(shè)計思想來進(jìn)行本系統(tǒng)的設(shè)計自頂向下、逐步細(xì)化,將系統(tǒng)設(shè)計任務(wù)分解出許多子功能模塊進(jìn)行設(shè)計 結(jié)構(gòu)圖如下:學(xué)生成績管理系統(tǒng) 查詢模塊輸出模塊更新模塊退出系統(tǒng)排序模塊添加模塊按總成績排序按計算機(jī)成績排序按物理成績排序按體育成績排序按英語成績排序按數(shù)學(xué)成績排序按學(xué)號查尋按姓名查詢退出系統(tǒng)修改學(xué)生信息刪除學(xué)生信息退出系統(tǒng)2.模塊功能說明對各個模塊進(jìn)行功能的描述(1).輸出模塊:可以

4、對所有的學(xué)生信息進(jìn)行輸出。(2)添加模塊:可添加一個或多個學(xué)生信息,并將所添加學(xué)生信息保存,方便查找。(4)修改模塊:可根據(jù)需要對多個學(xué)生信息進(jìn)行修改,也可隨時對個別項進(jìn)行修改,還可以刪除學(xué)生的信息。(5)查詢模塊:可對已建立的學(xué)生信息進(jìn)行查詢,并且可根據(jù)需要選擇按姓名查詢或按學(xué)號查詢。 (6)保存模塊:用于對信息進(jìn)行保存。(7)退出系統(tǒng):選擇該項,自動退出該系統(tǒng)。五、詳細(xì)設(shè)計及運行結(jié)果流程圖, 函數(shù)之間相互調(diào)用的圖示 ,程序設(shè)計及編碼, 運行結(jié)果。開 始輸入i的值判斷i的值退出系統(tǒng)輸出模塊添加模塊更新模塊排序模塊查詢模塊輸入選擇項所對應(yīng)的值輸入選擇項所對應(yīng)的值輸入選擇項所對應(yīng)的值判斷choo

5、se的值判斷choose的值判斷choose的值 修改信息退出系統(tǒng)刪除信息按總成績排序按計算機(jī)成績排序按物理成績排序按體育成績排序按英語成績排序按數(shù)學(xué)成績排序按學(xué)號查詢退出系統(tǒng)按姓名查詢 結(jié) 束保存模塊 六 調(diào)試情況及運行結(jié)果1、 對自己設(shè)計進(jìn)行評價,指出合理和不足之處,提出改進(jìn)的方案。此次實踐課編寫的是一個應(yīng)用程序,相對于以前我們見到的程序,它要大得多,運行的結(jié)果也沒有預(yù)想中的好,數(shù)據(jù)的輸出格式不太規(guī)范,而且各模塊也出現(xiàn)了一些小問題,在同學(xué)們的幫助下,我很有耐心的一次又一次的進(jìn)行修改,最后運行的結(jié)果基本上達(dá)到了預(yù)期的目的。可著畢竟是第一次獨立完成這樣的大程序,結(jié)果還不是太理想。由于時間很短,

6、在選題報告中設(shè)想到的好多功能都沒有實現(xiàn)。已有的那些功能雖已能基本上滿足需要,但如果還有更多的功能程序就會更加完美。2、在設(shè)計過程中的感受。 本次C 語言的實習(xí)課讓我對C 語言的學(xué)習(xí)又有了更深入的了解,也讓我更深刻地領(lǐng)悟到了“實踐出真理”這個道理,在上機(jī)實踐過程中學(xué)到的知識遠(yuǎn)遠(yuǎn)超過了在課堂上十幾周學(xué)到的,學(xué)校組織的這次實習(xí)讓我這種實踐知識匱乏的大學(xué)生增添了許多社會經(jīng)驗,為我們將來走上工作崗位其了不小的鋪墊作用。本次實習(xí)中遇到了很多以前沒有遇到過的問題,也曾想過要放棄,但看到那些同學(xué)都在那認(rèn)真的寫程序,給了我繼續(xù)的信心。在同學(xué)的幫助下,我順利的結(jié)束了本次實習(xí),讓我知道原來憑借自己努力取得的成功會讓

7、自己這么欣慰,也讓我知道了友誼和團(tuán)結(jié)的重要性。七參考文獻(xiàn)C語言程序設(shè)計 王曙燕 曹錳 科學(xué)出版社 2005年2月C語言程序設(shè)計 譚浩強(qiáng) 清華大學(xué)出版社 1999年12月 八。附錄: #include <conio.h>#include <stdio.h>#include <string.h>#define N 35#define START1 printf("*n")#define START2 printf("n-學(xué)號-姓名-性別-高數(shù)-英語-體育-物理-計算機(jī)-總成績-平均成績n")#define START3 p

8、rintf("%4d %2s %6s %6d %6d %6d %6d %6d %6d %6dn",Si.num,S,Si.sex,Si.math,Si.English,Si.sport,Si.physic,Sputer,Si.total,Si.aver) /*學(xué)生結(jié)構(gòu)體類型*/struct student_typeint num; char name 20; char sex4; int math; int English; int sport; int physic; int computer; int total; int aver; SN; /*

9、存放N個學(xué)生數(shù)據(jù)的結(jié)構(gòu)體數(shù)組*/ int sum; /*保存數(shù)據(jù)單元*/ save_message(int sum)FILE *fp; int i=0; if (fp=fopen("chengji.txt","wb")=NULL) printf("讀取文件錯誤! ! !"); return; do if(fwrite(&Si,sizeof(struct student_type),1,fp)!=1) printf("寫文件錯誤 ! ! !n"); i+; while(Si.num!=0&&S

10、i.num!=Si-1.num); fclose(fp); /*讀取數(shù)據(jù)單元*/ read_message() FILE *fp;int i=0;if(fp=fopen("chengji.txt","rb")=NULL)printf("nn*系統(tǒng)暫時沒有信息,請按任意鍵進(jìn)入主菜單選擇基本信息的輸入!*nn"); while(feof(fp)!=1) fread(&Si,sizeof(struct student_type),1,fp); if(Si.num=0|Si.num=Si+1.num) break ; else i+;

11、 fclose(fp); return(i) ; /*輸出學(xué)生數(shù)據(jù)模塊*/ output_message()int i=0; clrscr(); do printf("n-學(xué)生成績信息單-n"); START2 ; START3 ; i+; while(Si.num!=0&&Si-1.num!=Si.num); printf("n-隨你所按,返回主菜單-n"); bioskey(0); /*修改學(xué)生數(shù)據(jù)(更新區(qū))*/ revise_message() int i=0,choose,revise_num; char did; do clrs

12、cr(); printf("n 輸入要修改的學(xué)生的學(xué)號:n"); scanf("%d",&revise_num); for(i=0;i<sum;i+) if(Si.num=revise_num) printf("n-該學(xué)生信息如下-n"); START2; START3; printf("n*需要修改哪一項:*n"); printf(" 1.學(xué)號?n"); printf(" 2.姓名?n"); printf(" 3.性別?n"); print

13、f(" 4.高數(shù)? n"); printf(" 5.英語?n"); printf(" 6.體育?n"); printf(" 7.物理?n"); printf(" 8.計算機(jī)?n"); printf("n*請選擇(1-8),按回車鍵結(jié)束:*n"); scanf("%d",&choose); while (choose<1|choose>8) printf("輸入錯誤,請重新輸入:"); scanf("%d&q

14、uot;,&choose); switch (choose) case 1:printf(" 輸入修改后的學(xué)號:"); scanf("%d",&Si.num); break; case 2:printf(" 輸入修改后的姓名:"); scanf("%s",&S); break; case 3:printf(" 輸入修改后的性別:"); scanf("%s",&Si.sex); break; case 4:printf("

15、輸入修改后的高數(shù)成績:"); scanf("%d",&Si.math); while (Si.math<0|Si.math>100) printf(" 輸入錯誤,請重新輸入:"); scanf("%d",&Si.math); ; break; case 5:printf(" 輸入修改后的英語成績:"); scanf("%d",&Si.English) ; while (Si.English<0|Si.English>100) printf

16、("輸入錯誤,請重新輸入"); scanf("%d",&Si.English); ;break; case 6:printf(" 輸入修改后的體育成績:"); scanf("%d",&Si.sport) ; while (Si.sport<0|Si.sport>100) printf("輸入錯誤,請重新輸入:"); scanf("%d",&Si.sport); ;break; case 7:printf(" 輸入修改后的物理成績:

17、"); scanf("%d",&Si.physic) ; while (Si.physic<0|Si.physic>100) printf("輸入錯誤,請重新輸入:"); scanf("%d",&Si.physic); ;break ; case 8:printf(" 輸入修改后的計算機(jī)成績:"); scanf("%d",&Sputer) ; while (Sputer<0|Sputer>100) print

18、f("輸入錯誤,請重新輸入:"); scanf("%d",&Sputer); ;break ; Si.total=Si.math+Si.sport+Si.English+Si.physic+Sputer; Si.aver=Si.total/5; printf("n-修改后的信息如下:-n"); START2; START3; printf("n 是否繼續(xù)修改(y/n)? n"); scanf("%c",&did); while(did='y')

19、; printf("n-按任意鍵返回-n"); getchar(); bioskey(0); /*刪除學(xué)生數(shù)據(jù)(更新區(qū))*/ del_message() int del_num; int i,j,k=0; char choose; printf("n 輸入要刪除的同學(xué)的序號:"); scanf("%d",&del_num); for(i=0;i<sum;i+) if(Si.num=del_num&&Si.num!=0) printf("n-同學(xué)信息-n"); START2; START

20、3; printf("n*確定要刪除嗎?(Y/N)*n"); choose=getch(); if(choose='y') for(j=i;j<sum;j+) Sj=Sj+1; sum-; printf("n*已成功刪除!*n"); printf("n*按任意鍵返回主菜單!*n"); else k+; if(k=sum) printf("n*該同學(xué)不存在!*n"); bioskey(0); /* 更新學(xué)生數(shù)據(jù)模塊 */ renew_message()int choose; do clrscr(

21、); printf("n*更新學(xué)生數(shù)據(jù)*n"); printf("n 1.修改學(xué)生信息n"); printf("n 2.刪除學(xué)生信息n"); printf("n 0.返回主菜單n"); printf("n 請選擇(0-2)按回車確定:n"); printf("n*n"); scanf("%d",&choose); switch(choose) case 1:revise_message();break; case 2:del_message() ;

22、 break; case 0: break; while(choose!=0); /*添加學(xué)生信息模塊*/input_message() int i; char choose; clrscr();for(i=sum;i<sum+1;i+) printf("*n"); printf(" 添加學(xué)生信息 n"); printf("n*n"); printf("n 學(xué)號:"); scanf("%d",&Si.num); printf ("n 姓名:"); scanf(&

23、quot;%s",S); printf("n 性別:"); scanf("%s", Si.sex); printf ("n 高數(shù):"); scanf("%d",&Si.math);while (Si.math<0|Si.math>100) printf(" 輸入錯誤,請重新輸入:"); scanf("%d",&Si.math); printf("n 英語:"); scanf("%d",&

24、amp;Si.English);while (Si.English<0|Si.English>100) printf("輸入錯誤,請重新輸入"); scanf("%d",&Si.English); printf("n 體育:"); scanf("%d",&Si.sport);while (Si.sport<0|Si.sport>100) printf("輸入錯誤,請重新輸入:"); scanf("%d",&Si.sport);

25、printf("n 物理:"); scanf("%d",&Si.physic);while (Si.physic<0|Si.physic>100) printf("輸入錯誤,請重新輸入:"); scanf("%d",&Si.physic); printf("n 計算機(jī):"); scanf("%d",&Sputer);while (Sputer<0|Sputer>100) printf("輸

26、入錯誤,請重新輸入:"); scanf("%d",&Sputer); Si.total=Si.math+Si.English+Si.sport+Si.physic+Sputer ; Si.aver=Si.total/5; printf("n 是否繼續(xù)(y/n)? n"); getchar(); scanf( "%c",&choose);if(choose='y') printf ("n this thing will continue n"); sum+

27、; sum=sum+1; printf(" n*隨你所按,返回上一菜單*n"); bioskey(0); /*按姓名查詢*/ require_name()int i, j=0 ; char fund_name20; clrscr(); printf("n 輸入需要查找的學(xué)生姓名:n"); scanf("%s",fund_name); for(i=0;i<sum+1;i+) if(strcmp(S,fund_name)=0) printf("n 該學(xué)生成績?nèi)缦?n"); START2; START3

28、; else j+; if(j=(sum+1) printf("n 該學(xué)生不存在!n"); printf(" n-隨你所按,返回上一 菜單-n"); bioskey(0); /*按學(xué)號查詢*/ require_num()int i, j=0 ; int fund_num; clrscr(); printf("n 輸入需要查找的學(xué)生學(xué)號:n"); scanf("%d",&fund_num); for(i=0;i<sum+1;i+) if(Si.num=fund_num) printf("n 該

29、學(xué)生成績?nèi)缦?n"); START2; START3; else j+; if(j=(sum+1) printf("n 該學(xué)生不存在!n"); printf(" n-隨你所按,返回上一 菜單-n"); bioskey(0); /*查詢信息模塊*/ require_message() int choose ; do clrscr(); printf("*查詢學(xué)生信息*n"); printf(" 1.按姓名查找n"); printf(" 2.按學(xué)號查找n"); printf("

30、0.返回主菜單n"); printf("n*請選擇(0-2)按回車確定*n"); getchar(); scanf("%d",&choose); while (choose<0|choose>2) printf("輸入錯誤,請重新輸入:"); scanf("%d",&choose); switch(choose) case 1:require_name(); break; case 2:require_num(); break; case 0: break; while(cho

31、ose!=0); /*按高數(shù)成績排行(排行區(qū))*/ sort_math() struct student_type score, QN; int i,j; clrscr(); printf("n 按高數(shù)成績排名:n"); START2; START3; for(i=0;i<sum;i+) Qi=Si; for(i=0;i<sum-1;i+) score=Si; for(j=i+1;j<sum;j+) if(Qi.math<Qj.math) score=Qj; Qj=Qi; Qi=score; printf("n 學(xué)號 姓名 高數(shù)成績n&qu

32、ot;); for(i=0;i<sum;i+) printf("n %5d %10s %5dn",Qi.num,Q,Qi.math); printf("n 按任意鍵返回上一菜單!"); bioskey(0); /*按英語成績排行(排行區(qū))*/ sort_English() struct student_type score, QN; int i,j; clrscr(); printf("n 按英語成績排名:n"); START2; START3; for(i=0;i<sum;i+) Qi=Si; for(i=0

33、;i<sum-1;i+) score=Si; for(j=i+1;j<sum;j+) if(Qi.English<Qj.English) score=Qj; Qj=Qi; Qi=score; printf("n 學(xué)號 姓名 英語成績n"); for(i=0;i<sum;i+) printf("n %5d %10s %5dn",Qi.num,Q,Qi.English); printf("n 按任意鍵返回上一菜單!"); bioskey(0); /*按物理成績排行(排行區(qū))*/ sort_physic(

34、) struct student_type score, QN; int i,j; clrscr(); printf("n 按物理成績排名:n"); START2; START3; for(i=0;i<sum;i+) Qi=Si; for(i=0;i<sum-1;i+) score=Si; for(j=i+1;j<sum;j+) if(Qi.physic<Qj.physic) score=Qj; Qj=Qi; Qi=score; printf("n 學(xué)號 姓名 物理成績n"); for(i=0;i<sum;i+) print

35、f("n %5d %10s %5dn",Qi.num,Q,Qi.physic); printf("n 按任意鍵返回上一菜單!"); bioskey(0); /*按體育成績排行(排行區(qū))*/ sort_sport() struct student_type score, QN; int i,j; clrscr(); printf("n 按體育成績排名:n"); START2; START3; for(i=0;i<sum;i+) Qi=Si; for(i=0;i<sum-1;i+) score=Si; for(j=

36、i+1;j<sum;j+) if(Qi.sport<Qj.sport) score=Qj; Qj=Qi; Qi=score; printf("n 學(xué)號 姓名 體育成績n"); for(i=0;i<sum;i+) printf("n %5d %10s %5dn",Qi.num,Q,Qi.sport); printf("n 按任意鍵返回上一菜單!"); bioskey(0); /*按計算機(jī)成績排行(排行區(qū))*/ sort_computer() struct student_type score, QN; in

37、t i,j; clrscr(); printf("n 按計算機(jī)成績排名:n"); START2; START3; for(i=0;i<sum;i+) Qi=Si; for(i=0;i<sum-1;i+) score=Si; for(j=i+1;j<sum;j+) if(Qputer<Qputer) score=Qj; Qj=Qi; Qi=score; printf("n 學(xué)號 姓名 計算機(jī)成績n"); for(i=0;i<sum;i+) printf("n %5d %10s %5dn"

38、,Qi.num,Q,Qputer); printf("n 按任意鍵返回上一菜單!"); bioskey(0); /*按總成績排序(排行區(qū))*/ sort_all() struct student_type score, QN; int i,j; clrscr(); printf("n 按總分排名:n"); START2; START3; for(i=0;i<sum;i+) Qi=Si; for(i=0;i<sum-1;i+) score=Si; for(j=i+1;j<sum;j+) if(Qi.total<

39、Qj.total) score=Qj; Qj=Qi; Qi=score; printf("n 學(xué)號 姓名 總成績n"); for(i=0;i<sum;i+) printf("n %5d %10s %5dn",Qi.num,Q,Qi.total); printf("n 按任意鍵返回上一菜單!"); bioskey(0); /*學(xué)生成績排行模塊*/ sort_message() int choose; do clrscr(); printf("*學(xué)生成績排序*n"); printf(" 1.

40、按高數(shù)成績排序n"); printf(" 2.按英語成績排序n"); printf(" 3.按物理成績排序n"); printf(" 4.按體育成績排序n"); printf(" 5.按計算機(jī)成績排序n"); printf(" 6.按總成績排序n"); printf(" 0.返回主菜單n"); printf("n*請選擇(0-6)按回車確定*n"); getchar(); scanf("%d",&choose); while (choose<0|choose>6) printf("輸入錯誤,請重新輸入:"); scanf("%d",&choo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論