學(xué)生考勤管理系統(tǒng)課程設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩12頁(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、<p><b>  第1章 課題概述</b></p><p><b>  1.1 課題的目的</b></p><p>  課程設(shè)計(jì)題目:考勤管理</p><p>  了解并掌握中小型綜合應(yīng)用程序的一般設(shè)計(jì)方法,具備初步的獨(dú)立分析和設(shè)計(jì)能力;</p><p>  初步掌握軟件開(kāi)發(fā)過(guò)程的問(wèn)題分

2、析、系統(tǒng)設(shè)計(jì)、程序編碼、測(cè)試等基本方法和技能;</p><p>  提高綜合運(yùn)用所學(xué)的理論知識(shí)和方法獨(dú)立分析和解決問(wèn)題的能力;</p><p>  訓(xùn)練用系統(tǒng)的觀點(diǎn)和軟件開(kāi)發(fā)一般規(guī)范進(jìn)行軟件開(kāi)發(fā),培養(yǎng)軟件工作者所應(yīng)具備的科學(xué)的工作方法和作風(fēng);</p><p>  課題的代碼要求達(dá)到一定工作量,并具有一定的深度和難度;</p><p>  根據(jù)

3、課題程序的分析和設(shè)計(jì)過(guò)程,撰寫(xiě)課程設(shè)計(jì)報(bào)告。</p><p><b>  1.2 課題的要求</b></p><p>  錄入學(xué)生的缺課記錄; </p><p>  修改某個(gè)學(xué)生的缺課記錄;</p><p>  查詢(xún)某個(gè)學(xué)生的缺課情況; </p><p>  統(tǒng)計(jì)某段時(shí)間內(nèi),曠課學(xué)生姓名及曠課次數(shù)

4、,按曠課次數(shù)由多到少排序;</p><p>  統(tǒng)計(jì)某段時(shí)間內(nèi),有學(xué)生曠課的課程及曠課人次,按曠課人次由多到少排序;  </p><p><b>  系統(tǒng)以菜單方式工作</b></p><p><b>  第2章 設(shè)計(jì)思路</b></p><p><b>  2.1 模塊設(shè)計(jì) &

5、lt;/b></p><p>  學(xué)生考勤管理系統(tǒng)包含五個(gè)大的功能,分別是:錄入學(xué)生缺課信息、修改學(xué)生缺課信息、查詢(xún)某個(gè)學(xué)生的缺課情況、統(tǒng)計(jì)某段時(shí)間內(nèi)(以天為單位),曠課學(xué)生姓名及曠課節(jié)數(shù)和統(tǒng)計(jì)某段時(shí)間內(nèi),有學(xué)生曠課的課程及曠課人次。學(xué)生的缺課信息主要包含學(xué)號(hào),缺課日期,第幾節(jié)課、課程名稱(chēng),學(xué)生姓名,缺課類(lèi)型。</p><p>  在程序開(kāi)始時(shí),系統(tǒng)提供相應(yīng)的菜單供用戶進(jìn)行相應(yīng)的選擇

6、操作。</p><p>  本程序包括基類(lèi)class student學(xué)生信息課程類(lèi),以及派生類(lèi)class records:public student實(shí)現(xiàn)學(xué)生信息和考勤情況操作的類(lèi)。這兩個(gè)類(lèi) 是所有函數(shù)進(jìn)行操作的基礎(chǔ)。</p><p>  void records::input()為學(xué)生考勤系統(tǒng)的錄入模塊,在錄入學(xué)生缺課信息時(shí)根據(jù)系統(tǒng)提示逐一輸入。每輸入完一條信息,系統(tǒng)會(huì)提示是否繼續(xù)輸入,

7、用戶可以選擇繼續(xù)或返回主菜單。</p><p>  void records::edt()為學(xué)生考勤系統(tǒng)的修改模塊,在修改學(xué)生缺課信息時(shí),用戶首先輸入要修改的學(xué)生姓名,系統(tǒng)會(huì)檢索如果系統(tǒng)中有該學(xué)生的相關(guān)信息則系統(tǒng)首先會(huì)提示用戶修改該學(xué)生的那一部分信息,用戶可自行選擇。如果系統(tǒng)中沒(méi)有該學(xué)生的相關(guān)信息,則系統(tǒng)會(huì)給相關(guān)提示,用戶可以選擇繼續(xù)輸入要修改的學(xué)生姓名或選擇退出返回主菜單。</p><p&g

8、t;  void records::search()為學(xué)生考勤系統(tǒng)的學(xué)生查詢(xún)模塊,在查詢(xún)學(xué)生缺課信息時(shí),用戶先輸入要查詢(xún)的學(xué)生學(xué)號(hào),系統(tǒng)檢索判斷是否存在該學(xué)生,若存在則輸出查詢(xún)到的該學(xué)生的信息。</p><p>  void records::pri1()為學(xué)生考勤系統(tǒng)的統(tǒng)計(jì)曠課學(xué)生模塊,統(tǒng)計(jì)某段時(shí)間內(nèi),曠課學(xué)生姓名及曠課次數(shù)時(shí),用戶先輸入要查詢(xún)的時(shí)間間隔,系統(tǒng)自動(dòng)檢索在該時(shí)間段內(nèi)的學(xué)生缺課信息并按曠課次數(shù)由多到

9、少排序。</p><p>  void records::pri2()為學(xué)生考勤系統(tǒng)的統(tǒng)計(jì)曠課課程模塊,統(tǒng)計(jì)某段時(shí)間內(nèi),有學(xué)生曠課的課程及曠課人次,用戶先輸入要查詢(xún)的時(shí)間間隔,系統(tǒng)自動(dòng)檢索在該時(shí)間段內(nèi)的有學(xué)生曠課的課程并按曠課人次由多到少排序。</p><p><b>  2.2 程序流程圖</b></p><p>  整個(gè)程序的流程如圖2-1

10、所示。</p><p>  圖2-1 程序流程圖</p><p><b>  第3章 程序?qū)崿F(xiàn)</b></p><p>  3.1程序中各函數(shù)分析</p><p>  表3-1 程序中的函數(shù)列表</p><p><b>  3.2 類(lèi)的實(shí)現(xiàn)</b></p>&l

