C語言學生信息管理系統(tǒng)實驗報告_第1頁
C語言學生信息管理系統(tǒng)實驗報告_第2頁
C語言學生信息管理系統(tǒng)實驗報告_第3頁
C語言學生信息管理系統(tǒng)實驗報告_第4頁
C語言學生信息管理系統(tǒng)實驗報告_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C語言課程設計學生信息管理系統(tǒng)姓名洪偉生院系計算機學院日期 2015年7月5日教育資料目錄第一章 設計要求 ?第二章算法分析1. 理論依據(jù)?2. 主要實現(xiàn)方法?2.1 整體流程圖 ?2.2 函數(shù)功能和函數(shù)之間的調(diào)用關(guān)系?第三章代碼(源代碼)?第四章 分析說明?第五章 總結(jié)?第一章、設計要求1、利用所學的知識、理論和實際結(jié)合,利用資源,采用模塊化的結(jié)構(gòu),使用模仿修 改自主設計相結(jié)合的方法,鍛煉學生綜合分析解決實際問題的編程能力;2、 通過C語言各個函數(shù)功能來實現(xiàn)對學生信息的管理,學生信息包括學生姓名,學號,各科成績;管理方式包括對學生信息的錄入,保存,排序,查找、修改、刪除等功能。第二章、算法分

2、析1、程序理論依據(jù)通過C語言的程序設計基礎的掌握,對學生成績管理系統(tǒng)進行編寫程序。首先,通過鏈表 這一數(shù)據(jù)結(jié)構(gòu)來對學生的信息進行錄入以及操作,在其過程中,通過各個功能語句以及選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)等方式的結(jié)合來達到所要實現(xiàn)的程序功能。最后通過對C語言中對文件的操作,對已有學生成績的讀取和新建學生成績的錄入保存。教育資料2、主要實現(xiàn)方法2.1整體流程圖學生信息管理系統(tǒng)進入退出學 生 信 息 錄 入學 生 信 息 瀏 覽學 生 信 息 查 找學 生 信 息 修 改2.2、函數(shù)功能和函數(shù)之間的調(diào)用關(guān)系2.2.1、函數(shù)功能:void Men u_1();/void Men u_2();/void swap

3、(structstudent * phead,struct表節(jié)點互換void Save(struct stude nt * head);盤void Search(struct stude nt * head);生信息void Read(struct stude nt * head);生信息void Sort(struct stude nt * head);點排序structstude nt*Create();錄入structstude nt*Readpo in t();內(nèi)存struct stude nt * Modify(struct stude nt * head);體成員修改struct

4、stude nt * Add(struct stude nt * head);點插入struct stude nt * Delete(struct stude nt * head);點刪除主菜單 二級菜單stude nt * pback);/鏈/寫入磁/查找學/顯示學/鏈表節(jié)/學生信息手動/磁盤文件寫入/鏈表結(jié)構(gòu)/鏈表節(jié)/鏈表節(jié)教育資料222、函數(shù)之間的調(diào)用關(guān)系: 通過switch語句進行指令選擇:第三章、代碼(源代碼)學生信息管理系統(tǒng)/定義結(jié)構(gòu)體case 1: 學生信息錄入調(diào)用函數(shù)Create( )、Save( )、Menu_1( )、Menu_2()case 2:學生信息瀏覽調(diào)用函數(shù)Rea

5、dpoint() 、Sort( )、Read( )、Save( )、Menu_1()、Menu_2()case 3:學生信息查找調(diào)用函數(shù)Search( )、Readpoint( )、Menu_1( )、Menu_2()case 4:學生信息修改調(diào)用函數(shù)Modify( ) 、Readpoint( )、Save( )、Menu_1( )、Menu_2()case 5:學生信息增加調(diào)用函數(shù)Add( )、Readpoint( )、Save( )、Menu_1( )、Menu_2()case 6:學生信息刪除調(diào)用函數(shù)Delete( )、Readpoint( )Save( )、Menu_1( )、Menu

