c++課程設(shè)計(jì)之學(xué)生選修課程系統(tǒng)設(shè)計(jì)(共24頁(yè))_第1頁(yè)
c++課程設(shè)計(jì)之學(xué)生選修課程系統(tǒng)設(shè)計(jì)(共24頁(yè))_第2頁(yè)
c++課程設(shè)計(jì)之學(xué)生選修課程系統(tǒng)設(shè)計(jì)(共24頁(yè))_第3頁(yè)
c++課程設(shè)計(jì)之學(xué)生選修課程系統(tǒng)設(shè)計(jì)(共24頁(yè))_第4頁(yè)
c++課程設(shè)計(jì)之學(xué)生選修課程系統(tǒng)設(shè)計(jì)(共24頁(yè))_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、C+程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告學(xué)生選修課程系統(tǒng)設(shè)計(jì)一、需求分析計(jì)算機(jī)技術(shù)作為信息化的核心技術(shù)受到全社會(huì)的普遍重視。如今,計(jì)算機(jī)的使用也已不再局限于科學(xué)計(jì)算,它已進(jìn)入人類社會(huì)的各個(gè)領(lǐng)域并發(fā)揮著越來(lái)越重要的作用。深入掌握計(jì)算機(jī)專業(yè)知識(shí)、具有良好系統(tǒng)設(shè)計(jì)與分析能力的計(jì)算機(jī)高級(jí)專業(yè)人才在社會(huì)上深受歡迎。而系統(tǒng)設(shè)計(jì)與分析能力的培養(yǎng)需要通過(guò)實(shí)踐訓(xùn)練才能獲得。通過(guò)計(jì)算機(jī)對(duì)一些系統(tǒng)的管理已經(jīng)成為一種系統(tǒng)、便捷的方式。本課程設(shè)計(jì)就是用C+設(shè)計(jì)學(xué)生選課系統(tǒng)的問(wèn)題,實(shí)現(xiàn)對(duì)學(xué)生選課的管理操作。本課程設(shè)計(jì)的目的是設(shè)計(jì)一個(gè)學(xué)生選修課程系統(tǒng)的程序,用來(lái)實(shí)現(xiàn)對(duì)學(xué)生成績(jī)的管理,其中包括學(xué)生信息的文件讀入、添加、查詢、保存、刪除以及相

2、應(yīng)的課程信息管理。程序設(shè)計(jì)了兩個(gè)類,其中一個(gè)包含學(xué)生的學(xué)號(hào)、姓名、選課數(shù)以及選修總學(xué)分,另一個(gè)則包含了課程的信息,包括課程編號(hào)、課程名稱、課程性質(zhì)、課時(shí)等等。然后通過(guò)數(shù)組、向量、集合等來(lái)實(shí)現(xiàn)學(xué)生選課信息的記錄、保存,刪除等相關(guān)操作從而達(dá)到管理學(xué)生選課的。二、設(shè)計(jì)要求假定有n門(mén)課程,每門(mén)課程有課程編號(hào)、課程名稱、課程性質(zhì)、總學(xué)時(shí)、授課學(xué)時(shí)、實(shí)驗(yàn)學(xué)時(shí)、學(xué)分、開(kāi)課學(xué)期等信息。學(xué)生可以按要求(如每個(gè)學(xué)生總學(xué)分不得少于20、沒(méi)學(xué)期不能超過(guò)3門(mén)課程,每門(mén)課程不得超過(guò)50個(gè)人,但不能少于10否則該課程不開(kāi)設(shè))自由選課。使之能提供一些功能:1) 課程信息錄入功能2) 課程信息瀏覽功能3) 查詢功能:(按課程性

3、質(zhì)查詢、按課程學(xué)分查詢,查詢每個(gè)學(xué)生的選修信息、查詢每門(mén)課程的選修信息等)4) 學(xué)生選修課程5) 修改課程或選課信息(根據(jù)課程編號(hào)或名稱修改課程信息、根據(jù)學(xué)生姓名修改選課信息);6) 刪除課程或選課信息(根據(jù)課程編號(hào)或名稱刪除課程信息、根據(jù)學(xué)生姓名刪除選課信息);三、總體設(shè)計(jì)我們?cè)O(shè)計(jì)一個(gè)程序?qū)W(xué)生選課信息進(jìn)行保存,對(duì)學(xué)生的選課信息進(jìn)行可執(zhí)行操作,如添加、刪除、查詢等等。該程序包括以下功能模塊: 1) 學(xué)生信息添加模塊:能夠輸入學(xué)生基本信息并保存到文件中。2) 查看模塊:顯示所有可選修課程的信息。3) 查詢:顯示所有符合要求的課程信息。4) 選課:顯示學(xué)生已選課程信息和選課,刪除已選課程信息。5

