數據結構課程設計-學生成績管理系統_第1頁
數據結構課程設計-學生成績管理系統_第2頁
數據結構課程設計-學生成績管理系統_第3頁
數據結構課程設計-學生成績管理系統_第4頁
數據結構課程設計-學生成績管理系統_第5頁
已閱讀5頁,還剩13頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、精選優質文檔-傾情為你奉上淮陰工學院數據結構課程設計報告選題名稱: 學生成績管理系統 系(院): 數 理學 院專 業: 信息和計算科學班 級: 計科1102班 姓 名: 徐連喜 學 號: 指導教師: 周 海 巖 學年學期: 2011 2012 學年 第 1 學期 2012 年 06 月 06 日【摘 要】21世紀,科學技術突飛猛進,經濟知識和信息產業初見端倪,特別是信息技術和網絡技術的訊速發展和廣泛使用,對社會的政治,經濟,軍事,文化等領域產生越來越深刻。學生成績管理系統是一個教育單位不可缺少的部分,它的內容對于學校的決策者和管理者來說都至關重要。本論文敘述到的學生成績管理系統是用IIS+AS

2、P網頁編程+ACCESS數據庫+DREAMWEAVER MX 2004+SQL查詢語言實現的。重點介紹了學生成績管理系統的實現過程:包括系統分析,系統調查,功能設計,數據庫設計,系統實現,系統測試和調試等。本系統主要功能有查詢學生成績、單個添加學生成績、批量添加學生成績、刪除學生成績、管理頁面和修改管理員密碼等內容。【關鍵詞】 成績管理; 成績查詢; C+目 錄中文摘要 。 11緒論 。 41.1 選題背景 。 51.2 需求分析 。 62總體設計 。 7 2.1程序設計組成框圖 。 82.2 模塊功能說明 。92.3 程序流程圖 。102.4 主要函數之間相互調用 。 113 在設計過程中的

3、感受 。12致謝 。 13參考文獻 。 14附錄:源程序清單 。 151. 緒論1.1 選題背景為了提高高校學生信息的管理效率,方便對學生信息進行管理、學校里面的學生和管理員方便去管理和查詢學生信息,如再要進行查詢,就得在眾多的學生信息中查找自己的成績信息,面對學院大量的學生信息,怎么可以即時而方便的管理,學生只要登錄本系統就可以查找到自己的成績信息,而管理員也方便去管理每學期的學生的成績信息。建立一個學生信息管理系統,使學生信息管理工作規范化,系統化,程序化,避免學生管理的隨意性,提高信息處理的速度和準確性,能夠及時、準確、有效的查詢和修改學生信息是必須而且十分迫切的工作。2.1 需求分析學

4、生管理系統功能的信息量大,數據安全性和保密性要求最高。本功能實現對專業信息、學生信息、教師信息情況信息的管理和統計、課程信息和成績信息查看及維護。系統管理員可以瀏覽、查詢、學生的基本信息,能添加、刪除和修改學生信息,這部分功能應該由系統管理員執行,但是,刪除某條專業基本信息記錄時,應實現對該專業的相關信息也級聯刪除。并且還應具有查詢,并打印輸出的功能設計不同用戶的操作權限和登陸方法、對所有用戶開放的用戶提供學生成績信息查詢、由于本系統功能實現方面并不太復雜,所以上面只是相關的學生信息管理查詢的總體分析,具體實現就主要體現在學生管理,教師的管理和課程的管理這一塊,也就是重點實現查詢和添加學生信息

5、,以及對成績信息管理。2總體設計(1)程序設計組成框圖學生成績管理系統1.按班級輸出學生成績單2.按姓名查詢3.增加學生4.刪除學生5.按班級修改學生成績6.按班學期改學生成績7.保存所有學生信息8.顯示不及格學生成績9.按平均成績排序并輸出成績10.退出(2)模塊功能說明1 輸出功能:完成全部學生記錄的顯示。2 查詢功能:輸入姓名可以查詢學生的詳細信息。3 增加功能:增加新學生的信息。 4 刪除功能:刪除學生信息。5 修改功能:修改學生的錯誤信息。6保存功能:保存已輸入信息。7讀取功能:讀取已輸入信息。8顯示功能:按要求顯示學生記錄。9 排序功能:按要求完成對學生信息的排序。 10 退出系統

