C++課程設(shè)計方案-選課系統(tǒng)報告文件_第1頁
C++課程設(shè)計方案-選課系統(tǒng)報告文件_第2頁
C++課程設(shè)計方案-選課系統(tǒng)報告文件_第3頁
C++課程設(shè)計方案-選課系統(tǒng)報告文件_第4頁
C++課程設(shè)計方案-選課系統(tǒng)報告文件_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2010~2011(2)《面對對象程序設(shè)計》課程設(shè)計報告姓名:學(xué)號:班級:日期:指導(dǎo)老師:課程設(shè)計的題目:同學(xué)選課管理系統(tǒng)等級:等級三同組成員:組長:一、本系統(tǒng)的設(shè)計1.1系統(tǒng)功能模塊圖圖1。1系統(tǒng)功能模塊圖1。2系統(tǒng)UML圖圖1。2系統(tǒng)UML圖1。3功能模塊描述與主要類描述本程序綜合運用面對對象的設(shè)計方法,主要運用了STL中的map來儲存從文件讀出的數(shù)據(jù)。模塊一:同學(xué)端模塊功能(1)查看課程:此模塊通過SearchAllCourse()函數(shù),在界面上顯示全部可選課程。(2)選擇課程:此模塊通過choosecourse()函數(shù),通過輸入你要選擇的課程號進行選課。(3)退選課程:此模塊通過Deletecourse()函數(shù),用map中的erase()函數(shù),刪除已選課程。(4)查看已選課程:此模塊通過Searchcourse()函數(shù),將顯示該同學(xué)所選課程的情況.模塊二:管理端各功能:增加同學(xué):此模塊調(diào)用了頭文件為student。h里的成員和GL類里的AddStudent()成員函數(shù),要求用戶輸入同學(xué)的相關(guān)信息。如果學(xué)號相同,系統(tǒng)將會提示該同學(xué)已存在,然后自動返回管理端。增加課程:此模塊調(diào)用GL類里的函數(shù)AddCourse(),要求用戶輸入課程相關(guān)信息。如果課程號相同,系統(tǒng)會提示課程已存在,并自動返回管理端。刪除同學(xué)通過輸入學(xué)號,程序調(diào)用函數(shù)DeleteStudent(),刪除該同學(xué)相關(guān)信息,然后自動返回管理端。如果要刪除的學(xué)號不存在,則系統(tǒng)提示該同學(xué)不存在,然后自動返回管理端。刪除課程通過輸入課程號,程序調(diào)用函數(shù)DeleteCourse(),刪除該課程相關(guān)信息,然后自動返回管理端。如果要刪除的課程號不存在,則系統(tǒng)提示該課程不存在,然后自動返回管理端。修改課程信息通過輸入課程號,程序會進入修改課程信息界面,通過switch()函數(shù),用戶可選擇需要修改的項目。修改同學(xué)信息通過輸入學(xué)號號,程序會進入修改同學(xué)信息界面,通過switch()函數(shù),用戶可選擇需要修改的項目.查看選課情況該模塊顯示可選的課程信息。查看全部同學(xué)該模塊顯示已存在的同學(xué)信息。本同學(xué)選課系統(tǒng)采納了面對對象的程序設(shè)計方法。全部的方法均以類為基礎(chǔ).所涉及的類包括:(1)基礎(chǔ)類classPeople基礎(chǔ)人員信息類:該類是一個基類,設(shè)置了包括姓名、性別、年齡、電話的基本信息及相關(guān)的構(gòu)造函數(shù),接口函數(shù),修改私有成員函數(shù)。可以給同學(xué)類繼承。classStudent同學(xué)信息類:該類繼承了People類,增加了學(xué)號,學(xué)院,所選課程的信息。classCourse課程信息類:該類設(shè)置了一些基本的課程信息,包括課程號、課程名稱、學(xué)分、授課老師、分類.(2)功能類classXS同學(xué)管理類:該類定義了前文模塊一同學(xué)登錄端里面的四個功能的實現(xiàn)。此類的作用在于將同學(xué)登陸端的功能集成并定義使用的主要方法。classGL系統(tǒng)管理類:該類定義了前文模塊二系統(tǒng)登錄端里面的八個功能的實現(xiàn)。此類的作用在于將系統(tǒng)登陸端的功能集成并定義使用的主要方法.1。4選課流程圖圖1。3選課流程圖二、本系統(tǒng)的實現(xiàn)過程主函數(shù)里調(diào)用map類,通過學(xué)號和課程號自動排序同學(xué)信息和課程信息,讀寫文件student、course初始化同學(xué)信息以及課程信息.再調(diào)用while語句循環(huán)同學(xué)管理系統(tǒng)、同學(xué)選課端、系統(tǒng)管理端,以滿意用戶輸入需求。相關(guān)代碼:voidmain(){ inta,a1,a2; intsn; stringsm; XS_xs; map〈int,Student>students; map〈int,Course〉courses; ReadFile_student(students); WriteFile_student(students); ReadFile_course(courses); WriteFile_course(courses); while(a=mainmenu()) { if(a==1) { cout〈<”請輸入學(xué)號:”; cin〉〉sn; cout〈〈"請輸入密碼:”; cin>〉sm; if(password(sn,sm)) { map<int,Student〉::iteratoritor=students。find(sn); if(itor==students。end()) cout〈<"該同學(xué)不存在!"〈<endl; else { XS_xs; Student_takecourse(itor—>second); while(a1=studentmenu()) { switch(a1) { case1:_xs.SearchAllCourse(courses);break;//查看全部課程 case2:_xs.Choosecourse(_takecourse,courses,students);break;//選課 case3:_xs。Deletecourse(_takecourse,students);break;//退選 case4:_xs。SearchCourse(_takecourse,students);break;//查看已選課程 } } } } else cout〈〈”該同學(xué)不存在或者密碼輸入錯誤!”<〈endl; } if(a==2) { while(a2=adminmenu()) { GL_gl; switch(a2) { case1:_gl。AddStudent(students);break;//增加同學(xué) case2:_gl.AddCourse(courses);break;//增加課程 case3:_gl.DeleteStudent(students);break;//刪除同學(xué) case4:_gl。DeleteCourse(courses);break;//刪除課程 case5:_gl。ModifyStudent(students);break;//修改同學(xué)信息 case6:_gl.ModifyCourse(courses);break;//修改課程信息 case7:_gl。SearchCourse(courses);break;//查詢?nèi)空n程 case8:_gl.SearchStudent(students);break;//查詢?nèi)客瑢W(xué) } } } }}相關(guān)代碼:intmainmenu(){ intn; system("cls"); cout〈<”\t\t========================================\n” <<”\t\t||\n” <〈”\t\t|同學(xué)選課系統(tǒng)|\n" <<”\t\t||\n” 〈〈”\t\t|======================================|\n" 〈<"\t\t||\n" <<"\t\t||\n" <<"\t\t|1。同學(xué)選課端|\n" 〈<”\t\t|2.系統(tǒng)管理端|\n" <<”\t\t|0。退出|\n” <〈"\t\t||\n" 〈〈"\t\t||\n” 〈〈”\t\t|======================================|\n"〈<endl; cout<〈”請選擇登陸端:"〈<endl; cin>>n; while(n〈0&&n〉2) { cout〈<"輸入有誤,請重新輸入:”; cin〉〉n; } returnn;}同學(xué)選課端:通過已存的password。txt文件里的學(xué)號及相關(guān)密碼,可以進入同學(xué)登錄端界面相關(guān)代碼:intstudentmenu(){ intn; cout〈〈”\t\t========================================\n" <〈"\t\t||\n” 〈〈"\t\t|同學(xué)登陸端|\n" <<"\t\t||\n” <〈”\t\t|======================================|\n" <〈”\t\t||\n" <〈”\t\t||\n” <<”\t\t|1。查看課程|\n" <〈"\t\t|2.選擇課程|\n” 〈<”\t\t|3。退選課程|\n” <〈”\t\t|4.查看已選課程|\n" <<"\t\t|0.返回主菜單|\n" <〈”\t\t||\n" <〈"\t\t||\n” <〈”\t\t||\n” <〈”\t\t|======================================|\n"〈<endl; cout〈〈”請選擇操作方式:"<<endl; cin〉〉n; while(n<0&&n〉4) { cout<<"輸入有誤,請重新輸入:"; cin〉>n; } returnn;}當(dāng)“請選擇操作方式”語句下輸入1時,程序執(zhí)行以下語句:voidXS::SearchAllCourse(std::map<int,Course>&courses)//查詢?nèi)空n程{ map〈int,Course>::iteratoritor=courses。begin(); cout<〈setiosflags(ios_base::left) 〈〈setw(10)<<"課程號" <<setiosflags(ios_base::left) <〈setw(15)<〈”課程名稱" <〈setiosflags(ios_base::left) 〈〈setw(10)〈〈"學(xué)分" 〈〈setiosflags(ios_base::left) 〈<setw(15)<〈"上課老師” <〈setiosflags(ios_base::left) 〈〈setw(15)〈〈"所屬分類”〈<endl; while(itor!=courses.end()) { cout<〈setiosflags(ios_base::left) 〈<setw(10)〈<itor—>second。GetCnum() <〈setiosflags(ios_base::left) 〈〈setw(15)<〈itor—〉second.GetCname() <〈setiosflags(ios_base::left) <<setw(10)<<itor—〉second。GetCredit() <〈setiosflags(ios_base::left) 〈〈setw(15)〈<itor->second。GetTeacher() 〈<setiosflags(ios_base::left) 〈〈setw(15)〈<itor—〉second.GetSort()<<endl; itor++; }}當(dāng)“請選擇操作方式”語句下輸入2時,程序執(zhí)行以下語句:voidXS::Choosecourse(Student&st,map<int,Course>&courses,map<int,Student>&students){ intn; cout<〈”請輸入課程號:”; cin>>n; map<int,Course〉::iteratoritorc=courses.find(n); if(itorc==courses.end()) cout<<"沒有此課程!”〈〈endl; else { strcpy(st。GetCourse(),(itorc-〉second)。GetCname()); map〈int,Student>::iteratoritor=students.find(st.GetNo()); itor—〉second。ChangeCourse(itorc->second.GetCname()); } }當(dāng)“請選擇操作方式”語句下輸入3時,程序執(zhí)行以下語句:voidXS::Deletecourse(Student&st,map<int,Student>&students){ map〈int,Student>::iteratoritor=students.find(st.GetNo()); char*p="未選課”; itor—>second.ChangeCourse(p); }系統(tǒng)登錄端:相關(guān)代碼:intadminmenu(){ intn; cout〈〈”\t\t========================================\n” 〈<”\t\t||\n” 〈<"\t\t|系統(tǒng)登陸端|\n" <<"\t\t||\n" <<"\t\t|======================================|\n” 〈〈”\t\t||\n” <<"\t\t||\n" 〈〈”\t\t|1。增加同學(xué)|\n" <<"\t\t|2。增加課程|\n" <<”\t\t|3。刪除同學(xué)|\n” <<”\t\t|4。刪除課程|\n" <〈”\t\t|5。修改同學(xué)信息|\n" 〈<"\t\t|6。修改課程信息|\n” <<”\t\t|7。查看選課情況|\n” 〈<"\t\t|8。查看全部同學(xué)|\n” <<”\t\t|0。返回主菜單|\n” 〈〈”\t\t||\n” <〈”\t\t||\n" <<”\t\t||\n" <〈”\t\t|======================================|\n"〈<endl; cout<<”請選擇操作方式:"<〈endl; cin>〉n; while(n〈0&&n>8) { cout<<"輸入有誤,請重新輸入:”; cin〉〉n; } returnn;}當(dāng)“請選擇操作方式”語句下輸入1時,程序執(zhí)行以下語句:voidGL::AddStudent(map<int,Student>&students)//增加同學(xué){ charname[20]; charsex; intage; charphone[20]; intno; charschool[20]; charcourse[20]; cout<<”請輸入學(xué)號:”; cin>>no; map<int,Student>::iteratoritor=students。find(no); if(itor==students.end()) { cout<〈”請輸入姓名:"; cin〉>name; cout〈<endl〈〈”請輸入性別:"; cin>>sex; cout<<endl〈〈”請輸入年齡:”; cin〉>age; cout〈<endl〈〈”請輸入電話:"; cin〉>phone; cout〈<endl〈<”請輸入學(xué)院:"; cin〉〉school; cout〈〈endl<<"請輸入課程:"; cin〉〉course; Studentstu(name,sex,age,phone,no,school,course); students.insert(make_pair(no,stu)); } else cout〈<"該同學(xué)已存在!”〈<endl; }增加課程同理;當(dāng)“請選擇操作方式"語句下輸入3時,程序執(zhí)行以下語句:調(diào)用了erase()函數(shù)刪除學(xué)號所對應(yīng)的相關(guān)信息voidGL::DeleteStudent(std::map<int,Student>&students){ intno; cout〈〈"請輸入學(xué)號:"; cin〉〉no; map〈int,Student〉::iteratoritor=students.find(no); if(itor==students.end()) cout<<”該同學(xué)不存在!"〈〈endl; else students.erase(itor); }刪除課程同理;當(dāng)“請選擇操作方式”語句下輸入5時,程序執(zhí)行以下語句:Switch()語句自動跳轉(zhuǎn)執(zhí)行指令,提示用戶輸入相關(guān)信息.voidGL::ModifyStudent(std::map<int,Student〉&students){ intn,m; cout〈<”請輸入學(xué)號:”; cin>〉n; map〈int,Student〉::iteratoritor=students.find(n); if(itor==students.end()) cout〈<”該同學(xué)不存在!"〈〈endl; else { cout<<”***********************\n" <<”**\n" 〈<”*1.修改姓名*\n” <<"*2。修改性別*\n” <〈”*3。修改年齡*\n” 〈〈”*4。修改電話*\n" 〈〈”*5。修改學(xué)院*\n” 〈〈"*0。返回管理端*\n" 〈〈"***********************\n"<<endl; cout<<"請選擇要修改的項目:"; cin>>m; switch(m) { case1: charname[20]; cout〈<"請輸入新姓名:"; cin〉〉name; itor—>second.ChangeName(name); break; case2: charsex; cout〈<"請輸入性別:”; cin>>sex; itor—>second。ChangeSex(sex); break; case3: intage; cout<〈"請輸入新年齡"; cin>〉age; itor-〉second。ChangeAge(age); break; case4: charphone[20]; cout<<"請輸入新電話號碼:"; cin>>phone; itor->second。ChangeName(phone); break; case5: charschool[20]; cout〈〈”請輸入新電話號碼:”; cin>>school; itor-〉second.ChangeSchool(school); break; case0:break; default: cout〈〈””〈〈endl; } }}修改課程同理;查看同學(xué)全部同學(xué),執(zhí)行以下語句setiosflags(ios_base::left)語句將顯示內(nèi)容規(guī)范化,統(tǒng)一左對齊。GL::SearchStudent(std::map<int,Student〉&students){ map<int,Student>::iteratoritor=students.begin(); cout<〈setiosflags(ios_base::left) 〈<setw(6)<〈”學(xué)號” <<setiosflags(ios_base::left) <<setw(10)<<"姓名” 〈<setiosflags(ios_base::left) 〈<setw(6)〈<"性別” 〈<setiosflags(ios_base::left) 〈<setw(6)<<"年齡" 〈〈setiosflags(ios_base::left) 〈<setw(15)〈〈”電話" 〈<setiosflags(ios_base::left) 〈〈setw(15)〈〈"學(xué)院" <<setiosflags(ios_base::left) 〈〈setw(15)〈〈"所選課程”〈〈endl; while(itor!=students。end()) { cout〈〈setiosflags(ios_base::left) <<setw(6)〈〈itor—〉second。GetNo() <<setiosflags(ios_base::left) 〈<setw(10)<<itor—〉second.GetName() <<setiosflags(ios_base::left) 〈<setw(6)<<itor—>second.GetSex() <〈setiosflags(ios_base::left) <〈setw(6)〈<itor->second。GetAge() <〈setiosflags(ios_base::left) <〈setw(15)〈〈itor—>second。GetPhone() 〈〈setiosflags(ios_base::left) 〈〈setw(15)<<itor—>second。GetSchool() <〈setiosfla

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論