版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、計(jì)算機(jī)與信息工程系 高級語言程序設(shè)計(jì)課程設(shè)計(jì)報告學(xué)號2012-2013學(xué)年 第二學(xué)期1208010217高級語言程序設(shè)計(jì)課程設(shè)計(jì)報告題目:學(xué)生考勤管理系統(tǒng)專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)班級:12(2)班姓名:李天棟指導(dǎo)教師:孫淮寧成績:計(jì)算機(jī)與信息工程系2013年6月30日目錄1設(shè)計(jì)內(nèi)容及要求。.。.。.。.。.。.。.。.。.。.。.31。1設(shè)計(jì)內(nèi)容。.。.。.。.。.。.。.。.。.。.。.。.。.。.31.2設(shè)計(jì)任務(wù)及具體要求.。.。.。.。.。.。.。.。.。.。.。.32概要設(shè)計(jì)。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。42。1該系統(tǒng)的功能簡介。.。.。.。.。.。.。.
2、。.。.。.42.2 總體程序框圖。.。.。.。.。.。.。.。.。.。.。.。.。.42。3各個模塊之間的主要關(guān)系。.。.。.。.。.。.。.。.。.。53設(shè)計(jì)過程或程序代碼.。.。.。.。.。.。.。.。.。53。1各個模塊的程序流程圖及運(yùn)行界面.。.。.。.。.。.。53。2對關(guān)鍵代碼加以分析說明。.。.。.。.。.。.。.。.。104程序調(diào)試分析。.。.。.。.。.。.。.。.。.。145小結(jié)。.。.。.。.。.。.。.。.。.。.。.。.。.。17 致謝.。.。.。.。.。.。.。.。.。.。.。.。.。17 參考文獻(xiàn)。.。.。.。.。.。.。.。.。.。.。.。.。.。17 附:源
3、程序。.。.。.。.。.。.。.。.。.。.。.181 設(shè)計(jì)內(nèi)容及要求1。1設(shè)計(jì)內(nèi)容學(xué)生考勤信息記錄了學(xué)生的缺課情況,它包括:缺課日期、第幾節(jié)課(連續(xù)用beginend的形式表示)、課程名稱(課程名稱中不會出現(xiàn)空格)、學(xué)生姓名、缺課類型(遲到、早退、請假及曠課)。1。2設(shè)計(jì)任務(wù)及具體要求任務(wù):(1)給出軟件結(jié)構(gòu),說明各模塊的功能。(2)設(shè)計(jì)相關(guān)的類,并說明該類的作用。特別要用圖形說明類之間的繼承關(guān)系。(3)編寫代碼具體要求:(1)定義相關(guān)的數(shù)據(jù),比如:學(xué)生學(xué)號學(xué)生姓名課程名稱上課時間到課時間出勤狀態(tài) 曠課/病假/事假/遲到/早退(2)能夠進(jìn)行以下操作:A能夠?qū)?shù)據(jù)進(jìn)行增、刪、改、查操作.B能夠
4、按學(xué)號順序列出某一課程的出勤狀況2 概要設(shè)計(jì)2。1系統(tǒng)的功能簡介考勤管理系統(tǒng),有以下功能: (1)錄入學(xué)生的缺課記錄:從鍵盤輸入數(shù)據(jù)(提示:為避免重復(fù)從鍵盤輸入數(shù)據(jù),測試時可將數(shù)據(jù)存儲在文件中,利用輸入重定向功能讀入),輸入格式為:缺課日期 第幾節(jié)課 課程名稱學(xué)生姓名 缺課類型 每行一條紀(jì)錄。 例如: 201304-29 2-4 中國近現(xiàn)代文學(xué)史 李云龍 遲到 20130428 24 大學(xué)生社交禮儀 馬志鵬 曠課 (2)修改某
5、個學(xué)生的缺課記錄:可以對缺課紀(jì)錄的任意部分進(jìn)行修改,然后顯示一下修改后的紀(jì)錄。 (3)查詢某個學(xué)生的缺課情況:查詢結(jié)果按照日期升序排序,同一天內(nèi)按照所缺課程的時間升序排序。 (4)統(tǒng)計(jì)某段時間內(nèi)(以天為單位),曠課學(xué)生姓名及曠課節(jié)數(shù),查詢結(jié)果先按曠課節(jié)數(shù)降序排序,曠課節(jié)數(shù)相同的學(xué)生按姓名升序排序; (5)統(tǒng)計(jì)某段時間內(nèi),有學(xué)生曠課的課程及曠課人次,按曠課人次由多到少排序,曠課人次相同的課程按課程名稱升序排序。 2.2 總體程序框圖修改某學(xué)生的缺課信息查詢某學(xué)生的缺課信息統(tǒng)計(jì)某段時間內(nèi)曠課學(xué)生姓名及曠課節(jié)數(shù)統(tǒng)計(jì)某段時間內(nèi),有學(xué)生曠課的課程及曠課
6、人次錄入學(xué)生的缺課信息學(xué)生考勤管理系統(tǒng)錄入缺課學(xué)生的姓名、缺課日期、缺課節(jié)次、缺課課程名稱、缺課類型修改某學(xué)生的缺課日期、缺課節(jié)次、缺課課程名稱、缺課類型查詢某學(xué)生的缺課日期、缺課節(jié)次、缺課課程名稱、缺課類型按時間升序顯示曠課學(xué)生姓名及曠課節(jié)數(shù)按時間升序顯示有學(xué)生曠課的課程及曠課人次2。3各個模塊之間的主要關(guān)系本程序用結(jié)構(gòu)體新定義一種數(shù)據(jù)類型,系統(tǒng)包含一個主函數(shù)和6個子函數(shù)(insert(),check(),rivise(),Delete(),output(),deleteallchain()),6個子函數(shù)分別用來插入、查詢、修改、刪除、輸出、收回動態(tài)分配的空間,在主函數(shù)中通過調(diào)用子函數(shù)來實(shí)現(xiàn)
7、所需功能.3設(shè)計(jì)過程或程序代碼3.1各個模塊的程序流程圖及運(yùn)行界面學(xué)生考勤管理系統(tǒng)中四個類的類層次圖為:Time類Xinxi類qstu類qkechen類圖2 學(xué)生考勤管理系統(tǒng)中中四個類的類層次圖學(xué)生考勤管理系統(tǒng)中各功能模塊的實(shí)現(xiàn):菜單 統(tǒng)計(jì)某段時間內(nèi),有學(xué)生曠課的課程及曠課人次統(tǒng)計(jì)某段時間內(nèi)曠課學(xué)生姓名及曠課節(jié)數(shù)查詢某學(xué)生的缺課信息錄入學(xué)生的缺課信息修改某學(xué)生的缺課信息圖3 學(xué)生考勤管理系統(tǒng)中菜單函數(shù)的功能圖1、 學(xué)生缺課信息錄用功能模塊:學(xué)生缺課信息錄用功能錄入學(xué)生缺課節(jié)次錄入學(xué)生缺課日期錄入學(xué)生缺課課程名稱錄入缺課學(xué)生姓名錄入學(xué)生缺課類型圖4 學(xué)生缺課信息錄入的功能2、 修改某學(xué)生缺課信息
8、功能的模塊圖修改某學(xué)生缺課信息功能修改某學(xué)生的缺課節(jié)次修改某學(xué)生的缺課日期修改某學(xué)生的缺課課程修改某學(xué)生的缺課類型圖5 學(xué)生考勤管理系統(tǒng)修改學(xué)生缺課信息功能圖3 查詢某學(xué)生缺課信息功能圖:查詢某學(xué)生缺課信息功能輸入要查詢的學(xué)生姓名顯示要查詢的學(xué)生缺課信息繼續(xù)查詢或返回菜單圖6 學(xué)生考勤管理系統(tǒng)查詢學(xué)生缺課信息功能圖4、 統(tǒng)計(jì)某段時間內(nèi)曠課學(xué)生姓名及曠課節(jié)數(shù)功能模塊:統(tǒng)計(jì)某段時間內(nèi)曠課學(xué)生姓名及曠課節(jié)數(shù)功能統(tǒng)計(jì)某段時間內(nèi)曠課學(xué)生姓名及曠課節(jié)數(shù)顯示某段時間內(nèi)曠課學(xué)生姓名及曠課節(jié)數(shù)返回菜單圖7統(tǒng)計(jì)某段時間內(nèi)曠課學(xué)生姓名及曠課節(jié)數(shù)功能圖5、統(tǒng)計(jì)某段時間內(nèi),有學(xué)生曠課的課程及曠課人次功能模塊統(tǒng)計(jì)某段時間
9、內(nèi),有學(xué)生曠課的課程及曠課人次統(tǒng)計(jì)某段時間內(nèi),有學(xué)生曠課的課程及曠課人次功能顯示某段時間內(nèi),有學(xué)生曠課的課程及曠課人次返回菜單圖8統(tǒng)計(jì)某段時間內(nèi),有學(xué)生曠課的課程及曠課人次功能圖Tine-year:int-month:int-day:int+time()+time()Xinxi-name20:char-kechen10:char-jieci3:char- queke10:char-tm3:char-tiaoshu:int=0+xinxi()+xinxi()+setname(n:char*):void +settime(y:int, m:int,d:int):void+setqklx(qk: c
10、har*): void+setjieci(jc: char*):void+setkechen(kc: char*):void+getname():char*+getqklx():char*+getjieci():char*+getkechen():char* +gettime():int*qkechen-renci:int-kcshu:int=0+qkechen()+qkechen()+getrc(st1:xinxi,n:int ,j:int):int+qkn20:charqstu-jieshu:int -qst:int+qstu()+qstu()+print(st1:xinxi &)
11、:void+getjs( st1:xinxi,n:int, j:int):int+setjs(js:int=0):int +qstn20:char基類派生類派生類派生類 圖 9 學(xué)生考勤管理系統(tǒng)中四個類的UML圖3。2對關(guān)鍵代碼加以分析說明#includeiostream.hincludestring。h>includeiomanip。hstruct chuqin /用結(jié)構(gòu)體定義一個新的數(shù)據(jù)類型出勤chuqinchar name10,number20,subject15,time115,time215,zhuangtai10;chuqin next;/-void insert(chuqi
12、n head1)/創(chuàng)建單向鏈表并插入數(shù)據(jù)chuqin n;/定義一個chuqin類型指針nwhile(1)/一個死循環(huán)n=new chuqin;/用new運(yùn)算符動態(tài)分配一個chuqin空間給指針ncout<”請依次輸入姓名、學(xué)號、課程、上課時間、到課時間、出勤狀態(tài)(第一個字母輸入N表示結(jié)束插入):n”;/輸出提示信息cinn>name;/輸入姓名if(nname0=N) /判斷剛才輸入的第一個字母是否為Ndelete n;/若輸入的第一個字母為N,則用delete運(yùn)算符收回剛才動態(tài)分配的空間break;/跳出死循環(huán),結(jié)束插入cin>n-numbernsubjectntime1
13、>>n-time2n-zhuangtai;/若條件不滿足,則繼續(xù)輸入學(xué)號、課程、上課時間到課時間等if(!head1) head1=n,nnext=NULL;/*假如head指針為空,則直接讓head指針指向n指向的存儲空間(head=n),將n>next賦值為空,即不指向任何存儲空間/else n->next=head1,head1=n;/若head指針非空,則將n指向的存儲空間插在最前面/-void check(chuqin *head)/子函數(shù)實(shí)現(xiàn)查詢功能char number110;/定義一個字符串?dāng)?shù)組name1臨時存放要查詢的姓名int flag=1;cout
14、<”請輸入要查詢的學(xué)號:";/輸出提示信息cinnumber1;/輸入要查詢的學(xué)號while(head)/用while循環(huán)檢索查詢是否有匹配的姓名if(strcmp(number1,head>number)=0) /用函數(shù)strcmp()判斷是否有匹配姓名if(flag) cout”找到!n”setw(12)"姓名”setw(12)<<”學(xué)號"setw(12)”課程”;coutsetw(12)<”上課時間"<setw(12)<"到課時間”setw(12)"出勤狀態(tài)n”;/若條件為真,則輸出提示
15、信息/coutsetw(12)<head>name<setw(12)<<head-number<setw(12)<headsubject;coutsetw(12)<head-time1setw(12)<headtime2<setw(12)<head>zhuangtaiendl;flag=0;head=head->next;/更新head指針,是它指向下一個chuqin類型的存儲空間if(flag) cout”未找到!"/假如flag值為1,則輸出”未找到!”/-void rivise(chuqin head
16、)/定義子函數(shù)實(shí)現(xiàn)修改功能 char name110;/定義一個字符串?dāng)?shù)組name1臨時存放要修改的姓名cout"請輸入修改的姓名:";/輸出提示信息cinname1;/輸入要查詢的姓名while(head)if(strcmp(name1,headname)=0) cout<”找到此人!t"<”請輸入此人新的信息(依次為:課程、上課時間、到課時間、出勤狀態(tài))n”;cinhead-subjecthead-time1>head>time2>>headzhuangtai;/輸入新的課程、上課時間、到課時間break;head=head
17、next;if(head=NULL) cout”未找到此人!無法修改!n”;/-void Delete(chuqin head)/定義子函數(shù)實(shí)現(xiàn)刪除功能 char name110;int flag=1;chuqin p1=NULL,*p2,p3=head;cout<<”請輸入要刪除的姓名:”;cin>name1;while(head)if(strcmp(name1,head>name)=0)cout”找到此人!t將此人的全部信息刪除n”;if(p1=NULL)p1=head;head=headnext;delete p1;else if(p2>next=NULL)
18、 p1-next=NULL;delete p2;head=p3;else p1next=p2-next;delete p2;head=p3;flag=0;break;p1=head;head=head-next;p2=head;if(flag)cout<”未找到此人!無法刪除!n”;/-void output(chuqin head)/定義子函數(shù)實(shí)現(xiàn)輸出功能if(head=NULL) cout<"記錄為空!”;else cout<<"所有的記錄依次為:n”setw(12)<”姓名”<setw(12)”學(xué)號”setw(12)”課程”;cou
19、tsetw(12)<”上課時間"<setw(12)<"到課時間"setw(12)"出勤狀態(tài)n”;while(head)cout<setw(12)head->name<setw(12)<head-numbersetw(12)<<head-subject;cout<setw(12)<head->time1setw(12)<head>time2<<setw(12)<headzhuangtaiendl;head=head>next;/-void delet
20、eallchain(chuqin head)/定義子函數(shù)來收回所有動態(tài)分配的存儲空間chuqin p;while(head)p=head;head=headnext;delete p;/-void main()/主函數(shù)int a;/定義一個整型變量chuqin head;/定義一個head指針head=NULL;while(1)/死循環(huán)cout<"請輸入一個數(shù)字(1表示插入,2表示查詢,3表示修改,”;cout<”4表示刪除,5表示輸出,6表示跳出整個程序)n"/輸出提示信息cina;/輸入一個整型值if(a=6) break;/若該值為6則跳出整個循環(huán)swit
21、ch(a)/若a值不為6,執(zhí)行一下程序case 1: insert(head);break;case 2: check(head);break;case 3: rivise(head);break;case 4: Delete(head);break;case 5: output(head);break;default: cout<<"輸入有誤,請重新輸入n”;/若輸入的a值不符合要求,則輸出提示信息/deleteallchain(head);/調(diào)用函數(shù)deleteallchain()收回所有動態(tài)分配的存儲空間4設(shè)計(jì)結(jié)果與分析系統(tǒng)調(diào)試程序編寫完成后,我進(jìn)行了程序調(diào)試。調(diào)試
22、過程中,出現(xiàn)了以下問題:當(dāng)錄入學(xué)生缺課信息時,出現(xiàn)了無法退出錄入函數(shù)的情況,主要原因是輸入函數(shù)中while循環(huán)語句沒有設(shè)置跳出循環(huán)的條件.除此之外,修改某學(xué)生缺課信息時,如果沒有該學(xué)生的缺課信息,系統(tǒng)沒有提示要用戶沒有該學(xué)生信息,也沒有建議用戶重新輸入要修改的學(xué)生姓名。由此我發(fā)現(xiàn)了該系統(tǒng)修改學(xué)生缺課信息的不足.于是,我對修改函數(shù)進(jìn)行了修改與完善.在該函數(shù)中,我設(shè)置了if語句用來判斷系統(tǒng)中是否存有用戶要修改的學(xué)生缺課信息.如果沒有,則提示用戶沒有該學(xué)生的缺課信息,用戶可以選擇繼續(xù)輸入要修改的學(xué)生姓名或者退出修改環(huán)節(jié),可以在循環(huán)語句中改變循環(huán)進(jìn)行的條件從而終止循環(huán)。至于在修改后顯示該學(xué)生的缺課信息
23、,運(yùn)行時發(fā)現(xiàn)系統(tǒng)并沒有做到這一點(diǎn),對源代碼檢查之后發(fā)現(xiàn)是修改函數(shù)中顯示函數(shù)的調(diào)用出了點(diǎn)問題,顯示函數(shù)的實(shí)參有誤,應(yīng)該把要修改缺課信息的學(xué)生所在的信息類對象作為實(shí)參,然后用顯示函數(shù)的形參引用實(shí)參對象,通過對象調(diào)用信息類的成員函數(shù),從而實(shí)現(xiàn)顯示功能。5 小 結(jié)這次的課設(shè),我寫的程序也沒有什么獨(dú)到之處,函數(shù)參數(shù)設(shè)定不夠完美,整個程序中對指針的運(yùn)用比較少.對于指針的巧妙運(yùn)用把握得不夠.還有就是容易missing;或者是,這都是些應(yīng)該改掉的毛病。除此以外,我對于怎樣用文件保存數(shù)據(jù)還沒深入了解,但我將數(shù)據(jù)保存到文件后又因文件打不開而無法訪問文件中的數(shù)據(jù),對于動態(tài)鏈表,我不是很清晰,也就是說無法做到熟稔運(yùn)用
24、。在調(diào)試過程中我發(fā)現(xiàn)在主函數(shù)中把字符數(shù)組名name賦值給字符指針p即p=name;然后用cout<p;語句可以輸出字符數(shù)組里全部的內(nèi)容,但利用函數(shù)返回指針值卻不能做到這一點(diǎn),在我思考一番后終于明白了,這與內(nèi)存中的地址值有關(guān)。致謝在這次C語言課程設(shè)計(jì)中,我不僅參考了大量資料和翻閱了圖書館內(nèi)的相關(guān)書籍,而且我的老師和同學(xué)給了我及大的幫助。特別是我的指導(dǎo)老師孫淮寧老師和徐寧。在此,我對他們表示感謝,感謝他們在我面對學(xué)習(xí)上的困難時給了我?guī)椭椭С?。也感謝那些給我?guī)椭乃型瑢W(xué)!參考文獻(xiàn)1 劉維富 陳建平 葛建芳 王春明,C+程序設(shè)計(jì),北京,清華大學(xué)出版社,20072 張?jiān)佬?,Visual C+程
25、序設(shè)計(jì),蘇州,蘇州大學(xué)出版社,20023 和克智,C+程序設(shè)計(jì)(第二版),西安,西安交通大學(xué)出版社,19994 王挺 周會平 賈麗麗 徐錫山,C+程序設(shè)計(jì),北京,清華大學(xué)出版社,2005附錄:源程序清單#includeiostream>include<cstring#includewindows.husing namespace std;/時間類class timepublic:time(int y=0,int m=0,int d=0)year=y;month=m;day=d;time()protected:int year,month,day;;/信息類class xinxi:p
26、ublic time public:xinxi() tiaoshu+;xinxi()tiaoshu;void setname(char n)strcpy(name,n);void settime(int y,int m,int d)year=y;month=m;day=d;void setqklx(char qk)strcpy(queke,qk);void setjieci(char jc)strcpy(jieci,jc);void setkechen(char kc)strcpy(kechen,kc);char getname()char *n;n=name;return n;char ge
27、tqklx()char qk=queke;return qk;char getjieci()char *jc;jc=jieci;return jc;char getkechen()char gk;gk=kechen;return gk;int *gettime();private:char name20;/姓名char jieci3,kechen10,queke10;int tm3;static int tiaoshu;;int xinxi:tiaoshu=0;int xinxi:gettime() int t;t=tm;tm0=year;tm1=month;tm2=day;return t;
28、/缺課課程類class qkechen:public xinxipublic:qkechen()kcshu+;qkechen()kcshu-;int getrc(xinxi st1,int n,int j);char qkn20;/公有數(shù)據(jù)成員private:int renci;static int kcshu;/靜態(tài)數(shù)據(jù)成員;int qkechen::kcshu=0;int qkechen:getrc(xinxi st1,int n,int j) renci=0;renci+;for(int i=0;in;i+)if(st1i+1。gettime()+1)=(st1j。gettime()+1
29、)&(st1i+1。gettime()+2)=*(st1j.gettime()+2))if(strcmp(qkn,st1i.getkechen())=0)renci+;return renci;/缺課學(xué)生類class qstu:public xinxipublic:qstu()qst+;qstu()qst-;void print(xinxi &st1);int getjs(xinxi st1,int n,int j);int setjs(int js=0)jieshu=js;char qstn20;private:int jieshu;static int qst; /靜態(tài)數(shù)據(jù)
30、成員;int qstu::qst=0;/類的實(shí)現(xiàn)void qstu::print(xinxi st1)cout<<"| 缺課日期 |” 第幾節(jié)課 |”<” 課程名稱 |"<” 缺課類型”endl;cout<”"<st1.gettime()”<<(st1.gettime()+1)<*(st1。gettime()+2)”st1.getjieci()<<”|”st1。getkechen()"”<<st1。getqklx()<"”endl;int qstu::getjs
31、(xinxi st1,int n,int j) int i=0,js=0;xinxi min;if((st1j.getjieci()+2)!=0)js=+2;elsejs+;for(i=0;in;i+)if((st1i+1。gettime()+1)=(st1j.gettime()+1)&(st1i+1。gettime()+2)=*(st1j。gettime()+2)if(strcmp(st1i+1。getname(),qstn)=0)if(st1i.getjieci()+2)!=0)js=+2;elsejs+;jieshu=js;return jieshu;/ 函數(shù)聲明int shur
32、u(xinxi st1);void chaxun(xinxi st1,qstu qt);void xiugai(xinxi st1,int n);void tongji1(xinxi st1,qstu qt1);void tongji2(xinxi st1,qkechen qk1);void caidan();void xiansi(xinxi &st1);void setqstn(xinxi st1,qstu qt1,int n);void setqkn(xinxi st1,qkechen qk,int n);/全局變量int g,k=1,b=1;int q=-1;char name
33、20,kechen10,queke10,jieci3;int y,m,d;/主函數(shù)int main() xinxi tl15;/定義15條信息類對象qstu qt10;qkechen qk6;int ch;while(1)cout<”*歡迎進(jìn)入學(xué)生考勤管理系統(tǒng)!*”<endl;caidan();cout”-請選擇菜單項(xiàng):”<<endl;cin>ch;switch(ch)case 1: g=shuru(tl); break;case 2: xiugai(tl,g); break;case 3: chaxun(tl,qt); break;case 4: tongji1
34、(tl,qt); break;case 5: tongji2(tl,qk); break;case 6: exit(0);return 0;/菜單函數(shù)void caidan() system(”color A");cout<”*”<endl;cout" 學(xué)生考勤管理系統(tǒng) ”<endl;cout”*"endl; cout<”1.-錄入學(xué)生的缺課記錄-”<endl; cout<<”2。-修改學(xué)生的缺課記錄-”endl;cout<<”3。-查詢學(xué)生的缺課情況-”<endl;cout"4。-統(tǒng)計(jì)某段時間
35、內(nèi)曠課學(xué)生姓名及曠課節(jié)數(shù)-*"endl;cout<”5。統(tǒng)計(jì)某段時間內(nèi)曠課的課程及曠課人次-"<endl;cout<"6。-退出系統(tǒng)-”<endl;/輸入函數(shù)int shuru(xinxi st1) char a;cout<”-輸入開始!-"<endl;do q+;cout<”請輸入學(xué)生姓名”endl;cinname;st1q。setname(name);cout<"請輸入課程名稱”<endl;cin>kechen;st1q。setkechen(kechen);cout<<
36、"請輸入缺課日期”<endl;ciny>md;st1q。settime(y,m,d);cout”請輸入缺課類型”endl;cinqueke;st1q。setqklx(queke);cout”請輸入缺課節(jié)次”<<endl;cin>>jieci;st1q。setjieci(jieci);cout<”是否還要繼續(xù)輸入:(y/n)"endl;cina;while(a='y);return q+1;/修改函數(shù)void xiugai(xinxi st1,int n)int k=1,j=0,a10;int flgh;int h;while
37、(k=1) cout<"請輸入你要修改缺課記錄的學(xué)生姓名”<<endl;cin>>name;flgh=0;for(int i=0;in;i+)if(strcmp(name,st1i。getname()=0)do aj=i;cout”1.修改日期2.修改節(jié)次3。修改課程名稱4.修改缺課類型"<endl;cout”請輸入要選擇的數(shù)值(1,2,3,4)"<<endl;int b;cin>b;if(b=1) cout<"請輸入新日期"endl;ciny>md;st1i。settime(y
38、,m,d);else if(b=2)cout"請輸入新節(jié)次”<endl;cin>jieci;st1i。setjieci(jieci);else if(b=3)cout"請輸入新課程名稱"<endl;cinkechen;st1i.setkechen(kechen);else if(b=4) cout<"請輸入新缺課類型"<endl;cinqueke;st1i。setqklx(queke);flgh=1;j+;while(b1|b>4);if(flgh=0)cout"沒有你要找的學(xué)生姓名,請重試要退出請
39、按0”<endl;cink;elsecout<”還要繼續(xù)嗎(10)退出請按0”<<endl;cink;for(int i=0;i<j;i+) h=ai;xiansi(st1h);/ 查詢函數(shù)void chaxun(xinxi st1,qstu qt)char n=y;int u10;while(n='y') int j=0;cout<"輸入你要查詢的學(xué)生姓名:”endl;cinname;int i=0;for(;ig;i+)if(strcmp(name,st1i。getname()=0) uj=i;j+;if(j=0) cout&l
40、t;”沒有你所要的學(xué)生名字!”;/沒有找到cout<<"是否退出退出請按nn";cinn;for(int a=0;aj;a+) /只有一條信息if(j2) i=ua;cout<” 缺課日期 |"<<" 第幾節(jié)課 ”<” 課程名稱 ”<" 缺課類型"<endl;cout”"<<*st1i。gettime()” ”<<(st1i。gettime()+1)”| ”<*(st1i.gettime()+2)" ”<st1i。getjieci(
41、)"| ”st1i.getkechen()<<"| ”<st1i.getqklx()<<”| "<endl;/兩條信息以上排序elsei=ua;if(*(st1i。gettime()+1)(st1i+1。gettime()+1)qti。print(st1i);elseif((st1i.gettime()+1)=(st1i+1.gettime()+1)(st1i。gettime()+2)(st1i+1。gettime()+2)qti。print(st1i);else if(*(st1i。gettime()+1)=(st1i+1。g
42、ettime()+1)(st1i.gettime()+2)=(st1i+1.gettime()+2)if(strcmp(st1i。getjieci(),st1i+1.getjieci()=1)qti.print(st1i);cout<”是否繼續(xù)查詢(y/n)繼續(xù)請按y退出按n”endl;cin>n;/統(tǒng)計(jì)某段時間內(nèi)曠課學(xué)生姓名及曠課節(jié)數(shù)void tongji1(xinxi st1,qstu qt1) int d1=0,js=0;xinxi min;if(g=0)cout<”沒有你要統(tǒng)計(jì)的學(xué)生信息請返回菜單錄入學(xué)生缺課信息”<endl;else if(g=1)cout”姓
43、名:”st10。getname()endl;if(st10。getjieci()+2)!='0')js=+2;elsejs+;cout<”節(jié)數(shù):"<jsendl;else/信息按時間排序int i=0;for(;i(g-1);i+)if(*(st1i。gettime()+1)*(st1i+1。gettime()+1)min=st1i;st1i=st1i+1;st1i+1=st1i;else if((st1i。gettime()+1)=(st1i+1。gettime()+1)&(st1i。gettime()+2)(st1i+1。gettime()+2
44、))min=st1i;st1i=st1i+1;st1i+1=st1i;else if(st1i。gettime()+1)=(st1i+1。gettime()+1)&*(st1i。gettime()+2)=(st1i+1。gettime()+2)d1+;for(int j=0;j<(gd1);j+)cout<st1j。gettime()<*(st1j。gettime()+1)<(st1j.gettime()+2)<<endl;for(i=0;i<k;i+) setqstn(st1,qt1,g);cout<”姓名:"qt1i.qstn<<endl;cout<”節(jié)數(shù):"qt1i。g
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 微積分 第3版 課件 5.2 換元積分法
- 外陰腫瘤課件教學(xué)課件
- 地鐵與輕軌 知識點(diǎn)提綱與復(fù)習(xí)資料 同濟(jì)大學(xué)
- 老人扶養(yǎng)協(xié)議書(2篇)
- 南京航空航天大學(xué)《電磁頻譜認(rèn)知智能前沿導(dǎo)論》2023-2024學(xué)年期末試卷
- 南京工業(yè)大學(xué)浦江學(xué)院《線性代數(shù)(理工)》2022-2023學(xué)年第一學(xué)期期末試卷
- 南京工業(yè)大學(xué)浦江學(xué)院《設(shè)計(jì)思潮與設(shè)計(jì)理念》2023-2024學(xué)年第一學(xué)期期末試卷
- 蹲踞式起跑說課稿初中
- 織金縣城關(guān)鎮(zhèn)楊柳河廉租房A棟(126套)工程施工組織設(shè)計(jì)
- 南京工業(yè)大學(xué)浦江學(xué)院《計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)》2022-2023學(xué)年期末試卷
- GB/T 37356-2019色漆和清漆涂層目視評定的光照條件和方法
- GB/T 25744-2010鋼件滲碳淬火回火金相檢驗(yàn)
- 新版(七步法案例)PFMEA
- 美的中央空調(diào)故障代碼H系列家庭中央空調(diào)(第一部分多聯(lián)機(jī))
- 業(yè)主委員會成立流程圖
- 廣聯(lián)達(dá)辦公大廈工程施工組織設(shè)計(jì)
- 疑難病例HELLP綜合征
- Tiptop管理員手冊
- 華東師大版八年級上冊12. 5 因式分解——提公因式法分解因式(16張PPT)
- [寶典]國際梅協(xié)唱議書
- 集體戶口卡翻譯英文版
評論
0/150
提交評論