6、。(3)程序流程圖開始輸入指令(110)學生成績單按姓名查詢增加學生刪除學生按班級修改按學期修改保存信息不及格成績平均分排序退出123456789100結束(4)主要函數之間相互調用如下:主函數main ()的調用switch(choice)case 1:OutputInformation();break; case 2:DesplayInfoBystudentName();break;case 3:p=MallocNode();GetInformation(p); InsertOneNode(p); break;case 4:DeleteNodeBystudentNumber();break

7、;case 5:ChangeMarkByName();break;case 6:ChangeMarkByNumber();break;case 7:SaveLinkToFile();break;case 8:DesplayMarkSegment();break;case 9:CompositorByTotalMark();break;case 10:SaveLinkToFile();總 結首先經過一周的編程實習,并在后一段的報告總結,我對數據結構這門科有新的認識,本人實在是獲益不淺!要想編寫一個準確、高效并有使用價值的程序,一定先要對課本知識熟悉,還要掌握必要的上機操作能力,寫程序其實很容易而

8、關鍵在于調試程序。這次設計,讓我重新掌握了數據結構,而且還得到了用數據結構解決實際問題的寶貴經驗。其次, 通過此次編程我也發現了自己在學習中的錯誤和不足,復習了以前學過的知識。同時也學到了一些沒學過的知識,讓我從中收益非淺,也為期末測試準備了一下!更重要的是培養了獨立思考問題和解決問題的能力,熟悉了一些基本操作和解決問題的方法!致 謝因為初次接觸等原因此次設計遇到了許多問題,我深刻體會到老師發揮的重要作用, 數據結構程序對我們來說比較難,在匆忙的學習中更是難上加難,似乎覺得自己僅是個匆匆過客,但在老師的幫助下我學會了如何調試,如何查找系統沒有提示的錯誤,最后終于排除萬難把程序搞定,體會到原來編

9、程也挺有意思的快感.我想沒有老師的幫助我很難在短期內把程序設計做的這樣好,在此特地感謝老師的幫助。 參 考 文 獻1 李麗娟 . C語言程序設計教程(第二版). 北京:人民郵電出版社 20092 刁成嘉 . C語言程序設計論文 D.北京:清華大學出版社 20043 楊文軍,楊柳 . C語言程序設計教程M. 北京:清華大學出版社 20104 周啟海 . C語言程序設計報告R.北京:中國水利工程出版社 20055 譚浩強 . C程序設計(第三版)M.北京:清華大學出版社 2005附 錄源程序清單#include<stdio.h>#include<conio.h>#inclu

10、de<malloc.h>#include<string.h>typedef struct STUDENTchar studentNumber10;/*學生學號*/char studentName20;/*學生姓名*/char className20;/*班級名稱*/char yearName20;/*學期名稱*/float mark1;/*第1門成績*/float mark2;/*第2門成績*/float mark3;/*第3門成績*/struct STUDENT *next;STUDENT;STUDENT *headLink;/*鏈表表頭指針*/*以下是函數聲明*/v

11、oid ReadInfoFormFile(void);void DesplayMenu(void);void CreateHeadLink(void);STUDENT *MallocNode(void);void GetInformation(STUDENT *t);void OutputInformation(void);void DesplayInfoBystudentName(void);void DesplayOneNode(STUDENT *t);void InsertOneNode(STUDENT *t);void DeleteNodeBystudentNumber(void);v

12、oid ChangeMarkByName(void);void ChangeMarkByNumber(void);void SaveLinkToFile(void);void DesplayMarkSegment(void);void CompositorByTotalMark(void);int choose;/*用于接受用戶的選擇*/*主函數*/void main()CreateHeadLink();ReadInfoFormFile();DesplayMenu();/*函數功能:從文件中讀學生信息到鏈表中*/void ReadInfoFormFile(void)FILE *fp;STUDE

