版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 畢 業(yè) 設(shè) 計(jì) 論 文</p><p> 學(xué)生考勤管理系統(tǒng)的設(shè)計(jì)</p><p> 學(xué)生姓名: </p><p> 專 業(yè):應(yīng)用電子技術(shù) </p><p> 班 級(jí): </p><p> 負(fù)責(zé)教師: <
2、/p><p> 2012 年 5 月</p><p> 一、學(xué)生考勤打卡機(jī)分析..........................................3</p><p> 二、系統(tǒng)的主要功能......................................3</p><p> 三、流程圖...............
3、...............................4</p><p> 四、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì).......................................4-7</p><p> 五、類設(shè)計(jì)..............................................7</p><p> 六、主要算法設(shè)計(jì).........
4、..............................8-9</p><p> 七、主要代碼...........................................9-21</p><p> 八、AT89S52單片機(jī)簡(jiǎn)介.............................22-31</p><p> 九、調(diào)試.............
5、...................................................................32-34</p><p> 十、總結(jié)............................................35</p><p> 一、學(xué)生考勤打卡機(jī)分析</p><p><b> 1.1需求分析&l
6、t;/b></p><p><b> 功能需求:</b></p><p> 1、錄入學(xué)生的缺勤記錄;</p><p> 2、修改某個(gè)學(xué)生的缺勤記錄; </p><p> 3、查詢某個(gè)學(xué)生的缺勤情況; </p><p> 4、統(tǒng)計(jì)某段時(shí)間內(nèi),缺勤學(xué)生學(xué)號(hào)及缺勤次數(shù),按缺勤權(quán)值統(tǒng)計(jì)
7、學(xué)生的負(fù)分值,并能進(jìn)行排序; </p><p> 5、統(tǒng)計(jì)某段時(shí)間內(nèi),有學(xué)生曠課的課程及曠課人次,按曠課人次由多到少排序; </p><p> 6、系統(tǒng)以菜單方式工作</p><p><b> 數(shù)據(jù)需求</b></p><p> 本系統(tǒng)主要涉及的數(shù)據(jù)有學(xué)生缺課信息類和有關(guān)信息排序類。學(xué)生缺課信息包
8、括缺課時(shí)間,學(xué)生姓名,課程名稱,第幾節(jié),學(xué)生遲到次數(shù),早退次數(shù),請(qǐng)假次數(shù),曠課次數(shù)。有關(guān)信息排序類包括對(duì)課程排序和對(duì)姓名排序。</p><p><b> 性能需求</b></p><p> 要求系統(tǒng)具有可靠性,速度要快</p><p><b> 二、系統(tǒng)的主要功能</b></p><p>
9、(1)、錄入學(xué)生的缺課記錄,函數(shù)代碼void input(records *r){}模塊中。首先提示用戶按照正確的格式進(jìn)行學(xué)生缺課記錄的錄入,這個(gè)步驟比較簡(jiǎn)單,只需要不斷地將記錄的每個(gè)數(shù)據(jù)項(xiàng)存入結(jié)構(gòu)體對(duì)應(yīng)的成員中。</p><p> (2)、修改某個(gè)學(xué)生的缺課記錄,函數(shù)代碼void edt(records *r){}模塊中。首先必須查找到你所需要修改的那位的學(xué)生全部缺課記錄。這個(gè)模塊不需要定義新的結(jié)構(gòu)體。在修改
10、前當(dāng)然要檢查記錄是否為空了,不為空的話,可以設(shè)置下面這五個(gè)菜單供用戶選擇:1、缺課日期2、第幾節(jié)課3、課程名稱4、學(xué)生姓名5、缺課類型6、退出修改程序并返回系統(tǒng)主菜單。修改很簡(jiǎn)單,僅需要對(duì)該學(xué)生的某個(gè)部分進(jìn)行替換即可。采用switch語(yǔ)句很快就解決。最后實(shí)現(xiàn)對(duì)所選記錄的修改,完成后更新原有的學(xué)生記錄。</p><p> (3)、查詢某個(gè)學(xué)生的缺課情況,函數(shù)代碼void search(records *r){}模
11、塊中。達(dá)到查詢結(jié)果按照日期升序排序,同一天內(nèi)按照所缺課程的時(shí)間升序排序的目的,</p><p> (4)、統(tǒng)計(jì),函數(shù)代碼為void order_c(){}和void order_s(){}的類模塊中。其中實(shí)現(xiàn)對(duì)課程排序和對(duì)學(xué)生姓名的排序。</p><p><b> 三、流程圖</b></p><p> 學(xué)生考勤系統(tǒng)結(jié)構(gòu)圖:</p&g
12、t;<p><b> 四、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)</b></p><p> 此程序運(yùn)用多種條件語(yǔ)句,主體采用的是動(dòng)態(tài)數(shù)組、指針。系統(tǒng)的設(shè)計(jì)采用了數(shù)組語(yǔ)句、選擇語(yǔ)句和循環(huán)語(yǔ)句,在需要處理大量同類數(shù)據(jù)時(shí),這樣就使程序書寫更加簡(jiǎn)潔。程序使用了布爾函數(shù)。選擇語(yǔ)句多采用if多分支選擇結(jié)構(gòu)與switch語(yǔ)句。首先計(jì)算switch表達(dá)式,然后在caes子句中尋找值相等的常量表達(dá)式,并以此為入口符號(hào)
13、,由此開始順序執(zhí)行。循環(huán)語(yǔ)句采用了for語(yǔ)句等、do-while語(yǔ)句,for語(yǔ)句用于已知循環(huán)次數(shù)的循環(huán)結(jié)構(gòu),括號(hào)中的三個(gè)量分別用來(lái)表示循環(huán)變量初值、循環(huán)終值和循環(huán)增量。do-while語(yǔ)句先循環(huán)后判斷, Break語(yǔ)句在switch語(yǔ)句中,保證多分支情況的正確執(zhí)行,在循環(huán)語(yǔ)句中,強(qiáng)制終止本層循環(huán)。保存和讀取函數(shù)是典型的函數(shù)功能,一個(gè)程序是由若干個(gè)函數(shù)組成的,保存和讀取函數(shù)是和其他函數(shù)互相調(diào)用的</p><p>
14、 再有使用有關(guān)類的設(shè)計(jì),學(xué)生缺課信息類和有關(guān)信息排序類,如下:</p><p> class record //學(xué)生缺課信息類</p><p><b> {</b></p><p><b> public:</b></p><p> void set(string d,int cno,s
15、tring c,string s,int type)</p><p><b> {</b></p><p> date.assign(d);//日期</p><p> cname.assign(c);//課程名字</p><p> sname.assign(s);//學(xué)生姓名</p><p&g
16、t; this->cno=cno;//對(duì)缺課類型的選擇 為int型</p><p> this->type=type;//缺課類型</p><p><b> }</b></p><p> void set(record re)</p><p><b> {</b></p
17、><p> date.assign(re.date);</p><p> cname.assign(re.cname);</p><p> sname.assign(re.sname);</p><p> this->cno=re.cno;</p><p> this->type=re.type;&l
18、t;/p><p><b> }</b></p><p> string date,cname,sname;</p><p> int cno,type;</p><p><b> };</b></p><p> class records //實(shí)現(xiàn)學(xué)生曠課情況排序的
19、類</p><p><b> {</b></p><p><b> public:</b></p><p> records() //構(gòu)造函數(shù)</p><p><b> {</b></p><p> r=new record[100];<
20、;/p><p><b> n=0;</b></p><p><b> }</b></p><p> void order_s() //姓名的排序</p><p><b> {</b></p><p><b> int i;</b&
21、gt;</p><p><b> int j;</b></p><p> string *s=new string[n];</p><p> int *c=new int [n];</p><p> s[0].assign(r[0].sname);</p><p><b> c
22、[0]=1;</b></p><p> int k=1,flag;</p><p> for( i=1;i<n;i++)</p><p><b> {</b></p><p><b> flag=0;</b></p><p> for( j=0;j
23、<k;j++)</p><p> if(r[i].sname==s[j])</p><p><b> {</b></p><p><b> c[j]++;</b></p><p><b> flag=1;</b></p><p><b
24、> break;</b></p><p><b> }</b></p><p><b> if(!flag)</b></p><p><b> {</b></p><p> s[k]=r[i].sname;</p><p>&
25、lt;b> c[k++]=1;</b></p><p><b> }</b></p><p><b> }</b></p><p> for(i=1;i<k;i++)</p><p> for( j=i;j>0;j--)</p><p>
26、;<b> {</b></p><p> if(c[j]>c[j-1])</p><p><b> {</b></p><p> int tmp=c[j];</p><p> c[j]=c[j-1];</p><p> c[j-1]=tmp;</p&g
27、t;<p> string stmp=s[j];</p><p> s[j]=s[j-1];</p><p> s[j-1]=stmp;</p><p><b> }</b></p><p><b> }</b></p><p> cout<&
28、lt;"曠課學(xué)生姓名\t曠課次數(shù)"<<endl;</p><p> for(i=0;i<k;i++)</p><p> cout<<s[i]<<"\t\t"<<c[i]<<endl;</p><p><b> }</b></p&
29、gt;<p> void order_c() //課程排序</p><p><b> {</b></p><p><b> int i,j;</b></p><p> string *s=new string[n];</p><p> int *c=new int [n];
30、</p><p> s[0].assign(r[0].cname);</p><p><b> c[0]=1;</b></p><p> int k=1,flag;</p><p> for( i=1;i<n;i++)</p><p><b> {</b>&l
31、t;/p><p><b> flag=0;</b></p><p> for(j=0;j<k;j++)</p><p> if(r[i].cname==s[j])</p><p><b> {</b></p><p><b> c[j]++;</b
32、></p><p><b> flag=1;</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> if(!flag)</b></p><p><
33、b> {</b></p><p> s[k]=r[i].cname;</p><p><b> c[k++]=1;</b></p><p><b> }</b></p><p><b> }</b></p><p> for
34、(i=1;i<k;i++)</p><p> for( j=i;j>0;j--)</p><p><b> {</b></p><p> if(c[j]>c[j-1])</p><p><b> {</b></p><p> int tmp=c[j
35、];</p><p> c[j]=c[j-1];</p><p> c[j-1]=tmp;</p><p> string stmp=s[j];</p><p> s[j]=s[j-1];</p><p> s[j-1]=stmp;</p><p><b> }</b
36、></p><p><b> }</b></p><p> cout<<"課程名\t曠課人次"<<endl;</p><p> for(i=0;i<k;i++)</p><p> cout<<s[i]<<"\t"&
37、lt;<c[i]<<endl;</p><p><b> }</b></p><p> record *r;</p><p><b> int n;</b></p><p><b> };</b></p><p><b&g
38、t; 五、類設(shè)計(jì)</b></p><p> 系統(tǒng)中主要涉及了兩個(gè)類:</p><p> 一個(gè)是class record //關(guān)于學(xué)生考勤基本信息類</p><p> 另一個(gè)是class records//實(shí)現(xiàn)學(xué)生曠課情況排序的類</p><p><b> 六、主要算法設(shè)計(jì) </b></p&g
39、t;<p><b> 關(guān)鍵算法:</b></p><p><b> 曠課情況的排序:</b></p><p> class records//實(shí)現(xiàn)學(xué)生曠課情況排序的類</p><p><b> {</b></p><p><b> public
40、:</b></p><p> records() //構(gòu)造函數(shù)</p><p><b> {</b></p><p> r=new record[100];</p><p><b> n=0;</b></p><p><b> 曠課記錄的修改
41、:</b></p><p> cout<<"請(qǐng)輸入要修改缺課記錄的學(xué)生姓名: "<<flush;</p><p> string t1,t3,t4;</p><p> char tmp[30];</p><p> int t2,t5,flag=0;</p><
42、p><b> cin>>tmp;</b></p><p> t1.assign(tmp);</p><p> for(i=0;i<r->n;i++)</p><p> if(r->r[i].sname==t1)</p><p><b> {</b><
43、;/p><p><b> flag=7;</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> if(!flag)</b></p><p><b>
44、{</b></p><p> cout<<"查無(wú)此學(xué)生!"<<endl;</p><p><b> return;</b></p><p><b> }</b></p><p> t1=r->r[i].date;</p>
45、;<p> t2=r->r[i].cno;</p><p> t3=r->r[i].cname;</p><p> t4=r->r[i].sname;</p><p> t5=r->r[i].type;</p><p><b> 曠課項(xiàng)目的修改!</b></p>
46、<p> cout<<"請(qǐng)輸入要修改的項(xiàng)目:\n(1.缺課日期 2.缺課節(jié)次 3.缺課名稱 4.學(xué)生姓名 5.缺課類型 6.全部) "<<flush;</p><p><b> e0:</b></p><p> cin>>flag;</p><p> switch(f
47、lag)</p><p><b> {</b></p><p> case 1:goto e1;</p><p> case 2:goto e2;</p><p> case 3:goto e3;</p><p> case 4:goto e4;</p><p>
48、 case 5:goto e5;</p><p> case 6:goto e1;</p><p> default:goto e0;</p><p><b> }</b></p><p> 用到的知識(shí)點(diǎn)有:函數(shù)的作用域、函數(shù)的調(diào)用、數(shù)組賦值、函數(shù)循環(huán)、以及類的定義,另外還用到了for函數(shù)、getch函數(shù)、sw
49、itch函數(shù)、case函數(shù)、default函數(shù)等等。</p><p><b> 七、主要代碼</b></p><p> 第一部分:學(xué)生考勤管理系統(tǒng)</p><p> #include "stdlib.h"</p><p> #include "hanshushixian.h"
50、;</p><p> #include "record.h"</p><p> #include <string></p><p> #include <iostream></p><p> #include <iomanip></p><p> #in
51、clude <fstream></p><p> using namespace std;</p><p> #include "record.h"</p><p> int main()</p><p><b> {</b></p><p> c1:
52、//主菜單實(shí)現(xiàn)</p><p> system("cls");</p><p><b> { </b></p><p> cout<<" *************************************************************"&
53、lt;<endl; </p><p> cout<<" *** ★歡迎訪問(wèn)學(xué)生考勤管理系統(tǒng)★ ***"<<endl; </p><p> cout<<" ************************************
54、*************************"<<endl; </p><p> cout<<" *** 系統(tǒng)主菜單: 1.顯示所有學(xué)生的缺課記錄 ***"<<endl;</p><p> cout<<" ***
55、 2.錄入學(xué)生的缺課信息記錄 ***"<<endl; </p><p> cout<<" *** 3.查詢某個(gè)學(xué)生的缺課情況 ***"<<endl; </p><p> cout<<
56、" *** 4.修改某個(gè)學(xué)生的缺課記錄 ***"<<endl; </p><p> cout<<" *** 5.刪除某個(gè)學(xué)生的缺課記錄 ***"<<endl; </p>
57、<p> cout<<" *** 6.統(tǒng)計(jì)某段時(shí)間內(nèi)曠課情況 ***"<<endl; </p><p> cout<<" *** 7. 退出系統(tǒng) ***
58、"<<endl; </p><p> cout<<" *************************************************************"<<endl; </p><p><b> }</b></p><p> c
59、out<<"O(∩_∩)O 請(qǐng)選擇你所需要的操作 O(∩_∩)O: "<<flush;</p><p> int chose;</p><p><b> c2:</b></p><p> cin>>chose;</p><p> if(chose==7)e
60、xit(0);</p><p> records *r=new records();</p><p><b> rd(r);</b></p><p> switch(chose)</p><p><b> {</b></p><p> case 1:pri(r);b
61、reak;</p><p> case 2:input(r);break;</p><p> case 3:search(r);break;</p><p> case 4:edt(r);break;</p><p> case 5:del(r);break;</p><p> case 6:search_s
62、(r);break;</p><p> default:goto c2;</p><p><b> }</b></p><p> cout<<"是否返回主菜單? (y/n)——你的選擇: "<<flush;</p><p><b> char yn;</
63、b></p><p><b> c3:</b></p><p><b> cin>>yn;</b></p><p> if(yn=='y')goto c1;</p><p> else if(yn=='n')exit(0);</p>
64、;<p> else goto c3;</p><p><b> return 0;</b></p><p><b> }</b></p><p> 第二部分:record.h (類的設(shè)計(jì)部分)</p><p> #include <iostream></
65、p><p> #include <string></p><p> using namespace std;</p><p> #ifndef record_class</p><p> #define record_class</p><p> class record //關(guān)于學(xué)生考勤基本信息類
66、</p><p><b> {</b></p><p><b> public:</b></p><p> void set(string d,int cno,string c,string s,int type)</p><p><b> {</b></p>
67、;<p> date.assign(d);</p><p> cname.assign(c);</p><p> sname.assign(s);</p><p> this->cno=cno;</p><p> this->type=type;</p><p><b>
68、 }</b></p><p> void set(record & re)</p><p><b> {</b></p><p> date.assign(re.date);//assign可以避免不必要的內(nèi)存分配,可以提高效率</p><p> cname.assign(re.cname);
69、</p><p> sname.assign(re.sname);</p><p> this->cno=re.cno;</p><p> this->type=re.type;</p><p><b> }</b></p><p> string tostr()</p
70、><p><b> {</b></p><p><b> string s;</b></p><p> char tmp[3];</p><p> s.assign(date);</p><p> itoa(cno,tmp,10);</p><p&g
71、t; s.append("#");</p><p> s.append(tmp);//直接添加另一個(gè)完整的字符串</p><p> s.append("#");</p><p> s.append(cname);</p><p> s.append("#");</p&
72、gt;<p> s.append(sname);</p><p> itoa(type,tmp,10);</p><p> s.append("#");</p><p> s.append(tmp);</p><p><b> return s;</b></p>
73、<p><b> }</b></p><p> string date;</p><p> string cname;</p><p> string sname;</p><p><b> int cno;</b></p><p><b>
74、int type;</b></p><p><b> };</b></p><p> #endif record_class</p><p> #ifndef records_class</p><p> #define records_class</p><p> clas
75、s records//實(shí)現(xiàn)學(xué)生曠課情況排序的類</p><p><b> {</b></p><p><b> public:</b></p><p> records() //構(gòu)造函數(shù)</p><p><b> {</b></p><p>
76、 r=new record[100];</p><p><b> n=0;</b></p><p><b> }</b></p><p> void order_s() //姓名的排序</p><p><b> {</b></p><p>&l
77、t;b> int i;</b></p><p><b> int j;</b></p><p> string *s=new string[n];</p><p> int *c=new int [n];</p><p> s[0].assign(r[0].sname);</p>
78、<p><b> c[0]=1;</b></p><p> int k=1,flag;</p><p> for( i=1;i<n;i++)</p><p><b> {</b></p><p><b> flag=0;</b></p>
79、<p> for( j=0;j<k;j++)</p><p> if(r[i].sname==s[j])</p><p><b> {</b></p><p><b> c[j]++;</b></p><p><b> flag=1;</b><
80、/p><p><b> break;</b></p><p><b> }</b></p><p><b> if(!flag)</b></p><p><b> {</b></p><p> s[k]=r[i].sname;
81、</p><p><b> c[k++]=1;</b></p><p><b> }</b></p><p><b> }</b></p><p> for(i=1;i<k;i++)</p><p> for( j=i;j>0;j-
82、-)</p><p><b> {</b></p><p> if(c[j]>c[j-1])</p><p><b> {</b></p><p> int tmp=c[j];</p><p> c[j]=c[j-1];</p><p>
83、; c[j-1]=tmp;</p><p> string stmp=s[j];</p><p> s[j]=s[j-1];</p><p> s[j-1]=stmp;</p><p><b> }</b></p><p><b> }</b></p>
84、<p> cout<<"曠課學(xué)生姓名\t曠課次數(shù)"<<endl;</p><p> for(i=0;i<k;i++)</p><p> cout<<s[i]<<"\t\t"<<c[i]<<endl;</p><p><b&g
85、t; }</b></p><p> void order_c() //課程排序</p><p><b> {</b></p><p><b> int i,j;</b></p><p> string *s=new string[n];</p><p>
86、; int *c=new int [n];</p><p> s[0].assign(r[0].cname);</p><p><b> c[0]=1;</b></p><p> int k=1,flag;</p><p> for( i=1;i<n;i++)</p><p>&l
87、t;b> {</b></p><p><b> flag=0;</b></p><p> for(j=0;j<k;j++)</p><p> if(r[i].cname==s[j])</p><p><b> {</b></p><p>&l
88、t;b> c[j]++;</b></p><p><b> flag=1;</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> if(!flag)</b><
89、;/p><p><b> {</b></p><p> s[k]=r[i].cname;</p><p><b> c[k++]=1;</b></p><p><b> }</b></p><p><b> }</b><
90、/p><p> for(i=1;i<k;i++)</p><p> for( j=i;j>0;j--)</p><p><b> {</b></p><p> if(c[j]>c[j-1])</p><p><b> {</b></p>
91、<p> int tmp=c[j];</p><p> c[j]=c[j-1];</p><p> c[j-1]=tmp;</p><p> string stmp=s[j];</p><p> s[j]=s[j-1];</p><p> s[j-1]=stmp;</p><p
92、><b> }</b></p><p><b> }</b></p><p> cout<<"課程名\t曠課人次"<<endl;</p><p> for(i=0;i<k;i++)</p><p> cout<<s[i]&
93、lt;<"\t"<<c[i]<<endl;</p><p><b> }</b></p><p> record *r;</p><p><b> int n;</b></p><p><b> };</b></p
94、><p> #endif records_class</p><p> 第三部分:hanshushixian.h (功能子函數(shù)的實(shí)現(xiàn)部分)</p><p> #include "record.h"</p><p> #include <string></p><p> #incl
95、ude <iostream></p><p> #include <fstream></p><p> #include "stdlib.h"</p><p> #include <iomanip></p><p> using namespace std;</p>
96、<p> void wt(records *r)//實(shí)現(xiàn)對(duì)文件的輸出</p><p><b> {</b></p><p> ofstream outf("data.txt");</p><p> for(int i=0;i<r->n;i++)</p><p> ou
97、tf<<r->r[i].tostr()<<endl;</p><p> outf<<"!"<<endl;</p><p><b> }</b></p><p> void rd(records *r)//實(shí)現(xiàn)對(duì)文件的輸入</p><p>&l
98、t;b> {</b></p><p> ifstream inf("data.txt");</p><p> if(inf.eof())</p><p><b> {</b></p><p> cout<<"記錄為空!"<<end
99、l;</p><p><b> return;</b></p><p><b> }</b></p><p> string t1,t3,t4;</p><p> char tmp[30];</p><p> int t2,t5;</p><p&
100、gt;<b> r->n=0;</b></p><p> while(true)</p><p><b> {</b></p><p> inf.getline(tmp,10,'#');</p><p> if(tmp[0]=='!')break;&l
101、t;/p><p> t1.assign(tmp);</p><p> inf.getline(tmp,3,'#');</p><p> t2=atoi(tmp);</p><p> inf.getline(tmp,30,'#');</p><p> t3.assign(tmp);&
102、lt;/p><p> inf.getline(tmp,30,'#');</p><p> t4.assign(tmp);</p><p> inf.getline(tmp,3);</p><p> t5=atoi(tmp);</p><p> r->r[r->n++].set(t1,t
103、2,t3,t4,t5);</p><p><b> }</b></p><p><b> }</b></p><p> bool timechk(string t1)</p><p><b> {</b></p><p> int year=a
104、toi(t1.substr(0,2).c_str());</p><p> int month=atoi(t1.substr(2,2).c_str());</p><p> int day=atoi(t1.substr(4,2).c_str());</p><p> if(!(t1.length()==6&&year>0&&
105、;year<99&&month>0&&month<13&&day>0&&day<32))</p><p><b> {</b></p><p> cout<<"日期錄入有誤! 請(qǐng)重新錄入: "<<endl;</p>
106、<p> return false;</p><p><b> }</b></p><p> else return true;</p><p><b> }</b></p><p> void input(records *r)//錄入學(xué)生的缺課記錄</p>&
107、lt;p><b> {</b></p><p> string t1,t3,t4;</p><p> int t2,t5,flag=0;</p><p><b> char yn;</b></p><p> cout<<"錄入一條學(xué)生缺課記錄:"<
108、;<endl;//endl表示終止一行并刷新緩沖區(qū)</p><p><b> m1:</b></p><p> cout<<"請(qǐng)輸入缺課日期: (例如110627) "<<flush;//flush表示刷新緩沖區(qū)</p><p><b> cin>>t1;</b
109、></p><p> if(!(timechk(t1)))goto m1;</p><p><b> m2:</b></p><p> cout<<"請(qǐng)輸入缺第幾節(jié)課: "<<flush;</p><p><b> cin>>t2;</
110、b></p><p> if(t2<1||t2>10)</p><p><b> {</b></p><p> cout<<"節(jié)次錄入有誤! 請(qǐng)重新錄入: "<<endl;</p><p><b> goto m2;</b><
111、;/p><p><b> }</b></p><p> cout<<"請(qǐng)輸入缺課名稱: "<<flush;</p><p><b> cin>>t3;</b></p><p> cout<<"請(qǐng)輸入缺課學(xué)生姓名: &q
112、uot;<<flush;</p><p><b> cin>>t4;</b></p><p><b> m3:</b></p><p> cout<<"請(qǐng)輸入缺課類型: (1.遲到 2.早退 3.請(qǐng)假 4.曠課) "<<flush;</p>
113、;<p><b> cin>>t5;</b></p><p> if(t5<1||t5>4)</p><p><b> {</b></p><p> cout<<"類型輸入有誤! 請(qǐng)重新錄入: "<<endl;</p>
114、<p><b> goto m3;</b></p><p><b> }</b></p><p> for(int i=0;i<r->n;i++)</p><p> if(r->r[i].date==t1&&r->r[i].cno==t2&&r-&g
115、t;r[i].cname==t3&&r->r[i].sname==t4&&r->r[i].type==t5)</p><p><b> {</b></p><p> cout<<"該條記錄已存在,是否添加為新記錄? (y/n) "<<flush;</p><
116、p><b> n1:</b></p><p><b> cin>>yn;</b></p><p> if(yn=='y')break;</p><p> else if(yn=='n')goto n2;</p><p> else goto
117、 n1;</p><p><b> }</b></p><p> r->r[r->n++].set(t1,t2,t3,t4,t5);</p><p><b> n2:</b></p><p> cout<<"是否繼續(xù)輸入? (y/n) "<&
118、lt;flush;</p><p><b> n3:</b></p><p><b> cin>>yn;</b></p><p> if(yn=='y')goto m1;</p><p> else if(yn=='n')</p>&
119、lt;p><b> {</b></p><p> cout<<"保存修改? (y/n) "<<flush;</p><p><b> cin>>yn;</b></p><p> if(yn=='y')wt(r);</p>&
120、lt;p> else return;</p><p><b> }</b></p><p> else goto n3;</p><p><b> }</b></p><p> void prione(record r)</p><p><b>
121、{</b></p><p> cout<<r.date<<"\t\t"</p><p> <<r.cno<<"\t"</p><p> <<r.cname<<"\t\t"</p><p> &
122、lt;<r.sname<<"\t\t"</p><p><b> <<flush;</b></p><p> switch(r.type)</p><p><b> {</b></p><p> case 1:cout<<&quo
123、t;遲到"<<endl;break;</p><p> case 2:cout<<"早退"<<endl;break;</p><p> case 3:cout<<"請(qǐng)假"<<endl;break;</p><p> case 4:cout<<
124、;"曠課"<<endl;break;</p><p><b> default:;</b></p><p><b> }</b></p><p><b> }</b></p><p> void pri(records *r)//修改學(xué)生
125、信息</p><p><b> {</b></p><p> if(r->n==0)</p><p><b> {</b></p><p> cout<<"記錄為空!"<<endl;</p><p><b>
126、 return;</b></p><p><b> }</b></p><p> cout<<"\n序號(hào)\t缺課日期 節(jié)次\t課程名稱\t學(xué)生姓名\t缺課類型"<<endl;</p><p> for(int i=0;i<r->n;i++)</p>
127、<p><b> {</b></p><p> cout<<i<<"\t"<<flush;</p><p> prione(r->r[i]);</p><p><b> }</b></p><p><b>
128、 }</b></p><p> void edt(records *r)//修改學(xué)生信息</p><p><b> {</b></p><p><b> int i;</b></p><p> if(r->n==0)</p><p><b&g
129、t; {</b></p><p> cout<<"記錄為空!"<<endl;</p><p><b> return;</b></p><p><b> }</b></p><p> cout<<"請(qǐng)輸入要修改缺
130、課記錄的學(xué)生姓名: "<<flush;</p><p> string t1,t3,t4;</p><p> char tmp[30];</p><p> int t2,t5,flag=0;</p><p><b> cin>>tmp;</b></p><p&
131、gt; t1.assign(tmp);</p><p> for(i=0;i<r->n;i++)</p><p> if(r->r[i].sname==t1)</p><p><b> {</b></p><p><b> flag=7;</b></p>&
132、lt;p><b> break;</b></p><p><b> }</b></p><p><b> if(!flag)</b></p><p><b> {</b></p><p> cout<<"查無(wú)此學(xué)生!&
133、quot;<<endl;</p><p><b> return;</b></p><p><b> }</b></p><p> t1=r->r[i].date;</p><p> t2=r->r[i].cno;</p><p> t3=r
134、->r[i].cname;</p><p> t4=r->r[i].sname;</p><p> t5=r->r[i].type;</p><p> cout<<"請(qǐng)輸入要修改的項(xiàng)目:\n(1.缺課日期 2.缺課節(jié)次 3.缺課名稱 4.學(xué)生姓名 5.缺課類型 6.全部) "<<flush;<
135、/p><p><b> e0:</b></p><p> cin>>flag;</p><p> switch(flag)</p><p><b> {</b></p><p> case 1:goto e1;</p><p> c
136、ase 2:goto e2;</p><p> case 3:goto e3;</p><p> case 4:goto e4;</p><p> case 5:goto e5;</p><p> case 6:goto e1;</p><p> default:goto e0;</p><
137、;p><b> }</b></p><p><b> e1:</b></p><p> cout<<"請(qǐng)輸入缺課日期: (例如080612) "<<flush;</p><p><b> cin>>t1;</b></p>
138、<p> if(flag!=6)goto e6;</p><p><b> e2:</b></p><p> cout<<"請(qǐng)輸入缺第幾節(jié)課: "<<flush;</p><p><b> cin>>t2;</b></p><
139、p> if(flag!=6)goto e6;</p><p><b> e3:</b></p><p> cout<<"請(qǐng)輸入缺課名稱: "<<flush;</p><p><b> cin>>t3;</b></p><p>
140、if(flag!=6)goto e6;</p><p><b> e4:</b></p><p> cout<<"請(qǐng)輸入缺課學(xué)生姓名: "<<flush;</p><p><b> cin>>t4;</b></p><p> if(fl
141、ag!=6)goto e6;</p><p><b> e5:</b></p><p> cout<<"請(qǐng)輸入缺課類型: (1.遲到 2.早退 3.請(qǐng)假 4.曠課) "<<flush;</p><p><b> cin>>t5;</b></p>&
142、lt;p><b> e6:</b></p><p> r->r[i].set(t1,t2,t3,t4,t5);</p><p><b> char yn;</b></p><p> cout<<"保存修改? (y/n) "<<flush;</p>
143、<p><b> cin>>yn;</b></p><p> if(yn=='y')wt(r);</p><p> else return;</p><p><b> }</b></p><p> void del(records *r)//刪除學(xué)生
144、信息</p><p><b> {</b></p><p> if(r->n==0)</p><p><b> {</b></p><p> cout<<"記錄為空!"<<endl;</p><p><b>
145、 return;</b></p><p><b> }</b></p><p> cout<<"請(qǐng)輸入要?jiǎng)h除的記錄的序號(hào): (輸入-1刪除全部) "<<flush;</p><p><b> int flag;</b></p><p>
146、 cin>>flag;</p><p> if(flag>r->n-1&&flag<-1)</p><p><b> {</b></p><p> cout<<"不存在所要?jiǎng)h除的記錄!"<<endl;</p><p><
147、;b> return;</b></p><p><b> }</b></p><p> else if(flag==-1)r->n=0;</p><p><b> else</b></p><p><b> {</b></p>&
148、lt;p> for(int i=flag;i<r->n-1;i++)</p><p> r->r[i].set(r->r[i+1]);</p><p><b> r->n--;</b></p><p><b> }</b></p><p><b>
149、; char yn;</b></p><p> cout<<"保存修改? (y/n) "<<flush;</p><p><b> cin>>yn;</b></p><p> if(yn=='y')wt(r);</p><p>
150、 else return;</p><p><b> }</b></p><p> void search(records *r)//查找學(xué)生信息</p><p><b> {</b></p><p> if(r->n==0)</p><p><b>
151、 {</b></p><p> cout<<"記錄為空!"<<endl;</p><p><b> return;</b></p><p><b> }</b></p><p> cout<<"請(qǐng)輸入要查詢的學(xué)生
152、姓名: "<<flush;</p><p> string str;</p><p> int j=0,flag=0;</p><p><b> cin>>str;</b></p><p> for(int i=0;i<r->n;i++)</p><
153、;p> if(r->r[i].sname==str)</p><p><b> {</b></p><p> if(!flag)cout<<"\n序號(hào)\t缺課日期 節(jié)次\t課程名稱\t學(xué)生姓名\t缺課類型"<<endl;</p><p> cout<<j++&
154、lt;<"\t"<<flush;</p><p> prione(r->r[i]);</p><p><b> flag=1;</b></p><p><b> }</b></p><p> if(!flag)cout<<"沒(méi)
155、有查到該學(xué)生的缺課記錄!"<<endl;</p><p><b> }</b></p><p> void search_s(records *r)//一定范圍查找學(xué)生信息</p><p><b> {</b></p><p><b> int i;<
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 考勤管理系統(tǒng)畢業(yè)論文設(shè)計(jì)
- 考勤管理系統(tǒng)畢業(yè)論文
- 學(xué)生指紋考勤系統(tǒng)畢業(yè)論文
- 考勤管理系統(tǒng)畢業(yè)論文
- 學(xué)生考勤管理系統(tǒng)──在線考勤子功能設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)論文】
- 畢業(yè)論文學(xué)生考勤系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 企業(yè)考勤管理系統(tǒng)畢業(yè)論文
- 學(xué)生上機(jī)考勤系統(tǒng)畢業(yè)論文
- 畢業(yè)論文--學(xué)生考勤管理信息系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 企業(yè)考勤管理系統(tǒng)畢業(yè)論文
- 課堂考勤管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- 考勤管理系統(tǒng)畢業(yè)論文設(shè)計(jì)v6.7
- 考勤系統(tǒng)畢業(yè)論文
- 基于jsp的員工考勤管理系統(tǒng)設(shè)計(jì)畢業(yè)論文
- 畢業(yè)論文學(xué)生考勤管理信息系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 學(xué)生考勤管理系統(tǒng)──處分管理子功能設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)論文】
- 員工考勤系統(tǒng)app設(shè)計(jì)-畢業(yè)論文
- 計(jì)算機(jī)專業(yè)畢業(yè)論文-考勤管理系統(tǒng)設(shè)計(jì)
- 畢業(yè)論文----學(xué)生管理系統(tǒng)設(shè)計(jì)
- 畢業(yè)論文范文——人事考勤管理系統(tǒng)
評(píng)論
0/150
提交評(píng)論