教務信息管理系統(tǒng)課程設計報告_第1頁
教務信息管理系統(tǒng)課程設計報告_第2頁
教務信息管理系統(tǒng)課程設計報告_第3頁
教務信息管理系統(tǒng)課程設計報告_第4頁
教務信息管理系統(tǒng)課程設計報告_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上教務信息管理系統(tǒng)課程設計報告專心-專注-專業(yè)高級語言程序設計課程設計教務信息管理系統(tǒng)題 目:班 級: 軟件R7班學生學號: 學生姓名: 麥建波指導老師: 姚金濤 提交時間: 5月6日華南農(nóng)業(yè)大學 軟件學院教務信息管理系統(tǒng) 1. 系統(tǒng)分析 1.1 問題描述本程序為教務信息管理系統(tǒng),經(jīng)過輸入學生的相關信息,對數(shù)據(jù)進行處理和統(tǒng)計,并按需要輸入統(tǒng)計處理后的數(shù)據(jù)到文件中。 1.2 系統(tǒng)功能(1)錄入如下信息:學生基本信息:如學號、姓名、性別、年齡、宿舍號碼、電話號碼等;課程基本信息:課程編號、課程名稱、考試成績、平時成績、綜合成績、 學分、重修否等。如果重修,需要考慮重修學期、

2、重修成績,而且要考慮多次重修的情況。(2)錄入選課信息(3)錄入學生成績(4)按班統(tǒng)計學生選課情況及考試成績(5)按課程統(tǒng)計學生名單及考試成績(6)統(tǒng)計并輸出每個同學已修學分及不及格課程 1.3 功能需求描述:(1)加載學生信息及其課程成績:從文件錄入學生的基本資料和課程情況,并覆蓋原有數(shù)據(jù)。(2)新增學生信息及其課程成績:按要求錄入學生的基本資料和課程情況,經(jīng)過提示信息逐步操作。(3)按班統(tǒng)計學生選課情況及考試成績:根據(jù)錄入的數(shù)據(jù),以班為單位逐個輸出選課情況及對應的成績。(4)按課程統(tǒng)計學生名單及考試成績:按提示輸入課程編號,查詢對應課程的學生名單及其成績。(5)統(tǒng)計并輸出每個同學已修學分及

3、不及格課程:根據(jù)錄入的數(shù)據(jù)進行統(tǒng)計,輸出全部學生的已修學分及不及格課程的名稱。(6)保存學生信息及其課程成績并退出:將當前的學生基本資料和課程情況保存到文件,并覆蓋原有文件。1.4 開發(fā)平臺及工具介紹(1)硬件環(huán)境:u 處 理 器:Intel Pentium 166或更高u 內(nèi) 存:32MB以上u 硬盤空間:2G以上u 顯 卡:SVGA顯示適配器(2)軟件環(huán)境:u 操作系統(tǒng):Windows98/Me/ /XP/ /Vista/7/8等 2. 系統(tǒng)設計 2.1 系統(tǒng)總體結(jié)構(gòu)設計教務信息管理系統(tǒng)保存學生信息及其課程成績并退出統(tǒng)計學生已修學分及不及格課程按課程統(tǒng)計學生名單及考試成績按班統(tǒng)計學生選課情

4、況及考試成績新增學生信息及其課程成績加載學生信息及其課程成績 2.2 系統(tǒng)各個功能模塊設計(1)加載成功顯示相關信息,并提示加載學生總數(shù)系統(tǒng)自動從根文件夾讀取文件”stu.txt”,依照程序步驟將學生信息輸入到程序加載學生信息及其課程成績(2)學生學號輸入“0”返回到主界面在已有加載數(shù)據(jù)基礎上新增學生,依照提示信息依次將學生信息輸入到程序新增學生信息及其課程成績(3)輸出完畢后自動返回到主界面繼續(xù)工作基于當前數(shù)據(jù),按班級R1R10分類統(tǒng)計并輸出學生所有信息到屏幕和文件”case3.txt”按班統(tǒng)計學生選課情況及考試成績(4)輸入課程編號,查找出已修該課程所有學生并輸出其成績及重修與否到屏幕和文