6、_2()case 0:返回主菜單調(diào)用函數(shù)Menu_1()/*/#in clude#in clude#in cludevstri ng.h struct stude ntint num;char n ame24;char sex5;int Chin ese;int Math;int En glish;struct stude nt * n ext;教育資料;void Men u_1(); void Men u_2();/主菜單二級菜單void swap(struct stude nt * phead,struct stude nt * pback); /節(jié)點互換void Save(struct

7、stude nt * head); 磁盤/void Search(struct stude nt * head); 學生信息/void Read(struct stude nt * head); 學生信息/void Sort(struct stude nt * head); 節(jié)點排序/struct stude nt * Readpo in t(); 文件寫入內(nèi)存/struct stude nt * Create();/學生信息手動錄入struct stude nt * Modify(struct stude nt * head); 結(jié)構(gòu)體成員修改/struct stude nt * Add(s

8、truct stude nt * head); 節(jié)點插入/struct stude nt * Delete(struct stude nt * head); 節(jié)點刪除/鏈表寫入 查找 顯示 鏈表磁盤鏈表 鏈表 鏈表int mai n(void)Men u_1();return 0;void Menu_1()int num;prin tf(tttt學生信息管理系統(tǒng)ttttn);prin tf(ttt 1:進入學生信息管理n);/主菜單prin tf(ttt 0:退出學生信息管理n);printf(請您輸入指令:);sca nf(%d,&nu m);switch( num) case 1:Me n

9、u_2();break;教育資料n);您已退出default:pri ntf(學生信息管理系統(tǒng)break;/*/void Men u_2()struct stude nt * head; int num;prin tf(ttt歡迎進入n);printf(n);prin tf(ttt 1:學生信息錄入n);prin tf(ttt 2:學生信息瀏覽n);prin tf(ttt 3:學生信息查找n);prin tf(ttt 4:/二級菜單學生信息修改n);prin tf(ttt 5:學生信息增加n);prin tf(ttt 6:學生信息刪除n);prin tf(ttt 0:返回主菜單n);print

10、f(n);printf(請您輸入指令:);sca nf(%d,&nu m);switch( num)case 1:head = Create();Save(head);prin tf(n);printf(ttt 1:返回主菜單 n);/手動錄入學生數(shù)據(jù)printf(ttt 2:返回二級菜單 n);prin tf(n);printf(請您輸入指令:);sea nf(%d,&nu m);switch( num)case 1:Me nu_1();break;case 2:Me nu_2();教育資料break;default :prin tf(輸入無效,返回二級菜單Men u_2(); break;

11、break;case 2: head = Readpo in t();/寫入鏈表,返回頭指針Sort(head);printf(ttt以學號升序排列n);Read(head);/鏈表數(shù)據(jù)寫入文件Save(head);prin tf(n);printf(ttt 1:返回主菜單 n);printf(ttt 2:返回二級菜單 n);prin tf(n);printf(請您輸入指令:);sca nf(%d,&nu m);switch( num)case 1:Me nu_1();break;case 2:Me nu_2();break;default :prin tf(輸入無效,返回二級菜單Men u_

12、2(); break;break;case 3:head = Readpo in t();Search(head);/查找學生信息!n);!n);教育資料prin tf(n);printf(ttt 1:返回主菜單 n);printf(ttt 2:返回二級菜單 n);prin tf(n);printf(請您輸入指令:);sea nf(%d,&nu m);switch( num)case 1:Me nu_1();break;case 2:Me nu_2();break;default :prin tf(輸入無效,返回二級菜單Men u_2(); break;break;case 4:head =

13、Readpo in t();Modify(head);修改結(jié)構(gòu)體成員并保存到文件Save(head);prin tf(n);printf(ttt 1:返回主菜單 n);printf(ttt 2:返回二級菜單 n);prin tf(n);printf(請您輸入指令:);sca nf(%d,&nu m);switch( num)case 1:Me nu_1();break;case 2:Me nu_2();break;default :prin tf(輸入無效,返回二級菜單Men u_2();break;!n);!n);教育資料/break;case 5:/增加學生信head = Readpo i

14、n t();Add(head);息并保存到文件Save(head);prin tf(n);printf(ttt 1:返回主菜單 n);printf(ttt 2:返回二級菜單 n);prin tf(n);printf( 請您輸入指令:);sca nf(%d,&nu m);switch( num)case 1:Me nu_1();break;case 2:Me nu_2();break;default :printf(輸入無效,返回二級菜單!n);Men u_2();break;break;case 6:head = Readpo in t();head = Delete(head);/刪除學生信

15、息并保存到文件Save(head);prin tf(n);printf(ttt 1:返回主菜單 n);printf(ttt 2:返回二級菜單 n);prin tf(n);printf( 請您輸入指令:);sca nf(%d,&nu m);switch( num)case 1:Me nu_1();break;教育資料 case 2:Me nu_2(); break;default :printf(輸入無效,返回二級菜單 !n);Men u_2(); break;break;case 0: Men u_1();break;default :printf(請重新輸入n);Men u_2();brea

