學生成績管理課程設計_第1頁
已閱讀1頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  學生成績管理</b></p><p><b>  一、需求分析</b></p><p>  學生成績管理系統(tǒng)主要提供成績查詢,方便管理的網(wǎng)上的信息查閱平臺,學生可以通過該系統(tǒng)查閱與自己相關信息,查看留言、提交留言。教師可以通過成績管理系統(tǒng)查閱學生成績信息,教師信息,查看教師留言、學生留言、提交留言、留言的管理等相關操

2、作。系統(tǒng)管理員可以實現(xiàn)以上的所有功能,還有對學生的添加、刪除、修改、教師的添加、刪除、修改,數(shù)據(jù)庫的備份、數(shù)據(jù)庫的還原等相關操作。</p><p>  根據(jù)開發(fā)要求,學生成績管理系統(tǒng)主要應用于教育系統(tǒng),完成對日常的教學、教務、教師以及學生的計算機化的管理。開發(fā)學生成績管理系統(tǒng)可使學院教職員工減輕工作壓力,比較系統(tǒng)地對教務、教學上的各項服務和信息進行管理,同時,可以減少勞動力的使用,加快查詢速度、加強管理,以及國家

3、各部門關于信息化的步伐,使各項管理更加規(guī)范化。目前,學校工作繁雜、資料重多。目前,管理信息系統(tǒng)已進入高校,但還未普及,而對于學生成績管理來說,目前還沒有一套完整的、統(tǒng)一的系統(tǒng)。因此,開發(fā)一套適和大眾的、兼容性好的系統(tǒng)是很有必要的。</p><p><b>  二、概要設計</b></p><p>  學生信息(包括學號、姓名、運籌、數(shù)學、數(shù)據(jù)結構)進行管理,包括學生成

4、績的信息輸入、輸出、查詢、刪除、插入、退出.</p><p>  (1)輸入學生資料模塊:</p><p>  主要功能用來對學生的成績進行收集和輸入。在學生信息保存在系統(tǒng)中的前提下,成績錄入需要輸入學生資料,比如學號,姓名。在準確輸入學生資料后,就可以對該學生的各科成績進行錄入。該學生各科成績輸入成功后,系統(tǒng)會提示是否繼續(xù)進行操作,如果想繼續(xù)輸入學生成績就輸入1,不想再輸入學生成績的話就

5、輸入0 </p><p>  (2)輸出學生資料模塊:</p><p>  主要功能用來對學生的成績進行輸出。在系統(tǒng)已經(jīng)錄入了學生資料成績的前提下,使用該功能可以顯示所有學生的信息,資料等等。具體包括學生的班級,學號,姓名和各科成績。在查看學生的資料,成績各方面的信息后,按任意鍵就可以返回到主菜單?! ?lt;/p><p>  (3) 插入學生資料模塊</p>

6、;<p>  主要功能是用來添加學生資料,成績。如果系統(tǒng)有保存學生資料的情況下,想錄入學生成績的話,就不用添加學生資料這模塊。如果系統(tǒng)沒有保存該學生信息的話,就要使用此模塊,在成功添加學生資料后,就可以對該學生進行其他的操作。</p><p> ?。?)按學號查找,刪除該學生資料模塊</p><p>  主要功能是用來刪除學生資料。在系統(tǒng)保存學生資料的前提下,想刪除某學生的資

7、料,可以輸入學生姓名,系統(tǒng)查找該學生資料后,就可以刪除了。由于學生輟學,畢業(yè)等原因,及時對系統(tǒng)進行更新,刪除一些沒用的信息,可以使系統(tǒng)更加優(yōu)化</p><p> ?。?)查找并顯示學生資料模塊</p><p>  主要功能是用來查找學生資料。在系統(tǒng)保存了某學生資料的前提下,想要查找該學生資料,可以輸入該學生姓名,這樣系統(tǒng)就會顯示該學生資料和各科成績等信息</p><p&

