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

下載本文檔

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

文檔簡介

1、C語言課程設(shè)計學(xué)生信息管理系統(tǒng)姓名洪偉生院系計算機學(xué)院日期2015年7月5日.目錄1.2. 2.12.2第一章、 設(shè)計要求1、利用所學(xué)的知識、理論和實際結(jié)合,利用資源,采用模塊化的結(jié)構(gòu),使用模仿修改自主設(shè)計相結(jié)合的方法,鍛煉學(xué)生綜合分析解決實際問題的編程能力;2、通過 C 語言各個函數(shù)功能來實現(xiàn)對學(xué)生信息的管理,學(xué)生信息包括學(xué)生,學(xué)號,各科成績;管理方式包括對學(xué)生信息的錄入,保存,排序,查找、修改、刪除等功能。 算法分析1、程序理論依據(jù)通過 C 語言的程序設(shè)計基礎(chǔ)的掌握,對學(xué)生成績管理系統(tǒng)進行編寫程序。首先,通過鏈表這一數(shù)據(jù)結(jié)構(gòu)來對學(xué)生的信息進行錄入以及操作,在其過程中,通過各個功能語句以及選

2、擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)等方式的結(jié)合來達到所要實現(xiàn)的程序功能。最后通過對 C 語言中對文件的操作,對已有學(xué)生成績的讀取和新建學(xué)生成績的錄入保存。.2、主要實現(xiàn)方法2.1 整體流程圖學(xué)生信息管理系統(tǒng)進入退出學(xué)學(xué)學(xué)學(xué)學(xué)學(xué)返生生生生生生回信信信信信信主息息息息息息菜錄瀏查修增刪單入覽找改加除2.2 、函數(shù)功能和函數(shù)之間的調(diào)用關(guān)系2.2.1、函數(shù)功能:void Menu_1();/主菜單void Menu_2();/二級菜單voidswap(structstudent * phead,structstudent * pback);/鏈表節(jié)點互換void Save(struct student * head);

3、/寫入磁盤void Search(struct student * head);/查找學(xué)生信息void Read(struct student * head);/顯示學(xué)生信息void Sort(struct student * head);/鏈表節(jié)點排序structstudent*Create();/學(xué)生信息手動錄入structstudent*Readpoint();/磁盤文件寫入存struct student * Modify(struct student * head);/鏈表結(jié)構(gòu)體成員修改struct student * Add(struct student * head);/鏈表節(jié)點插

4、入struct student * Delete(struct student * head);/鏈表節(jié)點刪除.2.2.2 、函數(shù)之間的調(diào)用關(guān)系:通過 switch 語句進行指令選擇:case 1:學(xué)生信息錄入調(diào)用函數(shù)Create( )、Save( ) 、Menu_1( ) 、 Menu_2( )case 2:學(xué)生信息瀏覽調(diào)用函數(shù)Readpoint( ) 、Sort( ) 、Read( ) 、Save( ) 、 Menu_1( ) 、Menu_2( )case 3:學(xué)生信息查找調(diào)用函數(shù)Search( )、Readpoint( )、 Menu_1( ) 、Menu_2( )case 4:學(xué)生信息

5、修改調(diào)用函數(shù)Modify( )、Readpoint( )、 Save( ) 、 Menu_1( ) 、Menu_2( )case 5:學(xué)生信息增加調(diào)用函數(shù)Add( ) 、 Readpoint( )、Save( ) 、Menu_1( ) 、 Menu_2( )case 6:學(xué)生信息刪除調(diào)用函數(shù)Delete( )、Readpoint( )Save( )、Menu_1( ) 、Menu_2( )case 0:返回主菜單調(diào)用函數(shù)Menu_1( )第三章、 代碼(源代碼)/*學(xué)生信息管理系統(tǒng)*/#include#include#includestruct student/定義結(jié)構(gòu)體int num;cha

6、r name24;char sex5;int Chinese;int Math;int English;struct student * next;.;void Menu_1();/主菜單void Menu_2();/二級菜單void swap(struct student * phead,struct student * pback);/鏈表節(jié)點互換void Save(struct student * head);/寫入磁盤void Search(struct student * head);/查找學(xué)生信息void Read(struct student * head);/顯示學(xué)生信息voi