16、k;/*-*/struct stude nt * Create()/學生信息手動錄入struct stude nt *head,* p,* q;int n;p = q = (struct stude nt *)malloc(sizeof(struct stude nt);prin tf(請輸入學生的姓名、學號、性別、語文成績、高等數(shù)學成績、英語成績:n);sca nf(%s,q-n ame);sca nf(%d %s %d %d %d, &q- num,& q-sex, &q-Chi nese, &q-Math, &q-E nglish);n = 0;head =NULL;while (q-

17、num != 0)n = n+1;if (n = 1)head = q;else教育資料p-n ext = q;p = q;q = (struct stude nt *)malloc(sizeof(struct stude nt);sea nf(%s,q-n ame);sca nf(%d %s %d %d %d, &q- num,q-sex,&q-Chi nese, &q-Math, &q-En glish);p- next = NULL;printf( 學生信息錄入成功!n); return head;/*-*/struct stude nt * Readpo in t()/學生信息寫入內(nèi)存

18、,便于操作FILE * fp1;struct stude nt *head,* p,* q;int n;if(fp1 = fope n(E:test.txt,rb) = NULL)prin tf(ope n file error! n);exit(0);p = q = (struct stude nt *)malloc(sizeof(struct stude nt);fsca nf(fp1,%s %d %s %d %d %d,q- name, &q- num,q-sex, &q-Chi nese , &q-Math, &q-En glish);n = 0;head =NULL;while( !

19、feof(fp1)n = n+1;if (n = 1) head = q;elsep-n ext = q;p = q;教育資料q = (struct stude nt *)malloc(sizeof(struct stude nt);fsca nf(fp1,%s %d %s %d %d %d, &q- name, &q- num, &q-sex, &q- Chi ne se, &q-Math, &q-E nglish);p- next = NULL;fclose(fp1); retur n head;/*-*/ void Swap(struct stude nt * phead, struct

20、 stude nt * pback)/鏈表元素數(shù)據(jù)交換struct stude nt * temp = (struct stude nt *)malloc(sizeof(struct stude nt);strcpy(temp-n ame,phead-n ame);temp-num = phead-num;strcpy(temp-sex,phead-sex);temp-Ch in ese = phead-Ch in ese;temp-Math = phead-Math; temp-En glish = phead-E nglish;strcpy(phead-n ame,pback-n ame)

21、; phead-num= pback- num; strcpy(phead-sex,pback-sex); phead-Ch in ese = pback-Ch in ese; phead-Math = pback-Math; phead-E nglish = pback-E nglish;strcpy(pback- n ame,temp-n ame); pback-num = temp-num; strcpy(pback-sex,temp-sex); pback-Chi nese = temp-Chi nese; pback-Math = temp-Math; pback-E nglish

22、= temp-E nglish;free(temp);教育資料/*-*/void Sort(struct stude nt * head)/struct stude nt * phead = (struct stude nt *)malloc(sizeof(struct stude nt);struct stude nt * pback = (struct stude nt *)malloc(sizeof(struct stude nt);phead = head;while (phead)int Num = phead-num;pback = phead-n ext;while(pback)

23、if( Num pback-num)Swap(phead,pback);Num = phead-num;pback = pback-next;phead = phead-next;/*-*/void Read(struct stude nt * head)/生信息讀取struct stude nt * p;p = head;printf(n);printf(學生的姓名、學號、性別、語文成績、高等數(shù)學成績 績:n);while(p != NULL)printf( %s t%dt%s t %d t %dtt %dn,p-n ame,p-nu m,p-sex,p-Chi nese,p-Math,p-

24、E nglish);學號排序英語成p = p-n ex t;教育資料 prin tf(n);/*-*/void Save(struct stude nt * head)/生信息保存到文件struct stude nt * p;FILE * fp;if(fp = fope n( E:test.txt,wb) = NULL)prin tf(ope n file error! n);exit(0);p = head; while(p 匸NULL)fpri ntf(fp,%s %d %s %d %d %d,p-n ame,p-nu m,p-sex,p- Chi nese,p -Math,p-E ngl

25、ish);fprin tf(fp,%s,rn);p = p-n ex t;fclose(fp);/*-*/void Search(struct stude nt * head)/學生信息查找int n;struct stude nt * p;char n ame24;int num;char sex5;int Chin ese;教育資料 int Math; int En glish;printf(您想以何種方式進行查找:n);prin tf(1;姓名n);prin tf(2:學號n);prin tf(3:性別n);prin tf(4:語文成績n);prin tf(5:數(shù)學成績n);prin t

26、f(6:英語成績n);prin tf(0:返回二級菜單n);sea nf(%d,&n);switch( n)case 1:printf(請輸入姓名:);/按姓名查找sca nf(%s, name);p = head;while(strcmp( name,p-n ame)!=0 & p-n ext != NULL) p = p-n ext;if(strcmp( name,p-n ame)=0)prin tf(%s %d %s %d %d %dn ,p-n ame,p-nu m,p-sex,p-Chi nes e,p-Math,p-E nglish);elseprintf(查無此人!n);brea

27、k;case 2:printf(請輸入學號:);/按學號查找sca nf(%d,&nu m);p = head;while( num != p-num & p-n ext != NULL)p = p-n ext;if(num = p-num)prin tf(%s %d %s %d %d %dn ,p-n ame,p-nu m,p-sex,p-Chi nes e,p-Math,p-E nglish);elseprintf(查無此人!n);break;教育資料case 3: printf(請輸入性別:);找sca nf(%s,sex);p = head;while(p!= NULL)if(strc

28、mp(sex,p-sex)=0)/按性別查prin tf(%s %d %s %d %d %dn ,p-n ame,p-nu m,p-sex,p-Chi nes e,p-Math,p-E nglish);p = p-n ext;break;case 4:printf(請輸入語文成績:);/績查找sca nf(%d,&Chi nese);p = head;while(p!= NULL)if(Chi nese = p-Ch in ese)prin tf(%s %d %s %d %d %dn ,p-n ame,p-nu m,p-sex,p-Chi nes e,p-Math,p-E nglish);p

29、= p-n ext;break;case 5:prin tf(請輸入高等數(shù)學成績:);/學成績查找sca nf(%d,&Math);p = head;while(p!= NULL)if(Math = p-Math)prin tf(%s %d %s %d %d %dn ,p-n ame,p-nu m,p-sex,p-Chi nes e,p-Math,p-E nglish);p = p-n ext;按語文成按高等數(shù)教育資料 break;case 6:printf(請輸入英語成績:);/按英語成績查找sca nf(%d,&En glish);p = head;while(p!= NULL)if(E

30、nglish = p-E nglish)prin tf(%s %d %s %d %d %dn ,p-n ame,p-nu m,p-sex,p-Chi nes e,p-Math,p-E nglish);p = p-n ext;break;default:printf(指令錯誤返回二級菜單!n);Men u_2();break;/*-*/struct stude nt * Modify(struct stude nt * head) int n;struct stude nt * p;char n ame24;int num;prin tf(您想以何種方式進行修改:n);prin tf(1;姓名

31、n);prin tf(2:學號 n);printf(0:返回二級菜單n);sca nf(%d,&n);switch( n)case 1:按姓名查找后printf(請輸入姓名:);/修改信息教育資料 sea nf(%s, name);p = head;while(strcmp( name,p-n ame)!=0 & p-n ext != NULL)p = p-n ex t;if(strcmp( name,p-n ame)=0)sca nf(%s %d %s %d %d %d,p- name,&p- num,p-sex,&p-Chi nese,&p-Math,&p-E nglish);prin t

32、f(修改后:n);prin tf(%s %d %s %d %d %dn ,p-n ame,p-nu m,p-sex,p-Chi nes e,p-Math,p-E nglish);elseprintf(查無此人!n);break;case 2:printf(請輸入學號:);/按學號查找后修改信息sca nf(%d,&nu m);p = head;while( num != p-num & p-n ext != NULL)p = p-n ex t;if(num = p-num)sca nf(%s %d %s %d %d %d,p- name,&p- num,p-sex,&p-Chi nese,&p

33、-Math,&p-E nglish);prin tf(修改后:n);prin tf(%s %d %s %d %d %dn ,p-n ame,p-nu m,p-sex,p-Chi nes e,p-Math,p-E nglish);elseprintf(查無此人!n);break;default:printf(指令錯誤,返回二級菜單!n);Men u_2();break;return head;struct student * Add(struct student * head)/增加學生信息教育資料struct stude nt * p,* q;/為增加的學生分配內(nèi)存struct stude n

34、t * add = (struct stude nt *)malloc(sizeof(struct stude nt );sca nf(%s %d %s %d %d %d,add- name, &add- num,add-sex, &add- Chi n ese,&add-Math, &add-E nglish);q = head;if(head = NULL)head = add;/add- next = NULL;else while(add- num q- num) & (q- next != NULL)占八、p = q;q = q-n ex t;if(add-num num)if (head = q)head =add;elsep-n ext = add;/add-n ext = q;elseq-n ext = add;/add- next = NULL;空表插入/指向下個節(jié)/插到首節(jié)點插到中間節(jié)點插到尾節(jié)點return head;刪除學生信struct stude nt * Delete(struct stude nt * head)/息 int n;struct s

溫馨提示

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

評論

0/150

提交評論