學(xué)生選課系統(tǒng)C++_第1頁
學(xué)生選課系統(tǒng)C++_第2頁
學(xué)生選課系統(tǒng)C++_第3頁
免費預(yù)覽已結(jié)束,剩余14頁可下載查看

下載本文檔

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

文檔簡介

1、、需求分析2、程序的主要功能2三、程序運行平臺 2.四、系統(tǒng)總框架圖 2.五、程序類的說明 3.六、模塊分析 3七、比較有特色的函數(shù) 3.7.7.八、存在的不足與對策 九、程序源代碼、需求分析選課在大學(xué)生活中是必不可少的,為了能讓學(xué)生們更加便利的查看并選擇各 種課程,自然就需要一個網(wǎng)絡(luò)結(jié)構(gòu),建立一個選課系統(tǒng),這樣可以方便管理學(xué)生 和課程等內(nèi)容。、程序的主要功能1添加功能:添加課程以及學(xué)生的各類信息保存到一個文件中。2、刪除功能:能夠?qū)σ粋€學(xué)生或課程的信息按照編號進行刪除。3、瀏覽功能:可以查看學(xué)生信息課程信息以及學(xué)生的選課信息。4、選課功能:學(xué)生可以通過輸入自己的學(xué)號進入選擇界面,選擇各種不同

2、的課程。5、修改功能:用于修改錯誤的學(xué)生信息或者課程信息。三、程序運行平臺Win dows8.1操作系統(tǒng)VC+6.0四、系統(tǒng)總框架圖系統(tǒng)總框架圖五、程序類的說明? student 類的聲明class studentpublic:double xuehao;char name100;char major100;char coursename100;? course 類的聲明class coursepublic:double coursenum;char coursename50;char coursetapy50;double xuefen;double xueshi;char coursete

3、acher50;六、模塊分析1. 信息錄入模塊 按照提示輸入所需數(shù)字,進入添加界面后添加課程以及學(xué)生的各類信息,最終保存到 一個文件中,用以之后讀取。2. 信息瀏覽模塊 可以用來查看學(xué)生信息和課程信息以及學(xué)生的選課信息。3. 修改信息模塊 用于修改錯誤的學(xué)生信息或者課程信息。4. 刪除信息模塊 能夠?qū)σ粋€學(xué)生或課程的信息按照編號進行刪除。5. 選擇課程模塊 學(xué)生可以通過輸入自己的學(xué)號進入選擇界面,選擇各種不同的課程。七、比較有特色的函數(shù)void selectCoures()/選課函數(shù)stude nt stu;/用于保存將要選課的那名同學(xué)的信息 int countCoures=0;/ 用來統(tǒng)計該

