C學(xué)生成績(jī)統(tǒng)計(jì)管理系統(tǒng)_第1頁(yè)
C學(xué)生成績(jī)統(tǒng)計(jì)管理系統(tǒng)_第2頁(yè)
C學(xué)生成績(jī)統(tǒng)計(jì)管理系統(tǒng)_第3頁(yè)
C學(xué)生成績(jī)統(tǒng)計(jì)管理系統(tǒng)_第4頁(yè)
C學(xué)生成績(jī)統(tǒng)計(jì)管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩8頁(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、課程設(shè)計(jì)報(bào)告課程名稱:計(jì)算機(jī)高級(jí)語(yǔ)言(C+)課程設(shè)計(jì)課程設(shè)計(jì)題目:學(xué)生通訊管理系統(tǒng)系:數(shù)學(xué)與計(jì)算科學(xué)系專 業(yè):信息與計(jì)算科學(xué)年級(jí)、班:信計(jì)0801姓 名:譚鄱侖學(xué) 號(hào):200905002109指導(dǎo)教師:牛志毅職 稱:講師2010年12月目錄課程實(shí)驗(yàn)報(bào)告-3一、需求分析-3二、概要設(shè)計(jì)-3三、程序?qū)崿F(xiàn)思路-7四、設(shè)計(jì)總結(jié)-7五、參考文獻(xiàn)-7六、源代碼-8七、運(yùn)行情況16C+語(yǔ)言程序設(shè)計(jì)報(bào)告一、 需求分析用C+編寫(xiě)下面程序?qū)W生成績(jī)統(tǒng)計(jì)管理系統(tǒng)(*)要求實(shí)現(xiàn)如下功能:成績(jī)的輸入(學(xué)號(hào)、姓名、英語(yǔ)、數(shù)學(xué)、C+語(yǔ)言)。成績(jī)統(tǒng)計(jì)(各科平均成績(jī)、各科成績(jī)“優(yōu)秀”、“良好”、“中等”、“及格”、“不及格”的人

2、數(shù)及其所占比例)??偝煽?jī)統(tǒng)計(jì)(學(xué)生的總成績(jī)、平均成績(jī)及成績(jī)排名)。成績(jī)的統(tǒng)計(jì)結(jié)果顯示。學(xué)生數(shù)據(jù)的添加、修改、與刪除。學(xué)生數(shù)據(jù)的讀取與存儲(chǔ)。二、 概要設(shè)計(jì)主要數(shù)據(jù)定義以及各程序模塊的功能:Student類中:class Studentprivate: int id;/學(xué)號(hào) string name;/姓名 double score3; int x;/指示是否存儲(chǔ)了數(shù)據(jù) double all;/總成績(jī) int rank;/名次 string dengji;/等級(jí)public: Student();/構(gòu)造函數(shù) void SetStudentID(int);/輸入學(xué)生學(xué)號(hào) int StudentID()

3、;/返回學(xué)生學(xué)號(hào) void SetStudentName(string str);/輸入學(xué)生姓名 string StudentName();/返回學(xué)生姓名 void SetStudentScore(double y,double s,double c);/輸入學(xué)生成績(jī) double StudentYscore();/返回學(xué)生英語(yǔ)成績(jī) double StudentSscore();/返回學(xué)生數(shù)序成績(jī) double StudentCscore();/返回學(xué)生C+成績(jī) void SetStudentX(int n);/給判定學(xué)生數(shù)據(jù)存在與否的X賦值 void Getall();/計(jì)算學(xué)生總成績(jī) vo

4、id SetRank();/給學(xué)生名次值加1 int Rank();/返回學(xué)生名次值 int StudentX();/返回判定X的值,判定是否修改 void RankClear();/給學(xué)生的名次賦值為1 void Setdengji(string dengji);/輸入等級(jí) double All();/返回學(xué)生總成績(jī) string StudentDengji();/返回學(xué)生等級(jí)值;Studentifo類中:class Studentifoprivate: int num;/學(xué)生個(gè)數(shù) Student *stu;/定義指向存儲(chǔ)學(xué)生類的指針public: Studentifo(int n);/構(gòu)造

5、函數(shù) void LoadID(int n);/輸入學(xué)生學(xué)號(hào) void LoadName(int ,string name);/輸入學(xué)生姓名 void LoadScore(int ,double,double,double);/輸入學(xué)生各科成績(jī) void Setifo();/插入學(xué)生數(shù)據(jù) void Putifo();/輸出所有學(xué)生數(shù)據(jù) void Clear();/清除所有學(xué)生數(shù)據(jù) void PutID();/輸出指定學(xué)生數(shù)據(jù) void ClearID();/刪除指定學(xué)生數(shù)據(jù) void MakeRank();/給所有學(xué)生排名 void ReSetifo();/修改指定學(xué)生數(shù)據(jù) void Clear

