版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、C+程序設(shè)計課程設(shè)計報告學(xué)生選修課程系統(tǒng)設(shè)計一、需求分析計算機(jī)技術(shù)作為信息化的核心技術(shù)受到全社會的普遍重視。如今,計算機(jī)的使用也已不再局限于科學(xué)計算,它已進(jìn)入人類社會的各個領(lǐng)域并發(fā)揮著越來越重要的作用。深入掌握計算機(jī)專業(yè)知識、具有良好系統(tǒng)設(shè)計與分析能力的計算機(jī)高級專業(yè)人才在社會上深受歡迎。而系統(tǒng)設(shè)計與分析能力的培養(yǎng)需要通過實(shí)踐訓(xùn)練才能獲得。通過計算機(jī)對一些系統(tǒng)的管理已經(jīng)成為一種系統(tǒng)、便捷的方式。本課程設(shè)計就是用C+設(shè)計學(xué)生選課系統(tǒng)的問題,實(shí)現(xiàn)對學(xué)生選課的管理操作。本課程設(shè)計的目的是設(shè)計一個學(xué)生選修課程系統(tǒng)的程序,用來實(shí)現(xiàn)對學(xué)生成績的管理,其中包括學(xué)生信息的文件讀入、添加、查詢、保存、刪除以及相
2、應(yīng)的課程信息管理。程序設(shè)計了兩個類,其中一個包含學(xué)生的學(xué)號、姓名、選課數(shù)以及選修總學(xué)分,另一個則包含了課程的信息,包括課程編號、課程名稱、課程性質(zhì)、課時等等。然后通過數(shù)組、向量、集合等來實(shí)現(xiàn)學(xué)生選課信息的記錄、保存,刪除等相關(guān)操作從而達(dá)到管理學(xué)生選課的。二、設(shè)計要求假定有n門課程,每門課程有課程編號、課程名稱、課程性質(zhì)、總學(xué)時、授課學(xué)時、實(shí)驗(yàn)學(xué)時、學(xué)分、開課學(xué)期等信息。學(xué)生可以按要求(如每個學(xué)生總學(xué)分不得少于20、沒學(xué)期不能超過3門課程,每門課程不得超過50個人,但不能少于10否則該課程不開設(shè))自由選課。使之能提供一些功能:1) 課程信息錄入功能2) 課程信息瀏覽功能3) 查詢功能:(按課程性
3、質(zhì)查詢、按課程學(xué)分查詢,查詢每個學(xué)生的選修信息、查詢每門課程的選修信息等)4) 學(xué)生選修課程5) 修改課程或選課信息(根據(jù)課程編號或名稱修改課程信息、根據(jù)學(xué)生姓名修改選課信息);6) 刪除課程或選課信息(根據(jù)課程編號或名稱刪除課程信息、根據(jù)學(xué)生姓名刪除選課信息);三、總體設(shè)計我們設(shè)計一個程序?qū)W(xué)生選課信息進(jìn)行保存,對學(xué)生的選課信息進(jìn)行可執(zhí)行操作,如添加、刪除、查詢等等。該程序包括以下功能模塊: 1) 學(xué)生信息添加模塊:能夠輸入學(xué)生基本信息并保存到文件中。2) 查看模塊:顯示所有可選修課程的信息。3) 查詢:顯示所有符合要求的課程信息。4) 選課:顯示學(xué)生已選課程信息和選課,刪除已選課程信息。5
4、) 退出系統(tǒng)。為了完善系統(tǒng),我們還添加了一個登錄界面??紤]到添加課程信息的功能只適合老師,因此我們設(shè)置了添加課程的權(quán)限設(shè)置(必須輸入密碼)。我們建立了兩個文件用來保存學(xué)生信息和課程信息。(student.txt和subject.txt)該系統(tǒng)功能說明:1) 系統(tǒng)以菜單方式工作 2) 課程信息錄入功能(課程信息用文件保存)輸入 3) 課程信息瀏覽功能輸出 4) 查詢功能:(至少一種查詢方式)算法 5) 按學(xué)分查詢 6) 按課程性質(zhì)查詢 7) 學(xué)生選修課程(可選項(xiàng)) 四、詳細(xì)設(shè)計該成序包含的主要函數(shù)功能說明:void XuanKeMenu(); / 選課主菜單函數(shù)int find(int no);
5、 void Save(); void DL();/登錄界面的函數(shù)void MainMenu();void output(); void Load(); /載入文件信息的函數(shù)void Load2();void quit();void add();void ChaXun();void chaxun1();void chaxun2();void xuanke();void tq1(); /提取選課編號的函數(shù)void tq2();void AddStuInfo();/添加學(xué)生信息的函數(shù)void SaveStuInfo(); /保存學(xué)生信息到文件中void del();/刪除已選課程信息的函數(shù)主要的數(shù)據(jù)
6、結(jié)構(gòu)表: 序號成員名數(shù)據(jù)類型字段含義1namchar姓名2numchar學(xué)號3zxfint總學(xué)分4cntint選課總數(shù)5namechar課程名稱6numint課程編號7chachar 課程性質(zhì)8Timeint課程總學(xué)時9time1int授課總學(xué)時10time2int實(shí)驗(yàn)(上機(jī))總學(xué)時11xfint課程學(xué)分12kkxqchar開課學(xué)期五、程序代碼#include#include#include#include#include#define N 10using namespace std;int F;class subject /建立一個課程類,保存課程信息public:int num;char
7、name30;char cha20;int Time,time1,time2,xf;char kkxq20;S;class student /建立一個學(xué)生類,保存學(xué)生信息public:char nam10;char num15;int zxf;int cnt;Stu;vector v; /聲明一個 指向課程信息的向量vector z; /聲明一個 指向?qū)W生信息的向量set T; /建立一個 集合vector set TT; /建立一個 向量集合set :iterator it; /建立一個 迭代器void XuanKeMenu(); /聲明一個 選課主菜單函數(shù)int find(int no);
8、void Save();void DL(); /聲明一個登錄界面的函數(shù)void MainMenu();void output();void Load(); /聲明載入文件信息的函數(shù)void Load2();void quit();void add();void ChaXun();void chaxun1();void chaxun2();void xuanke();void tq1(); /聲明提取信息的函數(shù)void tq2();void AddStuInfo(); /聲明添加學(xué)生信息的函數(shù)void del();void AddStuInfo()FILE *fp;fp=fopen(d:stud
9、ent.txt,a);fseek(fp,0,2); /打開學(xué)生信息文件system(cls);coutendlendlendlendlendl;couttt*endl;couttt* 學(xué)生選課系統(tǒng) *endl;couttt*endlendl;coutStu.num;coutStu.nam;St=Stu.zxf=0;fprintf(fp,%s %s %d %dn,Stu.num,Stu.nam,St,Stu.zxf); /存入文件z.push_back (Stu); T.clear(); TT.push_back(T); /用向量指向?qū)W生信息fclose(fp);void add()string
10、 password1,password2;char password20;int _cnt=0;FILE *fp;fp=fopen(d:password,r);fscanf(fp,%s,password); password2=password;fclose(fp);system(cls);coutendlendlendl;coutt *endl;coutt * 課 程 信 息 *endl;coutt *endlendl;coutt 請輸入密碼:; /對添加課程進(jìn)行權(quán)限設(shè)置char ch;while(ch=getch()if(ch=13) break;if(ch != 8) putchar(*
11、); password1 += ch;_cnt+;elseif(_cnt)password1.erase(password1.end()-1);_cnt-;system(cls);coutendlendlendl;coutt *endl;coutt * 課 程 信 息 *endl;coutt *endlendl;coutt 請輸入密碼:;int x=_cnt;while(x-)cout*;if(password1 != password2) coutnnttt 密碼錯誤!;getch(); MainMenu(); A: system(cls);coutendlendlendl;coutt *e
12、ndl;coutt * 課 程 信 息 *endl;coutt *endlendl;coutS.num;coutS.name;coutS.cha;coutS.Time;coutS.time1;coutS.time2;coutS.xf;coutS.kkxq;v.push_back(S);Save();coutendls;if(s0=Y|s0=y) goto A;else MainMenu();void Save() /保存已選的課程信息FILE *fp;fp=fopen(d:subject.txt,w);for(int i=0;iv.size();i+)fprintf(fp,%d %s %s %
13、d %d %d %d %sn,vi.num,,vi.cha,vi.Time,vi.time1,vi.time2,vi.xf,vi.kkxq);fclose(fp);void SaveStuInfo() /保存學(xué)生信息FILE *fp;fp=fopen(d:student.txt,w);for(int i=0;iz.size();i+)fprintf(fp,%s %s %d %d,zi.num,zi.nam,t,zi.zxf);for(it=TTi.begin(); it!=TTi.end(); it+)fprintf(fp, %d,*it);fprintf(fp,n);
14、fclose(fp);void quit() /退出函數(shù)exit(1);void ChaXun() /查詢主菜單函數(shù)system(cls);coutendlendlendl;coutt *endl;coutt * 課 程 信 息 *endl;coutt *endlendl;couttttt請選擇查詢方式:ntttt1學(xué)分查詢ntttt2課程性質(zhì)查詢ntttt0返回主菜單nn;coutchoice;if(choice=0&choice3)if(choice=1) chaxun1();if(choice=2) chaxun2();if(choice=0) MainMenu();else ChaXu
15、n();void chaxun1() /按學(xué)分方式查詢system(cls);int cnt=0;coutendlendlendl;coutt *endl;coutt * 課 程 信 息 *endl;coutt *endlendl;coutkey;coutt 課程 課程 課程 總 授課 實(shí)驗(yàn)或 學(xué)分 開課endl;coutt 編號 名稱 性質(zhì) 學(xué)時 學(xué)時 上機(jī)學(xué)時 學(xué)分 學(xué)期endlendl;for(int i=0;iv.size();i+)if(cnt&cnt%10=0)coutendlt = endl;coutt 按任意鍵查看下一頁; getch();system(cls);coutend
16、lendlendl;coutt *endl;coutt * 課 程 信 息 *endl;coutt *endlendl;coutt 課程 課程 課程 總 授課 實(shí)驗(yàn)或 學(xué)分 開課endl;coutt 編號 名稱 性質(zhì) 學(xué)時 學(xué)時 上機(jī)學(xué)時 學(xué)分 學(xué)期endlendl;if(vi.xf=key)cnt+;printf(t %3d%12s%8s%4d%6d%8d%8d%7sn,vi.num,,vi.cha,vi.Time,vi.time1,vi.time2,vi.xf,vi.kkxq);coutendls;if(s0=Y|s0=y) chaxun1();else MainMenu()
17、;void chaxun2() /按課程性質(zhì)查詢system(cls);int cnt=0;coutendlendlendl;coutt *endl;coutt * 課 程 信 息 *endl;coutt *endlendl;coutkey;coutt 課程 課程 課程 總 授課 實(shí)驗(yàn)或 學(xué)分 開課endl;coutt 編號 名稱 性質(zhì) 學(xué)時 學(xué)時 上機(jī)學(xué)時 學(xué)分 學(xué)期endlendl;for(int i=0;iv.size();i+)if(cnt&cnt%10=0)coutendlt = endl;coutt 按任意鍵查看下一頁; getch();system(cls);coutendlen
18、dlendl;coutt *endl;coutt * 課 程 信 息 *endl;coutt *endlendl;coutt 課程 課程 課程 總 授課 實(shí)驗(yàn)或 學(xué)分 開課endl;coutt 編號 名稱 性質(zhì) 學(xué)時 學(xué)時 上機(jī)學(xué)時 學(xué)分 學(xué)期endlendl;if(!strcmp(vi.cha,key)cnt+;printf(t %3d%12s%8s%4d%6d%8d%8d%7sn,vi.num,,vi.cha,vi.Time,vi.time1,vi.time2,vi.xf,vi.kkxq);coutendls;if(s0=Y|s0=y) chaxun2();else Main
19、Menu();void tq1(char *str) /提取出選課時輸入的課程編號string t=;int i=0,cont=0;while(stri)if(isalnum(stri) t += stri;elseint tmp=atoi(t.c_str();if(TTF.find(tmp)!=TTF.end() t=;i+; continue;zF.zxf += vfind(tmp).xf;TTF.insert(tmp); t=;cont+;i+;/int tmp=atoi(t.c_str();/coutt ;system(pause);if(TTF.find(tmp)=TTF.end()
20、cont+;TTF.insert(tmp);zF.zxf += vfind(tmp).xf;zF.cnt += cont;void xuanke() /選課函數(shù):執(zhí)行選課功能char str100;system(cls);coutendlendl;coutt *endl;coutt * 課 程 信 息 *endl;coutt *endlendl;coutt 課程 課程 課程 總 授課 實(shí)驗(yàn)或 學(xué)分 開課endl;coutt 編號 名稱 性質(zhì) 學(xué)時 學(xué)時 上機(jī)學(xué)時 學(xué)分 學(xué)期endlendl;for(int i=0; iv.size(); i+)if(i&i%10=0)coutendlt = e
21、ndl;coutendlt 請輸入所選課程編號:; gets(str);if(strcmp(str,) tq1(str);/,system(cls);coutendlendl;coutt *endl;coutt * 課 程 信 息 *endl;coutt *endlendl;coutt 課程 課程 課程 總 授課 實(shí)驗(yàn)或 學(xué)分 開課endl;coutt 編號 名稱 性質(zhì) 學(xué)時 學(xué)時 上機(jī)學(xué)時 學(xué)分 學(xué)期endlendl;printf(t %3d%12s%8s%4d%6d%8d%8d%7sn,vi.num,,vi.cha,vi.Time,vi.time1,vi.time2,vi.x
22、f,vi.kkxq);coutendlt =;coutendlt 請輸入所選課程編號:; gets(str);if(strcmp(str,) tq1(str);SaveStuInfo();if(zF.zxf60)coutx;if(x0=y|x0=Y) xuanke();else XuanKeMenu();else XuanKeMenu();int find(int no) /尋找函數(shù),找到想要的課程編號for(int i=0;iv.size();i+)if(vi.num=no) return i;void display(int i)printf(t %3d%12s%8s%4d%6d%8d%8
23、d%7sn,vi.num,,vi.cha,vi.Time,vi.time1,vi.time2,vi.xf,vi.kkxq);void XuanKeMenu() /選課菜單函數(shù)system(cls);int choice,l=0;coutendlendl;coutt *endl;coutt * 學(xué) 生 選 課 *endl;coutt *endlendl;coutt 姓名:zF.nam 學(xué)號:zF.num 已選 zF.cnt;cout門課程 已選課程總學(xué)分:zF.zxf endl;coutt =endl;coutt 已選課程信息:n;coutt 課程 課程 課程 總 授課 實(shí)驗(yàn)或 學(xué)
24、分 開課endl;coutt 編號 名稱 性質(zhì) 學(xué)時 學(xué)時 上機(jī)學(xué)時 學(xué)分 學(xué)期endlendl;for(it=TTF.begin();it!=TTF.end();it+,l+)if(l&l%10=0)coutendlt = endl;coutchoice; getchar();if(choice=1) xuanke();else if(choice=2) del();else if(choice=0) MainMenu();else if(choice=3) ;else XuanKeMenu();system(cls);coutendlendl;coutt *endl;coutt * 學(xué) 生
25、 選 課 *endl;coutt *endlendl;coutt 姓名:zF.nam 學(xué)號:zF.num 已選 zF.cnt;cout門課程 已選課程總學(xué)分:zF.zxf endl;coutt =endl;coutt 已選課程信息:n;coutt 課程 課程 課程 總 授課 實(shí)驗(yàn)或 學(xué)分 開課endl;coutt 編號 名稱 性質(zhì) 學(xué)時 學(xué)時 上機(jī)學(xué)時 學(xué)分 學(xué)期endlendl;display(find(*it);coutendlt = endl;coutchoice; getchar();if(choice=1) xuanke();else if(choice=2) del();else
26、if(choice=0) MainMenu();else XuanKeMenu();void tq2(char *str) /提取函數(shù):提前刪除時輸入的課程編號string t=;int i=0,cont=0;while(stri)if(isalnum(stri) t += stri;elseint tmp=atoi(t.c_str();set:iterator _t=TTF.find(tmp);if(_t!=TTF.end()t=;TTF.erase(_t);zF.cnt-;zF.zxf-=vfind(tmp).xf;i+;int tmp=atoi(t.c_str();set:iterato
27、r _t=TTF.find(tmp);if(_t!=TTF.end()t=;TTF.erase(_t);zF.cnt-;zF.zxf-=vfind(tmp).xf;void del() /刪除已選課程信息int m,l=0,k=0;char str100;system(cls);coutendlendl;coutt *endl;coutt * 學(xué) 生 選 課 *endl;coutt *endlendl;coutt 姓名:zF.nam 學(xué)號:zF.num 已選 zF.cnt;cout門課程 已選課程總學(xué)分:zF.zxf endl;coutt =endl;coutt 已選課程信息:n;coutt
28、課程 課程 課程 總 授課 實(shí)驗(yàn)或 學(xué)分 開課endl;coutt 編號 名稱 性質(zhì) 學(xué)時 學(xué)時 上機(jī)學(xué)時 學(xué)分 學(xué)期endlendl;for(it=TTF.begin();it!=TTF.end();it+,l+)if(l&l%10=0)coutendlt = endl;couttttt請輸入要刪除的課程的編號:;gets(str);if(strcmp(str,) tq2(str);system(cls);coutendlendl;coutt *endl;coutt * 學(xué) 生 選 課 *endl;coutt *endlendl;coutt 姓名:zF.nam 學(xué)號:zF.num 已選 zF
29、.cnt;cout門課程 已選課程總學(xué)分:zF.zxf endl;coutt =endl;coutt 已選課程信息:n;coutt 課程 課程 課程 總 授課 實(shí)驗(yàn)或 學(xué)分 開課endl;coutt 編號 名稱 性質(zhì) 學(xué)時 學(xué)時 上機(jī)學(xué)時 學(xué)分 學(xué)期endlendl;display(find(*it);couttttt請輸入要刪除的課程的編號:;gets(str);if(strcmp(str,) tq2(str);SaveStuInfo();XuanKeMenu();void Load() /載入函數(shù):載入課程信息(文件此前已建立)FILE *fp1;bool f=1;fp1=fopen(d:subject.txt,r);if(fp1=NULL) f=0;while(f&!feof(fp1)fscanf(fp1,%d%s%s%d%d%d%d%s,&S.num,S.name,S.cha,&S.Time,&S.time1,&S.time2,&S.xf,S.kkxq);v.push_back(S)
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度軟件開發(fā)與維護(hù)合同(云計算平臺)3篇
- 2025年新能源汽車配套碳晶板采購及售后服務(wù)合同3篇
- 2025-2030年中國零件柜行業(yè)發(fā)展現(xiàn)狀及前景趨勢分析報告新版
- 2025-2030年中國鍍金設(shè)備市場前景趨勢調(diào)研及發(fā)展戰(zhàn)略分析報告
- 2025-2030年中國銀杏葉制劑市場供需規(guī)模及前景趨勢預(yù)測報告
- 2025-2030年中國酮洛芬腸溶膠囊行業(yè)發(fā)展?fàn)顩r及營銷戰(zhàn)略研究報告
- 2025-2030年中國退熱貼行業(yè)市場運(yùn)行狀況及投資前景分析報告
- 個人留學(xué)貸款合同范本(2024版)
- 2025年度承包山地造林種植及后期管護(hù)服務(wù)合同范本3篇
- 2025年新型防水砂漿購銷合同示范文本5篇
- 青島版(五年制)四年級下冊小學(xué)數(shù)學(xué)全冊導(dǎo)學(xué)案(學(xué)前預(yù)習(xí)單)
- 退學(xué)費(fèi)和解協(xié)議書模板
- 2024至2030年中國對氯甲苯行業(yè)市場全景調(diào)研及發(fā)展趨勢分析報告
- 智能教育輔助系統(tǒng)運(yùn)營服務(wù)合同
- 心功能分級及護(hù)理
- DLT 572-2021 電力變壓器運(yùn)行規(guī)程
- 重慶育才中學(xué)2025屆化學(xué)九上期末教學(xué)質(zhì)量檢測試題含解析
- 成都市2022級(2025屆)高中畢業(yè)班摸底測試(零診)數(shù)學(xué)試卷(含答案)
- 【云南省中藥材出口現(xiàn)狀、問題及對策11000字(論文)】
- 服裝板房管理制度
- 河北省興隆縣盛嘉恒信礦業(yè)有限公司李杖子硅石礦礦山地質(zhì)環(huán)境保護(hù)與治理恢復(fù)方案
評論
0/150
提交評論