C語言程序設(shè)計(jì)實(shí)訓(xùn)說明書某學(xué)院教學(xué)信息管理系統(tǒng)Word版_第1頁
C語言程序設(shè)計(jì)實(shí)訓(xùn)說明書某學(xué)院教學(xué)信息管理系統(tǒng)Word版_第2頁
C語言程序設(shè)計(jì)實(shí)訓(xùn)說明書某學(xué)院教學(xué)信息管理系統(tǒng)Word版_第3頁
C語言程序設(shè)計(jì)實(shí)訓(xùn)說明書某學(xué)院教學(xué)信息管理系統(tǒng)Word版_第4頁
C語言程序設(shè)計(jì)實(shí)訓(xùn)說明書某學(xué)院教學(xué)信息管理系統(tǒng)Word版_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、傳播優(yōu)秀Word版文檔 ,希望對(duì)您有幫助,可雙擊去除!中北大學(xué)程序設(shè)計(jì)實(shí)訓(xùn)說 明 書學(xué) 院、系:軟件學(xué)院專 業(yè):軟件工程學(xué) 生 姓 名:學(xué) 號(hào):1314010xxx設(shè) 計(jì) 題 目:某學(xué)院教學(xué)信息管理系統(tǒng) 起 迄 日 期:2014年11月21日2015年1月17日指 導(dǎo) 教 師:何志英2015 年 1月 10 日一、選題要求題目一:某學(xué)院教學(xué)信息管理系統(tǒng)功能:1、 每一條記錄包括一位教師的職工號(hào)、姓名、職稱、性別、3門主講課程(課程名稱、開課學(xué)期、課程性質(zhì)(學(xué)位與非學(xué)位課)和教學(xué)效果),教學(xué)效果綜合評(píng)分。 2、輸入功能:可以一次完成若干條記錄的輸入。 3、顯示功能:完成全部教師記錄的顯示。 4、

2、查找功能:完成按姓名或課程查找教師的相關(guān)記錄,并顯示。 5、排序功能:按職工號(hào)或教學(xué)效果綜合評(píng)分進(jìn)行排序。 6、插入功能:按教學(xué)效果綜合評(píng)分高低插入一條教師記錄。 7、將教師記錄存在文件中。 8、應(yīng)提供一個(gè)界面來調(diào)用各個(gè)功能,調(diào)用界面和各個(gè)功能的操作界面應(yīng)盡可能清晰美觀! 要求:1、用C語言實(shí)現(xiàn)系統(tǒng); 2、利用結(jié)構(gòu)體數(shù)組實(shí)現(xiàn)教學(xué)信息的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì); 3、系統(tǒng)具有增加,查詢,插入,排序等基本功能; 4、系統(tǒng)的各個(gè)功能模塊要求用函數(shù)的形式實(shí)現(xiàn); 5、將教學(xué)信息存在文件中。 考試題目要求:1、 按教師性別統(tǒng)計(jì)統(tǒng)計(jì)評(píng)分的總算2、 刪除一個(gè)函數(shù),程序仍能正常運(yùn)行二、程序設(shè)計(jì)方法及主要函數(shù)介紹程序設(shè)計(jì)方法

3、1. 數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì): 程序要求文檔中要求使用結(jié)構(gòu)體數(shù)組完成設(shè)計(jì),每一條記錄包括一位教師的職工號(hào)、姓名、職稱、性別、3門主講課程(課程名稱、開課學(xué)期、課程性質(zhì)(學(xué)位與非學(xué)位課)和教學(xué)效果),教學(xué)效果綜合評(píng)分。數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)如下:typedef struct Course /課程的定義與描述 char courseName40; /課程名稱int semester; /開課學(xué)期char type8; /課程性質(zhì)char teceff; /教學(xué)效果 Course; typedef struct Teacher /教師的定義與描述 char name8; /姓名 int num; /職工號(hào)char s

4、ex2; /性別int tecscore; /教學(xué)效果綜合評(píng)分char position8; /職稱 Course course3; /3門主講課程 Teacher; 2. 主函數(shù)與其他函數(shù)的關(guān)系:3. 結(jié)構(gòu)化的程序設(shè)計(jì)方法 將實(shí)用功能封裝在每一個(gè)子函數(shù)中,主函數(shù)通過調(diào)用子函數(shù)來實(shí)現(xiàn)相對(duì)應(yīng)的功能。體現(xiàn)了“自頂向下,逐步求精”的結(jié)構(gòu)化程序設(shè)計(jì)思想。4. “高內(nèi)聚,低耦合”的程序設(shè)計(jì)原則 將各個(gè)使用功能封裝在函數(shù)中來讓主函數(shù)調(diào)用,而不是將所有實(shí)用功能聚集在主函數(shù)中,使得各個(gè)模塊相對(duì)獨(dú)立,耦合性得以降低,有利于程序的維護(hù)。主要函數(shù)介紹:1. 以卡片形式輸出全部教師信息 注:由于版面原因,輸出函數(shù)顯得