7、d Sort(struct student * head);/鏈表節(jié)點排序struct student * Readpoint();/磁盤文件寫入存struct student * Create();/學(xué)生信息手動錄入struct student * Modify(struct student * head);/鏈表結(jié)構(gòu)體成員修改struct student * Add(struct student * head);/鏈表節(jié)點插入struct student * Delete(struct student * head);/鏈表節(jié)點刪除int main(void)Menu_1();return

8、 0;void Menu_1()int num;printf(tttt學(xué)生信息管理系統(tǒng) ttttn);printf(ttt 1:進入學(xué)生信息管理 n);/主菜單printf(ttt 0:退出學(xué)生信息管理 n);printf(請您輸入指令 :);scanf(%d,&num);switch(num) case 1:Menu_2(); break;.default:printf(-您已退出學(xué)生信息管理系統(tǒng)-n);break;/*-void-Menu_2()*/struct student * head;int num;printf(ttt歡迎進入 n);printf(-n);printf(ttt 1

9、:學(xué)生信息錄入 n);printf(ttt 2:學(xué)生信息瀏覽 n);printf(ttt 3:學(xué)生信息查找 n);printf(ttt 4:學(xué)生信息修改 n);/ 二級菜單printf(ttt 5:學(xué)生信息增加 n);printf(ttt 6:學(xué)生信息刪除 n);printf(ttt 0:返回主菜單 n);printf(-n);printf(請您輸入指令 :);scanf(%d,&num);switch(num)case 1:head = Create();Save(head);printf(n);printf(ttt 1:返回主菜單 n);/ 手動錄入學(xué)生數(shù)據(jù)printf(ttt 2:返回二

10、級菜單 n);printf(n);printf(請您輸入指令 :);scanf(%d,&num);switch(num)case 1:Menu_1();break;case 2:Menu_2();.break;default :printf(輸入無效,返回二級菜單!n);Menu_2();break;break;case 2:head = Readpoint();/ 寫入鏈表,返回頭指針Sort(head);printf(ttt 以學(xué)號升序排列 n); Read(head);/ 鏈表數(shù)據(jù)寫入文件Save(head);printf(n);printf(ttt 1:返回主菜單 n);printf(

11、ttt 2:返回二級菜單 n);printf(n);printf(請您輸入指令 :);scanf(%d,&num);switch(num)case 1:Menu_1();break;case 2:Menu_2();break;default :printf(輸入無效,返回二級菜單!n);Menu_2();break;break;case 3:head = Readpoint();Search(head);/ 查找學(xué)生信息.printf(n);printf(ttt 1:返回主菜單 n);printf(ttt 2:返回二級菜單 n);printf(n);printf(請您輸入指令 :);scanf

12、(%d,&num);switch(num)case 1:Menu_1();break;case 2:Menu_2();break;default :printf(輸入無效,返回二級菜單!n);Menu_2();break;break;case 4:head = Readpoint();Modify(head);/修改結(jié)構(gòu)體成員并保存到文件Save(head);printf(n);printf(ttt 1:返回主菜單 n);printf(ttt 2:返回二級菜單 n);printf(n);printf(請您輸入指令 :);scanf(%d,&num);switch(num)case 1:Menu

13、_1();break;case 2:Menu_2();break;default :printf(輸入無效,返回二級菜單!n);Menu_2();break;.break;case 5:head = Readpoint();Add(head);/ 增加學(xué)生信息并保存到文件Save(head);printf(n);printf(ttt 1:返回主菜單 n);printf(ttt 2:返回二級菜單 n);printf(n);printf(請您輸入指令 :);scanf(%d,&num);switch(num)case 1:Menu_1();break;case 2:Menu_2();break;d