5、件”case4.txt”課程編號輸入“0”返回到主界面按課程統(tǒng)計學生名單及考試成績(5)基于當前數(shù)據(jù),將每位學生已修課程的學分總和及不及格課程輸出到屏幕和文件”case5.txt”輸出完畢后自動返回到主界面繼續(xù)工作統(tǒng)計學生已修學分及不及格課程(6)保存成功顯示相關信息,并提示保存學生總數(shù),最后退出程序?qū)斍皵?shù)據(jù)以與加載相同的格式輸出到文件”stu.txt”,并覆蓋原本存在的該文件保存學生信息及其課程成績并退出 2.3 數(shù)據(jù)結(jié)構(gòu)的設計2.3.1學生信息數(shù)據(jù)結(jié)構(gòu)typedef struct student int age,sub,cla; /年齡,選課數(shù)量,班級 double poi; /已修學分

6、 char stun15,name30,sex5,dorn10,phon20; /學號,姓名,性別,宿舍號碼,短號電話號碼 course les10; /課程信息 struct student*next;student;2.3.2課程信息數(shù)據(jù)結(jié)構(gòu)typedef struct course char lessonn15,lessonname50,re5; /課程編號,課程名稱,是否重修 double textmark,formalmark,mark,point; /考試成績,平時成績,綜合成績,學分 restudy res5; /重修情況 int restime; /重修次數(shù)course;2.3

7、.3重修情況數(shù)據(jù)結(jié)構(gòu)typedef struct restudy int term; /重修學期 double resmark; /重修分數(shù)restudy; 2.4 界面設計程序界面應遵循簡潔美觀、方便使用的原則。2.4.1主界面充分考慮界面易于操作的系統(tǒng)需求,用printf語句構(gòu)造簡單的文字界面,具體主界面設計效果如圖所示。2.4.2新增信息界面根據(jù)相關的文字提示,用戶輸入對應信息。 3. 系統(tǒng)實現(xiàn)基于系統(tǒng)需求分析與系統(tǒng)總體設計的結(jié)果,本系統(tǒng)采用Code:Blocks12.11軟件平臺基于C語言實現(xiàn)各模塊的功能,下面按照模塊的功能劃分來分別闡述系統(tǒng)的詳細設計和實現(xiàn)過程。3.1頭文件:#inc

8、lude <stdio.h>#include <stdlib.h>#include <string.h>3.2主界面模塊功能:功能選擇界面輸入:用戶選擇的功能選項編號處理:根據(jù)用戶選項跳轉(zhuǎn)到相關功能函數(shù)輸出:相關功能函數(shù)的處理或顯示界面程序清單:student *insstu(); /加載學生信息及其課程成績student *inspoint(student *head,student *stud); /插入鏈表結(jié)點void clalesmark(student *head); /按班統(tǒng)計學生選課情況及考試成績void lesstumark(student

9、*head); /按課程統(tǒng)計學生名單及考試成績void pointfail(student *head); /統(tǒng)計并輸出每個同學已修學分及不及格課程student *adds(student *hd); /新增學生信息及其課程成績student *savestu(student *head); /保存學生信息及其課程成績int main(void) student *head,*p; int num,n; int size=sizeof(struct student); head=NULL; printf("tt*歡迎使用教務信息管理系統(tǒng)*"); do printf(&qu

10、ot;ntt* -請選擇- *n"); printf("tt* 1、加載學生信息及其課程成績ttt2、新增學生信息及其課程成績 *n"); printf("tt* 3、按班統(tǒng)計學生選課情況及考試成績tt4、按課程統(tǒng)計學生名單及考試成績 *n"); printf("tt* 5、統(tǒng)計并輸出每個同學已修學分及不及格課程t6、保存學生信息及其課程成績并退出*n"); printf("tt* -0、退出- *nn"); fflush(stdin); /清除緩沖區(qū) scanf("%d",&

11、n); switch(n) case 1:head=insstu();break; case 3:clalesmark(head);break; case 4:lesstumark(head);break; case 5:pointfail(head);break; case 2:head=adds(head);break; case 6:savestu(head);break; default :break; while(n!=0&&n!=6); printf("ntt* -!謝謝使用!- *n"); return 0;3.3加載信息模塊功能:從根文件夾加