8、gt;<b>  三、詳細設計</b></p><p>  1、輸入初始的學生信息:輸入信息包括學生的姓名、學號以及學生的成績等相關信息;可用函數(shù)struct student *creat()來實現(xiàn)此操作。 </p><p>  2、成績輸出模塊:輸出學生的信息以及成績vvoid print(struct student *head):通過學生的學號名來查看學生的相

9、關成績,</p><p>  3、成績查詢模塊:可用struct student *select(struct student *head,long num)來實現(xiàn)。找到就輸出此學生全部信息。</p><p>  4、刪除模塊:用函數(shù)struct student *del(struct student *head,long num)來實現(xiàn)</p><p>  5、插

10、入模塊:用函數(shù)struct student *insert(struct student *head, struct student *stud)來實現(xiàn)</p><p><b>  如圖:}</b></p><p><b>  四、調(diào)試分析</b></p><p><b>  1.先輸入學生信息</b>

11、;</p><p><b>  2查看信息</b></p><p><b>  3. 刪除數(shù)據(jù)</b></p><p><b>  4.插入學生信息</b></p><p><b>  5查看某學生信息 </b></p><p>&

12、lt;b>  五、用戶手冊</b></p><p>  1..輸入“1”來輸入初始學生信息</p><p>  2.輸入“2”來輸出已有的學生信息</p><p>  3.輸入“3”,通過學生學號來刪除學生的信息</p><p>  4.輸入“4”來插入學生信息</p><p>  5.輸入“5”通過

13、學生學號來查詢某學生信息</p><p>  注意:第一步的操作必須為“1”;輸入學生信息時,輸入了全部的學生信息后,還需要再進行一次虛假的學生信息輸入,學生姓名,學號,成績分別為0來結束;查詢、刪除學生信息都只能通過學生學號來進行。</p><p><b>  六、附錄</b></p><p>  #include <stdio.h&g

14、t;</p><p>  #include <malloc.h></p><p>  #include <stdlib.h></p><p>  #define NULL 0</p><p>  #define MAX 20</p><p>  #define LEN sizeof(struct

15、 student)</p><p>  typedef struct student</p><p><b>  {</b></p><p>  char name[MAX];</p><p><b>  long num;</b></p><p>  float score

16、; </p><p>  float math;</p><p>  float shuju;</p><p>  struct student *next;</p><p><b>  }student;</b></p><p>  /*--------------------輸入子程序----

17、------------------*/</p><p><b>  int n; </b></p><p>  struct student *creat()</p><p><b>  {</b></p><p>  struct student *head;</p><p

18、>  struct student *p1,*p2;</p><p>  n=0;//初始學生的個數(shù)為0</p><p>  p1=p2=( struct student*) malloc(LEN);//為p1、p2分配空間</p><p>  printf("請輸入學生姓名:");</p><p>  scanf(

19、"%s",&p1->name);</p><p>  printf("請輸入學生學號:");</p><p>  scanf("%ld",&p1->num);</p><p>  printf("請輸入score成績:");</p><p&

20、gt;  scanf("%f",&p1->score);</p><p>  printf("請輸入math成績:");</p><p>  scanf("%f",&p1->math);</p><p>  printf("請輸入shuju成績:");<

21、/p><p>  scanf("%f",&p1->shuju);</p><p>  head=NULL;</p><p>  while(p1->num!=0)//判斷輸入的命令是否不等于0,如果是則結束輸入,跳出循環(huán)</p><p><b>  {</b></p>&

22、lt;p>  n=n+1;//如果輸入學生的信息附合要求,則學生個數(shù)加1</p><p><b>  if(n==1)</b></p><p>  head=p1;//把第一個學生的地址賦給head</p><p><b>  else </b></p><p>  p2->next=p

23、1;//</p><p><b>  p2=p1;</b></p><p>  p1=(struct student*)malloc(LEN);//重新為p1分配空間</p><p>  printf("請輸入學生姓名:");</p><p>  scanf("%s",&p