6、Rank();/給指定學(xué)生的名次值賦為1 void MakeAll();/計(jì)算各個(gè)學(xué)生的總成績(jī) void PutifoRank();/按名次輸出所有學(xué)生數(shù)據(jù) int ID(int n);/返回學(xué)生學(xué)號(hào) double Yscore(int);/返回學(xué)生英語(yǔ)成績(jī) double Sscore(int);/返回學(xué)生數(shù)學(xué)成績(jī) double Cscore(int);/返回學(xué)生C+成績(jī) double StudentAll(int n);/返回學(xué)生總成績(jī) int StudentRank(int n);/返回學(xué)生名次 string Name(int);/返回學(xué)生名次 int X(int);/指定X值,確定是否有

7、存儲(chǔ)數(shù)據(jù) string Dengji(int n);/返回學(xué)生等級(jí) void Numadd();/num值加1 void Xfix(int);/將指定學(xué)生的X指示值賦為1Studentifo();/析構(gòu)函數(shù)釋放new創(chuàng)建的空間;類外:void DoMenu(int n,Studentifo*t);/將類里的各個(gè)函數(shù)組合起來(lái)實(shí)現(xiàn)各個(gè)功能,按指定數(shù)字執(zhí)行void Load(Studentifo *S);/從文件中載入學(xué)生信息void Save(Studentifo *S);/將學(xué)生信息保存到文件void ShowTip(); /顯示操作提示void ShowMenu(); /顯示菜單主函數(shù)的程序流

8、程圖開(kāi)始輸出菜單及提示信息輸入功能數(shù)字1N 2YN 3清除學(xué)生數(shù)據(jù)YN 4插入學(xué)生數(shù)據(jù)NNYY 5刪除指定學(xué)生數(shù)據(jù) 6N7YY 超找指定學(xué)生數(shù)據(jù)修改指定學(xué)生數(shù)據(jù)按名次輸出學(xué)生信息 8N9輸出所有學(xué)生綜合信息載入數(shù)據(jù)10退出保存結(jié)束三 程序?qū)崿F(xiàn)思路本程序通過(guò)Studentifo類開(kāi)辟一個(gè)Student的類數(shù)組用已儲(chǔ)存學(xué)生數(shù)據(jù)。通過(guò)Studentifo類的公有函數(shù)和Student的公有函數(shù)進(jìn)行關(guān)聯(lián),對(duì)Student類里的私有學(xué)生數(shù)據(jù)進(jìn)行操作,達(dá)到輸入,處理,輸出學(xué)生數(shù)據(jù)的功能。同時(shí)利用文件輸入輸出流在項(xiàng)目文件夾中創(chuàng)建一個(gè)date.txt文檔進(jìn)行學(xué)生數(shù)據(jù)的保存與讀取。四 設(shè)計(jì)總結(jié)(1)擺正心態(tài),不心

9、浮氣躁 剛拿到題目,難免會(huì)覺(jué)得特別迷茫,無(wú)從下手,這時(shí)如果心浮氣躁則會(huì)更加的覺(jué)得困難重重。但當(dāng)我擺正心態(tài),靜小心來(lái)慢慢思考的時(shí)候,一個(gè)個(gè)的思路不斷的的冒出,頭腦中的想法遠(yuǎn)比實(shí)踐過(guò)的多。此時(shí),困難已不是從何下手,而是如何下手會(huì)是程序更趨完美。(2)一鼓作氣,個(gè)個(gè)擊破一旦開(kāi)始了編程后,就要一鼓作氣的繼續(xù)下去。選擇個(gè)個(gè)擊破,然后將所有的程序在組合起來(lái),很快主程序的雛形就能展現(xiàn)出來(lái),接下來(lái)的就只是一點(diǎn)點(diǎn)的修改關(guān)聯(lián)是的小錯(cuò)誤了。用不了多久任務(wù)即可完成,特有成就感。但是如果斷斷續(xù)續(xù)的則會(huì)在每次編的時(shí)候被冗雜而繁多的定義弄糊涂,從而沒(méi)有心情繼續(xù)下去。(3)有目的地修改、完善運(yùn)行時(shí)會(huì)出現(xiàn)一些錯(cuò)誤,但我發(fā)現(xiàn)其實(shí)