12、載記錄學生信息的文件輸入:無處理:將所有學生信息形成鏈表輸出:加載成功情況程序清單:student *insstu() student *p,*hd,*pt; int i,j,n=0; FILE *fp; fp = fopen( "stu.txt" , "r" ); /從根目錄讀取文件 int size=sizeof(student); hd=NULL; while(1) p=(student *)malloc(size); fscanf(fp,"%s",&p->stun); /讀取學號 if(strcmp(p->

13、stun,"0")=0)break; /學號為0返回 fscanf(fp,"%d",&p->cla); /讀取班級 fscanf(fp,"%s",&p->name); /讀取姓名 fscanf(fp,"%s",&p->sex); /讀取性別 fscanf(fp,"%d",&p->age); /讀取年齡 fscanf(fp,"%s",&p->dorn); /讀取宿舍號碼 fscanf(fp,"%s&

14、quot;,&p->phon); /讀取短號電話號碼 p->sub=0;p->poi=0; for(i=p->sub;i<=10;i+) fscanf(fp,"%s",&p->lesi.lessonn); /讀取課程編號 if(strcmp(p->lesi.lessonn,"0")=0)break; /課程編號為0返回 fscanf(fp,"%s",&p->lesi.lessonname); /讀取課程名稱 fscanf(fp,"%lf",&a

15、mp;p->lesi.textmark); /讀取考試成績 fscanf(fp,"%lf",&p->lesi.formalmark); /讀取平時成績 fscanf(fp,"%lf",&p->lesi.mark); /讀取綜合成績 fscanf(fp,"%lf",&p->lesi.point); /讀取學分 p->poi+=p->lesi.point; /將該課程學分加入已修總學分 fscanf(fp,"%s",&p->lesi.re); /

16、讀取是否重修 if(strcmp(p->lesi.re,"是")=0) fscanf(fp,"%d",&p->lesi.restime); /讀取重修次數(shù) for(j=0;j<p->lesi.restime;j+) fscanf(fp,"%d",&p->lesi.resj.term); /讀取重修學期 fscanf(fp,"%lf",&p->lesi.resj.resmark); /讀取重修成績 p->sub+; n+; if(n=1) hd=p;p

17、t=p; else pt->next=p;pt=p; pt->next=NULL; printf("加載學生數(shù)據(jù)成功!共加載%d位學生信息n",n); return hd;3.4新增信息模塊功能:增加學生,并完整錄入相關個人信息及選課信息輸入:學生信息處理:將所得學生信息插入鏈表輸出:無程序清單:student *adds(student *hd) student *p,*q,*r; int i,j; int size=sizeof(student); while(1) p=(student *)malloc(size); /hd=inspoint(hd,p);