24、1->name);</p><p>  printf("請輸入學生學號:");</p><p>  scanf("%ld",&p1->num);</p><p>  printf("請輸入score成績:");</p><p>  scanf("%f&q

25、uot;,&p1->score);</p><p>  printf("請輸入math成績:");</p><p>  scanf("%f",&p1->math);</p><p>  printf("請輸入shuju成績:");</p><p>  sc

26、anf("%f",&p1->shuju);</p><p><b>  }</b></p><p>  if(p1->num ==0)</p><p><b>  {</b></p><p>  printf("\n請繼續(xù)輸入序號進行操作:"

27、;);</p><p><b>  }</b></p><p>  p2->next=NULL;//把最后一個學生的next為NULL</p><p>  return(head);//返回head的地址</p><p><b>  }</b></p><p>  /*

28、--------------------輸出子程序----------------------*/</p><p>  void print(struct student *head)//這是一個輸出學生信息的函數(shù)</p><p><b>  {</b></p><p>  struct student *p;//定義一個結構的指針變量<

29、/p><p>  printf("\n現(xiàn)在共有 %d 個同學,分別是:\n",n); //輸出學生的人數(shù) </p><p><b>  p=head;//</b></p><p>  if(head!=NULL)//</p><p><b>  {</b></p>

30、<p><b>  do</b></p><p>  { printf("學生的姓名是:%s 學生的學號是: %ld ",p->name,p->num);//輸出學生的學</p><p><b>  號和成績</b></p><p>  printf("運籌

31、學: %5.1f 離散數(shù)學: %5.1f 數(shù)據(jù)結構: %5.1f ",p->score,p-</p><p>  >math,p->shuju);</p><p>  p=p->next;//把指針指向下一個結點</p><p>  }while(p!=NULL);//當p的地址不為空時就執(zhí)行循環(huán)</p>&l

32、t;p><b>  }</b></p><p>  printf("\n請繼續(xù)輸入序號:");</p><p><b>  }</b></p><p>  /*--------------------刪除子程序----------------------*/</p><p>

33、;  struct student *del(struct student *head,long num)//這是個刪除學生信息的函數(shù),num是要刪除的</p><p><b>  學號</b></p><p><b>  {</b></p><p>  struct student *p1,*p2;//</p&g

34、t;<p>  if (head==NULL)//判斷是否有學生的信息</p><p><b>  {</b></p><p>  printf("\n沒有學生的信息!\n");</p><p><b>  goto end;</b></p><p><b&g

35、t;  }</b></p><p><b>  p1=head;</b></p><p>  while(num!=p1->num && p1->next!=NULL)//p1指向的不是所要找的結點,并且后面還有結點</p><p><b>  {</b></p>&l

36、t;p>  p2=p1;//把p1的地址賦給p2</p><p>  p1=p1->next;//p1后移一個結點</p><p><b>  }</b></p><p>  if(num==p1->num)//找到了要刪除的結點</p><p><b>  {</b></p

37、><p>  if(p1==head)//若p1指向的是首結點,把第二個結點地址賦予head</p><p>  head=p1->next;</p><p>  else //否則將下一結點地址賦給前一結點地址</p><p>  p2->next=p1->next;</p><p>  printf(

38、"你已成功刪除學生信息的學號是:%ld\n",num);//輸出要刪除學生的學號</p><p>  n=n-1;//學生的人數(shù)減1</p><p><b>  }</b></p><p>  else //沒有找到要刪除的學生結點</p><p>  printf("%ld 沒有找到你要刪

39、除的學生信息!\n",num);</p><p><b>  end:</b></p><p>  return(head);//返回head的地址</p><p><b>  }</b></p><p>  /*--------------------插入子程序-------------

40、---------*/</p><p>  struct student *insert(struct student *head, struct student *stud)//這是一個插入學生信息的</p><p><b>  函數(shù)</b></p><p><b>  {</b></p><p&g

