學(xué)生成績管理系統(tǒng)課程設(shè)計(jì)9_第1頁
已閱讀1頁,還剩14頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p><b>  軟件設(shè)計(jì)報告</b></p><p>  題 目: 學(xué)生成績管理系統(tǒng) </p><p>  一.課程設(shè)計(jì)的目的:</p><p>  ①通過本課程設(shè)計(jì),強(qiáng)化上機(jī)動手能力,使學(xué)生在理論和實(shí)踐的基礎(chǔ)上進(jìn)一步鞏固《C語言程序設(shè)計(jì)》課程學(xué)習(xí)

2、的內(nèi)容,掌握工程軟件設(shè)計(jì)的基本方法; </p><p>  ②學(xué)會將知識應(yīng)用于實(shí)際的方法,提高分析和解決問題的能力,增加綜合能力; </p><p> ?、蹫楹罄m(xù)各門計(jì)算機(jī)課程的學(xué)習(xí)打下堅(jiān)實(shí)基礎(chǔ);為畢業(yè)設(shè)計(jì)和以后工作打下必要基楚。</p><p>  二.課程設(shè)計(jì)的內(nèi)容 :</p><p>  ①,運(yùn)用數(shù)組編

3、輯一個簡單的學(xué)生成績管理系統(tǒng),使之能完成學(xué)生的錄入,修改,刪除等功能;</p><p> ?、冢瑘?zhí)行編譯操作,并根據(jù)提示進(jìn)行排錯;</p><p> ?、郏埨蠋煓z查并向老師演示。</p><p>  三.需求分析:根據(jù)實(shí)用性,我決定設(shè)計(jì)一個學(xué)生成績管理系統(tǒng).由于自己也是一個學(xué)生,經(jīng)常跟成績打交道,以前的成績自己搞得很亂,每次想找以前的成績看一下,做個總結(jié),以便制定

4、新一個近期計(jì)劃.可是以前的成績都沒有系統(tǒng)的管理,所以搞起來很麻煩,于是決定做一個學(xué)生成績管理系統(tǒng).這個系統(tǒng)實(shí)用性非常強(qiáng),操作起來也非常簡單,可以很容易的查找到你所要的信息.例如:如果你要查看某個學(xué)生的成績,只需要輸入那個學(xué)生的姓名就可以了,系統(tǒng)會自動打印出該學(xué)生的有關(guān)信息,如學(xué)號,姓名,每一學(xué)科的成績等,非常簡潔,一目了然.</p><p>  由于時間的緊迫,也由于這是自己第一次設(shè)計(jì)系統(tǒng),沒什么經(jīng)驗(yàn),基礎(chǔ)知識也

5、還不是很扎實(shí),所以這個學(xué)生成績管理系統(tǒng)還存在著一定的局限性,希望老師和同學(xué)們多多指正,也希望它能為大家?guī)矸奖?</p><p><b>  四.概要設(shè)計(jì):</b></p><p><b>  數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì):</b></p><p>  設(shè)計(jì)這個系統(tǒng),我選擇了用結(jié)構(gòu)體來存放不同類型的數(shù)據(jù).在這個過程當(dāng)中,我有打算過用指針,

6、但由于指針這章節(jié)非常復(fù)雜,而且剛講不久,自己了解的還不夠透切,而且用指針要非常的小心,不然很容易出錯,對剛學(xué)不久的同學(xué)來說,要查出其中的錯誤,也不那么簡單,所以為了盡量減少發(fā)生錯誤,我就沒有將指針利用到其中。 </p><p&g

7、t;  五、詳細(xì)設(shè)計(jì)及運(yùn)行結(jié)果</p><p><b>  :</b></p><p>  六. 調(diào)試情況,設(shè)計(jì)技巧及體會</p><p>  調(diào)試情況:1,進(jìn)入系統(tǒng)會提示你(請輸入密碼):當(dāng)輸入12345并以回車鍵結(jié)束,你就會進(jìn)入主界面:</p><p>  2. 菜單界面上有提示操作,告訴你如何使用該系統(tǒng)!該系統(tǒng)操作