5、有些亂,但是這并不影響程序的運(yùn)行結(jié)果,真實(shí)的運(yùn)行結(jié)果是很整齊的。(下圖是DevC+ V5.5.3版本下的編碼界面)void PrintInfor(Teacher T) /輸出全部教師信息(以卡片形式) printf(-);printf(| 所有教師記錄 |);printf(-+);printf(| 全院現(xiàn)有在職教師%d名,全部信息如下 |,TeacherNum);printf(-+nn);for(int i=0;iTeacherNum;+i) printf(+-+-+-+-+-+-+-+-+); printf(|職工號(hào)| %3d |姓名| %8s |性別| %s |職稱 | %8s |,Ti.

6、num,T,Ti.sex,Ti.position); printf(+-+-+-+-+-+-+-+-+-+); printf(|主講課程1 | 課程名 | %-40s |,Ti.course0.courseName); printf(+-+-+-+-+-+-+); printf(| 學(xué)期 | %d |課程性質(zhì) | %8s | 教學(xué)效果 | %c |,Ti.course0.semester,Ti.course0.type,Ti.course0.teceff); printf(+-+-+-+-+-+-+); printf(|主講課程2 | 課程名 | %-40s |,Ti.course

7、1.courseName); printf(+-+-+-+-+-+-+); printf(| 學(xué)期 | %d |課程性質(zhì) | %8s | 教學(xué)效果 | %c |,Ti.course1.semester,Ti.course1.type,Ti.course1.teceff); printf(+-+-+-+-+-+-+); printf(|主講課程3 | 課程名 | %-40s |,Ti.course2.courseName); printf(+-+-+-+-+-+-+); printf(| 學(xué)期 | %d |課程性質(zhì) | %8s | 教學(xué)效果 | %c |,Ti.course2.semester,

8、Ti.course2.type,Ti.course2.teceff); printf(+-+-+-+-+-+-+-+); printf(|教學(xué)效果綜合評(píng)分| %3d |,Ti.tecscore); printf(+-+-+nn); system(PAUSE); /輸完一個(gè)教師信息,等待用戶查看確認(rèn),確認(rèn)無誤后再打印下一教師的相關(guān)信息 /for/PrintInfor2. 對(duì)教師信息排序void Sort_N(Teacher T,int n) /當(dāng)n=1時(shí)按職工號(hào)排序,當(dāng)n=2時(shí)按教學(xué)效果綜合評(píng)分排序 if(n=1) /按職工號(hào)排序 Teacher temp; for(int i=0;iTeach

9、erNum-1;i+) /冒泡法排序 for(int j=0;jTeacherNum-1-i;j+) if(Tj+1.numTj.num) temp=Tj; Tj=Tj+1; Tj+1=temp; /if /forprintf(排序結(jié)果如下:n);for(int i=0;iTeacherNum;i+)printf( %8s%d ,T,Ti.num);/forprintf(n); /ifelse /按教學(xué)效果綜合評(píng)分排序 Teacher temp; for(int i=0;iTeacherNum-1;+i) /冒泡法排序 for(int j=0;jTeacherNum-1-i;+j)

10、 if(Tj+1.tecscoreTj.tecscore) temp=Tj; Tj=Tj+1; Tj+1=temp; /if /for for(int i=0;iTeacherNum;i+)printf(ttt第%d名: %-8s 分?jǐn)?shù):%3dn,i+1,T,Ti.tecscore);/for/else/Sort_N3. 按教學(xué)效果綜合評(píng)分高低插入一條教師記錄 由于程序要求要按照教學(xué)效果綜合評(píng)分高低進(jìn)行插入操作,故教師信息必須按一定順序排列,但是在執(zhí)行該操作之前不能保證用戶已經(jīng)執(zhí)行了相應(yīng)的排序操作,故需要再執(zhí)行一次排序操作,以保證接下來的程序能夠正常運(yùn)行 插入信息的算法大致描述如下