13、NT *p;fp=fopen("student.txt","r");if(!fp)printf("文件不存在n");return;p=MallocNode();while(fscanf(fp,"%s%s%s%f%f%f",p->studentNumber,p->studentName,p->className,&(p->mark1),&(p->mark2),&(p->mark3)>0)InsertOneNode(p);p=MallocNode();f

14、close(fp);/*函數功能:顯示菜單,根據用戶的輸入完成相應的功能*/void DesplayMenu(void)STUDENT *p;printf("-請選擇相應功能-nn");printf("| 1 按班級輸出學生成績單 |n");printf("| 2 按姓名查詢 |n");printf("| 3 增加學生 |n");printf("| 4 刪除學生 |n");printf("| 5 按班級修改學生成績 |n");printf("| 6 按學期修改學生成

15、績 |n");printf("| 7 保存所有學生信息 |n");printf("| 8 顯示不及格學生成績 |n");printf("| 9 按平均成績排序并輸出績 |n");printf("| 10 退出 |nn");scanf("%d",&choose);/*取得用戶的選擇*/switch(choose)case 1:OutputInformation();/*顯示所有學生的信息*/break;case 2:DesplayInfoBystudentName();break

16、;case 3:p=MallocNode();/*先申請一個新結點*/GetInformation(p);/*要求用戶輸入信息到新結點中*/InsertOneNode(p);/*將新結點加到鏈表中*/break;case 4:DeleteNodeBystudentNumber();/*根據用戶輸入的學號刪除該學生*/break;case 5:ChangeMarkByName();/*根據用戶輸入的姓名修改學生成績*/break;case 6:ChangeMarkByNumber();/*根據用戶輸入的學號修改學生成績*/break;case 7:SaveLinkToFile();/*保存數據*

17、/break;case 8:DesplayMarkSegment();/*顯示不及格的學生成績*/break;case 9:CompositorByTotalMark();/*按平均成績排序*/break;case 10:SaveLinkToFile();/*保存數據后再退出*/free(headLink);break;default:break;DesplayMenu();/*遞歸調用*/*函數功能:建立鏈表表頭*/void CreateHeadLink(void)STUDENT *p;p=(STUDENT*)malloc(sizeof(STUDENT);headLink=p;p->n

18、ext=NULL;/*函數功能:申請一個新結點,并將其初始化*/STUDENT *MallocNode(void)STUDENT *p;int i;p=(STUDENT*)malloc(sizeof(STUDENT);if(p=NULL)return NULL;for(i=0;i<10;i+)p->studentNumberi='0'for(i=0;i<20;i+)p->studentNamei='0'for(i=0;i<20;i+)p->classNamei='0'p->mark1=0.0;p->

19、mark2=0.0;p->mark3=0.0;p->next=NULL;return p;/*函數功能:取得用戶輸入的學生信息*/void GetInformation(STUDENT *t)printf("請輸入學生學號:n");scanf("%s",t->studentNumber);printf("請輸入學生姓名:n");scanf("%s",t->studentName);printf("請輸入該生所在班級:n");scanf("%s",t-&

20、gt;className);printf("請輸入第1門成績:n");scanf("%f",&(t->mark1);printf("請輸入第2門成績:n");scanf("%f",&(t->mark2);printf("請輸入第3門成績:n");scanf("%f",&(t->mark3);/*函數功能:在鏈表的結尾處增加一個結點*/void InsertOneNode(STUDENT *t)STUDENT *p;p=headLink

21、;while(p->next)p=p->next;p->next=t;/*函數功能:根據用戶輸入的學生姓名顯示該學生的信息*/void DesplayInfoBystudentName(void)STUDENT *p;char studentName20;char flag=0;p=headLink->next;printf("請輸入學生姓名:n");scanf("%s",studentName);while(p)if(strcmp(p->studentName,studentName)=0)printf("學號t

22、姓名t班級t成績1t成績1t成績3t總成績t平均成績nn");DesplayOneNode(p);flag=1;break;p=p->next;if(!flag)printf("對不起,不存在姓名為 %s 的學生n",studentName);/*函數功能:輸出一個結點的信息*/void DesplayOneNode(STUDENT *t)printf("%st",t->studentNumber);printf("%st",t->studentName);printf("%st",t-

23、>className);printf("%.2ft",t->mark1);printf("%.2ft",t->mark2);printf("%.2ft",t->mark3);printf("%.2ft",t->mark1+t->mark2+t->mark3);printf("%.2ftn",(t->mark1+t->mark2+t->mark3)/3);/*函數功能:根據用戶輸入的學號刪除該學生*/void DeleteNodeByst

24、udentNumber(void)char studentNumber10;STUDENT *p,*q;char flag=0;printf("請輸入要刪除的學生學號:");scanf("%s",studentNumber);p=headLink;q=headLink->next;while(q) if(strcmp(q->studentNumber,studentNumber)=0) p->next=q->next; free(q); flag=1; break; p=p->next; q=q->next; if(!

25、flag)printf("不存在該學號的學生n");return;printf("成功刪除n");/*函數功能:顯示所有學生的信息*/void OutputInformation(void)STUDENT *p;p=headLink->next;if(p=NULL)printf("現在沒有學生信息,請先輸入學生信息nn");return;printf("學號t姓名t班級t成績1t成績1t成績3t總成績t平均成績nn");while(p)DesplayOneNode(p);p=p->next;/*函數功能

26、:根據輸入的班級修改成績*/void ChangeMarkByName(void)STUDENT *p;int a;char studentName20;char flag=0;float mark1,mark2,mark3;p=headLink->next;printf("請輸入學生班級:n");scanf("%d",&a);printf("請輸入學生姓名:n");scanf("%s",studentName);while(p)if(strcmp(p->studentName,studentN

27、ame)=0)printf("請輸入新的第1門成績:n");scanf("%f",&mark1);printf("請輸入新的第2門成績:n");scanf("%f",&mark2);printf("請輸入新的第3門成績:n");scanf("%f",&mark3);p->mark1=mark1;p->mark2=mark2;p->mark3=mark3;flag=1;printf("修改成功n");break;p=

28、p->next;if(!flag)printf("對不起,不存在班級為 %s 的學生n",studentName);/*函數功能:根據輸入的學期修改成績*/void ChangeMarkByNumber(void)STUDENT *p;int b;char studentNumber20;char flag=0;float mark1,mark2,mark3;p=headLink->next;printf("請輸入學生所在學期:n");scanf("%d",&b);printf("請輸入學生學號:n&qu

29、ot;);scanf("%s",studentNumber);while(p)if(strcmp(p->studentNumber,studentNumber)=0)printf("請輸入新的第1門成績:n");scanf("%f",&mark1);printf("請輸入新的第2門成績:n");scanf("%f",&mark2);printf("請輸入新的第3門成績:n");scanf("%f",&mark3);p->

30、mark1=mark1;p->mark2=mark2;p->mark3=mark3;flag=1;printf("修改成功n");break;p=p->next;if(!flag)printf("對不起,不存在學期為 %s 的學生n",studentNumber);/*函數功能:保存鏈表數據到文件中*/void SaveLinkToFile(void)STUDENT *p;FILE *fp;p=headLink->next;if(p=NULL)printf("現在沒有學生信息,請先輸入學生信息nn");retu

31、rn;fp=fopen("student.txt","w+");if(!fp)printf("文件不存在n");return;while(p)fprintf(fp,"%s %s %s %f %f %fn",p->studentNumber,p->studentName,p->className,p->mark1,p->mark2,p->mark3);p=p->next;fclose(fp);/*函數功能:不及格學生成績*/void DesplayMarkSegment(vo

32、id)STUDENT *p;int count=0;p=headLink->next;printf("60分以下(不及格)的學生成績如下:n");printf("學號t姓名t班級t成績1t成績1t成績3t總成績t平均成績nn");while(p)if(6>(int)(p->mark1/10)|(6>(int)(p->mark2/10)|(6>(int)(p->mark3/10)/*只要有一科不及格就認為該生不及格*/count+;DesplayOneNode(p);p=p->next;printf("

溫馨提示

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

評論

0/150

提交評論