11、t;p><b>  1、學(xué)生信息課程類(lèi)</b></p><p>  學(xué)生信息類(lèi)包括學(xué)生的學(xué)號(hào)、姓名、課程、缺課節(jié)數(shù)、缺課類(lèi)型、缺課時(shí)間。</p><p>  class student </p><p><b>  {</b></p><p><b>  public:</b&

12、gt;</p><p>  void set(int t,int b, char* s,char* c,int cno,int type)</p><p><b>  { </b></p><p>  strcpy(cname,c);</p><p>  strcpy(sname,s);</p><

13、p>  this->snum=b;</p><p>  this->cno=cno;</p><p>  this->type=type;</p><p>  this->time=t;</p><p><b>  } </b></p><p>  char cnam

14、e[100],sname[100];//定義缺課課程名稱(chēng),學(xué)生名稱(chēng)</p><p>  int snum ,cno,type,time; //定義學(xué)生學(xué)號(hào),缺課節(jié)次,缺課類(lèi)型,時(shí)間</p><p><b>  };</b></p><p>  2、實(shí)現(xiàn)學(xué)生信息和考勤情況操作的類(lèi)</p><p>  class recor

15、ds:public student </p><p><b>  {</b></p><p><b>  public:</b></p><p><b>  records()</b></p><p>  {r=new student[max];}</p><

16、;p>  void input();</p><p>  void wt(int &i);</p><p>  void rd(); // 信息以文件的形式讀出</p><p>  void pri1();</p><p>  void pri2();</p><p>  void search

17、();</p><p>  void edt();</p><p>  void wdt(int &n);</p><p>  student *r;</p><p>  static int n;</p><p><b>  };</b></p><p>  i

18、nt records::n=0;</p><p>  3、學(xué)生考勤系統(tǒng)的錄入模塊</p><p>  void records::input() // </p><p><b>  { </b></p><p>  for(int i=0;i<100;i++)</p><p><

19、b>  { </b></p><p>  int t1,t2,t5,t6;</p><p>  char t3[100],t4[100];</p><p>  cout<<"請(qǐng)輸入學(xué)生的缺課時(shí)間: ";</p><p><b>  cin>>t1;</b>&l

20、t;/p><p>  cout<<"請(qǐng)輸入學(xué)生的學(xué)號(hào): ";</p><p><b>  cin>>t2;</b></p><p>  cout<<"請(qǐng)輸入學(xué)生的姓名: ";</p><p><b>  cin>>t3;<

21、/b></p><p>  cout<<"請(qǐng)輸入學(xué)生的缺課課程: ";</p><p><b>  cin>>t4;</b></p><p>  cout<<"請(qǐng)輸入學(xué)生的缺課節(jié)次: ";</p><p><b>  cin>

22、;>t5;</b></p><p>  cout<<"請(qǐng)輸入學(xué)生的缺課類(lèi)別(1.遲到 2.早退 3.請(qǐng)假 4.曠課): ";</p><p><b>  cin>>t6;</b></p><p>  records::n++;</p><p>  cout&l

23、t;<endl;</p><p>  r[i].set(t1,t2,t3,t4,t5,t6);</p><p><b>  }</b></p><p><b>  }</b></p><p>  4、學(xué)生考勤系統(tǒng)修改模塊</p><p>  void records::

