




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
整理為word格式整理為word格式整理為word格式摘要本課程設(shè)計的目的是設(shè)計一個學(xué)生選修課程系統(tǒng)的程序,用來實現(xiàn)對學(xué)生成績的管理,其中包括學(xué)生信息的文件讀入、添加、查詢、保存、刪除以及相應(yīng)的課程信息管理。程序設(shè)計了兩個類,其中一個包含學(xué)生的學(xué)號、姓名、選課數(shù)以及選修總學(xué)分,另一個則包含了課程的信息,包括課程編號、課程名稱、課程性質(zhì)、課時等等。然后通過數(shù)組、向量、集合等來實現(xiàn)學(xué)生選課信息的記錄、保存,刪除等相關(guān)操作從而達到管理學(xué)生選課的。因為這次課程設(shè)計,我們可以熟練的使用C++語言來完成一個學(xué)生選課管理系統(tǒng)。但是編寫過程中難免會遇到錯誤,希望老師給予指導(dǎo)。整理為word格式整理為word格式整理為word格式目錄1需求分析 12概要設(shè)計 12.1對象設(shè)計 12.2設(shè)計優(yōu)缺點 13詳細設(shè)計 23.1總體設(shè)計思路 23.2類定義 23.3宏定義 33.4文件操作函數(shù) 33.5用戶操作函數(shù) 33.6其他重要函數(shù) 34 測試結(jié)果及運行效果 45 系統(tǒng)開發(fā)所用到的技術(shù) 6參考文獻 7附錄全部代碼 8整理為word格式整理為word格式整理為word格式1需求分析計算機技術(shù)作為信息化的核心技術(shù)受到全社會的普遍重視。如今,計算機的使用也已不再局限于科學(xué)計算,它已進入人類社會的各個領(lǐng)域并發(fā)揮著越來越重要的作用。深入掌握計算機專業(yè)知識、具有良好系統(tǒng)設(shè)計與分析能力的計算機高級專業(yè)人才在社會上深受歡迎。而系統(tǒng)設(shè)計與分析能力的培養(yǎng)需要通過實踐訓(xùn)練才能獲得。通過計算機對一些系統(tǒng)的管理已經(jīng)成為一種系統(tǒng)、便捷的方式。本課程設(shè)計就是用C++設(shè)計學(xué)生選課系統(tǒng)的問題,實現(xiàn)對學(xué)生選課的管理操作。本課程設(shè)計的目的是設(shè)計一個學(xué)生選修課程系統(tǒng)的程序,用來實現(xiàn)對學(xué)生成績的管理,其中包括學(xué)生信息的文件讀入、添加、查詢、保存、刪除以及相應(yīng)的課程信息管理。程序設(shè)計了兩個類,其中一個包含學(xué)生的學(xué)號、姓名、選課數(shù)以及選修總學(xué)分,另一個則包含了課程的信息,包括課程編號、課程名稱、課程性質(zhì)、課時等等。然后通過數(shù)組、向量、集合等來實現(xiàn)學(xué)生選課信息的記錄、保存,刪除等相關(guān)操作從而達到管理學(xué)生選課的。2概要設(shè)計2.1對象設(shè)計把學(xué)生和學(xué)科信息設(shè)計成類student和類subject,通過文件操作函數(shù)對輸入的學(xué)生和學(xué)科信息進行讀取和存放。2.2設(shè)計優(yōu)缺點優(yōu)點:1.人性化的程序提示語言,程序提示語言較人性化,不僅大多為祈使語句、疑問句,而且提示明確,具有較強的明確的指導(dǎo)作用。程序提示不僅層次分明,提示方式多樣,而且提示信息井然有序,更加有利于用戶順利、準確地進行程序的操作。2.所有的操作大多是在內(nèi)存中實現(xiàn),增加操作的速度,十分的方便。缺點:1.程序雖然經(jīng)過多次精簡,但僅僅是形式上、小范圍的精簡,仍未得到本質(zhì)上的精簡,即未找到更加簡單、更加高效、更加合理、更小占用的資源的算法。2.程序仍然存在不合理的地方,例如程序某些部分輸入錯誤會導(dǎo)致程序中止或轉(zhuǎn)向其他功能模塊,即程序建議用戶注意提示,進行合理的準確的輸入,這樣更有利于管理工作。整理為word格式整理為word格式整理為word格式3詳細設(shè)計3.1總體設(shè)計思路通過對課題的分析,程序的要求是設(shè)計選修課管理系統(tǒng),對選修課程能夠進行錄入和修改操作等,要求有主界面和退出功能。首先,考慮到程序的數(shù)據(jù)輸入,可以設(shè)置一個課程增加選項,通過該界面,進行選修課的錄入和修改操作,最后將錄入的課程存到相應(yīng)的文件中。然后定義各種函數(shù)的功能包括:查看、查詢、刪除等。另一個為選課界面,該界面學(xué)生可以進行課程選擇和瀏覽查詢等操作。在進行該操作之前需要對保存的文件進行讀取,然后對其中的東西進行查詢等。在學(xué)生選好課程以后,可以將選好的課程保存于相應(yīng)的文件中,以便下次進行修改。通過函數(shù)的層層調(diào)用來實現(xiàn)程序的邏輯結(jié)構(gòu)。中間通過文件的打開和關(guān)閉實現(xiàn)對文件內(nèi)部所包含的數(shù)據(jù)操作。為了方便用戶控制管理,又添加了一些更人性化的功能如人工調(diào)試,運行配置等功能。文件存儲信息的方式更是簡化了程序結(jié)構(gòu),使程序讀起來更容易懂。除此之外,本系統(tǒng)采用分塊實現(xiàn)功能,將要實現(xiàn)的增加課程信息、修改課程信息、刪除課程信息、增加學(xué)生信息和修改學(xué)生信息等功能分別用不同的子程序來完成,這樣不僅方便了我們程序調(diào)試,更提高了程序的移植性。3.2類定義classsubject//建立一個課程類,保存課程信息classstudent//建立一個學(xué)生類,保存學(xué)生信息函數(shù):該程序包含的主要函數(shù)功能說明:voidXuanKeMenu();//選課主菜單函數(shù)intfind(intno);voidSave();voidDL(); //登錄界面的函數(shù)voidMainMenu();voidoutput();voidLoad();//載入文件信息的函數(shù)voidLoad2();voidquit();voidadd();voidChaXun();voidchaxun1();voidchaxun2();voidxuanke();voidtq1();//提取選課編號的函數(shù)voidtq2();voidAddStuInfo(); //添加學(xué)生信息的函數(shù)整理為word格式整理為word格式整理為word格式voidSaveStuInfo();//保存學(xué)生信息到文件中voiddel(); //刪除已選課程信息的函數(shù)voidsum();3.3宏定義#defineN103.4文件操作函數(shù)voidAddStuInfo();//添加學(xué)生信息的函數(shù)voidSaveStuInfo();//保存學(xué)生信息到文件中3.5用戶操作函數(shù)//該函數(shù)根據(jù)用戶的選擇,完成指定的操作voidDL()//登錄界面voidMainMenu()//系統(tǒng)主菜單voidoutput()//顯示函數(shù):將課程信息輸出到屏幕voidAddStuInfo()//增加學(xué)生信息,并保存在文件中voidadd()//增加課程信息,并保存在文件中voiddel()//刪除已選課程信息voidChaXun()//查詢主菜單函數(shù)voidxuanke()//選課函數(shù):執(zhí)行選課功能voidsum()//統(tǒng)計函數(shù),統(tǒng)計并輸出文件中的數(shù)據(jù)3.6其他重要函數(shù)voidLoad()//載入函數(shù):載入課程信息(文件此前已建立)voidLoad2()//載入學(xué)生信息(文件此前已建立)voidSave()//保存已選的課程信息整理為word格式整理為word格式整理為word格式voidSaveStuInfo()//保存學(xué)生信息voidquit()//退出函數(shù)voidchaxun1()//按學(xué)分方式查詢voidchaxun2()//按課程性質(zhì)查詢voidtq1(char*str)//提取出選課時輸入的課程編號intfind(intno)//尋找函數(shù),找到想要的課程編號voiddisplay(inti)//輸出函數(shù)voidtq2(char*str)//提取函數(shù):提前刪除時輸入的課程編號測試結(jié)果及運行效果運行程序后,登陸界面登陸學(xué)號,進入登陸后的界面,在其中可以選擇查看課程信息、添加課程信息、查詢課程信息、學(xué)生選課、統(tǒng)計情況和退出。按照提示輸入0-5和Enter鍵進入下級菜單,或者退出程序。圖4-1登陸后的界面輸入1進入查看課程信息頁面后,給出存放在文件類的所有課程信息,按y和Enter鍵停留界面,按n和Enter退出。整理為word格式整理為word格式整理為word格式圖4-2進入查看課程信息界面在主菜單中選擇2,進入添加課程信息界面。圖4-3添加課程時的界面在主菜單中選4,學(xué)生選課界面。圖4-4學(xué)生選課時的界面在登陸界面輸入exit退出系統(tǒng)。整理為word格式整理為word格式整理為word格式圖4-5退出系統(tǒng)時的界面系統(tǒng)開發(fā)所用到的技術(shù)操作系統(tǒng):Windows7開發(fā)軟件:MicrosoftVisualStudio2013技術(shù):功能模塊(函數(shù));向量;文件保存及讀取。模塊:是抽象的概念,按照功能劃分模塊,盡可能保證每個模塊互相獨立。這個一般同程序的邏輯設(shè)計有關(guān),同具體語言關(guān)系不大。函數(shù):一般都有有明確的定義,有明確的語法。用來完成相對獨立功能和程序。向量(Vector):Vector是C++標準程序庫中的一個類,可視為會自動擴展容量的數(shù)組,以循序(Sequential)的方式維護變量集合。vector的特色包括支持隨機存取,在集合尾端增刪元素很快,但是在集合中間增刪元素比較費時。vector是C++標準程序庫中的眾多容器(container)之一,除此之外還有l(wèi)ist、set、map、…等等。vector以模板(泛型)方式實現(xiàn),可以存儲任何類型的變量,包括用戶自定義的數(shù)據(jù)型態(tài)。文件操作:C語言對文件的處理一般有兩種方法,緩沖文件系統(tǒng)和非緩沖文件系統(tǒng)。在文件系統(tǒng)中,系統(tǒng)對文件進行讀寫之前首先在內(nèi)存區(qū)開辟一個稱作緩沖區(qū)的專用內(nèi)存區(qū)域。在緩沖文件系統(tǒng)中,系統(tǒng)對文件進行讀寫之前首先在內(nèi)存區(qū)開辟一個稱作緩沖區(qū)的專用內(nèi)存區(qū)域。從內(nèi)存向磁盤寫文件時必須先寫入緩沖區(qū),裝滿緩沖區(qū)后才一起寫到磁盤上去;從磁盤讀文件時必須先把一批數(shù)據(jù)讀到緩沖區(qū)(充滿緩沖區(qū)),然后再從緩沖區(qū)將數(shù)據(jù)逐個送到用戶數(shù)據(jù)區(qū)。在非緩沖文件系統(tǒng)中,文件的處理不自動開辟確定大小的緩沖區(qū),而是由程序設(shè)定的緩沖區(qū)。一般用緩沖文件系統(tǒng)進行的輸入/輸出。用非緩沖文件系統(tǒng)進行的輸入/輸出稱為低級(低層)輸入/輸出。ANSIC標準采用緩沖文件系統(tǒng),現(xiàn)代的操作系統(tǒng)也廣泛采用緩沖型文件系統(tǒng)。整理為word格式整理為word格式整理為word格式參考文獻[1]李素若.C++面向?qū)ο蟪绦蛟O(shè)計.北京:中國水利水電出版社,2013.[2]曾輝.王更生.C++程序設(shè)計實訓(xùn)教程.北京:北京郵電大學(xué)出版社,2011[3]揣錦華等編.《C++程序設(shè)計語言》.西安:西安電子科技大學(xué)出版社,2011[4]張素琴主編.《C++程序設(shè)計語言》.北京:清華大學(xué)出版社,2010 [5]鄧飛,李瑤主編《C++程序設(shè)計》.北京科海電子出版社2009[6]李軍民等編.《C++程序設(shè)計語言》.西安:西安電子科技大學(xué)出版社,2011整理為word格式整理為word格式整理為word格式附錄全部代碼#include<iostream>#include<vector>#include<set>#include<string.h>#include<conio.h>#include<stdlib.h>#include<fstream>#defineN10usingnamespacestd;intF;classsubject//建立一個課程類,保存課程信息{public: intnum; charname[30]; charcha[20]; intTime,time1,time2,xf; charkkxq[20];}S;classstudent//建立一個學(xué)生類,保存學(xué)生信息{public: charnam[10]; charnum[15]; intzxf; intcnt;}Stu;整理為word格式整理為word格式整理為word格式vector<subject>v;//聲明一個指向課程信息的向量vector<student>z;//聲明一個指向?qū)W生信息的向量set<int>T;//建立一個集合vector<set<int>>TT;//建立一個向量集合set<int>::iteratorit;//建立一個迭代器voidXuanKeMenu();//聲明一個選課主菜單函數(shù)intfind(intno);voidSave();voidDL(); //聲明一個登錄界面的函數(shù)voidMainMenu();voidoutput();voidLoad();//聲明載入文件信息的函數(shù)voidLoad2();voidquit();voidadd();voidChaXun();voidchaxun1();voidchaxun2();voidxuanke();voidtq1();//聲明提取信息的函數(shù)voidtq2();voidAddStuInfo();//聲明添加學(xué)生信息的函數(shù)voiddel();voidsum();voidAddStuInfo(){ FILE*fp; fp=fopen("d:\\student.txt","a");fseek(fp,0,2);//打開學(xué)生信息文件 system("cls"); cout<<endl<<endl<<endl<<endl<<endl; cout<<"\t\t***************************************************"<<endl;整理為word格式整理為word格式整理為word格式 cout<<"\t\t*****************學(xué)生選課系統(tǒng)******************"<<endl; cout<<"\t\t***************************************************"<<endl<<endl; cout<<"\t\t\t請輸入學(xué)號:";cin>>Stu.num; cout<<"\t\t\t請輸入姓名:";cin>>Stu.nam; St=Stu.zxf=0; fprintf(fp,"%s%s%d%d\n",Stu.num,Stu.nam,St,Stu.zxf);//存入文件 z.push_back(Stu);T.clear();TT.push_back(T);//用向量指向?qū)W生信息 fclose(fp);}voidadd(){A:system("cls"); cout<<endl<<endl<<endl; cout<<"\t********************************************************"<<endl; cout<<"\t**********************課程信息*******************"<<endl; cout<<"\t********************************************************"<<endl<<endl; cout<<"\t\t\t請輸入課程編號:"; cin>>S.num; cout<<"\t\t\t請輸入課程名稱:"; cin>>S.name; cout<<"\t\t\t請輸入課程性質(zhì):"; cin>>S.cha; cout<<"\t\t\t請輸入總課時:"; cin>>S.Time; cout<<"\t\t\t請輸入授課學(xué)時"; cin>>S.time1; cout<<"\t\t\t請輸入上機學(xué)時(實驗學(xué)時):";整理為word格式整理為word格式整理為word格式 cin>>S.time2; cout<<"\t\t\t請輸入學(xué)分:"; cin>>S.xf; cout<<"\t\t\t請輸入開課學(xué)期:"; cin>>S.kkxq; v.push_back(S); Save(); cout<<endl<<"\t是否繼續(xù)添加[Y/N]:"; strings;cin>>s; if(s[0]=='Y'||s[0]=='y')gotoA; elseMainMenu();}voidSave()//保存已選的課程信息{ FILE*fp; fp=fopen("d:\\subject.txt","w"); for(unsignedinti=0;i<v.size();i++) fprintf(fp,"%d%s%s%d%d%d%d%s\n",v[i].num,v[i].name,v[i].cha,v[i].Time,v[i].time1,v[i].time2,v[i].xf,v[i].kkxq); fclose(fp);}voidSaveStuInfo()//保存學(xué)生信息{ FILE*fp; fp=fopen("d:\\student.txt","w"); for(unsignedinti=0;i<z.size();i++) { fprintf(fp,"%s%s%d%d",z[i].num,z[i].nam,z[i].cnt,z[i].zxf); for(it=TT[i].begin();it!=TT[i].end();it++) fprintf(fp,"%d",*it); fprintf(fp,"\n"); } fclose(fp);整理為word格式整理為word格式整理為word格式}voidquit()//退出函數(shù){ exit(1);}voidChaXun()//查詢主菜單函數(shù){ system("cls"); cout<<endl<<endl<<endl; cout<<"\t********************************************************"<<endl; cout<<"\t**********************課程信息*******************"<<endl; cout<<"\t********************************************************"<<endl<<endl; cout<<"\t\t\t\t請選擇查詢方式:\n\t\t\t\t[1]學(xué)分查詢\n\t\t\t\t[2]課程性質(zhì)查詢\n\t\t\t\t[0]返回主菜單\n\n"; cout<<"\t\t\t\t請選擇[0-2]:"; intchoice; cin>>choice; if(choice>=0&&choice<3) { if(choice==1)chaxun1(); if(choice==2)chaxun2(); if(choice==0)MainMenu(); } elseChaXun();}voidchaxun1()//按學(xué)分方式查詢{ system("cls");intcnt=0; cout<<endl<<endl<<endl;整理為word格式整理為word格式整理為word格式 cout<<"\t********************************************************"<<endl; cout<<"\t**********************課程信息*******************"<<endl; cout<<"\t********************************************************"<<endl<<endl; cout<<"\t請輸入學(xué)分:"; intkey; cin>>key; cout<<"\t課程"<<""<<"課程"<<"課程"<<""<<"總" <<""<<"授課"<<""<<"實驗或"<<""<<"學(xué)分"<<""<<"開課"<<endl; cout<<"\t編號"<<""<<"名稱"<<"性質(zhì)"<<""<<"學(xué)時" <<""<<"學(xué)時"<<""<<"上機學(xué)時"<<""<<"學(xué)分"<<""<<"學(xué)期"<<endl<<endl; for(unsignedinti=0;i<v.size();i++) { if(cnt&&cnt%10==0) { cout<<endl<<"\t========================================================"<<endl; cout<<"\t按任意鍵查看下一頁";_getch(); system("cls"); cout<<endl<<endl<<endl; cout<<"\t********************************************************"<<endl; cout<<"\t**********************課程信息*******************"<<endl; cout<<"\t********************************************************"<<endl<<endl; cout<<"\t課程"<<""<<"課程"<<"課程"<<""<<"總" <<""<<"授課"<<""<<"實驗或"<<""<<"學(xué)分"<<""<<"開課"<<endl;整理為word格式整理為word格式整理為word格式 cout<<"\t編號"<<""<<"名稱"<<"性質(zhì)"<<""<<"學(xué)時" <<""<<"學(xué)時"<<""<<"上機學(xué)時"<<""<<"學(xué)分"<<""<<"學(xué)期"<<endl<<endl; } if(v[i].xf==key) { cnt++; printf("\t%3d%12s%8s%4d%6d%8d%8d%7s\n", v[i].num,v[i].name,v[i].cha,v[i].Time,v[i].time1,v[i].time2,v[i].xf,v[i].kkxq); } } cout<<endl<<"\t是否繼續(xù)查詢[Y/N]:"; strings;cin>>s; if(s[0]=='Y'||s[0]=='y')chaxun1(); elseMainMenu();}voidchaxun2()//按課程性質(zhì)查詢{ system("cls");intcnt=0; cout<<endl<<endl<<endl; cout<<"\t********************************************************"<<endl; cout<<"\t**********************課程信息*******************"<<endl; cout<<"\t********************************************************"<<endl<<endl; cout<<"\t請輸入課程性質(zhì):"; charkey[20]; cin>>key; cout<<"\t課程"<<""<<"課程"<<"課程"<<""<<"總"整理為word格式整理為word格式整理為word格式 <<""<<"授課"<<""<<"實驗或"<<""<<"學(xué)分"<<""<<"開課"<<endl; cout<<"\t編號"<<""<<"名稱"<<"性質(zhì)"<<""<<"學(xué)時" <<""<<"學(xué)時"<<""<<"上機學(xué)時"<<""<<"學(xué)分"<<""<<"學(xué)期"<<endl<<endl; for(unsignedinti=0;i<v.size();i++) { if(cnt&&cnt%10==0) { cout<<endl<<"\t========================================================"<<endl; cout<<"\t按任意鍵查看下一頁";_getch(); system("cls"); cout<<endl<<endl<<endl; cout<<"\t********************************************************"<<endl; cout<<"\t**********************課程信息*******************"<<endl; cout<<"\t********************************************************"<<endl<<endl; cout<<"\t課程"<<""<<"課程"<<"課程"<<""<<"總" <<""<<"授課"<<""<<"實驗或"<<""<<"學(xué)分"<<""<<"開課"<<endl; cout<<"\t編號"<<""<<"名稱"<<"性質(zhì)"<<""<<"學(xué)時" <<""<<"學(xué)時"<<""<<"上機學(xué)時"<<""<<"學(xué)分"<<""<<"學(xué)期"<<endl<<endl; } if(!strcmp(v[i].cha,key)) { cnt++;整理為word格式整理為word格式整理為word格式 printf("\t%3d%12s%8s%4d%6d%8d%8d%7s\n", v[i].num,v[i].name,v[i].cha,v[i].Time,v[i].time1,v[i].time2,v[i].xf,v[i].kkxq); } } cout<<endl<<"\t是否繼續(xù)查詢[Y/N]:"; strings;cin>>s; if(s[0]=='Y'||s[0]=='y')chaxun2(); elseMainMenu();}voidtq1(char*str)//提取出選課時輸入的課程編號{ stringt=""; inti=0,cont=0; while(str[i]) { if(isalnum(str[i]))t+=str[i]; else { inttmp=atoi(t.c_str()); if(TT[F].find(tmp)!=TT[F].end()){t="";i++;continue;} z[F].zxf+=v[find(tmp)].xf; TT[F].insert(tmp);t="";cont++; } i++; } inttmp=atoi(t.c_str()); if(TT[F].find(tmp)==TT[F].end()) { cont++; TT[F].insert(tmp); z[F].zxf+=v[find(tmp)].xf; } z[F].cnt+=cont;整理為word格式整理為word格式整理為word格式}voidxuanke()//選課函數(shù):執(zhí)行選課功能{ charstr[100]; system("cls"); cout<<endl<<endl; cout<<"\t********************************************************"<<endl; cout<<"\t**********************課程信息*******************"<<endl; cout<<"\t********************************************************"<<endl<<endl; cout<<"\t課程"<<""<<"課程"<<"課程"<<""<<"總" <<""<<"授課"<<""<<"實驗或"<<""<<"學(xué)分"<<""<<"開課"<<endl; cout<<"\t編號"<<""<<"名稱"<<"性質(zhì)"<<""<<"學(xué)時" <<""<<"學(xué)時"<<""<<"上機學(xué)時"<<""<<"學(xué)分"<<""<<"學(xué)期"<<endl<<endl; for(unsignedinti=0;i<v.size();i++) { if(i&&i%10==0) { cout<<endl<<"\t========================================================"<<endl; cout<<endl<<"\t請輸入所選課程編號:";gets(str); if(strcmp(str,""))tq1(str);//, system("cls"); cout<<endl<<endl; cout<<"\t********************************************************"<<endl; cout<<"\t**********************課程信息*******************"<<endl;整理為word格式整理為word格式整理為word格式 cout<<"\t********************************************************"<<endl<<endl; cout<<"\t課程"<<""<<"課程"<<"課程"<<""<<"總" <<""<<"授課"<<""<<"實驗或"<<""<<"學(xué)分"<<""<<"開課"<<endl; cout<<"\t編號"<<""<<"名稱"<<"性質(zhì)"<<""<<"學(xué)時" <<""<<"學(xué)時"<<""<<"上機學(xué)時"<<""<<"學(xué)分"<<""<<"學(xué)期"<<endl<<endl; } printf("\t%3d%12s%8s%4d%6d%8d%8d%7s\n", v[i].num,v[i].name,v[i].cha,v[i].Time,v[i].time1,v[i].time2,v[i].xf,v[i].kkxq); } cout<<endl<<"\t========================================================"; cout<<endl<<"\t請輸入所選課程編號:";gets(str); if(strcmp(str,""))tq1(str); SaveStuInfo(); cout<<"\t\t是否繼續(xù)選課![Y/N]"; stringx;cin>>x; if(x[0]=='y'||x[0]=='Y')xuanke(); elseXuanKeMenu();}intfind(intno)//尋找函數(shù),找到想要的課程編號{ for(unsignedinti=0;i<v.size();i++) if(v[i].num==no)returni;}voiddisplay(inti)整理為word格式整理為word格式整理為word格式{ printf("\t%3d%12s%8s%4d%6d%8d%8d%7s\n", v[i].num,v[i].name,v[i].cha,v[i].Time,v[i].time1,v[i].time2,v[i].xf,v[i].kkxq);}voidXuanKeMenu()//選課菜單函數(shù){ system("cls"); intchoice,l=0; cout<<endl<<endl; cout<<"\t********************************************************"<<endl; cout<<"\t**********************學(xué)生選課*******************"<<endl; cout<<"\t********************************************************"<<endl<<endl; cout<<"\t姓名:"<<z[F].nam<<"學(xué)號:"<<z[F].num<<"已選"<<z[F].cnt; cout<<"門課程"<<"已選課程總學(xué)分:"<<z[F].zxf<<endl; cout<<"\t========================================================"<<endl; cout<<"\t已選課程信息:\n"; cout<<"\t課程"<<""<<"課程"<<"課程"<<""<<"總" <<""<<"授課"<<""<<"實驗或"<<""<<"學(xué)分"<<""<<"開課"<<endl; cout<<"\t編號"<<""<<"名稱"<<"性質(zhì)"<<""<<"學(xué)時" <<""<<"學(xué)時"<<""<<"上機學(xué)時"<<""<<"學(xué)分"<<""<<"學(xué)期"<<endl<<endl; for(it=TT[F].begin();it!=TT[F].end();it++,l++) { if(l&&l%10==0) {整理為word格式整理為word格式整理為word格式 cout<<endl<<"\t========================================================"<<endl; cout<<"\t[1]開始選課[2]刪除已選課程[3]下一頁[0]返回請選擇[0/3]:";cin>>choice;getchar(); if(choice==1)xuanke(); elseif(choice==2)del(); elseif(choice==0)MainMenu(); elseif(choice==3); elseXuanKeMenu(); system("cls"); cout<<endl<<endl; cout<<"\t********************************************************"<<endl; cout<<"\t**********************學(xué)生選課*******************"<<endl; cout<<"\t********************************************************"<<endl<<endl; cout<<"\t姓名:"<<z[F].nam<<"學(xué)號:"<<z[F].num<<"已選"<<z[F].cnt; cout<<"門課程"<<"已選課程總學(xué)分:"<<z[F].zxf<<endl; cout<<"\t========================================================"<<endl; cout<<"\t已選課程信息:\n"; cout<<"\t課程"<<""<<"課程"<<"課程"<<""<<"總" <<""<<"授課"<<""<<"實驗或"<<""<<"學(xué)分"<<""<<"開課"<<endl; cout<<"\t編號"<<""<<"名稱"<<"性質(zhì)"<<""<<"學(xué)時" <<""<<"學(xué)時"<<""<<"上機學(xué)時"<<""<<"學(xué)分"<<""<<"學(xué)期"<<endl<<endl; } display(find(*it)); } cout<<endl<<"\t========================================================"<<endl;整理為word格式整理為word格式整理為word格式 cout<<"\t[1]開始選課[2]刪除已選課程[0]返回請選擇[0/2]:";cin>>choice;getchar(); if(choice==1)xuanke(); elseif(choice==2)del(); elseif(choice==0)MainMenu(); elseXuanKeMenu();}voidtq2(char*str)//提取函數(shù):提前刪除時輸入的課程編號{ stringt=""; inti=0,cont=0; while(str[i]) { if(isalnum(str[i]))t+=str[i]; else { inttmp=atoi(t.c_str()); set<int>::iterator_t=TT[F].find(tmp); if(_t!=TT[F].end()) { t=""; TT[F].erase(_t); z[F].cnt--; z[F].zxf-=v[find(tmp)].xf; } } i++; } inttmp=atoi(t.c_str()); set<int>::iterator_t=TT[F].find(tmp); if(_t!=TT[F].end())整理為word格式整理為word格式整理為word格式 { t=""; TT[F].erase(_t); z[F].cnt--; z[F].zxf-=v[find(tmp)].xf; }}voiddel()//刪除已選課程信息{ intm,l=0,k=0; charstr[100]; system("cls"); cout<<endl<<endl; cout<<"\t********************************************************"<<endl; cout<<"\t**********************學(xué)生選課*******************"<<endl; cout<<"\t********************************************************"<<endl<<endl; cout<<"\t姓名:"<<z[F].nam<<"學(xué)號:"<<z[F].num<<"已選"<<z[F].cnt; cout<<"門課程"<<"已選課程總學(xué)分:"<<z[F].zxf<<endl; cout<<"\t========================================================"<<endl; cout<<"\t已選課程信息:\n"; cout<<"\t課程"<<""<<"課程"<<"課程"<<""<<"總" <<""<<"授課"<<""<<"實驗或"<<""<<"學(xué)分"<<""<<"開課"<<endl; cout<<"\t編號"<<""<<"名稱"<<"性質(zhì)"<<""<<"學(xué)時" <<""<<"學(xué)時"<<""<<"上機學(xué)時"<<""<<"學(xué)分"<<""<<"學(xué)期"<<endl<<endl; for(it=TT[F].begin();it!=TT[F].end();it++,l++)整理為word格式整理為word格式整理為word格式 { if(l&&l%10==0) { cout<<endl<<"\t========================================================"<<endl; cout<<"\t\t\t\t請輸入要刪除的課程的編號:";gets(str); if(strcmp(str,""))tq2(str); system("cls"); cout<<endl<<endl; cout<<"\t********************************************************"<<endl; cout<<"\t**********************學(xué)生選課*******************"<<endl; cout<<"\t********************************************************"<<endl<<endl; cout<<"\t姓名:"<<z[F].nam<<"學(xué)號:"<<z[F].num<<"已選"<<z[F].cnt; cout<<"門課程"<<"已選課程總學(xué)分:"<<z[F].zxf<<endl; cout<<"\t========================================================"<<endl; cout<<"\t已選課程信息:\n"; cout<<"\t課程"<<""<<"課程"<<"課程"<<""<<"總" <<""<<"授課"<<""<<"實驗或"<<""<<"學(xué)分"<<""<<"開課"<<endl; cout<<"\t編號"<<""<<"名稱"<<"性質(zhì)"<<""<<"學(xué)時" <<""<<"學(xué)時"<<""<<"上機學(xué)時"<<""<<"學(xué)分"<<""<<"學(xué)期"<<endl<<endl; } display(find(*it)); } cout<<"\t\t\t\t請輸入要刪除的課程的編號:";gets(str); if(strcmp(str,""))tq2(str); SaveStuInfo();整理為word格式整理為word格式整理為word格式 XuanKeMenu();}voidLoad()//載入函數(shù):載入課程信息(文件此前已建立){ FILE*fp1; boolf=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); } fclose(fp1);}voidLoad2()//載入學(xué)生信息(文件此前已建立){ FILE*fp; fp=fopen("d:\\student.txt","r"); while(!feof(fp)) { intx; fscanf(fp,"%s%s%d%d",Stu.num,&Stu.nam,&St,&Stu.zxf); z.push_back(Stu);T.clear(); for(intj=0;j<St;j++) fscanf(fp,"%d",&x),T.insert(x); TT.push_back(T); } fclose(fp);}整理為word格式整理為word格式整理為word格式voidoutput()//顯示函數(shù):將課程信息輸出到屏幕{ system("cls"); unsignedinti=0; cout<<endl<<endl<<endl; cout<<"\t********************************************************"<<endl; cout<<"\t**********************課程信息*******************"<<endl; cout<<"\t********************************************************"<<endl<<endl; cout<<"\t課程"<<""<<"課程"<<"課程"<<""<<"總" <<""<<"授課"<<""<<"實驗或"<<""<<"學(xué)分"<<""<<"開課"<<endl; cout<<"\t編號"<<""<<"名稱"<<"性質(zhì)"<<""<<"學(xué)時" <<""<<"學(xué)時"<<""<<"上機學(xué)時"<<""<<"學(xué)分"<<""<<"學(xué)期"<<endl<<endl; for(;i<v.size();i++) { if(i&&i%10==0) { cout<<endl<<"\t========================================================"<<endl; cout<<"\t按任意鍵查看下一頁";_getch(); system("cls"); cout<<endl<<endl<<endl; cout<<"\t********************************************************"<<endl; cout<<"\t**********************課程信息*******************"<<endl; cout<<"\t********************************************************"<<endl<<endl;整理為word格式整理為word格式整理為word格式 cout<<"\t課程"<<""<<"課程"<<"課程"<<""<<"總" <<""<<"授課"<<""<<"實驗或"<<""<<"學(xué)分"<<""<<"開課"<<endl; cout<<"\t編號"<<""<<"名稱"<<"性質(zhì)"<<""<<"學(xué)時" <<""<<"學(xué)時"<<""<<"上機學(xué)時"<<""<<"學(xué)分"<<""<<"學(xué)期"<<endl<<endl; } printf("\t%3d%12s%8s%4d%6d%8d%8d%7s\n",v[i].num,v[i].name,v[i].cha,v[i].Time,v[i].time1,v[i].time2,v[i].xf,v[i].kkxq); } cout<<"\t課程總數(shù)為:"<<i<<endl; cout<<endl<<"\t是否繼續(xù)查看[Y/N]:"; strings;cin>>s; if(s[0]=='Y'||s[0]=='y')output(); elseMainMe
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年麗水道路貨運從業(yè)資格證模擬考試官方題下載
- 2025年石家莊貨運資格證題庫在線練習(xí)
- 終止協(xié)議書范本范文6篇
- 《寶島臺灣》說課稿
- 營養(yǎng)強化劑競爭策略分析報告
- 受托審計合同范本
- 原料冷庫租賃合同范例
- 衛(wèi)生間維修合同范本
- 臺球廳租賃合同范本
- 個人辭職申請書簡短
- 四年級下冊勞動《小小快遞站》課件
- 籃球教練職業(yè)生涯規(guī)劃
- 機器人手術(shù)后期護理
- 食品抽檢核查處置重點安全性指標不合格原因分析排查手冊
- 自力式調(diào)節(jié)閥閥門
- 《學(xué)生檔案信息管理系統(tǒng)的開發(fā)》6500字(論文)
- GB/T 44904-2024售后服務(wù)無理由退貨服務(wù)規(guī)范
- 《股市的基礎(chǔ)常識》課件
- 部編版二年級下冊語文教材分析、學(xué)情分析(每一課都有-全)
- 行測圖形推理1000題庫帶答案
- 500萬立方米地下水封洞庫項目施工組織設(shè)計
評論
0/150
提交評論