11、: 在操作之前,教師的教學(xué)效果綜合評(píng)分已經(jīng)按照從小到大的順序排列。 先確定插入位置,如需對(duì)數(shù)據(jù)移動(dòng)則進(jìn)行移動(dòng)操作,最后將待插記錄復(fù)制到插入位置。 插入位置有兩種: A. 在所有教師信息之后插入:當(dāng)該教師分?jǐn)?shù)大于所有教師的分?jǐn)?shù)時(shí),直接將該教師信息復(fù)制在最后一個(gè)教師后面的結(jié)構(gòu)體中,無需進(jìn)行移動(dòng),此時(shí)的基本操作為數(shù)據(jù)的復(fù)制。 B. 在開頭或者其他教師之前插入:當(dāng)該教師分?jǐn)?shù)滿足以下表達(dá)式:min=tecscore請(qǐng)按要求輸入教師信息:n);printf(-請(qǐng)輸入教師的職工號(hào)(3位數(shù)字): );scanf(%d,&TB.num);printf(-請(qǐng)輸入教師的姓名: );scanf(%s,TB.name)

12、; printf(-請(qǐng)輸入教師的性別(男或女): );scanf(%s,TB.sex);printf(-請(qǐng)輸入教師的職稱: );scanf(%s,TB.position);for(int j=0;j請(qǐng)輸入該教師第%d門主講課程的信息: n,j+1); InputClassInfor(TB.coursej); printf(n);/for printf(-請(qǐng)輸入教師的教學(xué)效果綜合評(píng)分(0-100): );scanf(%d,&TB.tecscore); printf(-為保證結(jié)果正確,程序?qū)?duì)您的教師按教學(xué)效果綜合評(píng)分進(jìn)行排序:n); Teacher temp; for(int i=0;iTeac

13、herNum-1;+i) /冒泡法排序 for(int j=0;jTeacherNum-1-i;+j) if(Tj+1.tecscoreTj.tecscore) temp=Tj; Tj=Tj+1; Tj+1=temp; /if /forint flag=-1;for(int i=0;i=Ti.tecscore)flag=i;/if /forprintf(插入位置:%dn,flag);if(flag=-1) flag=TeacherNum; /在末尾插入 elsefor(int i=TeacherNum-1;i=flag;i-) /移動(dòng)插入位置后面的所有數(shù)據(jù) strcpy(Ti+1.name,T

14、); Ti+1.num=Ti.num; strcpy(Ti+1.sex,Ti.sex); Ti+1.tecscore=Ti.tecscore;strcpy(Ti+1.position,Ti.position); for(int j=0;j3;j+) strcpy(Ti+1.coursej.courseName,Ti.coursej.courseName); Ti+1.coursej.semester=Ti.coursej.semester; strcpy(Ti+1.coursej.type,Ti.coursej.type); Ti+1.coursej.teceff=TB.cours

15、ej.teceff; /for/for/elsestrcpy(T,TB.name); Tflag.num=TB.num;strcpy(Tflag.sex,TB.sex);Tflag.tecscore=TB.tecscore;strcpy(Tflag.position,TB.position); /插入記錄 for(int j=0;j插入后的結(jié)果如下:n);PrintInfor(T);/InsertInfor三、程序源代碼(包括注釋)/-引入頭文件- #include /使用了system( )和exit( )函數(shù)#include /使用了printf( )、scanf( )以

16、及文件讀寫函數(shù)#include /使用了strcmp( )、strcpy( )等字符串處理函數(shù)/-宏定義- #define MAXTEACHERNUM 300 /一個(gè)學(xué)院最大教師數(shù),上限可調(diào) /-自定義數(shù)據(jù)類型- /- 教師和課程的定義 - typedef struct Course /課程的定義與描述 char courseName40; /課程名稱int semester; /開課學(xué)期char type8; /課程性質(zhì)char teceff; /教學(xué)效果 Course; typedef struct Teacher /教師的定義與描述 char name8; /姓名 int num; /職

17、工號(hào)char sex2; /性別int tecscore; /教學(xué)效果綜合評(píng)分char position8; /職稱 Course course3; /3門主講課程 Teacher; /-部分全局變量- int TeacherNum; /教師記錄條數(shù)/-基本操作及其子函數(shù)- /-1.輸入教師信息- void InputClassInfor(Course &c) /輸入教學(xué)信息 printf(請(qǐng)輸入課程的課程名: );scanf(%s,c.courseName); getchar( ); /吃掉回車符printf(請(qǐng)輸入課程的學(xué)期(輸入數(shù)字1-8中一個(gè)): );scanf(%d,&c.semes

18、ter);printf(請(qǐng)輸入課程的學(xué)科性質(zhì)(輸入非學(xué)位課或?qū)W位課) : );scanf(%s,c.type); getchar( ); /吃掉回車符 fflush(stdin);printf(請(qǐng)輸入課程的教學(xué)效果(輸入A、B、C、D中任一個(gè)) : );c.teceff=getchar( ); getchar( ); /吃掉回車符/InputClassInforvoid InputInfor(Teacher TMAXTEACHERNUM) /輸入教師信息 int i=0,flag=1;TeacherNum = 0;char ch,ch1;while(flag) /不斷輸入教師信息,直到輸入n

