《計(jì)算機(jī)程序設(shè)計(jì)(VC )課程設(shè)計(jì)》報(bào)告_第1頁
《計(jì)算機(jī)程序設(shè)計(jì)(VC )課程設(shè)計(jì)》報(bào)告_第2頁
《計(jì)算機(jī)程序設(shè)計(jì)(VC )課程設(shè)計(jì)》報(bào)告_第3頁
《計(jì)算機(jī)程序設(shè)計(jì)(VC )課程設(shè)計(jì)》報(bào)告_第4頁
《計(jì)算機(jī)程序設(shè)計(jì)(VC )課程設(shè)計(jì)》報(bào)告_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

計(jì)算機(jī)程序設(shè)計(jì)語言(VC++)課程設(shè)計(jì)報(bào)告一、目的通過一個(gè)學(xué)生成績管理系統(tǒng)的實(shí)際開發(fā),提高應(yīng)用所學(xué)知識(shí)分析問題,解決問題和實(shí)際動(dòng)手的能力,更加熟練地掌握C++程序開發(fā)的基本方法和工作步驟,對系統(tǒng)開發(fā)實(shí)踐有進(jìn)一步體會(huì)。從而綜合復(fù)習(xí)課程中的所有理論知識(shí)點(diǎn),進(jìn)一步熟練面向?qū)ο蟪绦虻拈_發(fā)方法和流程,提高獨(dú)立分析問題和解決問題的能力。真正理解書本知識(shí),牢固掌握課堂教學(xué)內(nèi)容。二、設(shè)計(jì)任務(wù)設(shè)計(jì)一程序,實(shí)現(xiàn)對某班級學(xué)生成績的管理及獎(jiǎng)學(xué)金、三好生的評定工作。要求具備查詢和檢索等功能,并且能夠?qū)χ付ㄎ募M(jìn)行操作,也可以將多個(gè)文件組成一個(gè)文件。三、設(shè)計(jì)要求⒈應(yīng)嚴(yán)格按照開發(fā)小型項(xiàng)目的基本流程進(jìn)行設(shè)計(jì)。⒉成績管理程序至少應(yīng)具有以下功能:⑴輸入:學(xué)生的基本信息,包括學(xué)號(hào)、姓名、性別、籍貫、VC++成績、英語成績、高數(shù)成績等;⑵計(jì)算:每個(gè)學(xué)生的總成績、平均成績,所有學(xué)生單科的平均成績,找出總成績和單科成績最高的學(xué)生并輸出;⑶查詢:可以按學(xué)號(hào)、姓名等進(jìn)行成績查詢;⑷排序:可以按學(xué)號(hào)、姓名、VC++成績、英語成績、高數(shù)成績、總成績、平均成績等進(jìn)行排序并輸出;⑸刪除:刪除某條記錄;⑹按學(xué)分績點(diǎn)計(jì)算辦法計(jì)算出每個(gè)學(xué)生的學(xué)分績點(diǎn),并按從高到低的順序排列輸出。⑺按獎(jiǎng)學(xué)金評定辦法,從特等獎(jiǎng)開始,輸出獲得獎(jiǎng)學(xué)金的學(xué)生名單及該生的學(xué)習(xí)成績與學(xué)分績點(diǎn)。⑻按三好生評定辦法,輸出獲得三好生的學(xué)生名單。⑼定義類,用類和對象的知識(shí)進(jìn)行系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)。本課程設(shè)計(jì)由單人一組獨(dú)立完成,根據(jù)課程設(shè)計(jì)任務(wù)和設(shè)計(jì)要求,在教師的指導(dǎo)下,進(jìn)行資料的查閱,規(guī)范地進(jìn)行系統(tǒng)分析與系統(tǒng)設(shè)計(jì)工作。本課程設(shè)計(jì)是以學(xué)生自主設(shè)計(jì)為主的開放模式組織教學(xué)。設(shè)計(jì)完成后要求提交設(shè)計(jì)電子文檔的設(shè)計(jì)報(bào)告,并以“學(xué)號(hào)姓名.doc”文件命名,刻錄在同一張光盤上。四、設(shè)計(jì)思路1.定義一個(gè)student類,包含學(xué)生的基本信息:姓名,學(xué)號(hào),各科成績等。2.在類外構(gòu)造函數(shù),print函數(shù)輸出學(xué)生信息。3.count函數(shù)計(jì)算各學(xué)生的總成績以及平均成績,并輸出各科成績最高的學(xué)生。4.Search函數(shù)用來查詢學(xué)生的基本信息,可用學(xué)號(hào)或姓名進(jìn)行查詢。5.Low函數(shù)按學(xué)生的成績進(jìn)行從高到低排序。6.Score函數(shù)計(jì)算學(xué)生的學(xué)生績點(diǎn),判斷出各等獎(jiǎng)學(xué)金名額并輸出。7.Goodstudent函數(shù)是根據(jù)學(xué)分績點(diǎn)選出三好學(xué)生的名額。8.Deletenode函數(shù)根據(jù)學(xué)號(hào)或姓名刪除學(xué)生的信息。9.定義主函數(shù)進(jìn)行測試。五、主要算法設(shè)計(jì)過程描述1.其中的排序以及獎(jiǎng)學(xué)金的評定主要用了冒泡排序。2.用了switch()選擇語句,來解決輸入數(shù)字到達(dá)對應(yīng)功能。3.最高的成績主要用了max()的內(nèi)置函數(shù)。4.查詢主要用了指針?biāo)傅膬?nèi)容與輸入的內(nèi)容進(jìn)行比對5.主函數(shù)即為主界面,用了do-while進(jìn)行循環(huán)六、程序代碼#include<iostream.h>#include<string.h>#include<stdlib.h>#defineNULL0classstudent{public: longintnum;//學(xué)號(hào). charname[20];//姓名. charsex[20];//性別. charplace[20];//籍貫. floatc;//VC++成績. floaten;//英語成績. floatma;//高數(shù)成績. floatPE;//體育成績. student*next;//指向下一個(gè)結(jié)點(diǎn)的指針.};student*create(intn)//輸入函數(shù).{ student*p,*pend,*h=NULL; inti=0; if(n<1)returnNULL;cout<<"學(xué)號(hào)姓名性別籍貫VC++成績英語成績高數(shù)成績 體育成績"<<endl; while(i<n) { p=newstudent;cin>>p->num>>p->name>>p->sex>>p->place>>p->c>>p->en>>p->ma>>p->PE; p->next=NULL; if(h==NULL){h=p;pend=p;} else{pend->next=p;pend=p;} i++; } returnh;}voidprint(student*h){ student*p; p=h;cout<<"學(xué)號(hào)姓名性別籍貫vc++成績英語成績高數(shù)成績體育成績"<<endl; while(p!=0) { cout<<p->num<<'\t'<<p->name<<'\t'<<p->sex<<'\t'<<p->place<<'\t'<<p->c<<'\t'<<p->en<<'\t'<<p->ma<<'\t'<<p->PE<<endl;p=p->next; }}voidcount(student*h,intn)//計(jì)算成績函數(shù).{floatS[20],aver[20],aver1=0,aver2=0,aver3=0,MAX,max1,max2,max3;floats1[20],s2[20],s3[20];student*p;p=h;for(inti=0;i<n;i++) { S[i]=p->c+p->en+p->ma;aver[i]=S[i]/3;p=p->next;}for(p=h,i=0;i<n;i++) { aver1+=p->c;aver2+=p->en;aver3+=p->ma;p=p->next; }aver1=aver1/n;aver2=aver2/n;aver3=aver3/n;for(p=h,i=0;i<n;i++){s1[i]=p->c;s2[i]=p->c;s3[i]=p->ma;p=p->next;}MAX=0;max1=0;max2=0;max3=0;for(i=0;i<n;i++) { if(MAX<S[i])MAX=S[i];if(max1<s1[i])max1=s1[i];if(max2<s2[i])max2=s2[i];if(max3<s3[i])max3=s3[i]; }cout<<"總成績最高的學(xué)生:"<<'\n';for(p=h,i=0;i<n;i++) { if(MAX==S[i])cout<<p->num<<'\t'<<p->name<<'\t'<<MAX<<endl;p=p->next; }cout<<"VC++成績最高的學(xué)生:"<<'\n';for(p=h,i=0;i<n;i++){if(max1==s1[i])cout<<p->num<<'\t'<<p->name<<'\t'<<max1<<endl;p=p->next;}cout<<"英語成績最高的學(xué)生:"<<'\n';for(p=h,i=0;i<n;i++){if(max2==s2[i])cout<<p->num<<'\t'<<p->name<<'\t'<<max2<<endl;p=p->next;}cout<<"高數(shù)成績最高的學(xué)生:"<<'\n';for(p=h,i=0;i<n;i++){if(max3==s3[i])cout<<p->num<<'\t'<<p->name<<'\t'<<max3<<endl;p=p->next;}}voidsearch(student*h)//搜索函數(shù){ student*p; p=h; intr,t; charname[10]; cout<<"按學(xué)號(hào)查詢請輸入1,按姓名查詢請輸入2!"<<endl; cin>>r; switch(r) { case1: { cout<<"請輸入要查詢的學(xué)號(hào):"<<endl; cin>>t; while(p!=0) { if(p->num==t) {cout<<"學(xué)號(hào)姓名性別籍貫vc++成績英語成績高數(shù)成績體育成績"<<endl; cout<<p->num<<'\t'<<p->name<<'\t'<<p->sex<<'\t'<<p->place<<'\t'<<p->c<<'\t'<<p->en<<'\t'<<p->ma<<'\t'<<p->PE<<endl; break; } elsep=p->next; } }break; case2: { cout<<"請輸入要查詢的姓名:"<<endl; cin>>name; while(p!=0) { if(strcmp(name,p->name)==0) { cout<<"學(xué)號(hào)姓名性別籍貫vc++成績英語成績高數(shù)成績體育成績"<<endl; cout<<p->num<<'\t'<<p->name<<'\t'<<p->sex<<'\t'<<p->place<<'\t'<<p->c<<'\t'<<p->en<<'\t'<<p->ma<<'\t'<<p->PE<<endl; break; } elsep=p->next; } } }}voidLOW(student*h,inta,intn)//排序函數(shù).{ student*p,*p1,*p2; longintNUM; charNAME[20],SEX[20],PLACE[20];floatS[20],aver[20],CSCORE,CENGLISH,CMATH; p=h;for(inti=0;i<n;i++){ S[i]=p->c+p->en+p->ma;aver[i]=S[i]/3;p=p->next;}cout<<"請選擇排序方式!"<<endl; cout<<"按姓名排序請輸入1"<<endl; cout<<"按VC++成績排序請輸入2"<<endl; cout<<"按英語成績排序請輸入3"<<endl; cout<<"按高數(shù)成績排序請輸入4"<<endl; cout<<"按總成績排序請輸入5"<<endl; cout<<"按平均成績排序請輸入6"<<endl; cin>>a;switch(a){case1:if(h==0)cout<<"無結(jié)點(diǎn)"<<'\n'; else{ p1=h; while(p1->next!=0) for(i=0;i<n-1;i++) { p2=p1->next; { for(intj=i+1;j<n;j++) { if(strcmp(p1->name,p2->name)==1) { NUM=p1->num;p1->num=p2->num;p2->num=NUM;strcpy(NAME,p1->name);strcpy(p1->name,p2->name); strcpy(p2->name,NAME); strcpy(SEX,p1->sex);strcpy(p1->sex,p2->sex);strcpy(p2->sex,SEX); strcpy(PLACE,p1->place);strcpy(p1->place,p2->place);strcpy(p2->place,PLACE); CSCORE=p1->c;p1->c=p2->c;p2->c=CSCORE; CENGLISH=p1->en;p1->en=p2->en;p2->en=CENGLISH; CMATH=p1->ma;p1->ma=p2->ma;p2->ma=CMATH; }p2=p2->next; }p1=p1->next; } } }p=h; for(i=0;i<n;i++) { cout<<p->num<<'\t'<<p->name<<'\t'<<p->sex<<'\t'<<p->place<<'\t'<<p->c<<'\t'<<p->en<<'\t'<<p->ma<<'\n'; p=p->next; } cout<<endl;break;case2:if(h==0)cout<<"無結(jié)點(diǎn)"<<'\n'; else { p1=h; while(p1->next!=0) for(i=0;i<n-1;i++) { p2=p1->next; for(intj=i+1;j<n;j++) { if(p1->c>=p2->c) { NUM=p1->num;p1->num=p2->num;p2->num=NUM;strcpy(NAME,p1->name);strcpy(p1->name,p2->name); strcpy(p2->name,NAME);strcpy(SEX,p1->sex);strcpy(p1->sex,p2->sex);strcpy(p2->sex,SEX); strcpy(PLACE,p1->place);strcpy(p1->place,p2->place);strcpy(p2->place,PLACE); CSCORE=p1->c;p1->c=p2->c;p2->c=CSCORE;CENGLISH=p1->en;p1->en=p2->en;p2->en=CENGLISH; CMATH=p1->ma;p1->ma=p2->ma;p2->ma=CMATH; }p2=p2->next; } p1=p1->next; } } p=h; for(i=0;i<n;i++) { cout<<p->num<<'\t'<<p->name<<'\t'<<p->sex<<'\t'<<p->place<<'\t'<<p->c<<'\t'<<p->en<<'\t'<<p->ma<<'\n'; p=p->next; } cout<<endl;break;case3:if(h==0)cout<<"無結(jié)點(diǎn)"<<'\n'; else { p1=h; while(p1->next!=0) for(i=0;i<n-1;i++) { p2=p1->next; { for(intj=i+1;j<n;j++) { if(p1->en>=p2->en) { NUM=p1->num;p1->num=p2->num;p2->num=NUM; strcpy(NAME,p1->name);strcpy(p1->name,p2->name);strcpy(p2->name,NAME); strcpy(SEX,p1->sex);strcpy(p1->sex,p2->sex);strcpy(p2->sex,SEX); strcpy(PLACE,p1->place);strcpy(p1->place,p2->place);strcpy(p2->place,PLACE); CSCORE=p1->c;p1->c=p2->c;p2->c=CSCORE; CENGLISH=p1->en;p1->en=p2->en;p2->en=CENGLISH; CMATH=p1->ma;p1->ma=p2->ma;p2->ma=CMATH; } p2=p2->next; } p1=p1->next; } } } p=h; for(i=0;i<n;i++) { cout<<p->num<<'\t'<<p->name<<'\t'<<p->sex<<'\t'<<p->place<<'\t'<<p->c<<'\t'<<p->en<<'\t'<<p->ma<<'\n'; p=p->next; } cout<<endl;break;case4:if(h==0)cout<<"無結(jié)點(diǎn)"<<'\n'; else { p1=h; while(p1->next!=0) for(i=0;i<n-1;i++) { p2=p1->next; { for(intj=i+1;j<n;j++) { if(p1->c>=p2->c) { NUM=p1->num;p1->num=p2->num;p2->num=NUM; strcpy(NAME,p1->name);strcpy(p1->name,p2->name);strcpy(p2->name,NAME); strcpy(SEX,p1->sex);strcpy(p1->sex,p2->sex);strcpy(p2->sex,SEX); strcpy(PLACE,p1->place);strcpy(p1->place,p2->place);strcpy(p2->place,PLACE); CSCORE=p1->c;p1->c=p2->c;p2->c=CSCORE;CENGLISH=p1->en;p1->en=p2->en;p2->en=CENGLISH; CMATH=p1->ma;p1->ma=p2->ma;p2->ma=CMATH; }p2=p2->next; } p1=p1->next; } } } p=h; for(i=0;i<n;i++) { cout<<p->num<<'\t'<<p->name<<'\t'<<p->sex<<'\t'<<p->place<<'\t'<<p->c<<'\t'<<p->en<<'\t'<<p->ma<<'\n'; p=p->next; } cout<<endl;break;case5:if(h==0)cout<<"無結(jié)點(diǎn)"<<'\n'; else { p1=h; while(p1->next!=0) for(i=0;i<n-1;i++) { p2=p1->next; { for(intj=i+1;j<n;j++) { if(S[i]>=S[j]) { NUM=p1->num;p1->num=p2->num;p2->num=NUM; strcpy(NAME,p1->name);strcpy(p1->name,p2->name);strcpy(p2->name,NAME); strcpy(SEX,p1->sex);strcpy(p1->sex,p2->sex);strcpy(p2->sex,SEX); strcpy(PLACE,p1->place);strcpy(p1->place,p2->place);strcpy(p2->place,PLACE); CSCORE=p1->c;p1->c=p2->c;p2->c=CSCORE; CENGLISH=p1->en;p1->en=p2->en;p2->en=CENGLISH; CMATH=p1->ma;p1->ma=p2->ma;p2->ma=CMATH; } p2=p2->next; } p1=p1->next; } } } p=h; for(i=0;i<n;i++) { cout<<p->num<<'\t'<<p->name<<'\t'<<p->sex<<'\t'<<p->place<<'\t'<<p->c<<'\t'<<p->en<<'\t'<<p->ma<<'\n'; p=p->next; } cout<<endl;break;case6:if(h==0)cout<<"無結(jié)點(diǎn)"<<'\n'; else { p1=h; while(p1->next!=0) for(i=0;i<n-1;i++) { p2=p1->next; { for(intj=i+1;j<n;j++) { if(aver[i]>=aver[j]) { NUM=p1->num;p1->num=p2->num;p2->num=NUM; strcpy(NAME,p1->name);strcpy(p1->name,p2->name);strcpy(p2->name,NAME); strcpy(SEX,p1->sex);strcpy(p1->sex,p2->sex);strcpy(p2->sex,SEX); strcpy(PLACE,p1->place);strcpy(p1->place,p2->place);strcpy(p2->place,PLACE); CSCORE=p1->c;p1->c=p2->c;p2->c=CSCORE; CENGLISH=p1->en;p1->en=p2->en;p2->en=CENGLISH; CMATH=p1->ma;p1->ma=p2->ma;p2->ma=CMATH; }p2=p2->next; } p1=p1->next; } } } p=h; for(i=0;i<n;i++) { cout<<p->num<<'\t'<<p->name<<'\t'<<p->sex<<'\t'<<p->place<<'\t'<<p->c<<'\t'<<p->en<<'\t'<<p->ma<<'\n'; p=p->next; } cout<<endl;break;default:cout<<"無可排序的依據(jù)!"<<endl;}}voiddeletenode(student*h,intdata)//刪除學(xué)生信息函數(shù).{ student*p1,*p2; intb; cout<<"如果要?jiǎng)h除學(xué)生的信息請輸入1!"<<'\n'<<"如果不需要?jiǎng)h除學(xué)生的信息請輸入2!"<<endl;cin>>b; switch(b) { case1: cout<<"輸入要?jiǎng)h除信息學(xué)生的學(xué)號(hào):"<<endl; cin>>data; if(h==NULL)cout<<"無學(xué)生信息不能刪除!"; if(h->num==data) { p2=h;h=h->next; deletep2;cout<<"成功刪除學(xué)生的信息!"<<endl; } else { p2=p1=h; while(p2->num!=data&&p2->next!=NULL) { p1=p2;p2=p2->next; } if(p2->num==data) { p1->next=p2->next;deletep2;cout<<"成功刪除學(xué)號(hào)為"<<data<<"學(xué)生的信息"<<endl; } elsecout<<"沒有找到要?jiǎng)h除的信息"; } case2: break; }}voidscore(student*h,intn)//學(xué)分積點(diǎn)計(jì)算及獎(jiǎng)學(xué)金評定函數(shù).{ student*p;charname[20][20],sex[20][20],place[20][20],b[20],c[20],d[20]; doubles[20],num[20],cscore[20],cenglish[20],cmath[20],S,a,e,f,g;p=h;for(inti=0;i<n;i++) { s[i]=((p->c*4.5+p->en*4+p->ma*5.5)/14-50)/10;num[i]=p->num;strcpy(name[i],p->name); strcpy(sex[i],p->sex);strcpy(place[i],p->place); cscore[i]=p->c;cscore[i]=p->c;cmath[i]=p->ma; p=p->next; }for(i=0;i<n-1;i++) { for(intj=i+1;j<n;j++) { if(s[i]<=s[j]) { S=s[i];s[i]=s[j];s[j]=S; a=num[i];num[i]=num[j];num[j]=a;strcpy(b,name[i]); strcpy(name[i],name[j]);strcpy(name[j],b);strcpy(c,sex[i]); strcpy(sex[i],sex[j]);strcpy(sex[j],c);strcpy(d,place[i]); strcpy(place[i],place[j]);strcpy(place[j],d);e=cscore[i]; cscore[i]=cscore[j];cscore[j]=e;f=cenglish[i];cenglish[i]=cenglish[j]; cenglish[j]=f;g=cmath[i];cmath[i]=cmath[j];cmath[j]=g; } } } for(i=0;i<n;i++)cout<<num[i]<<'\t'<<name[i]<<'\t'<<s[i]<<'\n';cout<<"特等獎(jiǎng)學(xué)金名單:"<<'\n';for(i=0;i<n;i++) { if(s[i]>=4.0) cout<<name[i]<<'\n'; }cout<<"一等獎(jiǎng)學(xué)金名單:"<<'\n';for(i=0;i<n;i++) { if(s[i]>=3.6&&s[i]<4.0) cout<<name[i]<<'\n'; }cout<<"二等獎(jiǎng)學(xué)金名單:"<<'\n';for(i=0;i<n;i++) { if(s[i]>=3.2&&s[i]<3.6) cout<<name[i]<<'\n'; }cout<<"三等獎(jiǎng)學(xué)金名單:"<<'\n';for(i=0;i<n;i++) { if(s[i]>=2.8&&s[i]<3.2) cout<<name[i]<<'\n'; }}voidgoodstudent(student*h,intn)//三好學(xué)生評定函數(shù).{doubles[20];charNAME[20][20];longintNUM[20];student*p;p=h;for(inti=0;i<n;i++) { s[i]=((p->c*4.5+p->en*4+p->ma*5.5)/14-50)/10; strcpy(NAME[i],p->name);NUM[i]=p->num; p=p->next; }cout<<"三好學(xué)生的名單:"<<'\n';for(i=0;i<n;i++)if(s[i]>=3.0||s[i]>3.5&&((p->c-50)/10)>=1.0&&((p->c-50)/10)<=2.

溫馨提示

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

最新文檔

評論

0/150

提交評論