24、edt() // </p><p>  { for(i=0;i<n;i++)</p><p>  {if(r[i].snum==tnum)</p><p>  { cout<<"有您要查詢(xún)的學(xué)生"; break;}</p><p><b>  }</b><

25、;/p><p>  if(!flag)</p><p>  {cout<<"查無(wú)此學(xué)生!"<<endl;return ;}</p><p>  t1=r[i].time;</p><p>  t2=r[i].snum;</p><p>  strcpy(t3,r[i]

26、.sname);</p><p>  strcpy(t4,r[i].cname);</p><p>  t5=r[i].cno;</p><p>  t6=r[i].type;</p><p>  cout<<"請(qǐng)輸入要修改的項(xiàng)目:\n(1.缺課時(shí)間 2.學(xué)生學(xué)號(hào) 3.學(xué)生姓名 4.缺課科目 5.缺課節(jié)次 6.缺課類(lèi)型

27、)"<<endl;</p><p><b>  cin>>km;</b></p><p>  switch(km)</p><p><b>  {</b></p><p>  case 1:cout<<"請(qǐng)輸入學(xué)生缺課時(shí)間: ";

28、cin>>t1;break;</p><p>  case 2:cout<<"請(qǐng)輸入修改的學(xué)生學(xué)號(hào): "; cin>>t2;break;</p><p>  case 3:cout<<"請(qǐng)輸入修改的學(xué)生姓名: "; cin>>t3; break;</p>

29、<p>  case 4:cout<<"請(qǐng)輸入修改的缺課課程: "; cin>>t4 ;break;</p><p>  case 5:cout<<"輸入修改的缺課課程節(jié)次: "; cin>>t5;break;</p><p>  case 6:cout<<"請(qǐng)

30、輸入缺課類(lèi)型(1.遲到 2.早退 3.請(qǐng)假 4.曠課): ";</p><p>  cin>>t6;break;</p><p><b>  }</b></p><p>  r[i].set(t1,t2,t3,t4,t5,t6);</p><p>  else return;</p&g

31、t;<p><b>  }</b></p><p><b>  5、學(xué)生查詢(xún)模塊</b></p><p>  void records::search()//學(xué)生查詢(xún)模塊</p><p>  {cout<<"請(qǐng)輸入要查詢(xún)的學(xué)生學(xué)號(hào): ";</p><p&

32、gt;  int tnum,flag=1;</p><p>  cin>>tnum;</p><p>  for(int i=0;i<n;i++) //查找學(xué)號(hào)</p><p>  {if(r[i].snum==tnum)</p><p>  { flag=0;</p><p><