18、 /p->next=NULL; printf("請輸入學號(12位數(shù)字,返回請輸入0):"); scanf("%s",&p->stun); if(strcmp(p->stun,"0")=0)break; printf("請輸入班級號(軟件R( )班):"); scanf("%d",&p->cla); printf("請輸入姓名:"); scanf("%s",&p->name); printf("

19、;請輸入性別:"); scanf("%s",&p->sex); printf("請輸入年齡:"); scanf("%d",&p->age); printf("請輸入宿舍號碼(5位數(shù)字):"); scanf("%s",&p->dorn); printf("請輸入電話號碼(短號):"); scanf("%s",&p->phon); p->sub=0;p->poi=0; for(i=p

20、->sub;i<=10;i+) printf("請輸入課程編號(6位數(shù)字,返回請輸入0):"); scanf("%s",&p->lesi.lessonn); if(strcmp(p->lesi.lessonn,"0")=0)break; printf("請輸入課程名稱:"); scanf("%s",&p->lesi.lessonname); printf("請輸入考試成績:"); scanf("%lf",&am

21、p;p->lesi.textmark); printf("請輸入平時成績:"); scanf("%lf",&p->lesi.formalmark); printf("請輸入綜合成績:"); scanf("%lf",&p->lesi.mark); printf("請輸入學分:"); scanf("%lf",&p->lesi.point); p->poi+=p->lesi.point; printf("是否需要

22、重修(輸入“是,否”,):"); scanf("%s",&p->lesi.re); if(strcmp(p->lesi.re,"是")=0) printf("請輸入重修次數(shù):"); scanf("%d",&p->lesi.restime); for(j=0;j<p->lesi.restime;j+) printf("請輸入重修學期:"); scanf("%d",&p->lesi.resj.term); pr

23、intf("請輸入重修成績:"); scanf("%lf",&p->lesi.resj.resmark); p->sub+; hd=inspoint(hd,p); /插入一個新結(jié)點以繼續(xù)增加學生人數(shù) p->next=NULL; system("cls"); /清屏 return hd;3.5按班級統(tǒng)計模塊功能: 按班級有序地查看學生的情況輸入:無處理:按班級R1R10分類統(tǒng)計學生信息輸出:輸出學生所有信息到屏幕和文件”case3.txt”程序清單:void clalesmark(student *head)

24、/同時輸出數(shù)據(jù)到屏幕和文件 int i,j,k; student *s; FILE *fp; fp = fopen( "case3.txt" , "w" ); /輸出文件到根目錄 if(head=NULL) fprintf(fp,"沒有信息。n");printf("沒有信息。n"); else fprintf(fp," 學號 姓名 性別 年齡 宿舍號 電話號碼 課程編號 課程名稱 平時成績 考試成績 綜合成績 學分 是否重修 重修次數(shù) 重修情況n"); printf(" 學號 姓名 性

25、別 年齡 宿舍號 電話號碼 課程編號 課程名稱 平時成績 考試成績 綜合成績 學分 是否重修 重修次數(shù) 重修情況n"); printf("-n"); fprintf(fp,"-n"); for(i=1;i<=10;i+) fprintf(fp,"軟件R%d班:n",i);printf("軟件R%d班:n",i); s=head; while(s!=NULL) if(s->cla=i) fprintf(fp,"%13s %8s %s %d%9s%10sn",s->stu

26、n,s->name,s->sex,s->age,s->dorn,s->phon); printf("%13s %8s %s %d%9s%10sn",s->stun,s->name,s->sex,s->age,s->dorn,s->phon); for(j=0;j<s->sub;j+) fprintf(fp," %s %12s %5.1lf %5.1lf %5.1lf %3.1lf %s",s->lesj.lessonn,s->lesj.lessonname,s-&g

27、t;lesj.formalmark,s->lesj.textmark,s->lesj.mark,s->lesj.point,s->lesj.re); printf(" %s %12s %5.1lf %5.1lf %5.1lf %3.1lf %s",s->lesj.lessonn,s->lesj.lessonname,s->lesj.formalmark,s->lesj.textmark,s->lesj.mark,s->lesj.point,s->lesj.re); if(strcmp(s->lesj.r

28、e,"是")=0) fprintf(fp," %d ",s->lesj.restime);printf(" %d ",s->lesj.restime); for(k=0;k<s->lesj.restime;k+) fprintf(fp,"/第%d次:第%d學期,%.1lf分/",k+1,s->lesj.resk.term,s->lesj.resk.resmark); printf("/第%d次:第%d學期,%.1lf分/",k+1,s->lesj.res

29、k.term,s->lesj.resk.resmark); fprintf(fp,"n");printf("n"); s=s->next; 3.6按課程統(tǒng)計模塊功能: 按課程查看已修該課的學生的成績情況輸入:課程編號處理:逐個學生查找是否已修該課程 輸出:輸出學生成績情況到屏幕和文件”case4.txt”程序清單:void lesstumark(student *head) int i; char lessonn15; student *s; FILE *fp; fp = fopen( "case4.txt" , &quo

30、t;w" ); if(head=NULL) fprintf(fp,"沒有信息。n");printf("沒有信息。n"); else while(1) printf("請輸入課程編號(返回請輸入0):"); scanf("%s",&lessonn); if(strcmp(lessonn,"0")=0)break; fprintf(fp,"ntt 課程名稱 學號 姓名 平時成績 考試成績 綜合成績 學分 是否重修n"); printf("ntt 課程名

31、稱 學號 姓名 平時成績 考試成績 綜合成績 學分 是否重修n"); fprintf(fp,"tt-n"); printf("tt-n"); s=head; while(s!=NULL) for(i=0;i<s->sub;i+) if(strcmp(s->lesi.lessonn,lessonn)=0) /查找該學生是否已修該課 fprintf(fp,"tt%12s %13s %8s %5.1lf %5.1lf %5.1lf %3.1lf %sn",s->lesi.lessonname,s->s

32、tun,s->name,s->lesi.formalmark,s->lesi.textmark,s->lesi.mark,s->lesi.point,s->lesi.re); printf("tt%12s %13s %8s %5.1lf %5.1lf %5.1lf %3.1lf %sn",s->lesi.lessonname,s->stun,s->name,s->lesi.formalmark,s->lesi.textmark,s->lesi.mark,s->lesi.point,s->le

33、si.re); break; s=s->next; fprintf(fp,"n"); printf("n"); 3.7輸出已修學分及不及格課程模塊功能: 查看所有學生已修學分及不及格課程輸入:無處理:從頭到尾檢索每個學生已修學分及不及格課程 輸出:輸出所有學生已修學分及不及格課程到屏幕和文件”case5.txt”程序清單:void pointfail(student *head) int i; char lessonn15; student *s; FILE *fp; fp = fopen( "case5.txt" , &quo

34、t;w" ); if(head=NULL) fprintf(fp,"沒有信息。n");printf("沒有信息。n"); else fprintf(fp,"tt 學號 姓名 班級 已修學分 不及格課程n");printf("tt 學號 姓名 班級 已修學分 不及格課程n"); fprintf(fp,"tt-n");printf("tt-n"); s=head; while(s!=NULL) fprintf(fp,"tt%11s %8s %d %.1lf &

35、quot;,s->stun,s->name,s->cla,s->poi); printf("tt%11s %8s %d %.1lf ",s->stun,s->name,s->cla,s->poi); for(i=0;i<s->sub;i+) if(s->lesi.mark<60) fprintf(fp,"%s ",s->lesi.lessonname);printf("%s ",s->lesi.lessonname); fprintf(fp,"

36、;n");printf("n"); s=s->next; 3.8保存信息模塊功能:保存當前學生信息輸入:無處理:將原有學生信息及新增學生信息寫出到根目錄的文件,并覆蓋原來的文件輸出:保存成功情況程序清單:student *savestu(student *head) student *p; int i,j,n=0; FILE *fp; fp = fopen( "stu.txt" , "w" ); /寫出到根文件夾的文件,并覆蓋原有文件 p=head; while(p!=NULL) fprintf(fp,"%s

37、n",p->stun); if(strcmp(p->stun,"0")=0)break; fprintf(fp,"%dn",p->cla); fprintf(fp,"%sn",p->name); fprintf(fp,"%sn",p->sex); fprintf(fp,"%dn",p->age); fprintf(fp,"%sn",p->dorn); fprintf(fp,"%sn",p->phon

38、); p->sub=0;p->poi=0; for(i=p->sub;i<=10;i+) fprintf(fp,"%sn",p->lesi.lessonn); if(strcmp(p->lesi.lessonn,"0")=0)break; fprintf(fp,"%sn",p->lesi.lessonname); fprintf(fp,"%lfn",p->lesi.textmark); fprintf(fp,"%lfn",p->lesi.fo

39、rmalmark); fprintf(fp,"%lfn",p->lesi.mark); fprintf(fp,"%lfn",p->lesi.point); p->poi+=p->lesi.point; fprintf(fp,"%sn",p->lesi.re); if(strcmp(p->lesi.re,"是")=0) fprintf(fp,"%dn",p->lesi.restime); for(j=0;j<p->lesi.restime;j+) fprintf(fp,"%dn",p->lesi.resj.term); fprintf(fp,

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論