19、printf(-請(qǐng)輸入教師的職工號(hào)(3位數(shù)字): );scanf(%d,&Ti.num);printf(-請(qǐng)輸入教師的姓名: );scanf(%s,T); printf(-請(qǐng)輸入教師的性別(男或女): );scanf(%s,Ti.sex);printf(-請(qǐng)輸入教師的職稱: );scanf(%s,Ti.position);for(int j=0;j請(qǐng)輸入該教師第%d門主講課程的信息: n,j+1); InputClassInfor(Ti.coursej); printf(n);/for printf(-請(qǐng)輸入教師的教學(xué)效果綜合評(píng)分(0-100): );scanf(%d,&Ti.te

20、cscore);TeacherNum+; /教師記錄+1 i+; /計(jì)數(shù)器自增 fflush(stdin); printf(您還想繼續(xù)輸入嗎?(Y(y)/N(n);ch=getchar();getchar(); /吃掉回車符 if(ch=N|ch=n) /確認(rèn)是否退出 flag=0; /修改標(biāo)志,結(jié)束循環(huán) /while/InputTecInfor/-2.輸出教師信息- void PrintInfor(Teacher T) /輸出全部教師信息(以卡片形式) printf(-);printf(| 所有教師記錄 |);printf(-+);printf(| 全院現(xiàn)有在職教師%d名,全部信息如下 |,

21、TeacherNum);printf(-+nn);for(int i=0;i請(qǐng)輸入教師姓名:);scanf(%s,name1);for(int i=0;i請(qǐng)輸入教師職工號(hào):);scanf(%d,&num1);for(int i=0;iTeacherNum;i+)if(num1=Ti.num)printf(查找成功,找到該教師記錄!nn);printf(+-+-+-+-+-+-+-+-+); printf(|職工號(hào)| %3d |姓名| %8s |性別| %s |職稱 | %8s |,Ti.num,T,Ti.sex,Ti.position); printf(+-+-+-+-+-+-+-

22、+-+-+); printf(|主講課程1 | 課程名 | %-40s |,Ti.course0.courseName); printf(+-+-+-+-+-+-+); printf(| 學(xué)期 | %d |課程性質(zhì) | %8s | 教學(xué)效果 | %c |,Ti.course0.semester,Ti.course0.type,Ti.course0.teceff); printf(+-+-+-+-+-+-+); printf(|主講課程2 | 課程名 | %-40s |,Ti.course1.courseName); printf(+-+-+-+-+-+-+); printf(| 學(xué)期 | %d

23、 |課程性質(zhì) | %8s | 教學(xué)效果 | %c |,Ti.course1.semester,Ti.course1.type,Ti.course1.teceff); printf(+-+-+-+-+-+-+); printf(|主講課程3 | 課程名 | %-40s |,Ti.course2.courseName); printf(+-+-+-+-+-+-+); printf(| 學(xué)期 | %d |課程性質(zhì) | %8s | 教學(xué)效果 | %c |,Ti.course2.semester,Ti.course2.type,Ti.course2.teceff); printf(+-+-+-+-+-+

24、-+-+); printf(|教學(xué)效果綜合評(píng)分| %3d |,Ti.tecscore); printf(+-+-+nn); flag=1; /標(biāo)志置1,表示找到 /if/forif(flag=0) /若一輪循環(huán)flag仍為0,查找失敗 printf(查找失敗,職工號(hào)為%d的教師不存在!n,num1);/else/Search_Nvoid SearchInfor(Teacher T) /查找教師信息(總函數(shù)) /查找教師信息的總函數(shù),用于控制查找的方式(即按哪個(gè)關(guān)鍵字來查找)char ch;int flag=1;while(flag)system(cls);printf(nttt1.按姓名查找教

25、師信息n); printf(ttt2.按職工號(hào)查找教師信息n); printf(ttt3.返回主菜單n); printf(請(qǐng)選擇您需要的操作:); switch(ch=getchar(),ch) case 1: Search_N(T,1); /按姓名查找教師信息 break; /case 1 case 2: Search_N(T,2); /按職工號(hào)查找教師信息 break; /case 2 case 3: flag=0; break; /case 3 default: printf(非法輸入!n); /default /switchsystem(PAUSE);fflush(stdin); /while/SearchInfor/-4.對(duì)教師信息排序-void Sort_N(Teacher T,int n) if(n=1) /按職工號(hào)排序 Teacher temp; for(int i=0;iTeacherNum

溫馨提示

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

評(píng)論

0/150

提交評(píng)論