33、b>  if(!flag)</b></p><p><b>  { </b></p><p>  cout<<"時(shí)間\t\t學(xué)號(hào) \t姓名\t缺課課程\t節(jié)次\t類(lèi)別"<<endl;</p><p>  cout<<r[i].time<<"\t&

34、quot;;</p><p>  cout<<r[i].snum<<"\t"; </p><p>  cout<<r[i].sname<<"\t";</p><p>  cout<<r[i].cname<<"\t\t";</p&g

35、t;<p>  cout<<r[i].cno<<"\t";</p><p>  switch(r[i].type)</p><p>  {case 1:cout<<"遲到"<<endl;break;</p><p>  case 2:cout<<&qu

36、ot;早退"<<endl;break;</p><p>  case 3:cout<<"請(qǐng)假"<<endl;break;</p><p>  case 4:cout<<"曠課"<<endl;break;</p><p><b>  }</b&

37、gt;</p><p><b>  } </b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  if(flag)</b></p><p>  cout<<&q

38、uot;沒(méi)有查到該學(xué)生的缺課記錄!"<<endl;</p><p><b>  }</b></p><p><b>  6、學(xué)生排序</b></p><p>  void records::pri1() </p><p><b>  { </b>&l

39、t;/p><p><b>  if(n==0)</b></p><p><b>  {</b></p><p>  cout<<" ------文件記錄為空----"<<endl;</p><p>  cout<<"-----請(qǐng)先輸入數(shù)據(jù)

40、保存在進(jìn)行此次操作-----"<<endl;</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  else</b></p><p>  {cout<<"請(qǐng)輸入要查詢(xún)

41、的時(shí)間段: "<<endl;</p><p>  int time1,time2;</p><p>  char *str[20];</p><p>  int num=0;</p><p>  cin>>time1>>time2;</p><p>  for(int i=

42、0;i<n;i++) </p><p>  {if( r[i].time>time2 )</p><p>  {cout<<"該段時(shí)間內(nèi)沒(méi)有曠課的學(xué)生!"<<endl;return;}</p><p>  if(time1<=r[i].time && r[i].time<

43、;=time2 )</p><p>  { if( r[i].type==4)</p><p>  {str[num]=r[i].sname;num++;}</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(

44、 r[i-1].time<time1 )</p><p>  {cout<<"該段時(shí)間內(nèi)沒(méi)有曠課的學(xué)生!"<<endl;return;}</p><p>  int m=num;</p><p><b>  int j;</b></p><p>  char *s[20

45、];</p><p>  int *c=new int [m];</p><p><b>  c[0]=1;</b></p><p>  s[0]=str[0];</p><p><b>  int flag;</b></p><p><b>  int k=1;&

46、lt;/b></p><p>  for( i=1;i<m;i++)</p><p><b>  {flag=0;</b></p><p>  for( j=0;j<k;j++)</p><p>  {if(!(strcmp(str[i],s[j])))</p><p>  

47、{c[j]++;flag=1;}</p><p><b>  }</b></p><p><b>  if(!flag)</b></p><p>  {s[k]=str[i];c[k++]=1;}</p><p><b>  }</b></p>

48、<p>  for(i=1;i<k;i++)</p><p>  for( j=i;j>0;j--)</p><p>  {if(c[j]>c[j-1])</p><p>  {int tmp=c[j];</p><p>  c[j]=c[j-1];</p><p>  c[j-1]=t

49、mp;</p><p>  char* 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> 

50、 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>  }</b&

51、gt;</p><p><b>  } 7、曠課排序</b></p><p>  void records::pri2() </p><p><b>  { </b></p><p><b>  if(n==0)</b></p><p><b

52、>  {</b></p><p>  cout<<" ------文件記錄為空----"<<endl;</p><p>  cout<<"-----請(qǐng)先輸入數(shù)據(jù)保存在進(jìn)行此次操作-----"<<endl;</p><p><b>  return;&l

53、t;/b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  cout<<"請(qǐng)輸入要查詢(xún)的時(shí)間段: "<<endl;</p&g

54、t;<p>  cin>>time1>>time2;</p><p>  for(int i=0;i<n;i++) </p><p><b>  {</b></p><p>  if(time1<=r[i].time && r[i].time<=time2 )<

55、/p><p>  {if(r[i].type==4)</p><p>  {str[num]=r[i].cname; num++;}</p><p><b>  }</b></p><p><b>  else</b></p><p>  {cout<<&q

56、uot;該段時(shí)間內(nèi)沒(méi)有學(xué)生曠課!"<<endl;return;}</p><p><b>  }</b></p><p>  for( i=1;i<m;i++)</p><p><b>  {flag=0;</b></p><p>  for( j=0;j<

57、k;j++)</p><p><b>  {</b></p><p>  if(!(strcmp(str[i],s[j])))</p><p>  {c[j]++;flag=1;}</p><p><b>  }</b></p><p><b>  if(!

58、flag)</b></p><p>  {s[k]=str[i];c[k++]=1;}</p><p><b>  }</b></p><p>  for(i=1;i<k;i++)</p><p>  for( j=i;j>0;j--)</p><p>  {if(

59、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><p>  char* stmp=s[j];</p><p&

60、gt;  s[j]=s[j-1];</p><p>  s[j-1]=stmp;</p><p><b>  }</b></p><p><b>  }</b></p><p>  cout<<"曠課課程名稱(chēng)\t曠課人數(shù)"<<endl;</p>

61、<p>  for(i=0;i<k;i++)</p><p>  cout<<s[i]<<"\t\t"<<c[i]<<endl;</p><p><b>  }</b></p><p><b>  }</b></p>&l

62、t;p><b>  第4章 程序測(cè)試</b></p><p><b>  錄入學(xué)生缺課信息:</b></p><p>  圖 4-1錄入學(xué)生缺課信息</p><p>  2、修改某個(gè)學(xué)生的缺課記錄:</p><p>  圖 4-2 修改某個(gè)學(xué)生缺課信息</p><p>

63、  3、查詢(xún)某個(gè)學(xué)生的缺課情況。</p><p>  圖 4-3查詢(xún)某個(gè)學(xué)生的缺課情況</p><p>  4、 輸入數(shù)據(jù),統(tǒng)計(jì)某段時(shí)間內(nèi),曠課學(xué)生姓名及曠課次數(shù),按曠課次數(shù)由多到少排序</p><p>  1 20130608 1 2 4 張三 高數(shù)</p><p>  2 20130610 2

64、 3 4 李四 大物</p><p>  3 20130613 2 4 1 李四 高數(shù)</p><p>  4 20130616 3 5 4 王五 毛概</p><p>  5 20130618 2 6 4 李四 毛概</p>

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論