10、里面的參數(shù)并不復(fù)雜,只要跟著那個(gè)error的提示,一個(gè)一個(gè)的改下去,其實(shí)很簡(jiǎn)單的。結(jié)果事實(shí)也是如此,看完書(shū)后,只用了一個(gè)小時(shí)多一點(diǎn),102個(gè)錯(cuò)誤全部搞定了。錯(cuò)誤幾乎為以下三類:1. 冒號(hào),分號(hào)等符號(hào)打錯(cuò)了;2. 大小寫(xiě)等造成的對(duì)應(yīng)問(wèn)題;3. 變量的不完全修改。改完以后,在執(zhí)行時(shí)我發(fā)現(xiàn)界面不好看,于是我又將主界面略加修改了些。看上去美觀了不少。再運(yùn)行功能,前四個(gè)都能順利運(yùn)行,但對(duì)百分比餅狀圖我傻眼了。不管我輸入數(shù)據(jù)與否,輸入了什么數(shù)據(jù),結(jié)果都是一樣的,相當(dāng)離譜。我又糊涂了,搞不清是怎么回事。于是,又去問(wèn)同學(xué),在他們的幫助下,成功解決這個(gè)問(wèn)題,在此真要好好謝謝他們!終于大功告成!欣慰在這次實(shí)踐中,

11、我不僅彌補(bǔ)了自己在C+課上所落下的內(nèi)容,尤其是指針那塊部分,雖然現(xiàn)在概念搞的還不是很懂,但看見(jiàn)程序是能夠理解的。這次C+實(shí)踐是給我們這一學(xué)期來(lái)所學(xué)知識(shí)的一個(gè)總復(fù)習(xí),總的實(shí)踐。它讓我們把所知道的知識(shí)點(diǎn)運(yùn)用的更好,把不知道的知識(shí)點(diǎn)搞得明白了。實(shí)踐出真知,通過(guò)這次實(shí)踐,我也系統(tǒng)的把課本好好的回顧了下。猛然覺(jué)得,C+二級(jí)考試也有些把握了。五 參考文獻(xiàn)譚浩強(qiáng). C+程序設(shè)計(jì). 清華大學(xué)出版社, 六 源程序/* 課程設(shè)計(jì)題目:學(xué)生信息管理系統(tǒng) 班級(jí):0901 學(xué)號(hào):200905002109 姓名:譚鄱侖 */#include"student.h"int main() int i=0;

12、char ok; Studentifo stuifo; Studentifo *ifo=&stuifo; ShowMenu(); cout<<"選擇對(duì)應(yīng)數(shù)字進(jìn)行操作:" while(i!=9) cin>>i; system("cls"); ShowMenu(); DoMenu(i,ifo); ShowTip(); if(flag) cout<<"數(shù)據(jù)已改動(dòng),是否保存Y/N" cin>>ok; if(ok='Y'|ok='y') ifo->Ma

13、keAll(); ifo->ClearRank(); ifo->MakeRank(); Save(ifo); cout<<"數(shù)據(jù)已保存.按任意鍵安全退出" else cout<<"已安全退出.按任意鍵返回"#ifndef STUDENT_H_INCLUDED#define STUDENT_H_INCLUDED#include<iostream>#include<cstdlib>#include<string>#include<fstream>#include<sst

14、ream>#include<iomanip>using namespace std;class Studentprivate: int id;/學(xué)號(hào) string name;/姓名 double score3; int x;/指示是否存儲(chǔ)了數(shù)據(jù) double all;/總成績(jī) int rank;/名次 string dengji;/等級(jí)public: Student();/構(gòu)造函數(shù) void SetStudentID(int);/輸入學(xué)生學(xué)號(hào) int StudentID();/返回學(xué)生學(xué)號(hào) void SetStudentName(string str);/輸入學(xué)生姓名 str

15、ing StudentName();/返回學(xué)生姓名 void SetStudentScore(double y,double s,double c);/輸入學(xué)生成績(jī) double StudentYscore();/返回學(xué)生英語(yǔ)成績(jī) double StudentSscore();/返回學(xué)生數(shù)序成績(jī) double StudentCscore();/返回學(xué)生C+成績(jī) void SetStudentX(int n);/給判定學(xué)生數(shù)據(jù)存在與否的X賦值 void Getall();/計(jì)算學(xué)生總成績(jī) void SetRank();/給學(xué)生名次值加1 int Rank();/返回學(xué)生名次值 int Stude

