C語(yǔ)言課程設(shè)計(jì)-學(xué)生選修課程系統(tǒng)設(shè)計(jì)_第1頁(yè)
C語(yǔ)言課程設(shè)計(jì)-學(xué)生選修課程系統(tǒng)設(shè)計(jì)_第2頁(yè)
C語(yǔ)言課程設(shè)計(jì)-學(xué)生選修課程系統(tǒng)設(shè)計(jì)_第3頁(yè)
C語(yǔ)言課程設(shè)計(jì)-學(xué)生選修課程系統(tǒng)設(shè)計(jì)_第4頁(yè)
C語(yǔ)言課程設(shè)計(jì)-學(xué)生選修課程系統(tǒng)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩47頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、學(xué)生選修課系統(tǒng)設(shè)計(jì)一、設(shè)計(jì)目的當(dāng)今時(shí)代是飛速發(fā)展的信息時(shí)代,在各行各業(yè)中離不開信息處理,這正是計(jì)算機(jī)被廣泛應(yīng)用于信息系統(tǒng)的環(huán)境。計(jì)算機(jī)的最到好處的于利用它能夠進(jìn)行信息管理,使用計(jì)算機(jī)進(jìn)行信息控制,不僅提高了工作效率,而且大大的提高了其安全性。尤其對(duì)于復(fù)雜的信息管理,計(jì)算機(jī)能夠充分發(fā)揮它的優(yōu)越性。計(jì)算機(jī)進(jìn)行信息管理與信息管理系統(tǒng)的開發(fā)密切相關(guān),系統(tǒng)的開發(fā)是系統(tǒng)管理的前提。本系統(tǒng)就是為了管理好學(xué)生選課信息而設(shè)計(jì)的。數(shù)據(jù)處理手工操作,工作量大,出錯(cuò)率高,出錯(cuò)后不易更改,造成了時(shí)間上的浪費(fèi)。基于這個(gè)問題,我認(rèn)為有必要建立一個(gè)學(xué)生選課系統(tǒng),使學(xué)生選課信息管理工作規(guī)范化、系統(tǒng)化、程序化,避免學(xué)生選課管理的

2、隨意性,提高信息處理的速度和準(zhǔn)確性,能夠及時(shí)、準(zhǔn)確、有效的查詢和修改選課情況。二、題目說(shuō)明假定有n門課程,每門課程都有課程編號(hào),課程名稱,課程性質(zhì),總學(xué)時(shí),授課學(xué)時(shí),實(shí)驗(yàn)或上機(jī)學(xué)時(shí),學(xué)分,開課學(xué)期等信息,學(xué)生可按要求(如總學(xué)分不得少于60)自由選課。試設(shè)計(jì)一選修課程系統(tǒng),使之能提供一下功能:(1)系統(tǒng)以菜單方式工作;(2)課程信息和學(xué)生信息的錄入功能(課程信息有文件保存)輸入;(3)課程信息瀏覽功能-輸出;(4)查詢功能(至少一種查詢方式)-算法;(5)按學(xué)分查詢;(6)某門課程學(xué)生選修情況(可選項(xiàng))。提示數(shù)據(jù)結(jié)構(gòu)可用結(jié)構(gòu)體,包括課程和選秀兩個(gè)結(jié)構(gòu)體,其中課程結(jié)構(gòu)體包括課程編號(hào)、課程名稱、課程