41、t;  struct student *p0,*p1,*p2;//</p><p>  p1=head;//使p1指向第一個結點</p><p>  p0=stud;//p0指向要插入的結點</p><p>  if(head==NULL)//判斷鏈表是否是空表</p><p><b>  {</b></p>

42、<p>  head=p0; //使p0指向的結點作為頭結點</p><p>  p0->next=NULL;//</p><p><b>  }</b></p><p><b>  else//</b></p><p><b>  {</b></p&

43、gt;<p>  while((p0->num > p1->num) && (p1->next != NULL))//</p><p><b>  {</b></p><p>  p2=p1;//使p2指向剛才p1指向的結點</p><p>  p1=p1->next;//p1向后移一

44、個結點</p><p><b>  }</b></p><p>  if(p0->num <= p1->num)//</p><p><b>  {</b></p><p>  if(head==p1) </p><p>  head=p0;//插入到原來第

45、一個結點之前</p><p><b>  else </b></p><p>  p2->next=p0;//插入到p2指向的結點之后</p><p>  p0->next=p1;</p><p><b>  }</b></p><p><b>  el

46、se</b></p><p><b>  {</b></p><p>  p1->next=p0; //插入到最后的結點之后</p><p>  p0->next=NULL;</p><p><b>  }</b></p><p><b> 

47、 }</b></p><p>  n=n+1;//學生的個數(shù)加1</p><p>  return(head);//返回head的地址</p><p><b>  }</b></p><p>  /*--------------------搜索子程序----------------------*/</p

48、><p>  struct student *select(struct student *head,long num)//這是個查詢學生信息的函數(shù),num是要查</p><p><b>  詢的學號</b></p><p><b>  {</b></p><p>  struct student *

49、p1,*p2;//</p><p>  if (head==NULL)//判斷是否有學生的信息</p><p><b>  {</b></p><p>  printf("\n沒有學生的信息!\n");</p><p><b>  goto end;</b></p>

50、<p><b>  }</b></p><p><b>  p1=head;</b></p><p>  while(num!=p1->num && p1->next!=NULL)//p1指向的不是所要找的結點,并且后面還有結點</p><p><b>  {</b&

51、gt;</p><p>  p2=p1;//把p1的地址賦給p2</p><p>  p1=p1->next;//p1后移一個結點</p><p><b>  }</b></p><p>  if(num ==p1->num)//找到查詢學生的學號</p><p><b> 