8、非常簡單,你所要進(jìn)行的每一步操作它都會提示你該如何做,就算你是第一次接觸該系統(tǒng),你也可以很順利地利用它完成你所要做的事!</p><p>  例如你按1,過程及結(jié)果如下: </p><p>  根據(jù)提示,然后它會繼續(xù)提示你(請輸入學(xué)生學(xué)號),當(dāng)你輸入完畢后,系統(tǒng)會詢問是否繼續(xù),如果繼續(xù),則同上;否則,退出到主界面。</p><p>  3,可以修改你覺得需要修改的資

9、料,其操作是按功能選擇鍵2,然后按提示一步一步操作。</p><p>  4,當(dāng)你輸入一些數(shù)據(jù)和修改后,想查看的話可以按功能選擇鍵3,這是界面會顯示你的數(shù)據(jù)。</p><p>  5,如果一切無誤后,但你想查看成績排名,此時你可以按功能選擇鍵4進(jìn)行學(xué)生成績排名。</p><p>  6,如果你在操作中想刪除一些內(nèi)容,你可以按功能選擇鍵5進(jìn)行刪除。</p>

10、<p>  7,如果一切無誤后你想保存這些內(nèi)容,你可以按功能選擇鍵6進(jìn)行保存,此時界面會出現(xiàn): 然后輸入你想保存的地方。</p><p>  8,如果想讀取則按功能選擇鍵7進(jìn)行讀取。</p><p>  9,而當(dāng)你想插入學(xué)生信息時則可按功能選擇鍵8進(jìn)行插入:</p><p>  10,想退出時你可以按功能選擇鍵0退出程序。</p>&l

11、t;p><b>  設(shè)計(jì)技巧及體會:</b></p><p>  緊張而又充實(shí)的兩個星期即將過去,在這兩個星期里,通過做課程設(shè)計(jì),自己的感觸甚多,收獲也很多.發(fā)現(xiàn)自己對課本知識的認(rèn)知提升到了一個新的層次,就好像站在一個山峰上俯瞰,可以比較系統(tǒng)地,全面的理解課本上的內(nèi)容.過去覺得理解得模模糊糊的知識點(diǎn),現(xiàn)在基本上都可以掌握了.這又一次驗(yàn)證了實(shí)踐能夠反作用于認(rèn)識,只有自己真真正正地動手去做

12、了,將自己學(xué)到的,或者是只學(xué)到一半半的課本知識應(yīng)用到實(shí)際中去,當(dāng)遇到問題時,再細(xì)心地,耐心地慢慢去推敲,去查找錯誤,看看是哪一步錯了,錯在哪里.找出問題后再翻翻課本,看課本還解決不了問題就問同學(xué)問老師,直到解決問題為止.這時,當(dāng)你回頭看時,你會突然發(fā)現(xiàn)自己已經(jīng)學(xué)到了很多東西,有課本上之前不明白的知識點(diǎn),也有在程序設(shè)計(jì)過程中遇到問題時該如何去面對,如何去解決的方法.其實(shí),我發(fā)現(xiàn)導(dǎo)致程序出現(xiàn)問題錯誤或運(yùn)行不了,很大部分原因歸結(jié)于對課本知識點(diǎn)

13、的不熟悉或理解錯誤.這些要是不親自動手去做,光看課本是沒有多大作用的.當(dāng)我通過自己的努力或老師跟同學(xué)的幫助下,解決了一個問題,才發(fā)現(xiàn)原來這個知識點(diǎn)應(yīng)該這樣用.</p><p>  通過這次課程設(shè)計(jì),我體會最深的就是,不能只看課本,要經(jīng)常動手去練習(xí)一下,看課本加上做練習(xí),效果非常好,可以做到事半功倍.這樣知識點(diǎn)記得會比較牢固一些.通過練習(xí)還可以培養(yǎng)自己的設(shè)計(jì)思維,讓自己以后設(shè)計(jì)程序時思維會活躍一些,轉(zhuǎn)得快一些.&l

