




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、數(shù)據(jù)結構課程設計報告 信息工程學院計算機科學與技術專業(yè)題目: 學生成績管理系統(tǒng)(線性表應用)班級:計算機111班 第11組 組長: 姓名:葛學謙 學號:11組員:姓名:冷 冰 學號:16 指導老師:曲朝陽、郭曉利、劉志穎 日期:2012年 12 月20 日 程序設計書目錄一、程序設計目標二、問題描述三、需求分析四、概要設計(說明課程設計中用到的抽象數(shù)據(jù)類型的定義、主程序的流程以及各程序模塊之間的調(diào)用關系等)五、詳細設計六、軟件說明書七、源程序清單八、測試報告 九、課程設計總結數(shù)據(jù)結構課程設計一、課程設計目的 1.數(shù)據(jù)結構課程設計,使我們能夠將學到的面向對象的設計思想運用在具體的工作和學習 中,
2、加深對類和對象的理解,2.要求學生對生活中許多具體的事物抽象出類,并掌握繼承和派生類、基類、虛函數(shù)和多態(tài)的概念。3.通過課程設計掌握面向對象語言程序設計的編程思想,為后續(xù)課程打下基礎。4.培養(yǎng)我實際操作能力和實踐能力,為以后的工作打下堅實的基礎。二、課程設計的內(nèi)容1、課程設計的題目及簡介文本界面為管理員1.輸入信息 2.保存信息 3.查詢信息 4.修改并保存 5.顯示全部 6.刪除信息 7.退出系統(tǒng) 學生1信息查詢(1)輸入姓名(2)輸入學號2退出系統(tǒng)三、需求分析(說明課程設計的任務)提供身份驗證,和使用系統(tǒng)的權限設置、判定。教師用戶能實現(xiàn)本班同學各學期各科成績的錄入、編輯,數(shù)據(jù)必須保存在文件
3、中,以便反復使用。學生用戶提供對學號或姓名,各學期、各學科成績的查詢。學生和教師用戶能按各學期、各學科分數(shù)排序輸出。教師用戶能統(tǒng)計各科成績分數(shù)段的分布,并輸出。四、概要設計(說明課程設計中用到的抽象數(shù)據(jù)類型的定義、主程序的流程以及各程序模塊之間的調(diào)用關系等)1.調(diào)用函數(shù)Node* Create()判斷是否等于一如果是可創(chuàng)建鏈表輸入相應的學生成績?nèi)绻皇莿t需要運用Insert(p)函數(shù)插入結點增加學生成績的,并通過chundang(p)函數(shù)進行存檔,2. 調(diào)用函數(shù)Node* Delete(Node* head , int num)刪除學生的成績則必須對鏈表結點進行刪除意味著將某個要刪除結點前后的
4、連續(xù)打斷,去掉該結點,使前后指針變量重新連接,完成鏈表結點的刪除任務3.打開存檔文件ifstream Filein(out.txt);輸出說存檔的學生成績4. 調(diào)用函數(shù)Node* sousuo(Node* head , char na20) ,按學生的姓名進行搜索五、詳細設計(1)程序流程圖 各功能模塊的實現(xiàn)流程圖:1增加學生成績調(diào)用函數(shù)Node* Create()判斷是否等于一如果是可創(chuàng)建鏈表輸入相應的學生成績?nèi)绻皇莿t需要運用Insert(p)函數(shù)插入結點增加學生成績的,并通過chundang(p)函數(shù)進行存檔,具體流程如下圖所示判斷以前是否存儲了學生成績是新增成績退出該功能,返回主菜單,
5、繼續(xù)選擇流程圖新增學生成績按提示:輸入學個的各種成績按格式顯示輸入的學生成績 2刪除學生成績 調(diào)用函數(shù)Node* Delete(Node* head , int num) 刪除學生的成績則必須對鏈表結點進行刪除意味著將某個要刪除結點前后的連續(xù)打斷,去掉該結點,使前后指針變量重新連接,完成鏈表結點的刪除任務 流程圖輸入要刪除學生成績2退出該功能,返回主菜單,繼續(xù)選擇輸入要刪除成績的編號該生成績已刪除,顯示其他同學的成績輸出所有學生的成績3導入學生成績打開存檔文件ifstream Filein(out.txt);輸出說存檔的學生成績導入學生成績顯示學生的成績退出該功能,返回主菜單,繼續(xù)選擇 4、學
6、生成績的搜索 調(diào)用函數(shù)Node* sousuo(Node* head , char na20) ,按學生的姓名進行搜索退出該功能,返回主菜單,繼續(xù)選擇 輸出所以查詢的學生成績按照提示輸入學生的姓名進行搜索搜索學生成績 4流程圖: 5成績的統(tǒng)計 調(diào)用函數(shù)Node* sousuo(Node* head , char na20) ,按學生的姓名進行搜索輸出統(tǒng)計的成績統(tǒng)計所設定的專業(yè)人數(shù)和男女性別的人數(shù),計算學生的年齡并統(tǒng)計成績的統(tǒng)計:5退出該功能,返回主菜單,繼續(xù)選擇。 6、按英語成績進行排序:調(diào)用函數(shù)Node* paixu(Node* head)完成排序功能它的主要思想的:首先設置英語成績的最大值
7、100,最小值0(也可以使150或者其他)然后讓輸入的學生成績英語成績一次比較進行比較,(如果有相等的就輸出排名1 ,然后排名加1),否則最大值減1,然后再次進行比較( 如果等于99且上次沒有等于100的,就輸出排名1,然后排名加1,如果上次有等于100的排名為2),如果沒有與99相等的.,則繼續(xù)循環(huán)流程圖:輸出排序之后的學生成績對英語成績進行排序退出該功能,返回主菜單,繼續(xù)選擇按學生成績進行排序5總功能模塊圖:2、輸入要刪除的學生的編號,刪除學生成績。1輸入學生的成績:姓名、性別、專業(yè)、出生日期、家庭地址、英語成績 菜單1. 新增學生成績2. 刪除學生成績3. 導入學生成績4. 學生成績搜索
8、5. 學生成績統(tǒng)計6. 學生成績保存7. 退出5統(tǒng)計各種專業(yè)、男女、相應年齡的人數(shù)7保存學生成績:提示保存成功4、輸入你要查找你學生姓名3、輸出學生的編號、姓名、性別、專業(yè)、出生日期、家庭地址、英語成績7、退出系統(tǒng)學生管理系統(tǒng)功能模塊圖各功能顯示效果模塊圖:學生和管理員輸入管理員進入界面后增加學生成績和導入學生成績保存學生成績學生進入界面后,按學生姓名查詢并輸出成績六、軟件說明書總體結構我們采取模塊化方式進行程序設計,要求程序的功能設計、數(shù)據(jù)結構設計及整體結構設計合理。也可根據(jù)自己對題目的理解增加新的功能模塊。系統(tǒng)以菜單界面方式(至少采用文本菜單界面,如能采用圖形菜單界面更好)工作,運行界面友
9、好,演示程序以用戶和計算機的對話方式進行(1)首先,看題目要求,每一條記錄包括一個學生的姓名、性別、專業(yè)、出生日期、家庭住址、英語成績。同時,應具備以下功能:1、輸入功能:一次可以完成自定義學生人數(shù)的學生成績記錄的輸入。2保存功能:對指定學生的成績進行保存3. 查詢功能:選擇某種方式并輸入該成績查詢符合條件的學生成績4、修改并保存功能:對指定學生的成績進行修改保存。5顯示功能:將以上功能操作后的學生成績顯示出來。6、刪除功能:對指定學生的成績進行刪除。7. 退出主菜單。七、源程序清單#include #include #include using namespace std;#define p
10、assword ;/people.hclass stupeople/人員類 基類public:int getage();/年齡char* getname();/姓名char* getsex();/性別void display();/輸出信息void peosearch();/查詢信息void peosave();/保存信息private:char name20;char sex4;int age;/student.hclass stustudent:public stupeoplepublic:int getnumber();/學號double getcscore();/語文double ge
11、tmscore();/高數(shù)double getescore();/外語double getpscore();/C+double getdscore();/數(shù)據(jù)庫double getsscore();/體育double getave();/平均成績double getsum();/總成績void stuenterinfo();/輸入信息void display();/輸出信息void stusearch();/查找信息void stusave();/保存信息void stuload();/加載信息private:int number;double cscore;double mscore;dou
12、ble escore;double dscore;double pscore;double sscore;double sumscore;double avescore;/admin.hclass stuadmin:public stustudent /派生類 管理員類public:void change();/更改信息 void del();/刪除信息private:int newage;int newnumber;char newsex;char newname; char changename20; double newcscore; double newmscore; double n
13、ewescore; double newdscore; double newpscore;double newsscore; double newsumscore; double newavescore;int i,j,p6;char A,B,x;stuadmin sa;struct studentinfointnumber;charname20;charsex4;intage ;doublecscore;doublemscore;doubleescore;doublepscore; doubledscore;doublesscore; doublesumscore; doubleavesco
14、re;intflag;s;/人員類的相關函數(shù)的定義int stupeople:getage()return age;char* stupeople:getname()return name;char* stupeople:getsex()return sex;/學生類的相關函數(shù)的定義int stustudent:getnumber()return number;double stustudent:getcscore()return cscore;double stustudent:getmscore()return mscore;double stustudent:getescore()ret
15、urn escore;double stustudent:getpscore()return pscore;double stustudent:getdscore()return dscore;double stustudent:getsscore()return sscore;double stustudent:getsum()sumscore=cscore+mscore+escore+pscore+dscore+sscore;return sumscore;double stustudent:getave()/平均成績avescore=sumscore/6;return avescore;
16、void stustudent:stuenterinfo()/輸入信息couts.number;coutendl;;coutendl;couts.sex;coutendl;couts.age;coutendl;cout請輸入各科成績:endl;couts.cscore;coutendl;couts.mscore;coutendl;couts.escore;coutendl;couts.pscore;coutendl;couts.dscore;coutendl;couts.sscore; coutendl; cout信息輸入成功!endl;s.flag=0;s.sumscor
17、e=s.cscore+s.mscore+s.escore+s.pscore+s.dscore+s.sscore;s.avescore=s.sumscore/6;void stustudent:stusave()/保存信息 ofstream out(information.txt,ios:app|ios:binary);if(out) out.write(char*)&s, sizeof s); cout信息保存成功!endl;else cout文本為空!endl;out.close(); void stustudent:display()/顯示信息ifstream ifile;ifile.op
18、en(information.txt,ios:binary);if(ifile)while(ifile.read(char*)&s,sizeof s)!=0)if(s.flag=0) cout學號:s.number姓名:性別:s.sex年齡:s.age語文:s.cscore高數(shù):s.mscore外語:s.escoreC+:s.pscore數(shù)據(jù)庫:s.dscore體育:s.sscore總分:s.sumscore平均分:s.avescoreendl;else cout文本為空!endl;ifile.close();void stustudent:stusearch()/查詢信息char
19、 stuname20;int e=0;coutstuname;ifstream ifile;ifile.open(information.txt,ios:binary);if(ifile)while(ifile.read(char*)&s,sizeof s)!=0)if(strcmp(stuname,)=0)& s.flag=0) cout學號:s.number姓名:性別:s.sex年齡:s.age語文:s.cscore高數(shù):s.mscore外語:s.escoreC+:s.pscore數(shù)據(jù)庫:s.dscore體育:s.sscore總分:s.sumscore平均分:s.a
20、vescoreendl;e=1;break;else cout文本未建立!endl;ifile.close();if(e=0)cout沒有相關信息!endl;/管理員類的相關函數(shù)的定義void stuadmin:change()char changename20;int e;coutchangename;fstream ifile(information.txt,ios:in|ios:out);while(ifile.read(char*)&s,sizeof s)!=0)if(strcmp(changename,)=0)&s.flag=0) cout學號:s.number姓名:s.
21、name性別:s.sex年齡:s.age語文:s.cscore高數(shù):s.mscore外語:s.escoreC+:s.pscore數(shù)據(jù)庫:s.dscore體育:s.sscore總分:s.sumscore平均分:s.avescoreendl;e=1;break;if(e=0)cout沒有相關信息!endl;if(e=1) int choose;coutt請選擇修改方式:endlendl;cout1.修改學號:endl;cout2.修改姓名:endl;cout3.修改性別:endl;cout4.修改年齡:endl;cout5.修改語文成績:endl;cout6.修改高數(shù)成績:endl;cout7.修
22、改外語成績:endl; cout8.修改C+成績:endl; cout9.修改數(shù)據(jù)庫成績:endl; cout10.修改體育成績:endl;coutendl;cout請選擇:choose;switch(choose)case 1: cout請輸入學生學號:s.number;break; case 2: cout請輸入學生姓名:;break;case 3:cout請輸入學生性別:s.sex;break;case 4: cout請輸入學生年齡:s.age;break;case 5: cout請輸入學生語文成績:s.cscore;break;case 6: cout請輸入學生高數(shù)成績:s
23、.mscore;break;case 7: cout請輸入學生外語成績:s.escore;break;case 8: cout請輸入學生C+成績:s.pscore;break; case 9: cout請輸入數(shù)據(jù)庫成績:s.dscore;break; case 10: cout請輸入學生體育成績:s.sscore;break;/*default:coutt輸入錯誤,返回主菜單!endl;adminwelcome();*/cout信息輸入成功!endl;s.flag=0;s.sumscore=s.cscore+s.mscore+s.escore+s.pscore+s.dscore+s.sscor
24、e;s.avescore=s.sumscore/6;ifile.seekp(-(sizeof s),ios:cur);ifile.write(char*)&s,sizeof s);cout信息已修改并保存!endl;ifile.close(); void stuadmin:del()/刪除信息char delname20;int e=0;cout請輸入您要刪除的學生姓名:delname;fstream ifile;ifile.open(information.txt,ios:in|ios:out);while(ifile.read(char*)&s,sizeof s)!=0)if(strcmp
25、(delname,)=0)&s.flag=0) cout學號:s.number姓名:性別:s.sex年齡:s.age語文:s.cscore高數(shù):s.mscore外語:s.escoreC+:s.pscore數(shù)據(jù)庫:s.dscore體育:s.sscore總分:s.sumscore平均分:s.avescoreendl;e=1;break;if(e=0)cout沒有相關信息!endl;if(e=1)s.flag=1;ifile.seekp(-(sizeof s),ios:cur);ifile.write(char*)&s,sizeof s);cout信息刪除成功!endl;if
26、ile.close();/歡迎界面void studentwelcome()/學生歡迎界面 cout*endl; cout*歡迎使用學生信息管理系統(tǒng)*endl; cout*endl; couttt 1.查詢信息 tt 2.退出系統(tǒng)endl; cout*endl; docouti;coutendl;if(i2)cout對不起,請輸入1或2這兩個選擇數(shù)字!endl; while (i2);switch(i)case 1: sa.stusearch(); studentwelcome();break;case 2:exit(0);break;void adminwelcome()/管理員歡迎界面 cout*endl; cout*歡迎使用學生信息管理系統(tǒng)*endl; cout*endl; coutt1.輸入信息 t2.保存信息 t3.查詢信息 t4.修改并保存endl; coutt5.顯示全部 t6.刪除信息 t7.退出系統(tǒng) endl; cout*endl; do coutj;coutendl;if(j7)cout對不起,請輸入1-7這幾個選擇數(shù)字!endl; while(j7);switch(j)case 1: s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度新能源開發(fā)用地承包經(jīng)營合同模板
- 2025年企業(yè)間合資經(jīng)營合同范本
- 如何設定可達成的財務目標計劃
- 2025年鈷粉系列項目合作計劃書
- 強化小學生的公平公正計劃
- 幼兒園國際交流活動策劃計劃
- 注重班級文化融合的必要性計劃
- 圖書目錄員的工作計劃
- 藝術教育與演藝技巧社團工作計劃
- 提升工作效率的年度策略探討計劃
- 中國航天日揚帆起航逐夢九天(課件)-小學主題班會通用版
- 動脈血氣析標本采集
- DB42T 1049-2015房產(chǎn)測繪技術規(guī)程
- 平面鋼閘門課程
- 幼兒園食堂生鮮進貨記錄表
- nasm cpt考試試題及答案
- 2023年吉林省吉林市統(tǒng)招專升本民法自考真題(含答案)
- 幼兒園大班教案《改錯》含反思
- 2023-2024學年四川省涼山州小學數(shù)學二年級上冊期末深度自測測試題
- 學校副校長述職報告PPT模板下載
- MT 211-1990煤礦通信、檢測、控制用電工電子產(chǎn)品質量檢驗規(guī)則
評論
0/150
提交評論