版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、1程序目標及功一一11.1課題背21.2系統(tǒng)功一一21.3設(shè)計要3左匕左匕2程序功能模塊組成及-32.1系統(tǒng)功能52.2各模塊流流程圖模塊程圖3程序主要數(shù)據(jù)結(jié)構(gòu)及函數(shù)列表83.13.2程序中函使-8用的數(shù)數(shù)據(jù)列結(jié)構(gòu)表-104程序代碼及運12行結(jié)果5總結(jié)與體會151、程序目標及功能1.1、課題背景當今社會是一個信息時代,計算機技術(shù)發(fā)展迅速,同時信息的白動處理以及網(wǎng)絡(luò)式的信息交互方式越來越被人們認可和運用,讓計算機來管理學生的信息是現(xiàn)在各個高校都在積極進行的工作之一,也是高校教學管理工作的重要內(nèi)容之一。網(wǎng)上選課與傳統(tǒng)的選課方式相比更節(jié)約資源,同時,隨著學生選課白主權(quán)的增加,網(wǎng)上選課有效的避免了許多
2、不良現(xiàn)象,使教學更加透明。1.2、系統(tǒng)功能 課程信息錄入。建立課程信息鏈表,由鍵盤輸入課程信息。 課程信息輸出。輸出所有課程信息。 查詢課程。按課程編號、課程名稱、學分、按課程性質(zhì)、開課學期等查詢(至少實現(xiàn)1種)。 學生選修課程。輸入學生學號和課程編號,形成一條選課信息,保存在“選修信息文件”里。 查詢學生選修的課程。輸入學生學號,輸出該生已選修的課程編號和課程名稱。 保存課程信息到磁盤文件。建立一個磁盤文件,把所建立的課程表寫入文件。 從磁盤文件中讀出課程信息。1.3、設(shè)計要求假定有n門課程,每門課程有課程編號、課程名稱、課程性質(zhì)(專業(yè)選修課、公選課)、總學時、總學分、理論學時、實驗學時、開
3、課學期、已選修本課程的學生人數(shù)等信息;每門課最多允許60個學生選修。選修信息文件,用來保存每個學生選修課程的信息,每條記錄包括:學生的學號、所選修的課程編號和課程名稱。系統(tǒng)以菜單方式工作(程序主界面包括程序名稱及編程者學號、姓名、班級;同時要求輸入功能號碼,選擇進入功能模塊程序)。 用函數(shù)分別實現(xiàn)動態(tài)鏈表的建立、動態(tài)鏈表輸出等功能。 界面友好,程序中加入必要的注釋。函數(shù)功能要劃分好(結(jié)構(gòu)化程序設(shè)計);函數(shù)要求使用指針作形參。 學生選修一門課后,要同時更新課程信息和選修信息文件。2、程序功能模塊組成及流程圖2.1系統(tǒng)功能模塊根據(jù)設(shè)計要求分為8個模塊,分別是:1:創(chuàng)建課程信息:課程信息的錄入,建立
4、課程信息鏈表,有鍵盤輸入課程信息。2:課程信息輸出:輸入所有課程信息。3:查詢課程信息:按課程編號、課程名稱、課程性質(zhì)、學分、開課學期等查詢(此程序按課程編號實現(xiàn))。4:學生選修課程:輸入學生學號和課程編號,形成一條選課信息,保存在“選修信息文件”里。5:查詢學生選修課程:輸入學生學號,輸入該省已選修的課程編號和課程名稱。6:保存課程信息到磁盤:建立磁盤文件,把所建立的課程表寫入文件。7:從磁盤文件中讀出課程信息:從磁盤文件中讀出課程信息并輸出,顯示主界面。8:退出:結(jié)束程序,退出系統(tǒng)。2.2各模塊流程圖選擇模塊輸入do寫入文件并儲存輸出cp1=(structstu*)malloc(sizeo
5、f(structstu);if(i=1)chead=cp2=cp1;elsecp2->next=cp1;scanf("%d%s”,&cp1->num,&cp1->name);scanf("%s%d%d%d”,&cp1->quale,&cp1->time,&cp1->credit,&cp1->thtime);scanf("%d%d%d”,&cp1->extime,&cp1->term,&cp1->alnum);cp2=cp1;fflus
6、h(stdin);/刷新scanf()函數(shù)緩沖,防止白動循環(huán)i+;while(am>=i);cp2->next=NULL;學生選課intsnum;structstu*head,*p1;p1=p;printf("請輸入學生學號:");scanf("%d”,&snum);printf("輸入課程編號:");scanf("%d”,&num);doif(p1->num=num)FILE*fp;fp=fopen("選修信息文件.txt”,"w”);fprintf(fp,"學生學號課
7、程編號名稱性質(zhì)總學時總學分理論學時實驗學時開課學期已修本課的人數(shù)n");fprintf(fp,"%dt%dt%st%st%dt%dt%dt%dt%dt%d",snum,p1->num,p1->name,p1->quale,p1->time,p1->credit,p1->thtime,p1->extime,p1->term,p1->alnum);fclose(fp);printf("已保存至“選修信息文件.txt”n");elsep1=p1->next;while(p1=NULL);3、
8、程序主要數(shù)據(jù)結(jié)構(gòu)及函數(shù)列表3.1程序中使用的數(shù)據(jù)結(jié)構(gòu)鏈表的使用structstu/r尸明結(jié)構(gòu)體類型structstudentintnum;/課程編號charname20;/課程名稱charquale10;/課程性質(zhì)inttime;/總學時intcredit;/總學分intthtime;/理論學時intextime;/實驗學時intterm;/開課學期intalnum;/已選本課程的學生人數(shù)structstu*next;3.2函數(shù)列表structstu*creat(intam);/創(chuàng)建鏈表,錄入課程信息voidoutput(structstu*p);/聲明輸入課程信息的函數(shù),按課程編號查詢voi
9、dinquire(structstu*p,intn);/聲明查詢課程的函數(shù)voidstu_classes(structstu*p,intnum);/聲明保存文件的的函數(shù)voidinquire_stu(structstu*p,intnumb);/查詢學生選課信息voidsave_inf(structstu*p);/聲明保存課程信息函數(shù)voidread_inf(structstu*p);/聲明讀出課程信息的函數(shù)voidreset();/聲明清除界面函4、程序代碼及運行結(jié)果程序代碼:#include<stdio.h>#include<stdlib.h>#include<
10、conio.h>#defineNULL0#defineN2/定義共5門課程structstu/聲明結(jié)構(gòu)體類型structstudentintnum;/課程編號charname20;/課程名稱charquale10;/課程性質(zhì)inttime;/總學時intcredit;/總學分intthtime;/理論學時intextime;/實驗學時intterm;/開課學期intalnum;/已選本課程的學生人數(shù)structstu*next;;intmain(void)structstu*creat(intam);/voidoutput(structstu*p);/按課程編號查詢voidinquire
11、(structstu*p,intn);/創(chuàng)建鏈表,錄入課程信息聲明輸入課程信息的函數(shù),聲明查詢課程的函數(shù)voidstu_classes(structstu*p,intnum);/聲明保存文件的的函數(shù)voidinquire_stu(structstu*p,intnumb);/查詢學生選課信息voidsave_inf(structstu*p);/聲明保存課程信息函數(shù)voidread_inf(structstu*p);/聲明讀出課程信息的函數(shù)voidreset();/聲明清除界面函數(shù)structstu*head;intM,n,num,numb,fail;loop:printf("n&quo
12、t;);printf("*選修課程系統(tǒng)*5)printf("學號:*姓名:*班級:*n");printf("n");pri傾*n");printf("*tt:創(chuàng)建課程信息表*n");printf("*tt*2:課程信息輸出*n");printf("*tt淤3:查詢課程信息*n");printf("*tt淤4:學生選修課程*n");printf("*tt淤5:查詢學生選修課程*n");printf("*tt淤6:保存課程信息到磁
13、盤*n");printf("*tt從磁盤文件中讀出課程信息*n");printf("*tt淤8:退出*n");/菜單形式的主界面pri傾*n");printf("nntt請輸入功能號1-8:");/提示輸入功能號scanf("%d”,&M);if(M=1)if(fail=1)/判斷是否創(chuàng)建列表printf("已經(jīng)創(chuàng)建列表,請選擇其他功能!n");gotoloop;/elsehead=creat(N);/fail=1;/reset();/elseif(M=2)if(fail=1)
14、/output(head);reset();else返回初始界面使用列表,錄入信息清除界面判斷是否創(chuàng)建列表/輸入信息,清除界面printf("沒有數(shù)據(jù),請先錄入信息!n");gotoloop;/返回初始界面elseif(M=3)if(fail=1)/判斷是否創(chuàng)建列表inquire(head,n);reset();/查詢信息函數(shù),清除界面elseprintf("沒有數(shù)據(jù),請先錄入信息!n");gotoloop;/返回初始界面elseif(M=4)(if(fail=1)stu_classes(head,num);reset();/形成信息并保存,清除界面el
15、seprintf("沒有數(shù)據(jù),請先錄入信息!n");gotoloop;/返回初始界面elseif(M=5)(if(fail=1)(查詢信息inquire_stu(head,numb);/fail=2;reset();/清除界面elseprintf("沒有數(shù)據(jù),請先錄入信息!n");gotoloop;/返回初始界面elseif(M=6)(if(fail=2)(save_inf(head);/保存文件fail=3;reset();/清除界面elseelseprintf("沒有選課,請先選課!n");gotoloop;/返回初始界面if(M
16、=7)if(fail=1|fail=2|fail=3)read_inf(head);reset();elseprintf("沒有數(shù)據(jù),請先錄入信息!n");gotoloop;/返回初始界面elseif(M=8)exit(0);/退出程序elseprintf("輸入錯誤n");/錯誤提示gotoloop;/轉(zhuǎn)至功能號的輸入return0;創(chuàng)建鏈表structstu*creat(intam)/inti=1;am=N;structstu*cp1,*cp2,*chead;printf("t請輸入以下信息:(名稱和性質(zhì)請輸入小寫字母,其余均為數(shù)字)n&q
17、uot;);printf("課程的編號名稱性質(zhì)總學時總學分理論學時實驗學時開課學期已修本課的人數(shù):");printf("n");do(cp1=(structstu*)malloc(sizeof(structstu);if(i=1)chead=cp2=cp1;elsecp2->next=cp1;scanf("%d%s”,&cp1->num,&cp1->name);scanf("%s%d%d%d”,&cp1->quale,&cp1->time,&cp1->cred
18、it,&cp1->thtime);scanf("%d%d%d",&cp1->extime,&cp1->term,&cp1->alnum);cp2=cp1;fflush(stdin);/刷新scanf()函數(shù)緩沖,防止白動循環(huán)i+;while(am>=i);cp2->next=NULL;return(chead);voidoutput(structstu*p)/定義輸出信息函數(shù)inti;structstu*p1;p1=p;printf("編號名稱性質(zhì)總學時總學分理論學時實驗學時開課學期已修本課的人數(shù)
19、n");for(i=1;p1!=NULL;i+)printf("%d%s%st%dt%dt%dt%dt%dt%d”,p1->num,p1->name,p1->quale,p1->time,p1->credit,p1->thtime,p1->extime,p1->term,p1->alnum);printf("n");p1=p1->next;voidinquire(structstu*p,intn)/定義查詢信息函數(shù)(printf("輸入要查詢的編號:");scanf(&quo
20、t;%d”,&n);structstu*p1;p1=p;printf("您所查詢的信息是:n");do(if(p1->num=n)(printf("編號名稱性質(zhì)總學時總學分理論學時實驗學時開課學期已修本課的人數(shù)n");printf("%d%s%st%dt%dt%dt%dt%dt%d",p1->num,p1->name,p1->quale,p1->time,p1->credit,p1->thtime,p1->extime,p1->term,p1->alnum);prin
21、tf("n");p1=p1->next;elsep1=p1->next;while(p1!=NULL);voidstu_classes(structstu*p,intnum)/定義學生選課信息的函數(shù),并保存至"選修信息文件.txt"intsnum;structstu*head,*p1;p1=p;printf("請輸入學生學號:");scanf("%d”,&snum);printf("輸入課程編號:");scanf("%d”,&num);doif(p1->num=
22、num)FILE*fp;fp=fopen(”選修信息文件.txt”,"w”);fprintf(fp,”學生學號課程編號名稱性質(zhì)總學時總學分理論學時實驗學時開課學期已修本課的人數(shù)n");fprintf(fp,"%dt%dt%st%st%dt%dt%dt%dt%dt%d”,snum,p1->num,p1->name,p1->quale,p1->time,p1->credit,p1->thtime,p1->extime,p1->term,p1->alnum);fclose(fp);printf("已保存至“
23、選修信息文件.txt”n");elsep1=p1->next;while(p1=NULL);voidinquire_stu(structstu*p,intnumb)/定義查詢學生信息的函數(shù)intsnum;printf(-請輸入學號:");scanf("%d”,&snum);structstu*head,*p1;p1=p;printf(-學號課程編號課程名稱n");printf("%dt%dt%s”,snum,p1->num,p1->name);printf("n");voidsave_inf(str
24、uctstu*p)/定義保存課程信息的文件inti;structstu*p1,*head;p1=p;FILE*fp;fp=fopen("課程信息.txt”,"w”);for(i=0;p1!=NULL;i+)fprintf(fp,"課程編號名稱性質(zhì)總學時總學分理論學時實驗學時開課學期已修本課的人數(shù)n");fprintf(fp,"%dt%st%st%dt%dt%dt%dt%dt%dn",p1->num,p1->name,p1->quale,p1->time,p1->credit,p1->thtime,p
25、1->extime,p1->term,p1->alnum);p1=p1->next;fclose(fp);printf("已保存至“課程信息.txt”n");voidread_inf(structstu*p)/定義讀出課程信息的函數(shù)inti;structstu*p1,*head;p1=p;FILE*fp;if(fp=fopen("課程信息.txt","r")=NULL)(printf("無法打開文件n");printf("請先建立文件n");for(i=1;p1!=NUL
26、L;i+)(fread(&p,sizeof(head),1,fp);printf("%d%s%st%dt%dt%dt%dt%dt%dn",p1->num,p1->name,p1->quale,p1->time,p1->credit,p1->thtime,p1->extime,p1->term,p1->alnum);p1=p1->next;fclose(fp);voidreset()/定義清楚界面函數(shù)(printf("按任意鍵繼續(xù)");getch();system("CLS");各階段運行結(jié)果:主界面的輸出:數(shù)據(jù)的輸入:數(shù)據(jù)的輸出:查詢信息:選課并保存:保存的文件:選作信息文件記率至生學號裸程編號弄O點律兩W#理也孚時實臆學時并譚軻豆修本課新遂2142wulibK24&1212251查詢選課信息:Lg、4請輸入功能號"-時瀉悴號課程編號課程名稱E142wuli隨任意健繼續(xù)保存課程信息:請輸入功能號【1TN6已保荏至,建程Bt-txt75保存的文
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廈門市金雞亭中學2026年校園招聘備考題庫完整答案詳解
- 養(yǎng)老院九防制度
- 公共交通信息化建設(shè)管理制度
- 會議決議執(zhí)行與監(jiān)督制度
- 2026年永康市科學技術(shù)局工作人員招聘備考題庫參考答案詳解
- 2026年柳州市航鷹中學招聘語文教師招聘備考題庫完整答案詳解
- 企業(yè)績效評估與獎懲制度
- 上海七十邁數(shù)字科技2026校園招聘備考題庫及答案詳解1套
- 2026年濮陽市范縣第二小學音樂教師招聘備考題庫及一套答案詳解
- 養(yǎng)老院入住老人突發(fā)疾病應(yīng)急處理制度
- 2025年全科醫(yī)生轉(zhuǎn)崗培訓(xùn)考試題庫及答案
- 外貿(mào)進出口2025年代理報關(guān)合同協(xié)議
- 2024年安徽理工大學馬克思主義基本原理概論期末考試模擬試卷
- 2025年中考跨學科案例分析模擬卷一(含解析)
- 2025年水利工程質(zhì)量檢測員考試(金屬結(jié)構(gòu))經(jīng)典試題及答案
- 透析充分性及評估
- 安全文明施工二次策劃方案
- DB34∕T 5244-2025 消防物聯(lián)網(wǎng)系統(tǒng)技術(shù)規(guī)范
- 2026年合同管理與合同風險防控培訓(xùn)課件與法律合規(guī)指南
- DB35∕T 1844-2019 高速公路邊坡工程監(jiān)測技術(shù)規(guī)程
- 閥門基礎(chǔ)知識上
評論
0/150
提交評論