14、t;/p><p>  在這課程設(shè)計(jì)接近尾聲時,我總結(jié)了一下自己在設(shè)計(jì)時經(jīng)常犯的一些錯誤,諸如for循環(huán)語句,括號里面的條件之間應(yīng)該是用分號分開的,而我經(jīng)常會忘記,都是用逗號來分開的,這導(dǎo)致程序運(yùn)行不了,自己檢查了一遍又一遍還是發(fā)現(xiàn)不了問題的所在,后來叫同學(xué)幫忙看了一下,才發(fā)現(xiàn)問題出現(xiàn)在哪里.就這么簡單的,基本的一個錯誤,常常會令自己花上半個小時或者更長的時間,都無法找出來.類似的錯誤還有,就是經(jīng)常會在語句后面忘了加上

15、分號.但現(xiàn)在這些問題不會再出現(xiàn)了,經(jīng)過這次的實(shí)踐,我懂得了很多,很多語句用起來都比較熟悉了,更重要的是積累了一些經(jīng)驗(yàn),將來可以少走些彎路,不再像剛開始的時候,像一個迷路羔羊一樣到處亂竄.</p><p>  雖然這次的課程設(shè)計(jì)即將結(jié)束,設(shè)計(jì)的系統(tǒng)也可以運(yùn)行了,但我知道它現(xiàn)在還只是個雛形,還不夠完善,還存在不足之處,還需要我的進(jìn)一步改善.今后我會更加努力,學(xué)習(xí)更多的知識來完善它,把它的功能做大,做強(qiáng)!</p&

16、gt;<p>  七.參考文獻(xiàn):《C語言程序設(shè)計(jì)》,劉燕,中國鐵道出版《C語言程序設(shè)計(jì)》,廖雷,高等教育出版社《C語言程序設(shè)計(jì)》,方少卿,中國鐵道出版社</p><p>  八.附錄:源代碼:#include<stdio.h></p><p>  #include<stdlib.h></p><p>  #include&l

17、t;string.h></p><p>  #include<io.h></p><p><b>  /*結(jié)構(gòu)體*/</b></p><p>  typedef struct</p><p><b>  {</b></p><p>  double aver

18、;</p><p><b>  int age;</b></p><p><b>  long num;</b></p><p>  char name[20];</p><p>  char sex[8];</p><p>  double mark1,mark2,mark

19、3;</p><p><b>  }STU;</b></p><p><b>  /*函數(shù)聲明*/</b></p><p>  int menu ();</p><p>  int input(STU stu[]);</p><p>  void output(STU stu

20、[],int count);</p><p>  int seek(STU stu[]);</p><p>  void change(STU stu[]);</p><p>  int seekinsert(STU stu[],int count);</p><p>  int insert(STU stu[]);</p>&