4、) 退出系統(tǒng)。為了完善系統(tǒng),我們還添加了一個(gè)登錄界面??紤]到添加課程信息的功能只適合老師,因此我們?cè)O(shè)置了添加課程的權(quán)限設(shè)置(必須輸入密碼)。我們建立了兩個(gè)文件用來(lái)保存學(xué)生信息和課程信息。(student.txt和subject.txt)該系統(tǒng)功能說(shuō)明:1) 系統(tǒng)以菜單方式工作 2) 課程信息錄入功能(課程信息用文件保存)輸入 3) 課程信息瀏覽功能輸出 4) 查詢功能:(至少一種查詢方式)算法 5) 按學(xué)分查詢 6) 按課程性質(zhì)查詢 7) 學(xué)生選修課程(可選項(xiàng)) 四、詳細(xì)設(shè)計(jì)該成序包含的主要函數(shù)功能說(shuō)明: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(); /提取選課編號(hào)的函數(shù)void tq2();void AddStuInfo();/添加學(xué)生信息的函數(shù)void SaveStuInfo(); /保存學(xué)生信息到文件中void del();/刪除已選課程信息的函數(shù)主要的數(shù)據(jù)

6、結(jié)構(gòu)表: 序號(hào)成員名數(shù)據(jù)類型字段含義1namchar姓名2numchar學(xué)號(hào)3zxfint總學(xué)分4cntint選課總數(shù)5namechar課程名稱6numint課程編號(hào)7chachar 課程性質(zhì)8Timeint課程總學(xué)時(shí)9time1int授課總學(xué)時(shí)10time2int實(shí)驗(yàn)(上機(jī))總學(xué)時(shí)11xfint課程學(xué)分12kkxqchar開(kāi)課學(xué)期五、程序代碼#include#include#include#include#include#define N 10using namespace std;int F;class subject /建立一個(gè)課程類,保存課程信息public:int num;char

7、name30;char cha20;int Time,time1,time2,xf;char kkxq20;S;class student /建立一個(gè)學(xué)生類,保存學(xué)生信息public:char nam10;char num15;int zxf;int cnt;Stu;vector v; /聲明一個(gè) 指向課程信息的向量vector z; /聲明一個(gè) 指向?qū)W生信息的向量set T; /建立一個(gè) 集合vector set TT; /建立一個(gè) 向量集合set :iterator it; /建立一個(gè) 迭代器void XuanKeMenu(); /聲明一個(gè) 選課主菜單函數(shù)int find(int no);

8、void Save();void DL(); /聲明一個(gè)登錄界面的函數(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); /打開(kāi)學(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 請(qǐng)輸入密碼:; /對(duì)添加課程進(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 請(qǐng)輸入密碼:;int x=_cnt;while(x-)cout*;if(password1 != password2) coutnnttt 密碼錯(cuò)誤!;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請(qǐng)選擇查詢方式: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é)分 開(kāi)課endl;coutt 編號(hào) 名稱 性質(zhì) 學(xué)時(shí) 學(xué)時(shí) 上機(jī)學(xué)時(shí) 學(xué)分 學(xué)期endlendl;for(int i=0;iv.size();i+)if(cnt&cnt%10=0)coutendlt = endl;coutt 按任意鍵查看下一頁(yè); getch();system(cls);coutend

16、lendlendl;coutt *endl;coutt * 課 程 信 息 *endl;coutt *endlendl;coutt 課程 課程 課程 總 授課 實(shí)驗(yàn)或 學(xué)分 開(kāi)課endl;coutt 編號(hào) 名稱 性質(zhì) 學(xué)時(shí) 學(xué)時(shí) 上機(jī)學(xué)時(shí) 學(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é)分 開(kāi)課endl;coutt 編號(hào) 名稱 性質(zhì) 學(xué)時(shí) 學(xué)時(shí) 上機(jī)學(xué)時(shí) 學(xué)分 學(xué)期endlendl;for(int i=0;iv.size();i+)if(cnt&cnt%10=0)coutendlt = endl;coutt 按任意鍵查看下一頁(yè); getch();system(cls);coutendlen

18、dlendl;coutt *endl;coutt * 課 程 信 息 *endl;coutt *endlendl;coutt 課程 課程 課程 總 授課 實(shí)驗(yàn)或 學(xué)分 開(kāi)課endl;coutt 編號(hào) 名稱 性質(zhì) 學(xué)時(shí) 學(xué)時(shí) 上機(jī)學(xué)時(shí) 學(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) /提取出選課時(shí)輸入的課程編號(hào)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é)分 開(kāi)課endl;coutt 編號(hào) 名稱 性質(zhì) 學(xué)時(shí) 學(xué)時(shí) 上機(jī)學(xué)時(shí) 學(xué)分 學(xué)期endlendl;for(int i=0; iv.size(); i+)if(i&i%10=0)coutendlt = e