16、ntX();/返回判定X的值,判定是否修改 void RankClear();/給學(xué)生的名次賦值為1 void Setdengji(string dengji);/輸入等級(jí) double All();/返回學(xué)生總成績(jī) string StudentDengji();/返回學(xué)生等級(jí)值;class Studentifoprivate: int num;/學(xué)生個(gè)數(shù) Student *stu;/定義指向存儲(chǔ)學(xué)生類的指針public: Studentifo(int n);/構(gòu)造函數(shù) void LoadID(int n);/輸入學(xué)生學(xué)號(hào) void LoadName(int ,string name);/輸入

17、學(xué)生姓名 void LoadScore(int ,double,double,double);/輸入學(xué)生各科成績(jī) void Setifo();/插入學(xué)生數(shù)據(jù) void Putifo();/輸出所有學(xué)生數(shù)據(jù) void Clear();/清除所有學(xué)生數(shù)據(jù) void PutID();/輸出指定學(xué)生數(shù)據(jù) void ClearID();/刪除指定學(xué)生數(shù)據(jù) void MakeRank();/給所有學(xué)生排名 void ReSetifo();/修改指定學(xué)生數(shù)據(jù) void ClearRank();/給指定學(xué)生的名次值賦為1 void MakeAll();/計(jì)算各個(gè)學(xué)生的總成績(jī) void PutifoRank()

18、;/按名次輸出所有學(xué)生數(shù)據(jù) int ID(int n);/返回學(xué)生學(xué)號(hào) double Yscore(int);/返回學(xué)生英語(yǔ)成績(jī) double Sscore(int);/返回學(xué)生數(shù)學(xué)成績(jī) double Cscore(int);/返回學(xué)生C+成績(jī) double StudentAll(int n);/返回學(xué)生總成績(jī) int StudentRank(int n);/返回學(xué)生名次 string Name(int);/返回學(xué)生名次 int X(int);/指定X值,確定是否有存儲(chǔ)數(shù)據(jù) string Dengji(int n);/返回學(xué)生等級(jí) void Numadd();/num值加1 void Xfix

19、(int);/將指定學(xué)生的X指示值賦為1 Studentifo();/析構(gòu)函數(shù)釋放new創(chuàng)建的空間;void DoMenu(int n,Studentifo*t);/將類里的各個(gè)函數(shù)組合起來(lái)實(shí)現(xiàn)各個(gè)功能,按指定數(shù)字執(zhí)行void Load(Studentifo *S);/從文件中載入學(xué)生信息void Save(Studentifo *S);/將學(xué)生信息保存到文件void ShowTip(); /顯示操作提示void ShowMenu(); /顯示菜單#include"studentifo.h"#endif / STUDENT_H_INCLUDED#ifndef STUDENT

20、IFO_H_INCLUDED#define STUDENTIFO_H_INCLUDEDbool flag=false ;/數(shù)據(jù)是否修改過(guò)的標(biāo)志Student:Student() id=0; name="" score0=0; score1=0; score2=0; x=2; all=0; rank=1; dengji=""void Student:SetStudentID(int n) id=n;void Student:SetStudentName(string str) if(str="0") string str1; cout&

21、lt;<"輸入姓名:" cin>>str1; this->name=str1; else this->name=str;void Student:SetStudentScore(double y,double s,double c) if(y!=0|s!=0|c!=0) score0=y; score1=s; score2=c; else double a,b,c; cout<<"輸入英語(yǔ)成績(jī):" cin>>a; cout<<"輸入數(shù)學(xué)成績(jī):" cin>>b

22、; cout<<"輸入C+成績(jī):" cin>>c; score0=a; score1=b; score2=c; int Student:StudentID() return id;string Student:StudentName() return name;double Student:StudentYscore() return score0;double Student:StudentSscore() return score1;double Student:StudentCscore() return score2;void Student

23、:SetStudentX(int n) x=n;int Student:StudentX() return x;void Student:Getall() this->all=0; this->all=score0+score1+score2; double n; n=all/3; if(0<=n&&n<60) this->dengji="不及格" else if(60<=n&&n<70) this->dengji="及格" else if(70<=n&&

24、;n<80) this->dengji="中等" else if(80<=n&&n<90) this->dengji="良好" else this->dengji="優(yōu)秀"double Student:All() return all;void Student:SetRank() rank+=1;int Student:Rank() return rank;void Student:RankClear() rank=1;void Student:Setdengji(string de

25、ngji) this->dengji=dengji;string Student:StudentDengji() return dengji;Studentifo:Studentifo(int n=100) num=0; stu=new Studentn;Studentifo:Studentifo() delete stu;void Studentifo:Numadd() num+=1;void Studentifo:LoadID(int n) stun.SetStudentID(n);void Studentifo:LoadName(int n,string name) stun.Se