14、efault :printf(輸入無效,返回二級菜單!n);Menu_2();break;break;case 6:head = Readpoint();head = Delete(head);/ 刪除學(xué)生信息并保存到文件Save(head);printf(n);printf(ttt 1:返回主菜單 n);printf(ttt 2:返回二級菜單 n);printf(n);printf(請您輸入指令 :);scanf(%d,&num);switch(num)case 1:Menu_1();break;.case 2:Menu_2();break;default :printf(輸入無效,返回二級

15、菜單!n);Menu_2();break;break;case 0: Menu_1();break;default :printf(請重新輸入 n);Menu_2();break;/*-*/struct student * Create()/ 學(xué)生信息手動錄入struct student *head,* p,* q;int n;p = q = (struct student *)malloc(sizeof(struct student);printf(請輸入學(xué)生的、學(xué)號、性別、語文成績、高等數(shù)學(xué)成績、英語成績 :n);scanf(%s,q-name);scanf(%d %s %d %d %d,

16、&q-num,&q-sex,&q-Chinese,&q-Math,&q-E nglish);n = 0;head =NULL;while (q-num != 0)n = n+1;if (n = 1)head = q;else.p-next = q;p = q;q = (struct student *)malloc(sizeof(struct student);scanf(%s,q-name);scanf(%d %s %d %d %d,&q-num,q-sex,&q-Chinese,&q-Math,&q-En glish);p-next = NULL;printf(學(xué)生信息錄入成功 !n);r

17、eturn head;/*-*/struct student * Readpoint()/ 學(xué)生信息寫入存,便于操作FILE * fp1;struct student *head,* p,* q; int n;if(fp1 = fopen(E:test.txt,rb) = NULL)printf(open file error!n);exit(0);p = q = (struct student *)malloc(sizeof(struct student);fscanf(fp1,%s %d %s %d %d %d,q-name,&q-num,q-sex,&q-Chinese ,&q-Math

18、,&q-English);n = 0;head =NULL;while( !feof(fp1)n = n+1;if (n = 1)head = q;elsep-next = q;p = q;.q = (struct student *)malloc(sizeof(struct student);fscanf(fp1,%s %d %s %d %d %d,&q-name,&q-num,&q-sex,&q-Chine se,&q-Math,&q-English);p-next = NULL;fclose(fp1);return head;/*-*/void Swap(struct student *

19、 phead, struct student * pback)/ 鏈表元素數(shù)據(jù)交換struct student * temp = (struct student *)malloc(sizeof(struct student);strcpy(temp-name,phead-name); temp-num = phead-num; strcpy(temp-sex,phead-sex); temp-Chinese = phead-Chinese; temp-Math = phead-Math; temp-English = phead-English;strcpy(phead-name,pback-

20、name);phead-num= pback-num;strcpy(phead-sex,pback-sex);phead-Chinese = pback-Chinese;phead-Math = pback-Math;phead-English = pback-English;strcpy(pback-name,temp-name);pback-num = temp-num;strcpy(pback-sex,temp-sex);pback-Chinese = temp-Chinese;pback-Math = temp-Math;pback-English = temp-English;fre

21、e(temp);./*-*/void Sort(struct student * head)/學(xué)號排序struct student * phead = (struct student *)malloc(sizeof(struct student);struct student * pback = (struct student *)malloc(sizeof(struct student);phead = head;while (phead)int Num = phead-num;pback = phead-next;while(pback)if( Num pback-num)Swap(phe

22、ad,pback);Num = phead-num;pback = pback-next;phead = phead-next;/*-*/void Read(struct student * head)/學(xué)生信息讀取struct student * p;p = head;printf(-n);printf(學(xué)生的 、 學(xué)號 、 性別 、語文成績、 高等數(shù)學(xué)成績、 英語成績 :n);while(p != NULL)printf(%st%dt%s t %d t %dtt %dn,p-name,p-num,p-sex,p-Chinese,p-Math,p-English);p = p-next;.p

23、rintf(-n);/*-*/void Save(struct student * head)/學(xué)生信息保存到文件struct student * p;FILE * fp;if(fp = fopen(E:test.txt,wb) = NULL)printf(open file error!n);exit(0);p = head;while(p !=NULL)fprintf(fp,%s %d %s %d %d %d,p-name,p-num,p-sex,p-Chinese,p -Math,p-English);fprintf(fp,%s,rn);p = p-next;fclose(fp);/*-

24、*/void Search(struct student * head)/學(xué)生信息查找int n;struct student * p;char name24;int num;char sex5;int Chinese;.int Math;int English;printf(您想以何種方式進行查找:n);printf(1;n);printf(2:學(xué)號 n);printf(3:性別 n);printf(4:語文成績 n);printf(5:數(shù)學(xué)成績 n);printf(6:英語成績 n);printf(0:返回二級菜單 n);scanf(%d,&n);switch(n)case 1:print

25、f(請輸入 :);/按查找scanf(%s,name);p = head;while(strcmp(name,p-name)!=0 & p-next != NULL)p = p-next;if(strcmp(name,p-name)=0)printf(%s %d %s %d %d %dn,p-name,p-num,p-sex,p-Chines e,p-Math,p-English);elseprintf(查無此人 !n);break;case 2:printf(請輸入學(xué)號 :);/按學(xué)號查找scanf(%d,&num);p = head;while(num != p-num & p-next

26、!= NULL)p = p-next;if(num = p-num)printf(%s %d %s %d %d %dn,p-name,p-num,p-sex,p-Chines e,p-Math,p-English);elseprintf(查無此人 !n);break;.case 3:printf(請輸入性別 :);/按性別查找scanf(%s,sex);p = head;while(p!= NULL)if(strcmp(sex,p-sex)=0)printf(%s %d %s %d %d %dn,p-name,p-num,p-sex,p-Chines e,p-Math,p-English);p

27、 = p-next;break;case 4:printf(請輸入語文成績 :);/按語文成績查找scanf(%d,&Chinese);p = head;while(p!= NULL)if(Chinese = p-Chinese)printf(%s %d %s %d %d %dn,p-name,p-num,p-sex,p-Chines e,p-Math,p-English);p = p-next;break;case 5:printf(請輸入高等數(shù)學(xué)成績 :);/按高等數(shù)學(xué)成績查找scanf(%d,&Math);p = head;while(p!= NULL)if(Math = p-Math)

28、printf(%s %d %s %d %d %dn,p-name,p-num,p-sex,p-Chines e,p-Math,p-English);p = p-next;.break;case 6:printf(請輸入英語成績 :);/按英語成績查找scanf(%d,&English);p = head;while(p!= NULL)if(English = p-English)printf(%s %d %s %d %d %dn,p-name,p-num,p-sex,p-Chines e,p-Math,p-English);p = p-next;break;default:printf(指令錯

29、誤返回二級菜單!n);Menu_2();break;/*-*/struct student * Modify(struct student * head)int n;struct student * p;char name24;int num;printf(您想以何種方式進行修改:n);printf(1;n);printf(2:學(xué)號 n);printf(0:返回二級菜單 n);scanf(%d,&n);switch(n)case 1:printf(請輸入 :);/按查找后修改信息scanf(%s,name);.p = head;while(strcmp(name,p-name)!=0 & p-

30、next != NULL)p = p-next;if(strcmp(name,p-name)=0)scanf(%s %d %s %d %d %d,p-name,&p-num,p-sex,&p-Chines e,&p-Math,&p-English);printf(修改后 :n);printf(%s %d %s %d %d %dn,p-name,p-num,p-sex,p-Chines e,p-Math,p-English);elseprintf(查無此人 !n);break;case 2:printf(請輸入學(xué)號 :);/ 按學(xué)號查找后修改信息scanf(%d,&num);p = head;w

31、hile(num != p-num & p-next != NULL)p = p-next;if(num = p-num)scanf(%s %d %s %d %d %d,p-name,&p-num,p-sex,&p-Chines e,&p-Math,&p-English);printf(修改后 :n);printf(%s %d %s %d %d %dn,p-name,p-num,p-sex,p-Chines e,p-Math,p-English);elseprintf(查無此人 !n);break;default:printf(指令錯誤 , 返回二級菜單 !n);Menu_2();break;

32、return head;struct student * Add(struct student * head)/ 增加學(xué)生信息.struct student * p,* q;/ 為增加的學(xué)生分配存struct student * add = (struct student *)malloc(sizeof(structstudent );scanf(%s %d %s %d %d %d,add-name,&add-num,add-sex,&add-Chin ese,&add-Math,&add-English);q = head;if(head = NULL)head = add;/空表插入add-next = NULL;elsewhile(add-num q-num) & (q-next != NULL)/指向下個節(jié)點p =

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論