21、lt;p>  int del(STU stu[]);</p><p>  void sort(STU stu[],int count);</p><p>  /*讀取學(xué)生信息*/</p><p>  int read_file(STU stu[])</p><p><b>  {</b></p>&l

22、t;p><b>  FILE *fp;</b></p><p>  int i=0,fno,fsize,fnum;</p><p>  char filename[10];</p><p>  gets(filename);</p><p>  printf("輸入");</p>

23、<p>  gets(filename); </p><p>  if((fp=fopen(filename,"rb"))==NULL)</p><p><b>  {</b></p><p>  printf("\n\n*******庫存文件不存在!請創(chuàng)建!");</p>

24、;<p><b>  return 0;</b></p><p><b>  }</b></p><p>  fno=fileno(fp);</p><p>  fsize=filelength(fno);</p><p>  fnum=fsize/sizeof(STU);</p

25、><p>  printf("\n\n*******庫存文件*******\n");</p><p>  for(i=0;i<fnum;i++)</p><p>  fread(&stu[i],sizeof(STU),1,fp);</p><p>  fclose(fp);</p><p>

26、;<b>  return i;</b></p><p><b>  }</b></p><p><b>  /*保存信息*/</b></p><p>  void save_file(STU stu[],int count)</p><p><b>  {</

27、b></p><p><b>  FILE *fp;</b></p><p><b>  int i;</b></p><p>  char filename[10];</p><p>  gets(filename);</p><p>  printf("輸

28、入保存文件名:\n");</p><p>  gets(filename);</p><p>  if((fp=fopen(filename,"wb"))==NULL)</p><p>  printf("讀文件錯誤!\n");</p><p>  for(i=0;i<count;i++

29、)</p><p>  if(fwrite(&stu[i],sizeof(STU),1,fp)!=1)</p><p>  printf("寫文件錯誤!\n");</p><p>  fclose(fp);</p><p><b>  }</b></p><p><

30、;b>  /*插入函數(shù)*/</b></p><p>  int seekinsert(STU stu[],int count)</p><p><b>  {</b></p><p><b>  int i,k;</b></p><p>  printf("請輸入你要插入

31、的學(xué)號:"); </p><p>  scanf("%d",&k);</p><p>  for(i=0;i<count;i++)</p><p><b>  {</b></p><p>  if(stu[i].num==k)</p><p>&

32、lt;b>  {</b></p><p>  return(i);</p><p><b>  }</b></p><p><b>  }</b></p><p>  return(100);</p><p>  } </p>

