版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、目 錄一、需求分析11二、程序的主要功能11三、程序運行平臺11四、系統(tǒng)總框架圖11五、程序類的說明11六、模塊分析13七、比較有特色的函數(shù)14八、存在的不足與對策15九、程序源代碼15一、需求分析選課在大學(xué)生活中是必不可少的,為了能讓學(xué)生們更加便利的查看并選擇各種課程,自然就需要一個網(wǎng)絡(luò)結(jié)構(gòu),建立一個選課系統(tǒng),這樣可以方便管理學(xué)生和課程等內(nèi)容。二、程序的主要功能1、添加功能:添加課程以及學(xué)生的各類信息保存到一個文件中。2、刪除功能:能夠?qū)σ粋€學(xué)生或課程的信息按照編號進(jìn)行刪除。3、瀏覽功能:可以查看學(xué)生信息課程信息以及學(xué)生的選課信息。4、選課功能:學(xué)生可以通過輸入自己的學(xué)號進(jìn)入選擇界面,選擇各
2、種不同的課程。5、修改功能:用于修改錯誤的學(xué)生信息或者課程信息。三、程序運行平臺Windows8.1操作系統(tǒng)VC+6.0四、系統(tǒng)總框架圖主 函 數(shù)信息錄入信息瀏覽選擇課程刪除信息修改信息退出程序 系統(tǒng)總框架圖五、程序類的說明 student類的聲明class student public:double xuehao; char name100; char major100; char coursename100; course類的聲明class coursepublic:double coursenum;char coursename50; char coursetapy50;double x
3、uefen; double xueshi; char courseteacher50; 六、模塊分析1. 信息錄入模塊按照提示輸入所需數(shù)字,進(jìn)入添加界面后添加課程以及學(xué)生的各類信息,最終保存到一個文件中,用以之后讀取。2. 信息瀏覽模塊可以用來查看學(xué)生信息和課程信息以及學(xué)生的選課信息。3. 修改信息模塊用于修改錯誤的學(xué)生信息或者課程信息。4. 刪除信息模塊能夠?qū)σ粋€學(xué)生或課程的信息按照編號進(jìn)行刪除。5. 選擇課程模塊學(xué)生可以通過輸入自己的學(xué)號進(jìn)入選擇界面,選擇各種不同的課程。七、比較有特色的函數(shù)void selectCoures()/選課函數(shù) student stu;/用于保存將要選課的那名同
4、學(xué)的信息int countCoures=0;/用來統(tǒng)計該學(xué)生選了多少門課程int countStudent=0;/用來統(tǒng)計學(xué)生的個數(shù)loop:coutendlm_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_xuehaom_co
5、ursenum;ifstream inCourse(courses.text,ios:binary); /用于從courses.text文件中找出該同學(xué)想選擇的課程信息inCourse.seekg(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);
6、ofstream outStu(selectCourseResult.text,ios:binary|ios:app);/現(xiàn)將選課的同學(xué)信息放入選課結(jié)果的文件中outStu.write(char *)(&stu),sizeof(stu);outStu.close();cout學(xué)號為m_xuehao成功選了課程號為m_coursenum的課程!2)cout同學(xué):你選擇的課程已經(jīng)超過countCoures門了!endl;break;if(countCoures = 0)cout沒有這門課程,還要繼續(xù)選擇其他課程嗎y/n?ch;if(y=ch)|(Y=ch)goto loob;elsebreak;i
7、nCourse.close();if(countStudent=0)cout沒有這個學(xué)生,是否重新輸入y/n?ch;if(y=ch)|(Y=ch)goto loop;is.close();menu(); 八、存在的不足與對策由于設(shè)計者水平有限及時間等方面的原因,該系統(tǒng)的功能比較簡單,只能輸入較少的課程以及學(xué)生信息。些許不足請老師多多諒解。今后會學(xué)習(xí)更多的編程技巧,不斷的提高程序設(shè)計水平。九、程序源代碼#include #include#include#include #include#include using namespace std; void menu() /主菜單coutendl;c
8、out 學(xué)生選課系統(tǒng) endl;cout 1. 信息錄入 endl;cout 2. 信息瀏覽 endl;cout 3. 選擇課程 endl;cout 4. 刪除信息 endl;cout 5. 修改信息 endl;cout 6. 退出程序 endl;class student public:double xuehao; char name100; char major100; char coursename100;void set() /學(xué)生信息錄入student stu;coutendl;coutstu.xuehao;;coutstu.major;ofstream ou
9、t(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,ios:binary); while(!is.peek()is.read(char *)(& stu),sizeof(stu); cout ttstu.majorttendl; is.
10、close();menu();void cancleStudent() /刪除學(xué)生信息string xueHaoNum,line,xuehao; ifstream fin(studentInfo.text.text); fstream outfile(studentInfo.text.text,ios:trunc|ios:out); /打開一個文件進(jìn)行寫操作和使同名文件被刪除coutendl;coutxueHaoNum; while(!fin.eof() getline(fin,line); istringstream stream(line); /串流輸入xueHaoNum = line.s
11、ubstr(0,line.find( ,0);if(xuehao != xueHaoNum) outfilelineendl; outfile.close();fin.close();fstream f(studentInfo.text,ios:trunc|ios:out); /打開一個文件進(jìn)行寫操作和使同名文件被刪除ifstream outf(studentInfo.text); foutf.rdbuf();outf.close();f.close();coutendl;menu();void changestudent() /修改學(xué)生信息student stu;int mark;coute
12、ndl;coutxuehao;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);coutstu.major;cout修改完畢!endlendl;mark=48*i;menu();break;is.close();if(stu.xuehao!=xuehao)cout沒有這個學(xué)生!endlen
13、dl;menu();elseofstream os(studentInfo.text,ios:in|ios:binary); os.seekp(mark);os.write(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; coutcus.cou
14、rsenum;coutcus.coursename;coutcus.coursetapy;coutcus.xuefen;coutcus.xueshi;coutcus.courseteacher;ofstream os(courses.text,ios:binary|ios:app);os.write(char *)(&cus),sizeof(cus); os.close(); menu();void checkcourse() /瀏覽課程信息coutendl;ifstream is(courses.text,ios:binary); cout課程編碼 課程名稱 課程類型 課程學(xué)分 課程學(xué)時 主
15、講教師endl;course cus;/臨時保存課程信息while(!is.peek() /檢測文件結(jié)束 is.read(char*)(&cus),sizeof(cus); cout cus.coursenumt cus.coursenamet cus.coursetapyt cus.xuefent cus.xueshi cus.courseteacherendl; /setw()是控制輸入的寬度is.close();menu();void canclecourse() /刪除課程信息string coursenum,line,course; ifstream fin(courses.text
16、); fstream outfile(courses.text,ios:trunc|ios:out);/ 打開一個文件進(jìn)行寫操作和使同名文件被刪除coutendl;coutcoursenum; while(!fin.eof() getline(fin,line); istringstream stream(line); /串流輸入coursenum = line.substr(0,line.find( ,0);if(course != coursenum) outfilelineendl; outfile.close();fin.close();fstream f(courses.text,i
17、os:trunc|ios:out); /打開一個文件進(jìn)行寫操作和使同名文件被刪除ifstream outf(courses.text); foutf.rdbuf();outf.close();f.close(); coutendl;menu();void changecourse() /修改課程信息course cus;int mark;coutendl;coutcoursenum;ifstream is(courses.text,ios:binary); for(int i=0;!is.eof();i+)is.seekg(28*i); /對輸入文件定位,第一個參數(shù)是偏移量,第二個參數(shù)是基地址
18、is.read(char *)(& cus),sizeof(cus); if(cus.coursenum=coursenum)coutcus.coursename;coutcus.coursetapy;coutcus.xuefen;coutcus.xueshi;coutcus.courseteacher;cout修改完畢!endlendl;mark=28*i;menu();break;is.close();if(cus.coursenum!=coursenum)cout沒有這門課程!endlendl;menu();else ofstream os(courses.text,ios:in|ios
19、:binary); os.seekp(mark);os.write(char *)(& cus),sizeof(cus); os.close();void selectCoures()/選課函數(shù) student stu;int countCoures=0;int countStudent=0;loop:coutendlm_xuehao;ifstream is(studentInfo.text,ios:binary);is.seekg(0,ios:beg);while(!is.peek()is.read(char *)(&stu),sizeof(stu); /從“studentInfo.text
20、”文件中一次讀取學(xué)生的信息 if(m_xuehao = stu.xuehao)loob:countStudent+; cout請輸入學(xué)號為m_xuehaom_coursenum;ifstream inCourse(courses.text,ios:binary); /用于從courses.text文件中找出該同學(xué)想選擇的課程信息inCourse.seekg(0,ios:beg);while(!inCourse.eof()/選課核心代碼course cus;/用于此同學(xué)將要選擇的課程信息inCourse.read(char *)(&cus),sizeof(cus); if(m_coursenum
21、 = cus.coursenum) countCoures+;strcpy(stu.coursename,cus.coursename);ofstream outStu(selectCourseResult.text,ios:binary|ios:app);/現(xiàn)將選課的同學(xué)信息放入選課結(jié)果的文件中outStu.write(char *)(&stu),sizeof(stu);outStu.close();cout學(xué)號為m_xuehao成功選了課程號為m_coursenum的課程!2)cout同學(xué):你選擇的課程已經(jīng)超過countCoures門了!endl;break;if(countCoures
22、= 0)cout沒有這門課程,還要繼續(xù)選擇其他課程嗎y/n?ch;if(y=ch)|(Y=ch)goto loob;elsebreak;inCourse.close();if(countStudent=0)cout沒有這個學(xué)生,是否重新輸入y/n?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選課名稱endl;ifstream is(selectCourseResult.text,ios:binary);f
23、or(int i=0;!is.peek();i+) is.read(char*)(&stu),sizeof(stu);ttstu.majorttstu.coursenameendl; is.close();menu(); void set() /信息錄入菜單 coutendl;cout1. 錄入學(xué)生信息endl;cout2. 錄入課程信息endl;cout3. 返回前面菜單endlendl; student stu;course cus;int choose;coutchoose;switch(choose)case 1: stu.set();break; case 2: cus.set();break; case 3: menu();break;default: cout沒有這個選項,請重新輸入,謝謝!endl;set();break;void check() /查詢信息 coutendl;cout1. 查詢學(xué)生信息endl;cout2. 查詢課程信息endl;cout3. 查詢學(xué)生選課結(jié)果信息endl;cout4. 返回主要菜單endlendl;coutchoose;student stu;course cus;switch(choose)case 1: stu.checkstudent();break; case
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年廣東省江門市重點學(xué)校初一入學(xué)語文分班考試試題及答案
- 2022頭皮美塑療法技術(shù)操作規(guī)范專家共識解讀
- 返崗人員安全教育培訓(xùn)課件
- 云南國防工業(yè)職業(yè)技術(shù)學(xué)院《軟件實訓(xùn)(軍工系統(tǒng))》2024-2025 學(xué)年第一學(xué)期期末試卷(實踐課)
- 達(dá)爾文英文介紹
- 2026高考?xì)v史總復(fù)習(xí)(通史版)第1講 中華文明的起源與早期國家
- 辰州安全培訓(xùn)課件
- 車險綜合改革培訓(xùn)課件
- 內(nèi)蒙古烏蘭察布市事業(yè)單位考錄面試試題
- 煤礦地表塌陷治理方案
- 《念奴嬌 赤壁懷古》《永遇樂 京口北固亭懷古》《聲聲慢》默寫練習(xí) 統(tǒng)編版高中語文必修上冊
- 婦產(chǎn)科病史采集臨床思維
- 《半導(dǎo)體器件物理》復(fù)習(xí)題2012
- 眾辰變頻器z2400t-15gy-1說明書
- 非電量保護(hù)裝置技術(shù)說明書
- 全國行政區(qū)劃代碼
- 新華書店先進(jìn)事跡匯報
- 船體振動的衡準(zhǔn)及減振方法
- 刑事偵查卷宗
- 水泥混凝土路面滑模攤鋪機(jī)施工工法
- 兒童嚴(yán)重過敏反應(yīng)急救演示文稿
評論
0/150
提交評論