52、 {</b></p><p>  printf("學生的姓名是:%s 學生的學號是: %ld ",p1->name,p1->num);//輸出學生的學號</p><p><b>  和成績</b></p><p>  printf("運籌學: %5.1f 離散數(shù)學: %5.1f

53、數(shù)據(jù)結構: %5.1f ",p1->score,p1-</p><p>  >math,p1->shuju);</p><p><b>  }</b></p><p><b>  else </b></p><p>  printf("%ld 沒有找到要刪除

54、的學生信息!\n",num);</p><p><b>  end:</b></p><p>  return(head);//返回head的地址</p><p><b>  }</b></p><p>  /*--------------------主程序----------------

55、------*/</p><p>  void main()//主函數(shù)</p><p>  { printf("**********************************************************\n\n");</p><p>  printf(" 請輸入要操作的項目\n\n")

56、;</p><p>  printf(" 1、輸入學生信息 2、查看信息\n\n");</p><p>  printf(" 3、刪除學生信息 4、插入信息\n\n");</p><p>  printf(" 5、查詢學生信息

57、 \n\n");</p><p>  printf("注意:開始時必須按1進行輸入數(shù)據(jù)時,才能執(zhí)行下面的各個步驟\n\n");</p><p>  printf("(其中“查詢”,“刪除”功能只能通過學號)\n\n");</p><p>  printf("******************

58、****************************************\n\n");</p><p>  printf("請輸入你要操作的項目:");</p><p>  struct student *head,*stu;</p><p>  long del_num;</p><p><b&g

59、t;  int i;</b></p><p>  while(true)</p><p><b>  {</b></p><p>  scanf("%d",&i);</p><p>  if(i == 1)//輸入學生數(shù)據(jù)</p><p><b>

60、  {</b></p><p>  printf("請輸入學生的姓名,學號和運籌學、離散、數(shù)據(jù)結構的成績,(</p><p>  以輸入第二個人信息全部為0結束):\n");</p><p>  head=creat();//建立鏈表,返回頭指針</p><p>  print (head);//調(diào)用函數(shù),輸

61、出全部學生的個人信息</p><p><b>  }</b></p><p>  else if(i==2)//查看學生數(shù)據(jù)</p><p><b>  {</b></p><p>  print (head);//輸出學生信息</p><p><b>  }<

62、;/b></p><p>  else if(i==3)//刪除學生數(shù)據(jù)</p><p><b>  {</b></p><p>  printf("\n請輸入刪除學生的學號(以0結束):");</p><p>  scanf("%ld",&del_num);//輸入

63、要刪除的學號</p><p>  head=del(head,del_num);//刪除后鏈表的頭地址</p><p>  printf("\n請繼續(xù)輸入序號進行操作:");</p><p><b>  }</b></p><p>  else if(i==4)//插入學生數(shù)據(jù)</p>

64、<p><b>  {</b></p><p>  printf("\n請輸入需要插入學生的姓名,學號和運籌學、離散數(shù)學、數(shù)據(jù)</p><p><b>  結構的成績:");</b></p><p>  stu=(struct student *) malloc(LEN);//為stu分配空

65、間</p><p>  printf("請輸入學生姓名:");</p><p>  scanf("%s",& stu->name);</p><p>  printf("請輸入學生學號:");</p><p>  scanf("%ld",&

66、stu->num);</p><p>  printf("請輸入score成績:");</p><p>  scanf("%f",& stu->score);</p><p>  printf("請輸入math成績:");</p><p>  scanf(&quo

67、t;%f",& stu->math);</p><p>  printf("請輸入shuju成績:");</p><p>  scanf("%f",& stu->shuju);</p><p>  //printf("是否繼續(xù)輸入學生信息(是1,否0):");</

68、p><p>  //scanf("%f",&stu->order);</p><p>  while(stu->num!=0)</p><p><b>  {</b></p><p>  head=insert(head,stu);//調(diào)用insert的函數(shù),插入數(shù)據(jù)</p>

69、;<p>  printf("請輸入需要插入學生的姓名,學號和數(shù)據(jù)結構、離散數(shù)</p><p>  學、運籌學的成績(以0結束):");</p><p>  stu=(struct student *)malloc(LEN);//為stu分配空間</p><p>  printf("請輸入學生姓名:");<

70、;/p><p>  scanf("%s",& stu->name);</p><p>  printf("請輸入學生學號:");</p><p>  scanf("%ld",& stu->num);</p><p>  printf("請輸入scor

71、e成績:");</p><p>  scanf("%f",& stu->score);</p><p>  printf("請輸入math成績:");</p><p>  scanf("%f",& stu->math);</p><p>  pr

72、intf("請輸入shuju成績:");</p><p>  scanf("%f",& stu->shuju);</p><p>  //printf("是否繼續(xù)輸入學生信息(是1,否0):");</p><p>  //scanf("%f",&stu->or

73、der);</p><p><b>  }</b></p><p>  printf("\n請繼續(xù)輸入序號進行操作:");</p><p><b>  }</b></p><p>  else//查詢學生數(shù)據(jù)</p><p><b>  {<

74、;/b></p><p>  printf("\n請輸入需要查詢學生的學號:");</p><p>  scanf("%ld",&del_num);;//輸入學生的學號</p><p>  select(head,del_num);</p><p>  printf("\n請繼續(xù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論