版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
課程設(shè)計問題描述學院教學信息管理系統(tǒng)是高等學校教務(wù)管理的重要組成部分,其內(nèi)容較多,為了簡化計論,規(guī)定設(shè)計的管理系統(tǒng)可以完畢以下功能:(1)輸入:輸入每一位教師記錄,將其信息寫入文獻中;(2)顯示:顯示每位教師記錄;(3)排序:按職工號或教學效果綜合評分進行排序,并顯示;(4)查找:完畢按姓名或課程查找教師的相關(guān)記錄,并顯示;(5)創(chuàng)建:創(chuàng)建新的紀錄,輸入數(shù)位教師記錄,顯示在屏幕上并保存;課程設(shè)計目的和規(guī)定:通過一個學期的《C++面向?qū)ο髮嵱媒坛獭氛n程的學習,已有了一定地程序設(shè)計基礎(chǔ),但是要學好C++程序設(shè)計,不僅要認真閱讀課本知識和從事課堂學習,更重要的是要進行上機實踐,通過上機實踐才干增強和鞏固知識。三、系統(tǒng)設(shè)計(算法分析)1、整體結(jié)構(gòu) 整個程序定義四個類CPerson類:包含數(shù)據(jù)成員name,age,sex,記錄姓名,年齡,性別這些信息,并包含構(gòu)造函數(shù)及其他成員函數(shù)(定義CPerson類以后若有需要,可再通過繼承派生其他類);CTeacher:共有繼承CPerson類,包含數(shù)據(jù)成員title,teano,course,score,分別記錄職稱,職工號,3門課程和教學效果綜合評分等信息,另有其他成員函數(shù);CNode類:節(jié)點類,包含2個數(shù)據(jù)成員,CTeacher類對象p和CNode類指針對象next,作為構(gòu)建鏈表的單位;CList類:鏈表類,聲明為CNode類的友元類,數(shù)據(jù)成員有頭結(jié)點head,尾節(jié)點tail,記錄當前節(jié)點的p和當前節(jié)點前一節(jié)點的pre,鏈表相關(guān)的輸入,顯示,排序,查找,創(chuàng)建所有設(shè)為成員函數(shù)??傮w流程為先打開文獻,讀取文獻中的記錄來創(chuàng)建鏈表,然后對鏈表進行操作,最后保存至文獻中2、流程圖開始開始打開文獻打開文獻讀取記錄輸入choice輸入choicechoice==0?choice==0?是否查找排序創(chuàng)建新紀錄查找排序創(chuàng)建新紀錄添加記錄顯示當前記錄添加記錄顯示當前記錄保存保存是保存否保存結(jié)束結(jié)束3、各函數(shù)的功能和實現(xiàn)學院教學信息管理系統(tǒng)的相關(guān)功能由相應(yīng)的函數(shù)來實現(xiàn)。輸入教師信息并顯示voidAppend()通過提醒一步步輸入信息,由程序構(gòu)建新節(jié)點并加入鏈表顯示所有記錄voidPrint()(3)按職工號或教學效果綜合評分排序并顯示intSortMenu()voidSortMenuControl()voidInsertByTeano(CNode*newp)voidSortByTeano()voidInsertByScore(CNode*newp)voidSortByScore()(4)按姓名或課程查找教師記錄并顯示intSearchMenu()voidSearchMenuControl()voidSearchByName()voidSearchByCourse()四、程序源代碼#include"stdafx.h"#include<iostream>#include<fstream>#include<vector>#include<algorithm>#include<cstring>#include<string>usingnamespacestd;classCPerson{ private: stringname; intage; charsex; public: CPerson() {} CPerson(stringname,intage=0,charsex='M') { this->name=name; this->age=age; this->sex=sex; } voidSetAge(intage=0) { this->age=age; } voidSetNameAndSex(stringname,charsex) { this->name=name; this->sex=sex; } voidShowInfo() { cout<<name<<"\t"<<age<<"\t"<<(sex=='M'?"男":"女")<<endl; } stringGetName() { returnname; } intGetAge() { returnage; } charGetSex() { returnsex; }};classCTeacher:publicCPerson{ private: stringtitle;//職稱 stringteano;//職工號 vector<string>course;//專家課程 floatscore;//教學效果綜合評分 public: CTeacher() {} CTeacher(stringname,intage=0,charsex='M'):CPerson(name,age,sex) {} voidSetData(stringtitle,stringteano) { this->title=title; this->teano=teano; } voidSetCourse(stringc1,stringc2,stringc3) { course.push_back(c1); course.push_back(c2); course.push_back(c3); } voidSetScore(floatscore) { this->score=score; } voidShowInfo() { cout<<teano<<"\t"<<GetName()<<"\t"<<GetAge()<<"\t"<<(GetSex()=='M'?"男":")<<title<<"\t"<<course[0]<<"\t"<<course[1]<<"\t"<<course[2]<<"\t"<<score<<endl; } voidoperator=(CTeacher&one) { CPerson(one.GetName(),one.GetAge(),one.GetSex()); this->title=one.title; this->teano=one.teano; this->course[0]=one.course[0]; this->course[1]=one.course[1]; this->course[2]=one.course[2]; this->score=one.score; } vector<string>GetCourse() { returncourse; } stringGetTitle() { returntitle; } stringGetTeano() { returnteano; } floatGetScore() { returnscore; }};classCNode{ friendclassCList; private: CTeacherdata; CNode*next;};classCList{ private: CNode*head; CNode*tail; CNode*p; CNode*pre; intnum;//當前節(jié)點數(shù) public: intMainMenu() { cout<<"1.顯示當前記錄"<<endl; cout<<"2.添加記錄"<<endl; cout<<"3.排序"<<endl; cout<<"4.查找"<<endl; cout<<"5.創(chuàng)建新紀錄"<<endl; cout<<"0.退出"<<endl; cout<<endl; intchoice; cin>>choice; returnchoice; } voidMainMenuControl() { ReadData(); while(1) { intchoice=MainMenu(); if(choice==0) break; switch(choice) { case1:Print(); break; case2:Append(); break; case3:SortMenuControl(); break; case4:SearchMenuControl(); break; case5:NewList(); break; } } cout<<"是否保存?(Y/N):"; charc; cin>>c; if(c=='y') Save(); } voidReadData() { head=tail=newCNode; head->next=NULL; num=0; charfname[80]; cout<<"請輸入要讀取的文獻:"; cin>>fname; ifstreamfile(fname); if(!file) { cout<<"出現(xiàn)未知錯誤導(dǎo)致無法打開!"<<endl; exit(1); } stringname,title,teano,course[3]; intage; charsex; floatscore; while(file.peek()!=EOF) { file>>teano>>name>>age>>sex>>title>>course[0]>>course[1]>>course[2]>>score; p=newCNode; p->data.SetNameAndSex(name,sex); p->data.SetAge(age); p->data.SetData(title,teano); p->data.SetCourse(course[0],course[1],course[2]); p->data.SetScore(score); tail->next=p; tail=p; num++; } tail->next=NULL; } voidPrint() { for(p=head->next;p!=NULL;p=p->next) p->data.ShowInfo(); cout<<endl; } voidAppend() { while(1) { p=newCNode; cout<<"請輸入:"<<endl; cout<<"姓名:"; stringname; cin>>name; cout<<"年齡:"; intage; cin>>age; cout<<"性別(F/M):"; charsex; cin>>sex; p->data.SetNameAndSex(name,sex); p->data.SetAge(age); cout<<"職稱:"; stringtitle; cin>>title; cout<<"職工號:"; stringteano; cin>>teano; p->data.SetData(title,teano); cout<<"專家課程:"; stringcourse[3]; cin>>course[0]>>course[1]>>course[2]; p->data.SetCourse(course[0],course[1],course[2]); cout<<"教學效果綜合評分:"; floatscore; cin>>score; p->data.SetScore(score); p->next=tail->next; tail->next=p; tail=p; num++; charc; cout<<"是否繼續(xù)添加?(Y/N):"; cin>>c; cin.get(); if(c!='y') break; } tail->next=NULL; Print(); } intSortMenu() { cout<<"1.按職工號排序"<<endl; cout<<"2.按教學效果綜合評分排序"<<endl; cout<<"0.退出"<<endl; cout<<endl; intchoice; cin>>choice; returnchoice; } voidSortMenuControl() { while(1) { intchoice=SortMenu(); if(choice==0) break; switch(choice) { case1:SortByTeano(); break; case2:SortByScore(); break; } Print(); } } voidInsertByTeano(CNode*newp) { for(pre=head,p=head->next;p!=NULL;pre=p,p=p->next) if(newp->data.GetTeano()<p->data.GetTeano()) break; newp->next=p; pre->next=newp; } voidSortByTeano() { p=head->next; head->next=NULL; CNode*nextp; while(p!=NULL) { nextp=p->next; InsertByTeano(p); p=nextp; } } voidInsertByScore(CNode*newp) { for(pre=head,p=head->next;p!=NULL;pre=p,p=p->next) if(newp->data.GetScore()<p->data.GetScore()) break; newp->next=p; pre->next=newp; } voidSortByScore() { p=head->next; head->next=NULL; CNode*nextp; while(p!=NULL) { nextp=p->next; InsertByScore(p); p=nextp; } } intSearchMenu() { cout<<"1.按姓名查找"<<endl; cout<<"2.按課程查找"<<endl; cout<<"0.退出"<<endl; cout<<endl; intchoice; cin>>choice; returnchoice; } voidSearchMenuControl() { while(1) { intchoice=SearchMenu(); if(choice==0) break; switch(choice) { case1:SearchByName(); break; case2:SearchByCourse(); break; } } } voidSearchByName() { intn=0; cout<<"請輸入姓名:"; stringname; cin>>name; for(p=head->next;p!=NULL;p=p->next) if(p->data.GetName()==name ) { p->data.ShowInfo(); n++; } if(n==0) cout<<"沒有相關(guān)記錄"<<endl; cout<<endl; } voidSearchByCourse() { intn=0; cout<<"請輸入查找課程:"; stringc; cin>>c; for(p=head->next;p!=NULL;p=p->next) { vector<string>course=p->data.GetCourse(); for(inti=0;i<3;i++) if(c==course[i]) { p->data.ShowInfo(); n++; break; } } if(n==0) cout<<"沒有相關(guān)記錄"<<endl; cout<<endl; } voidNewList() { Destory(); head=tail=newCNode; head->next=NULL; while(1) { p=newCNode; cout<<"請輸入:"<<endl; cout<<"姓名:"; stringname; cin>>name; cout<<"年齡:"; intage; cin>>age; cout<<"性別(F/M):"; charsex; cin>>sex; p->data.SetNameAndSex(name,sex); p->data.SetAge(age); cout<<"職稱:"; stringtitle; cin>>title; cout<<"職工號:"; stringteano; cin>>teano; p->data.SetData(title,teano); cout<<"專家課程:"; stringcourse[3]; cin>>course[0]>>course[1]>>course[2]; p->data.SetCourse(course[0],course[1],course[2]); cout<<"教學效果綜合評分:"; floatscore; cin>>score; p->data.SetScore(score); tail->next=p; tail=p; num++; cout<<"是否繼續(xù)輸入?(Y/N):"; charc; cin>>c; cin.get(); if(c!='y') break; } tail->next=NULL; } voidSave() { charfname[80]; cout<<"保存到:"; cin>>fname; ofstreamfile(fname); if(!file) { cout<<"出現(xiàn)未知錯誤導(dǎo)致無法打開!"<<endl; exit(1); } for(p=head->next;p!=NULL;p=p->next)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)學生見習報告范文
- 2024-2025學年新教材高中政治第2單元認識社會與價值選擇第6課第3框價值的創(chuàng)造和實現(xiàn)課時分層作業(yè)含解析新人教版必修4
- 2025年合肥貨運從業(yè)資格證模擬試題題庫及答案解析
- 2025水電裝修的裝修合同范本
- 披肩式鋁箔隔熱面罩行業(yè)深度研究報告
- 2025電影或電視劇版權(quán)轉(zhuǎn)讓合同模板
- 上海視覺藝術(shù)學院《媒介與表現(xiàn)》2023-2024學年第一學期期末試卷
- 上海商學院《計算機組成原理實驗》2023-2024學年第一學期期末試卷
- 2025魚塘買賣合同范本
- 2025涉外許可證合同書
- 2024年P(guān)E工程師培訓(xùn)教材-助力工程師成長
- 機動車檢測站新?lián)Q版20241124質(zhì)量管理手冊
- 大部分分校:地域文化形考任務(wù)一-國開(CQ)-國開期末復(fù)習資料
- 【物理】期末復(fù)習練習 質(zhì)量與密度 2024-2025學年人教版物理八年級上冊
- 急性有機磷中毒急救護理
- 應(yīng)用寫作-終結(jié)性考核-國開(SC)-參考資料
- 2024年決戰(zhàn)行測5000題言語理解與表達(培優(yōu)b卷)
- 【培訓(xùn)課件】建設(shè)工程施工工地消防安全管理
- 2024屆高考語文專題復(fù)習:文言文閱讀專項練習題匯編(含答案)
- 2025年慢性阻塞性肺疾病全球創(chuàng)議GOLD指南修訂解讀課件
- 綠色建筑概論學習通超星期末考試答案章節(jié)答案2024年
評論
0/150
提交評論