




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45376-2025鎳和銅電鑄工藝規(guī)范
- GB/T 38178.1-2025液壓傳動10 MPa系列單出桿缸的安裝尺寸第1部分:普通系列
- 結(jié)構(gòu)化思考的行政管理師試題及答案
- 微生物檢驗相關(guān)機(jī)構(gòu)的支持與協(xié)作及試題及答案
- 項目推進(jìn)過程中的協(xié)同作用試題及答案
- 項目管理考試綜合能力提升試題及答案
- 廣連高速花都至從化段定測項目測量技術(shù)總結(jié)
- 公司財務(wù)管理的關(guān)鍵措施試題及答案
- 微生物培養(yǎng)條件的優(yōu)化試題及答案
- 項目管理性價比分析方法試題及答案
- Windows操作系統(tǒng)安全防護(hù)指導(dǎo)手冊
- TSG11-2020 鍋爐安全技術(shù)規(guī)程
- 內(nèi)控模擬試題 A套
- 軟件安全-安全測試共96頁P(yáng)PT課件
- 《足球運動發(fā)展史》PPT課件
- 攝影構(gòu)圖基礎(chǔ)PPT
- 愛我你就抱抱我課件PPT
- 鄂科版心理健康七年級 14.話說偶像 教案
- 國家職業(yè)技能標(biāo)準(zhǔn) (2021年版) 4-04-05-05 人工智能訓(xùn)練師
- 綠色熒光蛋白在大腸桿菌中的表達(dá)分子實驗設(shè)計
- 《永遇樂(李清照)》(課堂PPT)
評論
0/150
提交評論