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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

2010~2011(2)《面對對象程序設計》課程設計報告姓名:學號:班級:日期:指導老師:課程設計的題目:同學選課管理系統(tǒng)等級:等級三同組成員:組長:一、本系統(tǒng)的設計1.1系統(tǒng)功能模塊圖圖1。1系統(tǒng)功能模塊圖1。2系統(tǒng)UML圖圖1。2系統(tǒng)UML圖1。3功能模塊描述與主要類描述本程序綜合運用面對對象的設計方法,主要運用了STL中的map來儲存從文件讀出的數據。模塊一:同學端模塊功能(1)查看課程:此模塊通過SearchAllCourse()函數,在界面上顯示全部可選課程。(2)選擇課程:此模塊通過choosecourse()函數,通過輸入你要選擇的課程號進行選課。(3)退選課程:此模塊通過Deletecourse()函數,用map中的erase()函數,刪除已選課程。(4)查看已選課程:此模塊通過Searchcourse()函數,將顯示該同學所選課程的情況.模塊二:管理端各功能:增加同學:此模塊調用了頭文件為student。h里的成員和GL類里的AddStudent()成員函數,要求用戶輸入同學的相關信息。如果學號相同,系統(tǒng)將會提示該同學已存在,然后自動返回管理端。增加課程:此模塊調用GL類里的函數AddCourse(),要求用戶輸入課程相關信息。如果課程號相同,系統(tǒng)會提示課程已存在,并自動返回管理端。刪除同學通過輸入學號,程序調用函數DeleteStudent(),刪除該同學相關信息,然后自動返回管理端。如果要刪除的學號不存在,則系統(tǒng)提示該同學不存在,然后自動返回管理端。刪除課程通過輸入課程號,程序調用函數DeleteCourse(),刪除該課程相關信息,然后自動返回管理端。如果要刪除的課程號不存在,則系統(tǒng)提示該課程不存在,然后自動返回管理端。修改課程信息通過輸入課程號,程序會進入修改課程信息界面,通過switch()函數,用戶可選擇需要修改的項目。修改同學信息通過輸入學號號,程序會進入修改同學信息界面,通過switch()函數,用戶可選擇需要修改的項目.查看選課情況該模塊顯示可選的課程信息。查看全部同學該模塊顯示已存在的同學信息。本同學選課系統(tǒng)采納了面對對象的程序設計方法。全部的方法均以類為基礎.所涉及的類包括:(1)基礎類classPeople基礎人員信息類:該類是一個基類,設置了包括姓名、性別、年齡、電話的基本信息及相關的構造函數,接口函數,修改私有成員函數??梢越o同學類繼承。classStudent同學信息類:該類繼承了People類,增加了學號,學院,所選課程的信息。classCourse課程信息類:該類設置了一些基本的課程信息,包括課程號、課程名稱、學分、授課老師、分類.(2)功能類classXS同學管理類:該類定義了前文模塊一同學登錄端里面的四個功能的實現(xiàn)。此類的作用在于將同學登陸端的功能集成并定義使用的主要方法。classGL系統(tǒng)管理類:該類定義了前文模塊二系統(tǒng)登錄端里面的八個功能的實現(xiàn)。此類的作用在于將系統(tǒng)登陸端的功能集成并定義使用的主要方法.1。4選課流程圖圖1。3選課流程圖二、本系統(tǒng)的實現(xiàn)過程主函數里調用map類,通過學號和課程號自動排序同學信息和課程信息,讀寫文件student、course初始化同學信息以及課程信息.再調用while語句循環(huán)同學管理系統(tǒng)、同學選課端、系統(tǒng)管理端,以滿意用戶輸入需求。相關代碼: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〈<”請輸入學號:”; cin〉〉sn; cout〈〈"請輸入密碼:”; cin>〉sm; if(password(sn,sm)) { map<int,Student〉::iteratoritor=students。find(sn); if(itor==students。end()) cout〈<"該同學不存在!"〈<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〈〈”該同學不存在或者密碼輸入錯誤!”<〈endl; } if(a==2) { while(a2=adminmenu()) { GL_gl; switch(a2) { case1:_gl。AddStudent(students);break;//增加同學 case2:_gl.AddCourse(courses);break;//增加課程 case3:_gl.DeleteStudent(students);break;//刪除同學 case4:_gl。DeleteCourse(courses);break;//刪除課程 case5:_gl。ModifyStudent(students);break;//修改同學信息 case6:_gl.ModifyCourse(courses);break;//修改課程信息 case7:_gl。SearchCourse(courses);break;//查詢全部課程 case8:_gl.SearchStudent(students);break;//查詢全部同學 } } } }}相關代碼:intmainmenu(){ intn; system("cls"); 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。同學選課端|\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;}同學選課端:通過已存的password。txt文件里的學號及相關密碼,可以進入同學登錄端界面相關代碼:intstudentmenu(){ intn; cout〈〈”\t\t========================================\n" <〈"\t\t||\n” 〈〈"\t\t|同學登陸端|\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;}當“請選擇操作方式”語句下輸入1時,程序執(zhí)行以下語句:voidXS::SearchAllCourse(std::map<int,Course>&courses)//查詢全部課程{ 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)〈〈"學分" 〈〈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++; }}當“請選擇操作方式”語句下輸入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()); } }當“請選擇操作方式”語句下輸入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)登錄端:相關代碼: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。增加同學|\n" <<"\t\t|2。增加課程|\n" <<”\t\t|3。刪除同學|\n” <<”\t\t|4。刪除課程|\n" <〈”\t\t|5。修改同學信息|\n" 〈<"\t\t|6。修改課程信息|\n” <<”\t\t|7。查看選課情況|\n” 〈<"\t\t|8。查看全部同學|\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;}當“請選擇操作方式”語句下輸入1時,程序執(zhí)行以下語句:voidGL::AddStudent(map<int,Student>&students)//增加同學{ charname[20]; charsex; intage; charphone[20]; intno; charschool[20]; charcourse[20]; cout<<”請輸入學號:”; 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〈<”請輸入學院:"; cin〉〉school; cout〈〈endl<<"請輸入課程:"; cin〉〉course; Studentstu(name,sex,age,phone,no,school,course); students.insert(make_pair(no,stu)); } else cout〈<"該同學已存在!”〈<endl; }增加課程同理;當“請選擇操作方式"語句下輸入3時,程序執(zhí)行以下語句:調用了erase()函數刪除學號所對應的相關信息voidGL::DeleteStudent(std::map<int,Student>&students){ intno; cout〈〈"請輸入學號:"; cin〉〉no; map〈int,Student〉::iteratoritor=students.find(no); if(itor==students.end()) cout<<”該同學不存在!"〈〈endl; else students.erase(itor); }刪除課程同理;當“請選擇操作方式”語句下輸入5時,程序執(zhí)行以下語句:Switch()語句自動跳轉執(zhí)行指令,提示用戶輸入相關信息.voidGL::ModifyStudent(std::map<int,Student〉&students){ intn,m; cout〈<”請輸入學號:”; cin>〉n; map〈int,Student〉::iteratoritor=students.find(n); if(itor==students.end()) cout〈<”該同學不存在!"〈〈endl; else { cout<<”***********************\n" <<”**\n" 〈<”*1.修改姓名*\n” <<"*2。修改性別*\n” <〈”*3。修改年齡*\n” 〈〈”*4。修改電話*\n" 〈〈”*5。修改學院*\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; } }}修改課程同理;查看同學全部同學,執(zhí)行以下語句setiosflags(ios_base::left)語句將顯示內容規(guī)范化,統(tǒng)一左對齊。GL::SearchStudent(std::map<int,Student〉&students){ map<int,Student>::iteratoritor=students.begin(); cout<〈setiosflags(ios_base::left) 〈<setw(6)<〈”學號” <<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)〈〈"學院" <<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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論