21、ndl;coutendlt 請(qǐng)輸入所選課程編號(hào):; gets(str);if(strcmp(str,) tq1(str);/,system(cls);coutendlendl;coutt *endl;coutt * 課 程 信 息 *endl;coutt *endlendl;coutt 課程 課程 課程 總 授課 實(shí)驗(yàn)或 學(xué)分 開(kāi)課endl;coutt 編號(hào) 名稱 性質(zhì) 學(xué)時(shí) 學(xué)時(shí) 上機(jī)學(xué)時(shí) 學(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 請(qǐng)輸入所選課程編號(hào):; 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ù),找到想要的課程編號(hào)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é)號(hào):zF.num 已選 zF.cnt;cout門(mén)課程 已選課程總學(xué)分:zF.zxf endl;coutt =endl;coutt 已選課程信息:n;coutt 課程 課程 課程 總 授課 實(shí)驗(yàn)或 學(xué)

24、分 開(kāi)課endl;coutt 編號(hào) 名稱 性質(zhì) 學(xué)時(shí) 學(xué)時(shí) 上機(jī)學(xué)時(shí) 學(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é)號(hào):zF.num 已選 zF.cnt;cout門(mén)課程 已選課程總學(xué)分:zF.zxf endl;coutt =endl;coutt 已選課程信息:n;coutt 課程 課程 課程 總 授課 實(shí)驗(yàn)或 學(xué)分 開(kāi)課endl;coutt 編號(hào) 名稱 性質(zhì) 學(xué)時(shí) 學(xué)時(shí) 上機(jī)學(xué)時(shí) 學(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ù):提前刪除時(shí)輸入的課程編號(hào)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é)號(hào):zF.num 已選 zF.cnt;cout門(mén)課程 已選課程總學(xué)分:zF.zxf endl;coutt =endl;coutt 已選課程信息:n;coutt

28、課程 課程 課程 總 授課 實(shí)驗(yàn)或 學(xué)分 開(kāi)課endl;coutt 編號(hào) 名稱 性質(zhì) 學(xué)時(shí) 學(xué)時(shí) 上機(jī)學(xué)時(shí) 學(xué)分 學(xué)期endlendl;for(it=TTF.begin();it!=TTF.end();it+,l+)if(l&l%10=0)coutendlt = endl;couttttt請(qǐng)輸入要?jiǎng)h除的課程的編號(hào):;gets(str);if(strcmp(str,) tq2(str);system(cls);coutendlendl;coutt *endl;coutt * 學(xué) 生 選 課 *endl;coutt *endlendl;coutt 姓名:zF.nam 學(xué)號(hào):zF.num 已選 zF

29、.cnt;cout門(mén)課程 已選課程總學(xué)分:zF.zxf endl;coutt =endl;coutt 已選課程信息:n;coutt 課程 課程 課程 總 授課 實(shí)驗(yàn)或 學(xué)分 開(kāi)課endl;coutt 編號(hào) 名稱 性質(zhì) 學(xué)時(shí) 學(xué)時(shí) 上機(jī)學(xué)時(shí) 學(xué)分 學(xué)期endlendl;display(find(*it);couttttt請(qǐng)輸入要?jiǎng)h除的課程的編號(hào):;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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論