4、學(xué)生選了多少門課程int countStudent=0;/ 用來統(tǒng)計學(xué)生的個數(shù)loop:cout<<endl<<" 請輸入你的學(xué)生學(xué)號: "double m_xuehao,m_course num;/利用學(xué)號和課程號分別找出哪位同學(xué)選了哪門課cin>>m_xuehao;ifstream is("studentInfo.text",ios:binary);is.seekg(0,ios:beg);while(!is.peek()is.read(char *)(&stu),sizeof(stu); /從 “stude

5、ntlnfo.texf'文件中一次讀取學(xué)生的信息if(m_xuehao = stu.xuehao)loob:countStudent+;cout<<" 請輸入學(xué)號為 "<<m_xuehao<<" 的學(xué)生想要選擇的課程編碼 (1001-9999): "cin>>m_coursenum;ifstream in Course("courses.text",ios:b inary/ 用于從"courses.text 文件中找 出該同學(xué)想選擇的課程信息 inCourse.seek

6、g(0,ios:beg);while(!inCourse.eof()/ 選課的核心代碼course cus;用于此同學(xué)將要選擇的課程信息inCourse.read(char *)(&cus),sizeof(cus);if(m_coursenum = cus.coursenum)/ 若找到那門課程則選它countCoures+;strcpy(stu.coursename,cus.coursename);ofstream outStu("selectCourseResult.text",ios:bi nary|ios:app)現(xiàn)將選課的同學(xué)信息放入選課結(jié)果的文件中out

7、Stu.write(char *)(&stu),sizeof(stu);outStu.close();cout<<" 學(xué)號為 "<<m_xuehao<<" 成功選了課程號為 "<<m_coursenum<<"的課程!"<<endl;if(countCoures>2)cout«"同學(xué):你選擇的課程已經(jīng)超過"<<countCouresvv"門了 !"<<endl; break;if

8、(countCoures = 0)cout<<" 沒有這門課程 ,還要繼續(xù)選擇其他課程嗎 y/n?"<<endl; char ch;cin>>ch;if('y'=ch)|('Y'=ch)goto loob;elsebreak;inCourse.close();if(countStudent=0)cout<<" 沒有這個學(xué)生 ,是否重新輸入 y/n?"<<endl; char ch;cin>>ch; if('y'=ch)|('Y&

9、#39;=ch) goto loop;is.close();menu();八、存在的不足與對策只能輸入較少的課不斷的提高程序由于設(shè)計者水平有限及時間等方面的原因, 該系統(tǒng)的功能比較簡單, 程以及學(xué)生信息。些許不足請老師多多諒解。 今后會學(xué)習(xí)更多的編程技巧, 設(shè)計水平。九、程序源代碼#include<iostream>#include<ctype.h>#include<string>#include<iomanip>#include<fstream>#include<sstream> using namespace std;

10、void menu() / 主菜單cout<<endl;cout<<" 學(xué)生選課系統(tǒng) "<<endl;cout<<" 1.信息錄入"<<endl;cout<<" 2.信息瀏覽"<<endl;cout<<" 3.選擇課程"<<endl;cout<<" 4.刪除信息"<<endl;cout<<" 5.修改信息"<<endl;c

11、out<<" 6.退出程序"<<endl;class studentpublic:double xuehao;char name100;char major100;char coursename100;void set() / 學(xué)生信息錄入student stu;cout<<endl;cout<<" 請輸入學(xué)生學(xué)號 : "cin>>stu.xuehao;cout<<" 請輸入學(xué)生姓名 : " cin>>;cout<<&quo

12、t; 請輸入學(xué)生專業(yè) : "cin>>stu.major;ofstream out("studentInfo.text",ios:app|ios:binary);out.write(char *)(&stu),sizeof(stu);out.close();menu();void checkstudent() / 查詢學(xué)生信息student stu;cout<<" 學(xué)生學(xué)號 t 學(xué)生姓名 t 所學(xué)專業(yè) "<<endl;ifstream is("studentInfo.text",i

13、os:binary);while(!is.peek()is.read(char *)(& stu),sizeof(stu);cout<<" "<<stu.xuehao<<"tt"<<<<"tt"<<stu.major<<"tt"<<endl;is.close();menu();void cancleStudent() / 刪除學(xué)生信息string xueHaoNum,line,xuehao;/ 打

14、開一個文件進行寫操作和使同名文 件被刪除cout<<endl;cout<<" 請輸入您要刪除學(xué)生的學(xué)號 : "cin>>xueHaoNum;while(!fin.eof()getline(fin,line);istringstream stream(line); / 串流輸入xueHaoNum = line.substr(0,line.find(" ",0);if(xuehao != xueHaoNum) outfile<<line<<endl;outfile.close();fin.close

15、();fstream f("studentInfo.text",ios:trunc|ios:out); / 打開一個文件進行寫操作和使同名文件被刪 除ifstream outf("studentInfo.text");f<<outf.rdbuf();outf.close();f.close();cout<<endl;menu();void changestudent() / 修改學(xué)生信息student stu;int mark;cout<<endl;cout<<" 請輸入需要修改信息的學(xué)生學(xué)號 &

16、quot;double xuehao;cin>>xuehao;ifstream is("studentInfo.text",ios:binary);for(int i=0;!is.eof();i+)is.seekg(48*i); / 對輸入文件定位,第一個參數(shù)是偏移量,第二個參數(shù)是基地址 is.read(char *)(&stu),sizeof(stu);if(stu.xuehao=xuehao)cout<<" 請輸入要修改的學(xué)生姓名 "cin>>;cout<<" 請輸入要

17、修改的學(xué)生專業(yè) "cin>>stu.major;cout<<" 修改完畢 !"<<endl<<endl;mark=48*i;menu();break;is.close();if(stu.xuehao!=xuehao)cout<<" 沒有這個學(xué)生 !"<<endl<<endl;menu();elseofstream os("studentInfo.text",ios:in|ios:binary); os.seekp(mark);os.write

18、(char *)(&stu),sizeof(stu);os.close();class course / 課程類public:double coursenum;char coursename50;char coursetapy50;double xuefen;double xueshi;char courseteacher50;void set() / 課程信息錄入course cus;cout<<" 請輸入課程編碼 : "cin>>cus.coursenum;cout<<" 請輸入課程名稱 : "cin>

19、;>cus.coursename;cout<<" 請輸入課程類型 : "cin>>cus.coursetapy;cout<<" 請輸入課程學(xué)分 : "cin>>cus.xuefen;cout<<" 請輸入課程學(xué)時 : "cin>>cus.xueshi;cout<<" 請輸入主講教師 : "cin>>cus.courseteacher;ofstream os("courses.text",ios:

20、binary|ios:app);os.write(char *)(&cus),sizeof(cus);os.close();menu();void checkcourse() / 瀏覽課程信息cout<<endl;ifstream is("courses.text",ios:binary);cout<<" 課程編碼 課程名稱 課程類型 課程學(xué)分 課程學(xué)時 主講教師 "<<endl; course cus;/ 臨時保存課程信息while(!is.peek() / 檢測文件結(jié)束is.read(char*)(&

21、;cus),sizeof(cus);cout<<" "<<cus.coursenum<<"t "<<cus.coursename<<"t "<<cus.coursetapy<<"t"<<cus.xuefen<<"t "<<cus.xueshi<<" "<<cus.courseteacher<<endl; /setw() 是

22、控 制輸入的寬度is.close();menu();void canclecourse() / 刪除課程信息string coursenum,line,course;ifstream fin("courses.text");fstream outfile("courses.text",ios:trunc|ios:out);/ 打開一個文件進行寫操作和使同名文件被刪 除cout<<endl;cout<<" 請輸入您要刪除課程的編碼 : "cin>>coursenum;while(!fin.eof()g

23、etline(fin,line); istringstream stream(line); / 串流輸入coursenum = line.substr(0,line.find(" ",0);if(course != coursenum)outfile<<line<<endl;outfile.close();fin.close();fstream f("courses.text",ios:trunc|ios:out); / 打開一個文件進行寫操作和使同名文件被刪除 ifstream outf("courses.text&q

24、uot;);f<<outf.rdbuf();outf.close();f.close();cout<<endl;menu();void changecourse() / 修改課程信息course cus;int mark;cout<<endl;cout<<" 請輸入要修改課程信息的編碼 "double coursenum;cin>>coursenum;ifstream is("courses.text",ios:binary);for(int i=0;!is.eof();i+)is.seekg(

25、28*i); / 對輸入文件定位,第一個參數(shù)是偏移量,第二個參數(shù)是基地址 is.read(char *)(& cus),sizeof(cus);if(cus.coursenum=coursenum)cout<<" 請輸入要修改的課程名稱 "cin>>cus.coursename;cout<<" 請輸入要修改的課程類型 "cin>>cus.coursetapy;cout<<" 請輸入要修改的課程學(xué)分 "cin>>cus.xuefen;cout<<

26、" 請輸入要修改的課程學(xué)時 "cin>>cus.xueshi;cout<<" 請輸入要修改的主講教師 "cin>>cus.courseteacher;cout<<" 修改完畢 !"<<endl<<endl;mark=28*i;menu();break;is.close();if(cus.coursenum!=coursenum)cout<<" 沒有這門課程 !"<<endl<<endl;menu();else

27、ofstream os("courses.text",ios:in|ios:binary);os.seekp(mark);os.write(char *)(& cus),sizeof(cus);os.close();void selectCoures()/ 選課函數(shù)student stu;int countCoures=0;int countStudent=0;loop:cout<<endl<<" 請輸入你的學(xué)生學(xué)號: "double m_xuehao,m_coursenum;/ 利用學(xué)號和課程號分別找出哪位同學(xué)選了哪門課

28、 cin>>m_xuehao;ifstream is("studentInfo.text",ios:binary);is.seekg(0,ios:beg);while(!is.peek()is.read(char *)(&stu),sizeof(stu); / 從“ studentInfo.text ”文件中一次讀取學(xué)生的信息 if(m_xuehao = stu.xuehao)loob:countStudent+;cout<<" 請輸入學(xué)號為 "<<m_xuehao<<" 的學(xué)生想要選擇的

29、課程編碼 (1001-9999): " cin>>m_coursenum;ifstream in Course("courses.text",ios:b in ary); / 用于從"courses.text"文件中找出該同學(xué)想選擇的 課程信息inCourse.seekg(0,ios:beg);while(!inCourse.eof()/ 選課核心代碼course cus;/ 用于此同學(xué)將要選擇的課程信息inCourse.read(char *)(&cus),sizeof(cus);if(m_coursenum = cus.

30、coursenum)countCoures+;strcpy(stu.coursename,cus.coursename);ofstream outStu("selectCourseResult.text",ios:bi nary|ios: app); 現(xiàn)將選課的同學(xué)信息放入選課結(jié)果的文件中outStu.write(char *)(&stu),sizeof(stu);outStu.close();cout<<" 學(xué)號為 "<<m_xuehao<<" 成功選了課程號為 "<<m_co

31、ursenum<<" 的課程 !"<<endl;if(countCoures>2)cout<<"同學(xué):你選擇的課程已經(jīng)超過"<<countCoures<<"門了 !"<<endl;break;if(countCoures = 0)cout<<" 沒有這門課程 ,還要繼續(xù)選擇其他課程嗎 y/n?"<<endl;char ch;cin>>ch;if('y'=ch)|('Y'=

32、ch)goto loob;elsebreak;inCourse.close();if(countStudent=0)cout<<" 沒有這個學(xué)生 ,是否重新輸入 y/n?"<<endl;char ch;cin>>ch;if('y'=ch)|('Y'=ch)goto loop;is.close();menu();void scanResult()/ 查詢選課結(jié)果student stu;/ 用于保存將要選課的那名同學(xué)的信息cout<<" 學(xué)生學(xué)號 t 學(xué)生姓名 t 所學(xué)專業(yè) t 選課名稱

33、"<<endl;ifstream is("selectCourseResult.text",ios:binary);for(int i=0;!is.peek();i+) is.read(char*)(&stu),sizeof(stu);cout<<stu.xuehao<<"tt"<<<<"tt"<<stu.major<<"tt"<<stu.coursename<<endl;

34、is.close(); menu();void set() / 信息錄入菜單cout<<endl;"<<endl;"<<endl;"<<endl<<endl;cout<<"1.錄入學(xué)生信息cout<<"2.錄入課程信息cout<<"3.返回前面菜單student stu;course cus;int choose;cout<<" 請輸入選項序號 : "cin>>choose;switch(choo

35、se)case 1: stu.set();break;case 2: cus.set();break;case 3: menu();break;default: cout<<" 沒有這個選項 ,請重新輸入 ,謝謝 !"<<endl;set();break;void check() / 查詢信息cout<<endl;cout<<"1.查詢學(xué)生信息"<<e ndl;cout<<"2.查詢課程信息"<<e ndl;cout<<"3.查詢

36、學(xué)生選課結(jié)果信息"<<e ndl;cout<<"4. 返回主要菜單"<<endl<<endl;cout<<" 請輸入選項序號 "int choose;cin>>choose;student stu;course cus;switch(choose)case 1: stu.checkstudent();break;case 2: cus.checkcourse();break;case 3: scanResult();break;case 4: menu();break;void cancle() / 刪除信息cout<<endl;"<

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論