33、<p>  int insert(STU stu[],int count)</p><p><b>  {</b></p><p><b>  int i ,j;</b></p><p>  i=seekinsert(stu,count);</p><p>  if(i==100)<

34、;/p><p><b>  {</b></p><p>  printf("有誤");</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b>&l

35、t;/p><p>  for(j=count;j>=i;j--)</p><p>  stu[j+1]=stu[j];</p><p><b>  count++;</b></p><p>  printf("\t請輸入學(xué)生學(xué)號:");</p><p>  scanf(&qu

36、ot;%ld",&stu[i].num);</p><p>  printf("\n\t請輸入學(xué)生姓名:");</p><p>  scanf("%s",&stu[i].name);</p><p>  printf("\n\t請輸入學(xué)生年齡:");</p><

37、p>  scanf("%d",&stu[i].age);</p><p>  printf("\n\t請輸入學(xué)生性別:");</p><p>  scanf("%s",&stu[i].sex);</p><p>  printf("\n\t請分別輸入學(xué)生成績:");

38、</p><p>  scanf("%lf%lf%lf",&stu[i].mark1,&stu[i].mark2,&stu[i].mark3);</p><p>  stu[i].aver=(stu[i].mark1+stu[i].mark2+stu[i].mark3)/3.0;</p><p><b>  }&

39、lt;/b></p><p>  return(count);</p><p><b>  } </b></p><p><b>  /*刪除函數(shù)*/</b></p><p>  int seek(STU stu[],int count)</p><p><

40、b>  {</b></p><p>  long delnum;</p><p><b>  int i;</b></p><p>  printf("請輸入要刪除的學(xué)生的學(xué)號:");</p><p>  scanf("%ld",&delnum);<

41、/p><p>  for(i=0;i<count;i++)</p><p>  if(stu[i].num==delnum)</p><p>  return(i);</p><p>  return(count);</p><p><b>  }</b></p><p>

42、;  int del(STU stu[],int count)</p><p><b>  {</b></p><p>  long i,delnum;</p><p>  delnum=seek(stu,count);</p><p>  if(delnum==count-1)</p><p>

43、<b>  {</b></p><p>  count=count-1;</p><p>  return(count);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {&l

44、t;/b></p><p>  for(i=delnum;i<count-1;i++)</p><p>  stu[i]=stu[i+1];</p><p>  return(count-1);</p><p><b>  }</b></p><p><b>  }</

45、b></p><p><b>  /*修改信息*/</b></p><p>  void change(STU stu[],int count)</p><p><b>  {</b></p><p><b>  int i;</b></p><p&g

46、t;  long chanum;</p><p>  printf("請輸入要修改學(xué)生的學(xué)號:");</p><p>  scanf("%ld",&chanum);</p><p>  for(i=0;i<count;i++)</p><p><b>  { </b&g

47、t;</p><p>  if(chanum==stu[i].num)</p><p><b>  {</b></p><p>  printf("\n\t請輸入學(xué)生姓名:");</p><p>  scanf("%s",&stu[i].name);</p>

48、<p>  printf("\n\t請輸入學(xué)生年齡:");</p><p>  scanf("%d",&stu[i].age);</p><p>  printf("\n\t請輸入學(xué)生性別:");</p><p>  scanf("%s",&stu[i].sex

49、);</p><p>  printf("\n\t請分別輸入學(xué)生成績:");</p><p>  scanf("%lf%lf%lf",&stu[i].mark1,&stu[i].mark2,&stu[i].mark3);</p><p>  stu[i].aver=(stu[i].mark1+stu[i

50、].mark2+stu[i].mark3)/3.0;</p><p><b>  break;</b></p><p><b>  } </b></p><p><b>  }</b></p><p>  output(stu,count);</p><

51、p><b>  }</b></p><p><b>  /*輸入函數(shù)*/</b></p><p>  int input(STU stu[])</p><p><b>  {</b></p><p>  int i=0,count=0,jude=1;</p>

52、<p>  system("cls");</p><p>  printf("\n\n\t\t\t\t請輸入學(xué)生信息\n\n");</p><p>  while(jude)</p><p><b>  { </b></p><p>  printf("\

53、t請輸入學(xué)生學(xué)號:");</p><p>  scanf("%ld",&stu[count].num);</p><p>  printf("\n\t請輸入學(xué)生姓名:");</p><p>  scanf("%s",&stu[count].name);</p><

54、;p>  printf("\n\t請輸入學(xué)生年齡:");</p><p>  scanf("%d",&stu[count].age);</p><p>  printf("\n\t請輸入學(xué)生性別:");</p><p>  scanf("%s",&stu[count

55、].sex);</p><p>  printf("\n\t請分別輸入學(xué)生成績:");</p><p>  scanf("%lf%lf%lf",&stu[count].mark1,&stu[count].mark2,&stu[count].mark3);</p><p>  stu[count].ave

56、r=(stu[count].mark1+stu[count].mark2+stu[count].mark3)/3.0;</p><p><b>  count++;</b></p><p>  printf("是否繼續(xù)輸入,是按1,否按0");</p><p>  scanf("%d",&jude

57、); </p><p><b>  }</b></p><p>  printf("\n\t\t%d個學(xué)生信息輸入完畢!\n",count);</p><p>  printf("\t\t按任意鍵返回主菜單!\n");</p><p>  getchar();</p>

58、<p>  return(count);</p><p><b>  }</b></p><p><b>  /*輸出函數(shù)*/</b></p><p>  void output(STU stu[],int count)</p><p><b>  {</b><

59、;/p><p><b>  int i;</b></p><p>  system("cls");</p><p>  printf("\n\n\t\t\t\t——學(xué)生信息表——\n\n");</p><p>  printf("學(xué)號\t姓名\t年齡\t性別\t成績1\t成績

60、2\t成績3\t平均成績\n");</p><p>  for(i=0;i<count;i++)</p><p><b>  {</b></p><p>  printf("%ld\t%s\t%d\t%s\t%.2lf\t%.2lf\t%.2lf\t%.2lf\n",stu[i].num,stu[i].nam

61、e,</p><p>  stu[i].age,stu[i].sex,stu[i].mark1,stu[i].mark2,stu[i].mark3,stu[i].aver);</p><p><b>  } </b></p><p><b>  }</b></p><p><b>  /

62、*主菜單*/</b></p><p>  int menu ()</p><p><b>  {</b></p><p><b>  int a=1;</b></p><p>  while(a) </p><p><b>  {</b>

63、;</p><p>  printf("\t\t*********學(xué)生管理系統(tǒng)********\n\n");</p><p>  printf("\t\t 1.輸入學(xué)生信息\n");</p><p>  printf("\t\t 2.修改學(xué)生信息\n");</p><

64、p>  printf("\t\t 3.查看學(xué)生信息\n");</p><p>  printf("\t\t 4.學(xué)生成績排名表\n");</p><p>  printf("\t\t 5.刪除學(xué)生信息\n");</p><p>  printf("\t\t

65、 6.保存學(xué)生信息\n");</p><p>  printf("\t\t 7.讀取學(xué)生信息\n");</p><p>  printf("\t\t 8.插入學(xué)生信息\n");</p><p>  printf("\t\t 0.退出系統(tǒng)\n");</p>

66、;<p>  scanf("%d",&a);</p><p><b>  break; </b></p><p><b>  }</b></p><p>  return(a);</p><p><b>  }</b></p&g

67、t;<p>  /*冒泡降序排序*/</p><p>  void sort(STU stu[],int count)</p><p>  { STU t;</p><p><b>  int i,j;</b></p><p>  for(i=0;i<count-1;i++)</p>

68、<p>  for(j=i+1;j<count;j++)</p><p>  if(stu[i].aver<stu[j].aver)</p><p><b>  {</b></p><p><b>  t=stu[i];</b></p><p>  stu[i]=stu[j]

69、;</p><p><b>  stu[j]=t;</b></p><p><b>  }</b></p><p>  printf("\n\n\t\t\t\t——學(xué)生信息表——\n\n");</p><p>  printf("學(xué)號\t姓名\t年齡\t性別\t成績1\

70、t成績2\t成績3\t平均成績\n");</p><p>  for(i=0;i<count;i++)</p><p><b>  {</b></p><p>  printf("%ld\t%s\t%d\t%s\t%.2lf\t%.2lf\t%.2lf\t%.2lf\n",stu[i].num,stu[i].

71、name,</p><p>  stu[i].age,stu[i].sex,stu[i].mark1,stu[i].mark2,stu[i].mark3,stu[i].aver);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  

72、/*主函數(shù)*/</b></p><p>  void main(void)</p><p><b>  {</b></p><p>  char s[6];</p><p>  STU stu[100];</p><p>  int choice=1,count,i,k=0;</

73、p><p>  while(k==0)</p><p><b>  {</b></p><p>  printf("\n\n\t歡迎登陸學(xué)生管理系統(tǒng),請輸入密碼:");</p><p>  for(i=0;i<6;i++)</p><p><b>  {</b

74、></p><p>  s[i]=getch();</p><p>  printf("*");</p><p><b>  }</b></p><p>  s[5]='\0';</p><p>  if(strcmp(s,"12345"

75、;)==0)</p><p><b>  {</b></p><p>  printf("\n\n");</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  

76、else</b></p><p>  printf("輸入有誤\n");</p><p>  getchar();</p><p><b>  } </b></p><p>  while(choice)</p><p><b>  {</b&g

77、t;</p><p>  choice=menu();</p><p>  if(choice==1) count=input(stu);</p><p>  if(choice==2) change(stu,count);</p><p>  if(choice==3) output(stu,count);</p&g

78、t;<p>  if(choice==4) sort(stu,count);</p><p>  if(choice==5) count=del(stu,count);</p><p>  if(choice==6) save_file(stu,count);</p><p>  if(choice==7) count=read

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論