26、tStudentName(name);void Studentifo:LoadScore(int n,double y,double s,double c) stun.SetStudentScore(y,s,c);void Studentifo:Setifo() int n; cout<<"輸入學(xué)號(hào):" cin>>n; if(stun.StudentX()=1|n<=0) cout<<"該學(xué)號(hào)已有或者學(xué)號(hào)信息錯(cuò)誤"<<endl; else stun.SetStudentID(n); stun.SetS

27、tudentName("0"); stun.SetStudentScore(0,0,0); stun.SetStudentX(1); num+; cout<<endl; void Studentifo:Putifo() int i,s1=0,y1=0,c1=0,y2=0,s2=0,c2=0,y3=0,s3=0,c3=0,y4=0,s4=0,c4=0,y5=0,s5=0,c5=0; double Y=0,S=0,C=0; if(num=0) cout<<"沒(méi)有學(xué)生數(shù)據(jù)"<<endl; else cout<<&

28、quot; |*學(xué)生綜合信息*|"<<endl; cout<<" | 學(xué)號(hào)"<<"t"<<"姓名"<<"t"<<"英語(yǔ)"<<"t"<<"數(shù)學(xué)"<<"t"<<"C+"<<"t"<<"總成績(jī)"<<"t&quo

29、t;<<"名次"<<"t"<<"等級(jí) |"<<endl; cout<<" |*|"<<endl; for(i=1; i<=100; i+) if(stui.StudentX()=1) Y+=stui.StudentYscore(); S+=stui.StudentSscore(); C+=stui.StudentCscore(); cout<<" | "<<stui.StudentID()<

30、;<'t' cout<<stui.StudentName()<<'t' cout<<stui.StudentYscore()<<'t' cout<<stui.StudentSscore()<<'t' cout<<stui.StudentCscore()<<'t' stui.Getall(); cout<<stui.All()<<'t' cout<<stui.Ran

31、k()<<'t' cout<<stui.StudentDengji(); cout<<"t|"<<endl; cout<<" |*|"<<endl; if(stui.StudentX()=1) if(stui.StudentYscore()>=0&&stui.StudentYscore()<60) y1+; else if(stui.StudentYscore()>=60&&stui.StudentYscore()&l

32、t;70) y2+; else if(stui.StudentYscore()>=70&&stui.StudentYscore()<80) y3+; else if (stui.StudentYscore()>=80&&stui.StudentYscore()<90) y4+; else y5+; if(stui.StudentSscore()>=0&&stui.StudentSscore()<60) s1+; else if(stui.StudentSscore()>=60&&stui.

33、StudentSscore()<70) s2+; else if(stui.StudentSscore()>=70&&stui.StudentSscore()<80) s3+; else if (stui.StudentSscore()>=80&&stui.StudentSscore()<90) s4+; else s5+; if(stui.StudentCscore()>=0&&stui.StudentCscore()<60) c1+; else if(stui.StudentCscore()>=

34、60&&stui.StudentCscore()<70) c2+; else if(stui.StudentCscore()>=70&&stui.StudentCscore()<80) c3+; else if (stui.StudentCscore()>=80&&stui.StudentCscore()<90) c4+; else c5+; cout<<" _"<<endl; cout<<" |*各科成績(jī)信息*|"<<endl;

35、 cout<<"t |t"<<"t"<<"英語(yǔ)"<<"tt"<<"數(shù)學(xué)"<<"tt"<<"C+t |"<<endl; cout<<"t |平均成績(jī)t"<<Y/num<<"tt"<<S/num<<"tt"<<C/num<<

36、"t |"<<endl; cout<<"t |不及格t"<<100*double(y1)/num<<"%"<<"tt"<<100*double(s1)/num<<"%"<<"tt"<<100*double(c1)/num<<"%"<<"t |"<<endl; cout<<"

37、t |及格t"<<setprecision(4)<<100*double(y2)/num<<"%"<<"tt"<<setprecision(4)<<100*double(s2)/num<<"%"<<"tt"<<setprecision(4)<<100*double(c2)/num<<"%"<<"t |"<<end

38、l; cout<<"t |中等t"<<setprecision(4)<<100*double(y3)/num<<"%"<<"tt"<<setprecision(4)<<100*double(s3)/num<<"%"<<"tt"<<setprecision(4)<<100*double(c3)/num<<"%"<<"

39、;t |"<<endl; cout<<"t |良好t"<<setprecision(4)<<100*double(y4)/num<<"%"<<"tt"<<setprecision(4)<<100*double(s4)/num<<"%"<<"tt"<<setprecision(4)<<100*double(c4)/num<<"%"<<"t |"<<endl; cout<<"t

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論