版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 畢 業(yè) 設 計 論 文</p><p> 學生考勤管理系統(tǒng)的設計</p><p> 學生姓名: </p><p> 專 業(yè):應用電子技術 </p><p> 班 級: </p><p> 負責教師: <
2、/p><p> 2012 年 5 月</p><p> 一、學生考勤打卡機分析..........................................3</p><p> 二、系統(tǒng)的主要功能......................................3</p><p> 三、流程圖...............
3、...............................4</p><p> 四、數據結構設計.......................................4-7</p><p> 五、類設計..............................................7</p><p> 六、主要算法設計.........
4、..............................8-9</p><p> 七、主要代碼...........................................9-21</p><p> 八、AT89S52單片機簡介.............................22-31</p><p> 九、調試.............
5、...................................................................32-34</p><p> 十、總結............................................35</p><p> 一、學生考勤打卡機分析</p><p><b> 1.1需求分析&l
6、t;/b></p><p><b> 功能需求:</b></p><p> 1、錄入學生的缺勤記錄;</p><p> 2、修改某個學生的缺勤記錄; </p><p> 3、查詢某個學生的缺勤情況; </p><p> 4、統(tǒng)計某段時間內,缺勤學生學號及缺勤次數,按缺勤權值統(tǒng)計
7、學生的負分值,并能進行排序; </p><p> 5、統(tǒng)計某段時間內,有學生曠課的課程及曠課人次,按曠課人次由多到少排序; </p><p> 6、系統(tǒng)以菜單方式工作</p><p><b> 數據需求</b></p><p> 本系統(tǒng)主要涉及的數據有學生缺課信息類和有關信息排序類。學生缺課信息包
8、括缺課時間,學生姓名,課程名稱,第幾節(jié),學生遲到次數,早退次數,請假次數,曠課次數。有關信息排序類包括對課程排序和對姓名排序。</p><p><b> 性能需求</b></p><p> 要求系統(tǒng)具有可靠性,速度要快</p><p><b> 二、系統(tǒng)的主要功能</b></p><p>
9、(1)、錄入學生的缺課記錄,函數代碼void input(records *r){}模塊中。首先提示用戶按照正確的格式進行學生缺課記錄的錄入,這個步驟比較簡單,只需要不斷地將記錄的每個數據項存入結構體對應的成員中。</p><p> (2)、修改某個學生的缺課記錄,函數代碼void edt(records *r){}模塊中。首先必須查找到你所需要修改的那位的學生全部缺課記錄。這個模塊不需要定義新的結構體。在修改
10、前當然要檢查記錄是否為空了,不為空的話,可以設置下面這五個菜單供用戶選擇:1、缺課日期2、第幾節(jié)課3、課程名稱4、學生姓名5、缺課類型6、退出修改程序并返回系統(tǒng)主菜單。修改很簡單,僅需要對該學生的某個部分進行替換即可。采用switch語句很快就解決。最后實現(xiàn)對所選記錄的修改,完成后更新原有的學生記錄。</p><p> (3)、查詢某個學生的缺課情況,函數代碼void search(records *r){}模
11、塊中。達到查詢結果按照日期升序排序,同一天內按照所缺課程的時間升序排序的目的,</p><p> (4)、統(tǒng)計,函數代碼為void order_c(){}和void order_s(){}的類模塊中。其中實現(xiàn)對課程排序和對學生姓名的排序。</p><p><b> 三、流程圖</b></p><p> 學生考勤系統(tǒng)結構圖:</p&g
12、t;<p><b> 四、數據結構設計</b></p><p> 此程序運用多種條件語句,主體采用的是動態(tài)數組、指針。系統(tǒng)的設計采用了數組語句、選擇語句和循環(huán)語句,在需要處理大量同類數據時,這樣就使程序書寫更加簡潔。程序使用了布爾函數。選擇語句多采用if多分支選擇結構與switch語句。首先計算switch表達式,然后在caes子句中尋找值相等的常量表達式,并以此為入口符號
13、,由此開始順序執(zhí)行。循環(huán)語句采用了for語句等、do-while語句,for語句用于已知循環(huán)次數的循環(huán)結構,括號中的三個量分別用來表示循環(huán)變量初值、循環(huán)終值和循環(huán)增量。do-while語句先循環(huán)后判斷, Break語句在switch語句中,保證多分支情況的正確執(zhí)行,在循環(huán)語句中,強制終止本層循環(huán)。保存和讀取函數是典型的函數功能,一個程序是由若干個函數組成的,保存和讀取函數是和其他函數互相調用的</p><p>
14、 再有使用有關類的設計,學生缺課信息類和有關信息排序類,如下:</p><p> class record //學生缺課信息類</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);//學生姓名</p><p&g
16、t; this->cno=cno;//對缺課類型的選擇 為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 //實現(xiàn)學生曠課情況排序的
19、類</p><p><b> {</b></p><p><b> public:</b></p><p> records() //構造函數</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;"曠課學生姓名\t曠課次數"<<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; 五、類設計</b></p><p> 系統(tǒng)中主要涉及了兩個類:</p><p> 一個是class record //關于學生考勤基本信息類</p><p> 另一個是class records//實現(xiàn)學生曠課情況排序的類</p><p><b> 六、主要算法設計 </b></p&g
39、t;<p><b> 關鍵算法:</b></p><p><b> 曠課情況的排序:</b></p><p> class records//實現(xiàn)學生曠課情況排序的類</p><p><b> {</b></p><p><b> public
40、:</b></p><p> records() //構造函數</p><p><b> {</b></p><p> r=new record[100];</p><p><b> n=0;</b></p><p><b> 曠課記錄的修改
41、:</b></p><p> cout<<"請輸入要修改缺課記錄的學生姓名: "<<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<<"查無此學生!"<<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> 曠課項目的修改!</b></p>
46、<p> cout<<"請輸入要修改的項目:\n(1.缺課日期 2.缺課節(jié)次 3.缺課名稱 4.學生姓名 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> 用到的知識點有:函數的作用域、函數的調用、數組賦值、函數循環(huán)、以及類的定義,另外還用到了for函數、getch函數、sw
49、itch函數、case函數、default函數等等。</p><p><b> 七、主要代碼</b></p><p> 第一部分:學生考勤管理系統(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、//主菜單實現(xiàn)</p><p> system("cls");</p><p><b> { </b></p><p> cout<<" *************************************************************"&
53、lt;<endl; </p><p> cout<<" *** ★歡迎訪問學生考勤管理系統(tǒng)★ ***"<<endl; </p><p> cout<<" ************************************
54、*************************"<<endl; </p><p> cout<<" *** 系統(tǒng)主菜單: 1.顯示所有學生的缺課記錄 ***"<<endl;</p><p> cout<<" ***
55、 2.錄入學生的缺課信息記錄 ***"<<endl; </p><p> cout<<" *** 3.查詢某個學生的缺課情況 ***"<<endl; </p><p> cout<<
56、" *** 4.修改某個學生的缺課記錄 ***"<<endl; </p><p> cout<<" *** 5.刪除某個學生的缺課記錄 ***"<<endl; </p>
57、<p> cout<<" *** 6.統(tǒng)計某段時間內曠課情況 ***"<<endl; </p><p> cout<<" *** 7. 退出系統(tǒng) ***
58、"<<endl; </p><p> cout<<" *************************************************************"<<endl; </p><p><b> }</b></p><p> c
59、out<<"O(∩_∩)O 請選擇你所需要的操作 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 (類的設計部分)</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 //關于學生考勤基本信息類
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可以避免不必要的內存分配,可以提高效率</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);//直接添加另一個完整的字符串</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//實現(xiàn)學生曠課情況排序的類</p><p><b> {</b></p><p><b> public:</b></p><p> records() //構造函數</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<<"曠課學生姓名\t曠課次數"<<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 (功能子函數的實現(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)//實現(xiàn)對文件的輸出</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)//實現(xiàn)對文件的輸入</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<<"日期錄入有誤! 請重新錄入: "<<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)//錄入學生的缺課記錄</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<<"錄入一條學生缺課記錄:"<
108、;<endl;//endl表示終止一行并刷新緩沖區(qū)</p><p><b> m1:</b></p><p> cout<<"請輸入缺課日期: (例如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<<"請輸入缺第幾節(jié)課: "<<flush;</p><p><b> cin>>t2;</
110、b></p><p> if(t2<1||t2>10)</p><p><b> {</b></p><p> cout<<"節(jié)次錄入有誤! 請重新錄入: "<<endl;</p><p><b> goto m2;</b><
111、;/p><p><b> }</b></p><p> cout<<"請輸入缺課名稱: "<<flush;</p><p><b> cin>>t3;</b></p><p> cout<<"請輸入缺課學生姓名: &q
112、uot;<<flush;</p><p><b> cin>>t4;</b></p><p><b> m3:</b></p><p> cout<<"請輸入缺課類型: (1.遲到 2.早退 3.請假 4.曠課) "<<flush;</p>
113、;<p><b> cin>>t5;</b></p><p> if(t5<1||t5>4)</p><p><b> {</b></p><p> cout<<"類型輸入有誤! 請重新錄入: "<<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<<"請假"<<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)//修改學生
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序號\t缺課日期 節(jié)次\t課程名稱\t學生姓名\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)//修改學生信息</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<<"請輸入要修改缺
130、課記錄的學生姓名: "<<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<<"查無此學生!&
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<<"請輸入要修改的項目:\n(1.缺課日期 2.缺課節(jié)次 3.缺課名稱 4.學生姓名 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<<"請輸入缺課日期: (例如080612) "<<flush;</p><p><b> cin>>t1;</b></p>
138、<p> if(flag!=6)goto e6;</p><p><b> e2:</b></p><p> cout<<"請輸入缺第幾節(jié)課: "<<flush;</p><p><b> cin>>t2;</b></p><
139、p> if(flag!=6)goto e6;</p><p><b> e3:</b></p><p> cout<<"請輸入缺課名稱: "<<flush;</p><p><b> cin>>t3;</b></p><p>
140、if(flag!=6)goto e6;</p><p><b> e4:</b></p><p> cout<<"請輸入缺課學生姓名: "<<flush;</p><p><b> cin>>t4;</b></p><p> if(fl
141、ag!=6)goto e6;</p><p><b> e5:</b></p><p> cout<<"請輸入缺課類型: (1.遲到 2.早退 3.請假 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)//刪除學生
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<<"請輸入要刪除的記錄的序號: (輸入-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<<"不存在所要刪除的記錄!"<<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)//查找學生信息</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<<"請輸入要查詢的學生
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序號\t缺課日期 節(jié)次\t課程名稱\t學生姓名\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<<"沒
155、有查到該學生的缺課記錄!"<<endl;</p><p><b> }</b></p><p> void search_s(records *r)//一定范圍查找學生信息</p><p><b> {</b></p><p><b> int i;<
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 考勤管理系統(tǒng)畢業(yè)論文設計
- 考勤管理系統(tǒng)畢業(yè)論文
- 學生指紋考勤系統(tǒng)畢業(yè)論文
- 考勤管理系統(tǒng)畢業(yè)論文
- 學生考勤管理系統(tǒng)──在線考勤子功能設計與實現(xiàn)【畢業(yè)論文】
- 畢業(yè)論文學生考勤系統(tǒng)的設計與實現(xiàn)
- 企業(yè)考勤管理系統(tǒng)畢業(yè)論文
- 學生上機考勤系統(tǒng)畢業(yè)論文
- 畢業(yè)論文--學生考勤管理信息系統(tǒng)的設計與實現(xiàn)
- 企業(yè)考勤管理系統(tǒng)畢業(yè)論文
- 課堂考勤管理系統(tǒng)設計與實現(xiàn)畢業(yè)論文
- 考勤管理系統(tǒng)畢業(yè)論文設計v6.7
- 考勤系統(tǒng)畢業(yè)論文
- 基于jsp的員工考勤管理系統(tǒng)設計畢業(yè)論文
- 畢業(yè)論文學生考勤管理信息系統(tǒng)的設計與實現(xiàn)
- 學生考勤管理系統(tǒng)──處分管理子功能設計與實現(xiàn)【畢業(yè)論文】
- 員工考勤系統(tǒng)app設計-畢業(yè)論文
- 計算機專業(yè)畢業(yè)論文-考勤管理系統(tǒng)設計
- 畢業(yè)論文----學生管理系統(tǒng)設計
- 畢業(yè)論文范文——人事考勤管理系統(tǒng)
評論
0/150
提交評論