3、性質(zhì)、總學(xué)時(shí)、授課學(xué)時(shí)、實(shí)驗(yàn)或上機(jī)學(xué)時(shí)、學(xué)分、開課學(xué)期。選修結(jié)構(gòu)體成員包括學(xué)號(hào),課程編號(hào),該結(jié)構(gòu)體的建立主要是為了查詢某門課程學(xué)生選修情況.O三、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)本系統(tǒng)的實(shí)現(xiàn),全部采用鏈表這種數(shù)據(jù)結(jié)構(gòu),用鏈表實(shí)現(xiàn)課程的查找、添加、刪除、課程的選修、追加選修的課程,課程信息采用結(jié)構(gòu)體這種數(shù)據(jù)結(jié)構(gòu)。typedefstructsubjects(intnum;charname20;charkind10;intstime;intttime;intetime;intscore;intterm;課程編號(hào)/課程名稱/課程性質(zhì)總學(xué)時(shí)授課學(xué)時(shí)實(shí)驗(yàn)或上機(jī)學(xué)時(shí)/學(xué)分開課學(xué)期structsubjects*next;SUB;

4、SUB*head=NULL;四、程序分析現(xiàn)代的社會(huì)是信息化的社會(huì),信息無(wú)所不在。在生產(chǎn)領(lǐng)域、流通領(lǐng)域、各個(gè)部門每天都和信息打交道,如何處理如此多的信息成為了一個(gè)重要的課題。學(xué)生在學(xué)期開始選課是教學(xué)活動(dòng)中的一個(gè)重要環(huán)節(jié),該環(huán)節(jié)如果能管理好,它不僅能加快學(xué)生的選課速度,也提高了整個(gè)活動(dòng)的效率。大學(xué)一般都有上千名學(xué)生,每學(xué)期開始學(xué)生都要選課,因而產(chǎn)生了大量的課程信息。考慮到用戶使用的方便和處理的信息量系統(tǒng)要完成錄入,保存,查詢,修改和刪除課程信息的各種過程,能打印出課程信息表。對(duì)象:系統(tǒng)的主要使用對(duì)象是需要選課的學(xué)生。學(xué)生在選課是要察看各個(gè)課程的詳細(xì)信息,還要選擇一些感興趣的課程,需要生成課表,在發(fā)

5、現(xiàn)課程有沖突后能夠修改先前選擇的信息。需要隨學(xué)生選課的變化,計(jì)算相應(yīng)的總學(xué)分。在全部選定后,打印報(bào)表。系統(tǒng)還需要管理員來(lái)查看和修改學(xué)生的總體選課情況課程信息和學(xué)生信息。五、程序設(shè)計(jì)大綱主模塊管理員模塊學(xué)生模塊瀏查添刪瀏查選瀏刪覽詢擇覽除覽詢加除所課選我錯(cuò)有程修選選課課課課課信課修的程息程的課程程程程課程程六、模塊設(shè)計(jì)()主函數(shù),頭文件及結(jié)構(gòu)體聲明主函數(shù)設(shè)計(jì)地比較簡(jiǎn)潔,只是提供一個(gè)主菜單,switch語(yǔ)句將整個(gè)程序分為兩個(gè)大的功能模塊:進(jìn)入選課系統(tǒng)選擇序號(hào)進(jìn)行選課進(jìn)入下一層程序#include"stdio.h"#include"string.h"#incl

6、ude"stdlib.h"#include"malloc.h"voidprin1();voidchoose();/課程結(jié)構(gòu)體/課程編號(hào)/課程名稱課程性質(zhì)/總學(xué)時(shí)授課學(xué)時(shí)實(shí)驗(yàn)或上機(jī)學(xué)時(shí)/學(xué)分開課學(xué)期typedefstructsubjectsintnum;charname20;charkind10;intstime;intttime;intetime;intscore;intterm;structsubjects*next;SUB;SUB*head=NULL;intmain()intn,w=1;dosystem("cls");puts(&

7、quot;nntt*MENU*nn");puts("tttt1.以管理員身份登錄n");puts("tttt2.以學(xué)生身份登錄n");puts("tttt3.退出");puts("nntt*n");printf("Chioseyournumber(1-3):bb");scanf("%d",&n);switch(n)case1:Mangers();break;case2:Students();break;case3:w=0;break;default:;whi

8、le(w=1);return0;(二)管理員功能模塊管理員的功能一共有四個(gè)功能:瀏覽,查詢,添加,刪除課程,運(yùn)用字符串處理函數(shù)處理密碼的問題,用一個(gè)switch語(yǔ)句實(shí)現(xiàn)函數(shù)的調(diào)用:程序voidMangers()(intn,w=1,flag=0,i=3;chars8;charpassword7="1"do(printf("nnEnterpassword:");scanf("%s",s);if(!strcmp(s,password)(flag=1;break;else/進(jìn)行密碼匹配驗(yàn)證(printf("nnError!Youon

9、lyhave%dtimes!Enteragain:n",i-1);i-;while(i>0);if(!flag)(printf("youhaveEnter3times!");exit(0);do(system("cls");puts("nntt*坨坨");puts("tttt1-瀏覽課程n");puts("tttt2-查詢課程n");puts("tttt3-添加課程n");puts("tttt4-刪除課程n");puts("ttt

10、t5-返回主菜單");輸入密碼超過了3次!自動(dòng)退出理員菜單puts("nntt*n");printf("Chioseyournumber(1-5):bb");scanf("%d",&n);switch(n)(case1:prin();break;case2:search();break;case3:insert();savefile();break;case4:del();savefile();break;case5:return;default:;while(w=1);voidStudents()intn,w=1;

11、dosystem("cls");puts("nntt*nn");puts("tttt1-瀏覽所有課程n");puts("tttt2-查詢課程信息n");puts("tttt3-選擇選彳課程n");puts("tttt4-瀏覽我選修的課程n");puts("tttt5-刪除錯(cuò)選課程n");puts("tttt6-返回主菜單");puts("nntt*n");printf("Chioseyournumber(1

12、-6):bb");scanf("%d",&n);switch(n)case1:prin();break;case2:search();break;case3:choose();break;case4:prin1();break;case5:del();savefile1();break;case6:return;default:;while(w=1);(三)學(xué)生功能菜單學(xué)生功能菜單包括六個(gè)功能:瀏覽課程,查詢課程,選修課程,瀏覽我所選修的課程,添加選修課程,刪除錯(cuò)選的課程,也是用到switch語(yǔ)句來(lái)調(diào)用函數(shù):(學(xué)生登錄菜單按1-6數(shù)字鍵進(jìn)入各選項(xiàng)1、瀏覽所

13、有課程2、查詢課程信息3、選擇選修課程4、瀏覽我選修的課程5、刪除錯(cuò)選課程6、返回主菜單(進(jìn)入所選目標(biāo)程序voidStudents()(intn,w=1;do(system("cls");/學(xué)生登錄菜單puts("nntt*學(xué)生菜單*nn");puts("tttt1-瀏覽所有課程n");puts("tttt2-查詢課程信息n");puts("tttt3-選擇選彳課程n");puts("tttt4-瀏覽我選修的課程n");puts("tttt5-刪除錯(cuò)選課程n&quo

14、t;);puts("tttt6-返回主菜單");puts("nntt*n");printf("Chioseyournumber(1-6):bb");scanf("%d",&n);switch(n)case1:prin();break;case2:search();break;case3:choose();break;case4:prin1();break;case5:del();savefile1();break;case6:return;default:;while(w=1);(四)創(chuàng)建鏈表模塊創(chuàng)建鏈表程

15、序SUB*create_form()/創(chuàng)建鏈表(SUB*head,*tail,*p;intnum,stime,ttime;intetime,score,term;charname20,kind10;intsize=sizeof(SUB);head=tail=NULL;printf("輸入選修課程信息:n");scanf("%d%s%s%d%d%d%d%d",&num,name,kind,&stime,&ttime,&etime,&score,&term);while(num!=0)(p=(SUB*)mall

16、oc(size);p->num=num;strcpy(p->name,name);strcpy(p->kind,kind);p->stime=stime;p->ttime=ttime;p->etime=etime;p->score=score;p->term=term;if(head=NULL)head=p;elsetail->next=p;tail=p;scanf("%d%s%s%d%d%d%d%d",&num,name,kind,&stime,&ttime,&etime,&sc

17、ore,&term);tail->next=NULL;returnhead;瀏覽所有課程(五)瀏覽模塊瀏覽模塊主要用管理員中的瀏覽課程”和學(xué)生功能中的瀏覽所有所有課程”,將所有的課程信息輸出,即將all_sub.txt文件里面的內(nèi)容全部輸出:程序voidprin()/瀏覽所有課程(SUB*ptr;head=NULL;readfile();if(head=NULL)(printf("nnt*NORECORDS!*n");return;printf("課程編號(hào)課程名稱課程性質(zhì)總學(xué)時(shí)授課學(xué)時(shí)實(shí)踐或上機(jī)學(xué)時(shí)學(xué)分開課學(xué)期n");for(ptr=hea

18、d;ptr;ptr=ptr->next)(printf("%5d%12s%9s%9d%9d%11d%11d%7dn",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);system("pause");voidprin1()瀏覽所有已選修課程(SUB*ptr;FILE*fp;if(fp=fopen("3.txt","r")=NULL)(printf

19、("Cannotopenfile.n");choose();printf("課程編號(hào)課程名稱課程性質(zhì)總學(xué)時(shí)授課學(xué)時(shí)實(shí)踐或上機(jī)學(xué)時(shí)學(xué)分開課學(xué)期n");while(!feof(fp)(ptr=(SUB*)malloc(sizeof(SUB);fscanf(fp,"%d%s%s%d%d%d%d%dn",&ptr->num,ptr->name,ptr->kind,&ptr->stime,&ptr->ttime,&ptr->etime,&ptr->score,&a

20、mp;ptr->term);printf("%5d%12s%9s%9d%9d%11d%11d%7dn",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);system("pause");(六)查詢模塊查詢模塊主要用于管理員功能中的直詢課程”和學(xué)生功能模塊中的查詢所有課程”,查詢模塊共分為三個(gè)查詢方法:按課程名稱查找,按課程性質(zhì)查找和按學(xué)分查找switch語(yǔ)句中,每一個(gè)case語(yǔ)句就是一

21、中查詢方法:程序/課程信息查詢voidsearch()(inta,num;intt=1;chartype10,min10;SUB*ptr;L1:system("cls");printf("nntt*請(qǐng)選擇查詢方式*n");printf("nttt1-按課程名稱查找n");printf("nttt2按課程性質(zhì)查找n");printf("nttt3-按學(xué)分查找n");printf("nttt4一退出查找n");printf("nntt*n");printf(&

22、quot;nnChioseyournumber(1-4):bb");scanf("%d",&a);switch(a)(case1:printf("請(qǐng)輸入要查找的課程的名稱:");scanf("%s",min);printf("課程編號(hào)課程名稱課程性質(zhì)總學(xué)時(shí)授課學(xué)時(shí)實(shí)踐或上機(jī)學(xué)時(shí)學(xué)分開課學(xué)期n");for(ptr=head;ptr;ptr=ptr->next)if(strcmp(min,ptr->name)=0)(printf("%5d%12s%9s%9d%9d%11d%11d

23、%7dn",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);t=0;if(t)printf("tn未找到!n");t=1;system("pause");gotoL1;case2:printf("請(qǐng)輸入要查找的課程的性質(zhì):");scanf("%s",type);printf("課程編號(hào)課程名稱課程性質(zhì)總學(xué)時(shí)授課學(xué)時(shí)實(shí)踐或上機(jī)學(xué)時(shí)學(xué)

24、分開課學(xué)期n");for(ptr=head;ptr;ptr=ptr->next)if(strcmp(type,ptr->kind)=0)(printf("%5d%12s%9s%9d%9d%11d%11d%7dn",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);t=0;if(t)printf("tn未找到!n");t=1;system("pause"

25、;);gotoL1;case3:printf("輸入要查找的課程的學(xué)分:");scanf("%d",&num);printf("課程編號(hào)課程名稱課程性質(zhì)總學(xué)時(shí)授課學(xué)時(shí)實(shí)踐或上機(jī)學(xué)時(shí)學(xué)分開課學(xué)期n");for(ptr=head;ptr;ptr=ptr->next)if(ptr->score=num)(printf("%5d%12s%9s%9d%9d%11d%11d%7dn",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->tt

26、ime,ptr->etime,ptr->score,ptr->term);t=0;if(t)printf("nt未找到!n");t=1;system("pause");gotoL1;case4:break;t=0;if(t)printf("nt未找到!n");t=1;system("pause");gotoL1;case4break;退出查找(七)插入鏈表模塊插入鏈表操作主要用于添加課程,在整個(gè)課程信息中加入一些新課程,它在添加模塊中被調(diào)用:程序void*myInsert(SUB*subj)鏈表插

27、入操作(SUB*ptr,*ptr2;ptr=subj;if(head=NULL)(head=ptr;head->next=NULL;else(for(ptr2=head;ptr2;ptr2=ptr2->next)if(ptr2->next=NULL)(ptr2->next=subj;subj->next=NULL;break;)returnhead;)(八)添加模塊添加模塊主要用于增加課程信息,采用鏈表的操作:程序void*insert()插入課程信息(SUB*ptr,*subj;intsize=sizeof(SUB);charch,ch1;while(ch!=&

28、#39;0')(subj=(SUB*)malloc(size);ptr=subj;printf("輸入要插入的課程信息:n");printf("ntt請(qǐng)輸入編號(hào):");scanf("%d",&subj->num);printf("ntt請(qǐng)輸AIM程名稱:");scanf("%s",&subj->name);printf("ntt請(qǐng)輸入課程項(xiàng):");scanf("%s",&subj->kind);printf

29、("ntt請(qǐng)輸入總學(xué)時(shí):");scanf("%d",&subj->stime);printf("ntt請(qǐng)輸入授課學(xué)時(shí):");scanf("%d",&subj->ttime);printf("ntt請(qǐng)輸入實(shí)踐或上機(jī)學(xué)時(shí):");scanf("%d",&subj->etime);printf("ntt請(qǐng)輸入學(xué)分:");scanf("%d",&subj->score);printf(&qu

30、ot;ntt請(qǐng)輸入開課學(xué)期:");scanf("%d",&subj->term);myInsert(subj);printf("nn繼續(xù)插入請(qǐng)按回車n");printf("n結(jié)束添加課程按0:bb");CH1,否則subj->term輸完,全部采用刪除鏈表中的ch1=getchar();/*將回車鍵賦給后輸入的回車鍵會(huì)賦給CH,因此用CH1填補(bǔ)。*/ch=getchar();returnhead;(九)刪除模塊刪除模塊主要用于管理員刪除課程信息學(xué)生刪除自己的選課某一個(gè)節(jié)點(diǎn)的操作:刪除選修課程SUB*p1,

31、*p2charch,ch1;intnumprintf(輸入想要?jiǎng)h除的課程編號(hào));scanf("%d",&num);進(jìn)行編號(hào)查找并刪除printf("n繼續(xù)刪除請(qǐng)按回車n");printf("n結(jié)束刪除課程按0:");程序void*del()/刪除課程-(SUB*p1,*p2;charch,ch1;intnum;while(ch!='0')(printf("輸入想要?jiǎng)h除的課程編號(hào):八bbbbb");scanf("%d",&num);if(head->num=n

32、um)(p2=head;head=head->next;free(p2);if(head=NULL)returnNULL;p1=head;p2=head->next;while(p2)(if(p2->num=num)(p1->next=p2->next;free(p2);elsep1=p2;p2=p1->next;printf("n繼續(xù)刪除請(qǐng)按回車n");printf("n結(jié)束刪除課程按0:bb");ch1=getchar();將回車鍵賦給CH1,否則num輸完后再輸入的回車鍵會(huì)賦給CH,因此用CH1填補(bǔ)。ch=get

33、char();returnhead;system("pause");(十)選修課程模塊選修課程模塊采用插入鏈表的操作:printf("n以上信息全部保存在'my_sub.txt'中n")程序/選新課程voidchoose()(SUB*p,*q;inta5;intnum,total=0,i=0,j;printf("輸入要選修的課程的編號(hào),編號(hào)之間以空格分開n");scanf("%d",&num);printf("如果確認(rèn)輸入完要選修的課程的編號(hào),請(qǐng)輸入0:bb");whil

34、e(num!=0)for(p=head;p;p=p->next)if(p->num=num)total=total+p->score;ai=num;i+;scanf("%d",&num);if(total<60)printf("選修總學(xué)分為d,未達(dá)到60,選修失敗!n",total);system("pause");elseIntFILE,fp;FILE*fp;fp=fopen("my_sub.txt","w");for(j=0;j<i;j+)for(q=h

35、ead;q;q=q->next)if(q->num=aj)fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7dn",q->num,q->name,q->kind,q->stime,q->ttime,q->etime,q->score,q->term);fclose(fp);printf("ttn*選修成功!*n");printf("n您選修的課程總學(xué)分為d,課程分別為:n",total);printf("n課程編號(hào)課程名稱課程性質(zhì)總學(xué)時(shí)授課

36、學(xué)時(shí)實(shí)踐或上機(jī)學(xué)時(shí)學(xué)分開課學(xué)期n");for(j=0;j<i;j+)for(q=head;q;q=q->next)if(q->num=aj)printf("%5d%12s%9s%9d%9d%11d%11d%7dn",q->num,q->name,q->kind,q->stime,q->ttime,q->etime,q->score,q->term);printf("n以上信息全部保存在my_sub.txt'中n");system("pause");(十

37、一)讀取文件模塊讀取文件模塊是用來(lái)讀出文件內(nèi)容,并將內(nèi)容輸出到內(nèi)存中,當(dāng)輸入文件名時(shí),就能打開指定的文件,當(dāng)輸入all_sub.txt時(shí),打開所有課程信息的文件,當(dāng)輸入my_sub.txt時(shí),就是瀏覽學(xué)生選修的課程信息。newSub=(SUB*)malloc(sizeof(SUB);fscanf(fp,&newSub->num,newSub->name,newSub->kind,&newSub->stime,&newSub->ttime,&newSub->etime,&newSub->score,&new

38、Sub->term);myInsert(newSub);fclose(fp);閱讀文件程序voidreadfile()void*myInsert(SUB*);SUB*newSub;新課程intnum,stime,ttime,etime;intscore,term;charc,name20,kind10,fname20;FILE*fp;fp=fopen("2.txt","r");while(!feof(fp)newSub=(SUB*)malloc(sizeof(SUB);fscanf(fp,"%d%s%s%d%d%d%d%dn",

39、&newSub->num,newSub->name,newSub->kind,&newSub->stime,&newSub->ttime,&newSub->etime,&newSub->score,&newSub->term);myInsert(newSub);fclose(fp);(十二)保存文件模塊保存文件模塊共分為兩個(gè)子程序,分別是將修改的信息保存到all_sub.txt和my_sub.txt文件中:程序voidsavefile()/保存文件SUB*p;FILE*fp;fp=fopen(&qu

40、ot;2.txt","w");if(fp=NULL)exit(0);printf("課程編號(hào)課程名稱課程性質(zhì)總學(xué)時(shí)授課學(xué)時(shí)實(shí)驗(yàn)或上機(jī)學(xué)時(shí)學(xué)分開課學(xué)期n");for(p=head;p;p=p->next)fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7dn",p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term);fclose(fp);printf("創(chuàng)建后

41、的信息已放入'2.txt'文件中n");system("pause");voidsavefile1()保存文件SUB*p;FILE*fp;fp=fopen("3.txt","w");if(fp=NULL)exit(0);for(p=head;p;p=p->next)fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7dn",p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p

42、->score,p->term);fclose(fp);printf("創(chuàng)建后的信息已放入3.txt'文件中n");system("pause");保存文件系統(tǒng)進(jìn)行檢測(cè)所要保存的文件七、上機(jī)操作開始運(yùn)行管理員界面Chioseyournunher<l-&>:F31胸又要皤X的課程宿息+請(qǐng)輸入課程編號(hào):1請(qǐng)輸入課程名稱,"aths請(qǐng)輸入課程性質(zhì):W請(qǐng)輸入總學(xué)時(shí):工4闔ft入黃果學(xué)時(shí)其2請(qǐng)輸入實(shí)踐或上機(jī)學(xué)時(shí);8請(qǐng)輸入學(xué)分上20請(qǐng)輸入開課學(xué)期式"加完畢,新信息存入文件中*續(xù)插入請(qǐng)按回車結(jié)束添加譚程按匹J

43、J課程輸入模塊事"C:DncumentsandSettingsAdministratorBnDebugzuoye5.exe"-|n|X*宜171米_*工一-瀏覽課程2 查詢課程3 添加課程4 刪除探程5-返回主菜單Chioseyournunber<l-5>:1辟程編號(hào)課程名稱課程性質(zhì)總學(xué)時(shí)授課學(xué)時(shí)窘踐或上機(jī)學(xué)時(shí)學(xué)分開課學(xué)期1mathsbx14120201齊技任意鍵繼續(xù).管理員瀏覽模塊青詵詢*»*1按課程名稱查找2按課程性質(zhì)查找3-按學(xué)分查找4-退出查找Chioseyournumber<l-4>:1請(qǐng)揄入署查找的探程的名松ma111零課卷編號(hào)

44、錦程名標(biāo)課程性質(zhì)總學(xué)時(shí)授課學(xué)時(shí)實(shí)踐或上機(jī)學(xué)時(shí)學(xué)分開課學(xué)期1mathsbx14120201需按任意鍵繼續(xù).管理員課程查詢模塊wC:DocumentsandSettings".Administrator'.B'.Debug1-,zuoye5.exe請(qǐng)輸入課程編號(hào);4請(qǐng)輸入課程名稱:English情輸入課程性質(zhì):人乂請(qǐng)輸入總學(xué)時(shí):20請(qǐng)輸入授課學(xué)時(shí);加請(qǐng)輸入實(shí)踐或上機(jī)學(xué)時(shí)4請(qǐng)輸入開課學(xué)期4添加完畢,新信息存入文件中繼續(xù)插入請(qǐng)接回車02:上一0名放.按程已續(xù)程課息繼課信鑲加口襦意富后任墨建結(jié)課創(chuàng)請(qǐng)授課學(xué)時(shí)實(shí)驗(yàn)或上機(jī)學(xué)時(shí)學(xué)分開課學(xué)期管理員添加模塊管理員刪除模塊國(guó)X:Docume

45、ntsandSettingsAdministratorDebugzuoye5.exe"口|瀏覽所有課程2-查詢課程信息A一選擇選修課程4瀏覽我選修的課程5 刪除錯(cuò)選課程6 返回主菜單XXXMEigatifiMJiCMMiJfJf-XME魏蔓梵XX算董Chloseyoiii*riumber<l-6>;L學(xué)生界面4-瀏覽我選修的課程5-刪除錯(cuò)選課程6-返回主菜單Chioseyournumber<l-ife>-3輸入要選修的課程的編號(hào).編號(hào)之間以空格分開123如果確認(rèn)輸入完要選修的課程的編號(hào).請(qǐng)輸入人0選修成劭fMMMM以上信息全請(qǐng)按任意鍵您選修的課程總學(xué)分為U0.

46、課程分別為:課程編號(hào)課程名稱裸程性質(zhì)總學(xué)時(shí)授課學(xué)時(shí)實(shí)踐或上機(jī)學(xué)時(shí)學(xué)分開課學(xué)期1mathsbx141202012historspbx1512Q5013musicXX20155401存在匕.txt,中選課模塊學(xué)生瀏覽模塊學(xué)生查詢模塊學(xué)生刪除模塊八、結(jié)果分析程序的優(yōu)缺點(diǎn)【功能上的優(yōu)點(diǎn)】主要體現(xiàn)在以下三點(diǎn):1 .簡(jiǎn)潔明了的程序菜單。程序主要采用了六組層次不同的菜單,相互獨(dú)立又相互聯(lián)系,巧妙相接,符合用戶的使用習(xí)慣與思維。2 .人性化的程序提示語(yǔ)言,程序提示語(yǔ)言較人性化,不僅大多為祈使語(yǔ)句、疑問句,而且提示明確,具有較強(qiáng)的明確的指導(dǎo)作用。程序提示不僅層次分明,提示方式多樣,而且提示信息井然有序,更加有利

47、于用戶順利、準(zhǔn)確地進(jìn)行程序的操作。3 .智能化的模塊設(shè)計(jì)。程序的智能化主要體現(xiàn)在減少了許多人工操作。如功能模塊操作結(jié)束后,均會(huì)返回主菜單進(jìn)行下一模板的運(yùn)行,并提示是否再進(jìn)行類似的操作,這樣給用戶帶來(lái)了操作的方便,大大提高了學(xué)生選課的效率。本程序達(dá)到了C語(yǔ)言課程設(shè)計(jì)題目的所有要求。即本程序(1)系統(tǒng)一菜單方式工作(2)課程信息和學(xué)生選課信息錄入功能(課程信息用文件保存輸入(3)課程信息瀏覽功能輸出(4)查詢功能(至少一種查詢方式)一一算法(5)按學(xué)分查詢(6)某門課程學(xué)生選修情況(可選項(xiàng))的功能要求。與此同時(shí),程序各模塊開發(fā)設(shè)計(jì)依據(jù)了程序的具體實(shí)際的使用情景,而有所改進(jìn),使其更具有實(shí)用性?!境绦?/p>

48、的缺點(diǎn)】主要表現(xiàn)在以下四點(diǎn):1 .程序雖然經(jīng)過多次精簡(jiǎn),但僅僅是形式上、小范圍的精簡(jiǎn),仍未得到本質(zhì)上的精簡(jiǎn),即未找到更加簡(jiǎn)單、更加高效、更加合理、更小占用的資源的算法。2 .程序仍然存在不合理的地方,例如程序某些部分輸入錯(cuò)誤會(huì)導(dǎo)致程序中止或轉(zhuǎn)向其他功能模塊,即程序建議用戶注意提示,進(jìn)行合理的準(zhǔn)確的輸入,這樣更有利于管理工作。3 .程序功能仍然不夠完善。例如信息表達(dá)方式不豐富,比較單一,缺少圖片、音樂等元化表達(dá)方式。附錄(源程序代碼)#include"stdio.h"#include"string.h"#include"stdlib.h"

49、;#include"malloc.h'voidprin1();voidchoose();typedefstructsubjectsintnum;charname20;charkind10;intstime;intttime;intetime;intscore;intterm;/課程編號(hào)課程名稱/課程性質(zhì)總學(xué)時(shí)授課學(xué)時(shí)實(shí)驗(yàn)或上機(jī)學(xué)時(shí)學(xué)分開課學(xué)期structsubjects*next;SUB;SUB*head=NULL;SUB*create_form()創(chuàng)建鏈表SUB*head,*tail,*p;intnum,stime,ttime;intetime,score,term;cha

50、rname20,kind10;intsize=sizeof(SUB);head=tail=NULL;printf("輸入選修課程信息:n");scanf("%d%s%s%d%d%d%d%d",&num,name,kind,&stime,&ttime,&etime,&score,&term);while(num!=0)(p=(SUB*)malloc(size);p->num=num;strcpy(p->name,name);strcpy(p->kind,kind);p->stime=s

51、time;p->ttime=ttime;p->etime=etime;p->score=score;p->term=term;if(head=NULL)head=p;elsetail->next=p;tail=p;scanf("%d%s%s%d%d%d%d%d",&num,name,kind,&stime,&ttime,&etime,&score,&term);tail->next=NULL;returnhead;voidsavefile()保存文件SUB*p;FILE*fp;fp=fope

52、n("2.txt","w");if(fp=NULL)exit(0);printf("課程編號(hào)課程名稱課程性質(zhì)總學(xué)時(shí)授課學(xué)時(shí)實(shí)驗(yàn)或上機(jī)學(xué)時(shí)學(xué)分開課學(xué)期n");for(p=head;p;p=p->next)fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7dn",p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term);fclose(fp);printf(&quo

53、t;創(chuàng)建后的信息已放入2.txt'文件中n");system("pause");voidsavefile1()保存文件SUB*p;FILE*fp;fp=fopen("3.txt","w");if(fp=NULL)exit(0);for(p=head;p;p=p->next)fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7dn",p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p

54、->score,p->term);fclose(fp);printf("創(chuàng)建后的信息已放入3.txt'文件中n");system("pause");voidreadfile()閱讀文件void*myInsert(SUB*);SUB*newSub;新課程intnum,stime,ttime,etime;intscore,term;charc,name20,kind10,fname20;FILE*fp;fp=fopen("2.txt","r");while(!feof(fp)(newSub=(SUB

55、*)malloc(sizeof(SUB);fscanf(fp,"%d%s%s%d%d%d%d%dn",&newSub->num,newSub->name,newSub->kind,&newSub->stime,&newSub->ttime,&newSub->etime,&newSub->score,&newSub->term);myInsert(newSub);fclose(fp);voidprin()瀏覽所有課程(SUB*ptr;head=NULL;readfile();if(

56、head=NULL)(printf("nnt*NORECORDS!*n");return;printf("課程編號(hào)課程名稱課程性質(zhì)總學(xué)時(shí)授課學(xué)時(shí)實(shí)踐或上機(jī)學(xué)時(shí)學(xué)分開課學(xué)期n");for(ptr=head;ptr;ptr=ptr->next)(printf("%5d%12s%9s%9d%9d%11d%11d%7dn",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);

57、system("pause");voidprin1()瀏覽所有選修課程(SUB*ptr;FILE*fp;if(fp=fopen("3.txt","r")=NULL)(printf("Cannotopenfile.n");choose();)printf("課程編號(hào)課程名稱課程性質(zhì)總學(xué)時(shí)授課學(xué)時(shí)實(shí)踐或上機(jī)學(xué)時(shí)學(xué)分開課學(xué)期n");while(!feof(fp)(ptr=(SUB*)malloc(sizeof(SUB);fscanf(fp,"%d%s%s%d%d%d%d%dn",&

58、amp;ptr->num,ptr->name,ptr->kind,&ptr->stime,&ptr->ttime,&ptr->etime,&ptr->score,&ptr->term);printf("%5d%12s%9s%9d%9d%11d%11d%7dn",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);)system("pause");)void*myInsert(SUB*subj)/鏈表插入操作(SUB*ptr,*ptr2;ptr=subj;if(head=NULL)(head=ptr;head->next=NULL;)else(for(ptr2=head;ptr2;ptr2=ptr2->next)if(ptr2->next=NULL)(ptr2->next=subj;subj->next=NULL;break;)returnhead;)void*insert()插入課

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論