C++課程設(shè)計(jì)-學(xué)生成績管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)1_第1頁
C++課程設(shè)計(jì)-學(xué)生成績管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)1_第2頁
C++課程設(shè)計(jì)-學(xué)生成績管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)1_第3頁
C++課程設(shè)計(jì)-學(xué)生成績管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)1_第4頁
C++課程設(shè)計(jì)-學(xué)生成績管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)1_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

高級程序設(shè)計(jì)語言課程設(shè)計(jì)成果報(bào)告學(xué)生成績管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)學(xué)生學(xué)號(hào): 學(xué)生姓名: 學(xué) 院: 計(jì)算機(jī)學(xué)院 專業(yè)班級: 軟件工程1341班 專業(yè)課程: 高級程序設(shè)計(jì)語言 指導(dǎo)教師: 2014 年 6 月 27 日題 目學(xué)生成績管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)考核項(xiàng)目考核內(nèi)容得分平時(shí)考核(30分)出勤情況、態(tài)度、效率;知識(shí)掌握情況、基本操作技能、知識(shí)應(yīng)用能力、獲取知識(shí)能力系統(tǒng)設(shè)計(jì)(20分)分析系統(tǒng)的功能模塊編程調(diào)試(20分)實(shí)現(xiàn)系統(tǒng)的各個(gè)功能模塊,并完成調(diào)試回答問題(15分)回答老師針對課程設(shè)計(jì)提出的問題課程設(shè)計(jì)報(bào)告撰寫(10分)嚴(yán)格按照規(guī)范要求完成課程設(shè)計(jì)報(bào)告源代碼(5分)按照規(guī)范要求完成課程設(shè)計(jì)源代碼的排版總 評 成 績指導(dǎo)教師評語: 日期: 年 月 日目 錄第1章 系統(tǒng)設(shè)計(jì)目的11.1 課程設(shè)計(jì)目的11.2 系統(tǒng)設(shè)計(jì)內(nèi)容11.3 程序設(shè)計(jì)思路2第2章 系統(tǒng)實(shí)現(xiàn)思路32.1 對系統(tǒng)需求的分析32.2 系統(tǒng)的功能分析32.3 系統(tǒng)的功能模塊32.4 模塊框架圖8第3章 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)53.1 主函數(shù)的設(shè)計(jì)53.2保存數(shù)據(jù)功能的設(shè)計(jì)63.3 通過定義類來定義數(shù)據(jù)錄入的函數(shù)83.4 數(shù)據(jù)的錄入123.5 增加修改刪除學(xué)生數(shù)據(jù)133.6查詢學(xué)生成績153.7統(tǒng)計(jì)每個(gè)學(xué)生的平均成績173.8輸出所有學(xué)生數(shù)據(jù)173.9統(tǒng)計(jì)各學(xué)科不及格人數(shù)183.10按總分排名193.11退出程序20課程設(shè)計(jì)體會(huì)21參考文獻(xiàn)22第1章 系統(tǒng)設(shè)計(jì)目的1.1 課程設(shè)計(jì)目的通過本課程設(shè)計(jì)的實(shí)踐,總結(jié)了解C+課程學(xué)習(xí)中的的數(shù)據(jù)類型、數(shù)據(jù)結(jié)構(gòu)、數(shù)組、函數(shù)、指針、結(jié)構(gòu)體等基本概念,掌握其應(yīng)用范圍及使用方法。掌握面向?qū)ο蟪绦蛟O(shè)計(jì)中有關(guān)類、對象、繼承與派生、重載、多態(tài)性與虛函數(shù)、輸入輸出流類體系、文件操作的基本概念,掌握基類派生類的關(guān)系,了解它們的調(diào)用范圍,初步學(xué)會(huì)用類與對象這種面向?qū)ο蟮某绦蛟O(shè)計(jì)方法編寫簡單的應(yīng)用程序。培養(yǎng)使用面向?qū)ο蟮某绦蛟O(shè)計(jì)方法編寫計(jì)算機(jī)程序的能力。本次實(shí)踐通過設(shè)計(jì)一個(gè)學(xué)生成績管理系統(tǒng),根據(jù)高級程序設(shè)計(jì)語言課程所學(xué)的概念、理論與方法,按照C+程序設(shè)計(jì)的基本步驟,設(shè)計(jì)出一個(gè)適當(dāng)規(guī)模的程序來實(shí)現(xiàn)設(shè)計(jì)課程內(nèi)容中的全部功能。進(jìn)一步熟悉C+中類的概念、類的封裝的實(shí)現(xiàn)方式,對類和對象進(jìn)一步討論。了解系統(tǒng)開發(fā)的需求分析、類層次設(shè)計(jì)、模塊分解、編碼測試、模塊組裝與整體調(diào)試的全過程,加深對C+的理解與VisualC+環(huán)境的使用;自己根據(jù)能力及需要添加相應(yīng)功能模塊,增強(qiáng)模擬系統(tǒng)功能;逐步熟悉程序設(shè)計(jì)的方法,并養(yǎng)成良好的編程習(xí)慣。程序設(shè)計(jì)是一門實(shí)踐性很強(qiáng)的課程,必須十分重視實(shí)踐環(huán)節(jié)。認(rèn)識(shí)是從實(shí)踐開始的,我們要增強(qiáng)自己的實(shí)踐意識(shí),在實(shí)踐中進(jìn)一步鞏固,每一次實(shí)踐都是一次增長。1.2 系統(tǒng)設(shè)計(jì)內(nèi)容運(yùn)用c+語言面向?qū)ο蟮木幊趟枷胪瓿上旅娴脑O(shè)計(jì)任務(wù):(1)設(shè)計(jì)四個(gè)類,包括學(xué)生類(描述學(xué)生基本信息);成績類:班級類;課程類(描述課程信息:課程編號(hào),科目名稱,如高等數(shù)學(xué),大學(xué)英語等);(2)學(xué)生成績及課程信息用文件保存,程序執(zhí)行時(shí)從文件讀入;(3)能按學(xué)期,按班級完成對學(xué)生成績的錄入、修改,能按班級統(tǒng)計(jì)學(xué)生的成績;(4)求學(xué)生的總分及平均分,并能根據(jù)學(xué)生的平均成績進(jìn)行排序,能查詢學(xué)生成績,不及格科目及學(xué)生名單;能按班級輸出學(xué)生的成績單。 設(shè)置學(xué)生的成績信息:學(xué)生學(xué)號(hào)、姓名、所選課程名稱、平時(shí)成績、期末成績、平時(shí)成績所占百分比 計(jì)算學(xué)生總評成績:總評成績=平時(shí)成績*平時(shí)成績所占百分比+期末成績*(1-平時(shí)成績所占百分比) 顯示學(xué)生的姓名、所選課程名稱以及平時(shí)成績、期末成績和總評成績信息。分單人顯示和以班輸出(班成績單格式輸出到文件) 注意,至少應(yīng)包含一個(gè)班、30人、三門課 1.3 程序設(shè)計(jì)思路根據(jù)高級程序設(shè)計(jì)語言課程所學(xué)的概念、理論與方法,按照C+程序設(shè)計(jì)的基本步驟,設(shè)計(jì)出一個(gè)適當(dāng)規(guī)模的程序來實(shí)現(xiàn)設(shè)計(jì)課程內(nèi)容中的全部功能。 此學(xué)生成績管理系統(tǒng)通過調(diào)用各個(gè)函數(shù),完成對基本信息的設(shè)計(jì)需求。具體包括類的設(shè)計(jì),設(shè)計(jì)四個(gè)類,運(yùn)用類的派生與繼承,實(shí)現(xiàn)對四個(gè)基本信息的構(gòu)造,接下來進(jìn)行主函數(shù)的設(shè)計(jì),然后再分模塊進(jìn)行一層一層的設(shè)計(jì),其中運(yùn)用文件保存學(xué)生成績及課程信息,使程序執(zhí)行時(shí)從文件讀入,這樣來實(shí)現(xiàn)每一個(gè)的子功能。第2章 系統(tǒng)實(shí)現(xiàn)思路2.1 對系統(tǒng)需求的分析1.能對學(xué)生各科成績進(jìn)行錄入。2.能對學(xué)生的成績進(jìn)行增加。3.能對學(xué)生的成績進(jìn)行刪除。4.能對學(xué)生的成績進(jìn)行修改。5.能對學(xué)生的成績按總成績,姓名,進(jìn)行查詢。6.能輸出學(xué)生的所有數(shù)據(jù)。7.能進(jìn)行成績統(tǒng)計(jì)。8.能進(jìn)行總分查詢排名。2.2 系統(tǒng)的功能分析 資料維護(hù):系統(tǒng)維護(hù)包括對學(xué)生信息的錄入操作及數(shù)據(jù)表中的學(xué)生信息進(jìn)行瀏覽與數(shù)據(jù)保護(hù);系統(tǒng)功能:可以對數(shù)據(jù)表中的信息進(jìn)行瀏覽;系統(tǒng)查詢:可以對學(xué)生的信息進(jìn)行查詢。2.3 系統(tǒng)功能模塊學(xué)生成績查詢系統(tǒng)有:成績錄入、增加、刪除、修改學(xué)生數(shù)據(jù),數(shù)據(jù)查詢,排序顯示構(gòu)成。2.4模塊框架圖對學(xué)生成績查詢系統(tǒng)進(jìn)行分析,系統(tǒng)可分為四大模塊:1.操作模塊:成績的錄入、增加、刪除與修改;2.查詢模塊:包括按總成績查詢、按姓名查詢、輸出所有學(xué)生成績;3.成績統(tǒng)計(jì):包括輸出每個(gè)學(xué)生的平均成績、各科不及格人數(shù);4.排名:按總成績排名;根據(jù)學(xué)生的基本信息,借助C+有的優(yōu)勢特點(diǎn),我們做出了以下的模版圖塊,便于理解和設(shè)計(jì)運(yùn)用。如圖2-1所示 排名學(xué)生成績管理系統(tǒng)操作查詢成績統(tǒng)計(jì)錄入增加刪除修改總成績查詢姓名輸出所有學(xué)生的成績每個(gè)學(xué)生的平均成績各科不及格人數(shù)圖2-1 模版框架圖第3章 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)3.1主函數(shù)的設(shè)計(jì)設(shè)計(jì)一個(gè)界面,使其出現(xiàn)一個(gè)簡單的窗口,按提示進(jìn)行進(jìn)行相應(yīng)操作。 代碼如下:void main() cout*歡迎來到學(xué)生成績查詢系統(tǒng)*endl; cout請選擇您需要的操作!endl; /菜單的輸出 cout操作:endl; cout(1)數(shù)據(jù)錄入endl; cout(2)增加學(xué)生信息endl; cout(3)刪除學(xué)生信息endl; cout(4)修改數(shù)據(jù)endl; cout查詢:endl; cout(5)按總成績查詢endl; cout(6)按姓名查詢endl; cout(7)輸出所有學(xué)生的數(shù)據(jù)endl; cout成績統(tǒng)計(jì):endl; cout(8)每個(gè)學(xué)生的平均成績endl; cout(9)各科不及格人數(shù)endl; cout排名:endl; cout(10)按總分查詢排名endl; cout(11)退出endl; cout選擇相關(guān)操作請輸入相對的括號(hào)里的阿拉伯?dāng)?shù)字及字母!p; if(p=1&p=11) chris1=1; else cout指令錯(cuò)誤!請重新輸入:endl; 運(yùn)行程序,得到主界面圖3-1: 3-1 主界面顯示3.2 保存數(shù)據(jù)功能的設(shè)計(jì)保存數(shù)據(jù)主要是對數(shù)據(jù)的保密性,可持續(xù)性等進(jìn)行完整的保存,以便以后程序在應(yīng)用是能準(zhǔn)確無誤的調(diào)用所保存的數(shù)據(jù)。 fstream outfile,infile; /作一個(gè)文本文檔在文件夾中用于顯示所錄入的數(shù)據(jù) outfile.open(f1.txt,ios:out|ios:app); if(!file) coutf1.txt can not open.n; return; outfilename 學(xué)號(hào):number 數(shù)學(xué)成績:math C+成績:cpp 外語成績:englishendl; outfile.close(); infile.open(f1.txt,ios:in); if(!file) /判斷文件是否打開 coutf1.txt can not open.n; return; char ch; while(infile.get(ch) coutch; coutendl; infile.close(); j+; si=new Tstu(name, number,math, cpp, english); i+; cout數(shù)據(jù)錄入成功,想繼續(xù)錄入嗎(y/n)c; chris1=0; do if(c!=y&c!=n) cout指令錯(cuò)誤!請重新輸入!c; else chris1=1; while(chris1=0); while(c=y); /重復(fù)輸入 break; 3.3通過定義類來進(jìn)行數(shù)據(jù)錄入的函數(shù)按題目要求,設(shè)計(jì)四個(gè)類:student類、score類、grade類 、course類,其中student類是基類,score是student類的公有繼承,grade類是score的公有繼承,course是grade的公有繼承。并將類中的主函數(shù)定義為友元函數(shù),方便訪問類中的成員。(1)student類:其數(shù)據(jù)成員包括學(xué)號(hào)與姓名,按要求用數(shù)組定義三十人的姓名,這樣就可以直接的輸入,以便在之后的程序中用到。其具體構(gòu)造如下class Studentprivate:char name30;int number; public:Student();Student(char n30, int num);friend void main();/將主函數(shù)定義為友元函數(shù),方便訪問類中的成員;Student:Student(char n30, int num)strcpy(name ,n);/得到姓名number=num;/得到學(xué)號(hào)(2)score類:大體上分為三類:數(shù)學(xué)、英語、c+;但是每一類又可分為三個(gè)小的部分:平時(shí)成績、期末成績和總評成績。因此,可以這樣定義成績類。class Score:public Studentprivate:double math,cpp,english;double sum,average,mathp,mathq,cppp,cppq,englishp,englishq;public:Score(); Score(char n30, int num,double map,double maq,double cp,double cq,double engp,double engq);double getmath();double getcpp();double getenglish();double getsum(); double getaver();friend void main();/將主函數(shù)定義為友元函數(shù),方便訪問類中的成員void display();Score:Score(char n30, int num,double map,double maq,double cp,double cq,double engp,double engq)mathp=map;/得到數(shù)學(xué)成績mathq=maq;cppp=cp;/得到C+成績cppq=cq;englishp=engp;/得到英語成績englishq=engq;double Score:getmath() math=mathp*0.3+mathq*0.7; return math;double Score:getcpp()cpp=cppp*0.3+cppq*0.7; return cpp;double Score:getenglish() english=englishp*0.3+englishq*0.7; return english;double Score:getsum() sum=cpp+english+math;return sum;double Score:getaver() average=getsum()/3; return average; void Score:display()coutendlnum: name: math: english: cpp: endl;(3)grade類:是score類的公共派生類,具體程序代碼如下class Grade:public Scoreprivate:int classn;public:Grade();Grade(char n30, int num,double map,double maq,double cp,double cq,double engp,double engq,int cn); friend void main();Grade:Grade(char n30, int num,double map,double maq,double cp,double cq,double engp,double engq,int cn)classn=cn;(4)course類:course類是grade類的公有繼承,在原有的基礎(chǔ)上增加了課程編號(hào)coursenum和課程名稱coursename,具體設(shè)計(jì)如下class Course:public Gradepublic:int coursenum;/課程編號(hào)char coursename3;void display();Course(); Course(char n30, int num,double map,double maq,double cp,double cq,double engp,double engq,int cn,int cnum,char cnam3);Course:Course(char n30,int num,double map,double maq,double cp,double cq,double engp,double engq,int cn,int cnum,char cnam3)coursenum=cnum;strcpy(coursename,cnam);void Course:display()coutendlnum: name: cnum: cnam: english: cpp: endl;3.4 數(shù)據(jù)的錄入主要功能用來對學(xué)生的成績進(jìn)行收集和輸入,在學(xué)生信息保存在系統(tǒng)中的前提下,進(jìn)行成績錄入。按照提示,選擇所需操作,輸入“1”點(diǎn)擊回車,則會(huì)出現(xiàn)主界面,按照提示輸入學(xué)生姓名、學(xué)號(hào)、各科成績、課程編號(hào)及課程名稱,本操作執(zhí)行一次系統(tǒng)人數(shù)就增加一個(gè),具體運(yùn)行界面如圖3-2 圖3-2 數(shù)據(jù)錄入圖 3.5 增加、刪除、修改學(xué)生數(shù)據(jù)(1)增加學(xué)生數(shù)據(jù):主要功能是用來添加學(xué)生資料,有可能會(huì)有遺漏的學(xué)生尚未輸入,對此,設(shè)計(jì)增加學(xué)生設(shè)計(jì)。進(jìn)入錄入操作之后,按“n”結(jié)束錄入,再按“y”進(jìn)行其他操作,然后輸入“2”即可增加學(xué)生數(shù)據(jù),本操作執(zhí)行一次便可增加一份學(xué)生數(shù)據(jù),具體界面如圖3-3所示圖3-3 增加學(xué)生數(shù)據(jù)圖(2)刪除學(xué)生信息:主要用來刪除學(xué)生資料,在成績錄入過程中存在錄入重復(fù)的情況,就需要進(jìn)行一些刪除工作。在編程過程中,做一個(gè)文本文檔在文件夾中用于顯示所錄入的數(shù)據(jù),然后輸入名字判斷是否相等,此處用do while 結(jié)構(gòu),若相等則進(jìn)行數(shù)據(jù)刪除。在進(jìn)行其他操作之后,按“n”結(jié)束錄入,再按“y”進(jìn)行其他操作,然后輸入“3”即進(jìn)入刪除操作,具體界面如3-4所示圖 3-4 刪除學(xué)生信息(3)修改學(xué)生信息:主要功能使用來修改學(xué)生資料,在系統(tǒng)保存了某學(xué)生資料的前提下,輸入該學(xué)生姓名,系統(tǒng)就會(huì)顯示該學(xué)生資料各科成績信息,這樣就可以修改該學(xué)生的資料了。對錄入錯(cuò)誤的數(shù)據(jù)進(jìn)行修改,在進(jìn)行其他操作之后,按“n”結(jié)束繼續(xù)的重復(fù)操作,再按“y”進(jìn)行其他操作,然后輸入“4”即進(jìn)入修改操作。具體運(yùn)行成果如圖3-5圖3-5 修改學(xué)生的信息3.6 查詢學(xué)生成績(1)按總分查詢:在進(jìn)行其他操作之后,按“n”結(jié)束繼續(xù)的重復(fù)操作,再按“y”進(jìn)行其他操作,然后輸入“5”即進(jìn)入按總分查詢模塊,輸入特定的分?jǐn)?shù),即可輸出與之相對應(yīng)的學(xué)生。具體運(yùn)行結(jié)果如圖3-6 3-6 按總分查詢學(xué)生成績(2)按姓名查詢:在進(jìn)行其他操作之后,按“n”結(jié)束繼續(xù)的重復(fù)操作,再按“y”進(jìn)行其他操作,然后輸入“6”即進(jìn)入按姓名查詢操作。輸入要查詢的姓名,若此姓名存在在庫中,即可得到其成績。代碼如下:case 6:/按姓名查詢 char n30;char c;int j=0;int flag;int i; if(i=1)cout系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!endl;break; do flag=0; cout請輸入要查詢的名字: n; for(int j=0;ji;j+) if(strcmp(n,(*sj).name)=0)flag=1;cout您要查詢的學(xué)生是:(*sj).nameendl;cout該生的信息是:學(xué)號(hào):(*sj).number高數(shù)平時(shí)成績:(*sj).mathp 高數(shù)期末成績:(*sj).mathq c+平時(shí)成績:(*sj).cppp c+平時(shí)成績:(*sj).cppq 英語平時(shí)成績:(*sj).englishp 英語平時(shí)成績;(*sj).englishq 班級:(*sj).classn 課程編號(hào):(*sj).coursenum 所選課程:(*sj).coursenameendl; if(flag=0)cout對不起您要查詢的學(xué)生不存在,請查證后再輸入!endl;coutc;if(c!=y&c!=n)cout指令錯(cuò)誤!請重新輸入:c; while(c=y); Break;3.7 統(tǒng)計(jì)每個(gè)學(xué)生的平均成績在進(jìn)行其他操作之后,按“n”結(jié)束繼續(xù)的重復(fù)操作,再按“y”進(jìn)行其他操作,然后輸入“8”即進(jìn)入統(tǒng)計(jì)每個(gè)學(xué)生的平均成績操作。代碼:case 8:/統(tǒng)計(jì)每個(gè)學(xué)生的平均成績 int i; if(i=0) cout系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!endl;break; for(int m=0;mi;m+) cout(*sm).name 學(xué)號(hào):(*sm).number 總分:(*sm).getsum() 均分:(*sm).getaver()endl; break;3.8輸出所有學(xué)生數(shù)據(jù)主要功能用來對學(xué)生成績進(jìn)行輸出。在進(jìn)行其他操作之后,按“n”結(jié)束繼續(xù)的重復(fù)操作,再按“y”進(jìn)行其他操作,然后輸入“7”即進(jìn)入輸出所有學(xué)生數(shù)據(jù)操作。運(yùn)行結(jié)果如圖3-7所示3-7 輸出所有的學(xué)生數(shù)據(jù)3.9統(tǒng)計(jì)各科不及格人數(shù)在進(jìn)行其他操作之后,按“n”結(jié)束繼續(xù)的重復(fù)操作,再按“y”進(jìn)行其他操作,然后輸入“9”即可顯示各學(xué)科不及格人數(shù)。代碼:case 9:/統(tǒng)計(jì)各學(xué)科不及格人數(shù) int i; if(i=0) cout系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!endl;break; int m,n,k,j;m=0;n=0;k=0; for(j=0;jmathcppenglish60)k+; cout數(shù)學(xué)不及格人數(shù)為:mendl; coutc+不及格人數(shù)為:nendl; cout英語不及格人數(shù)為:kendl; break; 運(yùn)行結(jié)果如圖3-8: 3-8 輸出不及格人數(shù)3.10按總分排名主要功能用來按總分對學(xué)生進(jìn)行排名。在進(jìn)行其他操作之后,按“n”結(jié)束繼續(xù)的重復(fù)操作,再按“y”進(jìn)行其他操作,然后輸入“10”即進(jìn)入按總分排名操作。代碼: case 10:/按總分排名 int i; if(i=0)cout系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!endl;break; int h,g,n;int j=0;float a100,temp; for(g=0;gi;g+) aj=(*sg).getsum();j+; for(h=0;hi;h+) for(n=0;nan+1) temp=an;an=an+1;an+1=temp; for(n=1;n=i;n+) coutanendl; break; coutw; coutendl; if(w!=y&w!=n) cout 指令錯(cuò)誤!請重新輸入!endl; else flag=1;3.11退出程序在程序運(yùn)行的簡捷窗口,選擇自己所要查詢的目的。例如選擇數(shù)字11,退出程序!如圖3-9圖3-9 退出程序課程設(shè)計(jì)體會(huì)在這次程序設(shè)計(jì)過程中,我學(xué)會(huì)了好多東西,感受頗深。在編寫中遇到了很多困難,會(huì)經(jīng)常忽略一些小的細(xì)節(jié),而偏偏是這些平常不注意的小的細(xì)節(jié)導(dǎo)致程序運(yùn)行錯(cuò)誤。更加使我充分認(rèn)識(shí)到程序的嚴(yán)謹(jǐn)性,深刻的意識(shí)到在以后的學(xué)習(xí)中要不放過一點(diǎn)小問題。也了解到自己所學(xué)知識(shí)的有限,以及熟練應(yīng)用一種程序設(shè)計(jì)語言并不是簡單的,它不僅需要我們有扎實(shí)的算法基礎(chǔ),也需要多多練習(xí)熟悉掌握。由于對C+編程的認(rèn)識(shí)還很少,雖然有些好的想法,但沒有能力實(shí)現(xiàn),更加堅(jiān)定了我學(xué)習(xí)C+的決心。熟練掌握一門計(jì)算機(jī)語言不是一個(gè)輕松的事,需要長期不斷學(xué)習(xí),動(dòng)手實(shí)踐。在這次課程設(shè)計(jì)中也大大增強(qiáng)了自己的動(dòng)手能力,將所學(xué)的理論知識(shí)與實(shí)踐有了很好的結(jié)合。經(jīng)過多次的調(diào)試,拓寬了我的視野,增強(qiáng)了學(xué)習(xí)理論知識(shí)的興趣以及應(yīng)用理論知識(shí)解決實(shí)際問題的能力。當(dāng)然也使我意識(shí)到我們應(yīng)保持著一種嚴(yán)謹(jǐn)?shù)膽B(tài)度。真的很珍惜這次實(shí)訓(xùn)機(jī)會(huì),它教會(huì)了我好多,也很感謝老師的指導(dǎo),總之,收獲頗多。我以后也要更加努力學(xué)習(xí)專業(yè)知識(shí),爭取更上一層樓。參考文獻(xiàn)1譚浩強(qiáng)著,C+語言設(shè)計(jì)題解與上機(jī)指導(dǎo),清華大學(xué)出版社2譚浩強(qiáng)著,C+面向?qū)ο蟪绦蛟O(shè)計(jì) 譚浩強(qiáng),清華大學(xué)出版社3李麗娟主編,C+語言程序設(shè)計(jì)教程實(shí)驗(yàn)指導(dǎo)與習(xí)題解答(第3版)4程序設(shè)計(jì) 劉覺夫王更生等 北京郵電大學(xué)出版社5程序設(shè)計(jì)實(shí)訓(xùn)教程 曾輝王更生等 北京郵電大學(xué)出版社6C+程序設(shè)計(jì)語言(特別版),機(jī)械工業(yè)出版社#include#include#include#include#includeusing namespace std;class Studentprivate:char name30;int number; public:Student();Student(char n30, int num);friend void main();/將主函數(shù)定義為友元函數(shù),方便訪問類中的成員;Student:Student(char n30, int num)strcpy(name ,n);/得到姓名number=num;/得到學(xué)號(hào)class Score:public Studentprivate:double math,cpp,english;double sum,average,mathp,mathq,cppp,cppq,englishp,englishq;public:Score(); Score(char n30, int num,double map,double maq,double cp,double cq,double engp,double engq);double getmath();double getcpp();double getenglish();double getsum(); double getaver();friend void main();/將主函數(shù)定義為友元函數(shù),方便訪問類中的成員void display();Score:Score(char n30, int num,double map,double maq,double cp,double cq,double engp,double engq)mathp=map;/得到數(shù)學(xué)成績mathq=maq;cppp=cp;/得到C+成績cppq=cq;englishp=engp;/得到英語成績englishq=engq;double Score:getmath() math=mathp*0.3+mathq*0.7; return math;double Score:getcpp()cpp=cppp*0.3+cppq*0.7; return cpp;double Score:getenglish() english=englishp*0.3+englishq*0.7; return english;double Score:getsum() sum=cpp+english+math;return sum;double Score:getaver() average=getsum()/3; return average; void Score:display()coutendlnum: name: math: english: cpp: endl;class Grade:public Scoreprivate:int classn;public:Grade();Grade(char n30, int num,double map,double maq,double cp,double cq,double engp,double engq,int cn); friend void main();Grade:Grade(char n30, int num,double map,double maq,double cp,double cq,double engp,double engq,int cn)classn=cn;class Course:public Gradepublic:int coursenum;/課程編號(hào)char coursename3;void display();Course();Course(char n30, int num,double map,double maq,double cp,double cq,double engp,double engq,int cn,int cnum,char cnam3);Course:Course(char n30,int num,double map,double maq,double cp,double cq,double engp,double engq,int cn,int cnum,char cnam3)coursenum=cnum;strcpy(coursename,cnam);void Course:display()coutendlnum: name: cnum: cnam: english: cpp: endl;void main() cout*歡迎來到學(xué)生成績查詢系統(tǒng)*endl; cout請選擇您需要的操作!endl; /菜單的輸出 cout操作:endl; cout(1)數(shù)據(jù)錄入endl; cout(2)增加學(xué)生信息endl; cout(3)刪除學(xué)生信息endl; cout(4)修改數(shù)據(jù)endl; cout查詢:endl; cout(5)按總成績查詢endl; cout(6)按姓名查詢endl; cout(7)輸出所有學(xué)生的數(shù)據(jù)endl; cout成績統(tǒng)計(jì):endl; cout(8)每個(gè)學(xué)生的平均成績endl; cout(9)各科不及格人數(shù)endl; cout排名:endl; cout(10)按總分查詢排名endl; cout(11)退出endl; cout選擇相關(guān)操作請輸入相對的括號(hào)里的阿拉伯?dāng)?shù)字及字母!p; if(p=1&p=11) chris1=1; else cout指令錯(cuò)誤!請重新輸入:endl; while(chris1=0); do switch(p)case 1:/數(shù)據(jù)的錄入 char c;char name30;int number;double mathp,mathq,cppp,cppq,englishp,englishq; int classn;int coursenum;/課程編號(hào) char coursename3;/課程名稱docout請輸入姓名:name;cout請輸入學(xué)號(hào):number;cout請輸入高數(shù)平時(shí)成績:mathp;cout請輸入高數(shù)期末成績:mathq;cout請輸入c+平時(shí)成績:cppp;cout請輸入c+期末成績:cppq;cout請輸入英語平時(shí)成績:englishp;cout請輸入英語期末成績:englishq; cout請輸入班級:classn;cout請輸入所選課程編號(hào):coursenum;cout請輸入所選課程名稱:coursename; cout請輸入所選課程編號(hào):coursenum;cout請輸入所選課程名稱:coursename; cout請輸入所選課程編號(hào):coursenum;cout請輸入所選課程名稱:coursename;fstream outfile,infile;outfile.open(f1.txt,ios:out|ios:app);if(!file) coutf1.txt can not open.n; return; outfilename 學(xué)號(hào):number 高數(shù)平時(shí)成績:mathp 高數(shù)期末成績:mathq c+平時(shí)成績:cppp c+期末成績:cppq 英語平時(shí)成績:englishp 英語期末成績;englishq 班級:classn 課程編號(hào):coursenum 所選課程:coursenameendl;outfile.close();infile.open(f1.txt,ios:in);if(!file) /判斷文件是否打開 coutf1.txt can not open.n;return ;char ch;while(infile.get(ch)coutch;coutendl;infile.close();j+;si=new Course(name,number,mathp,mathq,cppp,cppq,englishp,englishq,classn,coursenum,coursename);i+;cout數(shù)據(jù)錄入成功,想繼續(xù)錄入嗎(y/n)c;chris1=0;doif(c!=y&c!=n)cout指令錯(cuò)誤!請重新輸入!c;else chris1=1;while(chris1=0);while(c=y); /重復(fù)輸入 break; case 2:/增加學(xué)生數(shù)

溫馨提示

  • 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

提交評論