




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、C 語言課程設(shè)計(jì)學(xué)生信息管理系統(tǒng)目錄 第一章 設(shè)計(jì)要求 第二章 算法分析1. 理論依據(jù)2. 主要實(shí)現(xiàn)方法教育資料2.1 整體流程圖2.2 函數(shù)功能和函數(shù)之間的調(diào)用關(guān)系 第三章 代碼(源代碼) 第四章 分析說明 第五章 總結(jié)第一章、 設(shè)計(jì)要求1、利用所學(xué)的知識、理論和實(shí)際結(jié)合,利用資源,采用模塊化的結(jié)構(gòu),使用模仿修改 自主設(shè)計(jì)相結(jié)合的方法,鍛煉學(xué)生綜合分析解決實(shí)際問題的編程能力;2、通過 C 語言各個函數(shù)功能來實(shí)現(xiàn)對學(xué)生信息的管理, 學(xué)生信息包括學(xué)生姓名, 學(xué)號, 各科成績;管理方式包括對學(xué)生信息的錄入,保存,排序,查找、修改、刪除等功能。第二章、 算法分析1、程序理論依據(jù)通過 C 語言的程序設(shè)
2、計(jì)基礎(chǔ)的掌握,對學(xué)生成績管理系統(tǒng)進(jìn)行編寫程序。首先,通過鏈表 這一數(shù)據(jù)結(jié)構(gòu)來對學(xué)生的信息進(jìn)行錄入以及操作, 在其過程中, 通過各個功能語句以及選擇 結(jié)構(gòu),循環(huán)結(jié)構(gòu)等方式的結(jié)合來達(dá)到所要實(shí)現(xiàn)的程序功能。最后通過對 C 語言中對文件的 操作,對已有學(xué)生成績的讀取和新建學(xué)生成績的錄入保存。2、主要實(shí)現(xiàn)方法2.1 整體流程圖學(xué)生信息管理系統(tǒng)教育資料2.2、函數(shù)功能和函數(shù)之間的調(diào)用關(guān)系2.2.1、函數(shù)功能:void Menu_1();void Menu_2();/ 主菜單/ 二級菜單void swap(struct student * phead,struct student * pback);/ 鏈表
3、節(jié)點(diǎn)互換void Save(struct student * head); void Search(struct student * head); 息void Read(struct student * head);/ 寫入磁盤/ 查找學(xué)生信/ 顯示學(xué)生信void Sort(struct student * head);/ 鏈表節(jié)點(diǎn)排教育資料/ 學(xué)生信息手動錄入/ 磁盤文件寫入內(nèi)存struct student * Modify(struct student * head);/鏈表結(jié)構(gòu)體成員struct student * Create();struct student * Readpoint(
4、);修改struct student * Add(struct student * head);/鏈表節(jié)點(diǎn)插入struct student * Delete(struct student * head);/鏈表節(jié)點(diǎn)刪除2.2.2、函數(shù)之間的調(diào)用關(guān)系:通過 switch 語句進(jìn)行指令選擇: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é)生信息查找
5、調(diào)用函數(shù) Search( )、 Readpoint( ) 、Menu_1( ) 、 Menu_2( )case 4: 學(xué)生信息修改調(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( )
6、第三章、 代碼(源代碼)/*學(xué)生信息管理系統(tǒng)*/#include#include#includestruct student / 定義結(jié)構(gòu)體 int num;char 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é)點(diǎn)互換void Save(struct student * head); vo
7、id Search(struct student * head); 信息void Read(struct student * head);信息void Sort(struct student * head); 排序/ 寫入磁盤/ 查找學(xué)生/ 顯示學(xué)生/ 鏈表節(jié)點(diǎn)struct student * Readpoint();寫入內(nèi)存struct student * Create();/ 磁盤文件/ 學(xué)生信息手動錄入教育資料struct student * Modify(struct student * head);/ 鏈表結(jié)構(gòu)體成員修改struct student * Add(struct stud
8、ent * head);入struct student * Delete(struct student * head);除int main(void)Menu_1();return 0;void Menu_1()int num;printf(tttt學(xué)生信息管理系統(tǒng) ttttn);printf(ttt 1:進(jìn)入學(xué)生信息管理 n);單printf(ttt 0: 退出學(xué)生信息管理 n);printf( 請您輸入指令 :);/ 鏈表節(jié)點(diǎn)插/ 鏈表節(jié)點(diǎn)刪/ 主菜教育資料scanf(%d,&num);switch(num) case 1:Menu_2();您已退出學(xué)break;default:print
9、f(生信息管理系統(tǒng) n);break;/*/void Menu_2()struct student * head;int num;printf(ttt 歡迎進(jìn)入 n);printf(n); printf(ttt 1:學(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(
10、%d,&num);switch(num)case 1:head = Create();Save(head);printf(n);printf(ttt 1: 返回主菜單 n);/ 手動錄入學(xué)生數(shù)據(jù)printf(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 2:head = Readpoi
11、nt();/ 寫入鏈表,返回頭指針Sort(head);printf(ttt 以學(xué)號升序排列 n);Read(head);/ 鏈表數(shù)據(jù)寫入文件教育資料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( 輸入無效,返回二級菜單 !n); Menu_2();break;break;教育
12、資料case 3:head = Readpoint();Search(head);/ 查找學(xué)生信息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( 輸入無效,返回二級菜單 !n); Menu_2();教育資料break;break;case 4:/head = Readpoint();Modify(he
13、ad);修改結(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_1();break;case 2:Menu_2();break;default :教育資料printf( 輸入無效,返回二級菜單 !n);Menu_2();break;break;case 5:/ 增加學(xué)生信head = Readpoint();Add(head);息并保存到文件Save(head
14、);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( 輸入無效,返回二級菜單 !n);Menu_2();break;break;case 6:head = Readpoint();head = Delete(head);/ 刪除學(xué)生信息并保存到文件Save(head);printf(n);prin
15、tf(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( 輸入無效,返回二級菜單 !n);Menu_2();break;break;case 0: Menu_1();break;default :printf( 請重新輸入 n);Menu_2();教育資料break;/*/struct student * Create()/ 學(xué)生信
16、息手動錄入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,&q-num,&q-sex,&q-Chinese,&q-Math,&q -English);n = 0;head =NULL;while (q-num != 0)教育資料 n = n+1;if (n = 1)head = q;elsep-nex
17、t = 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- English);p-next = NULL;printf( 學(xué)生信息錄入成功 !n);return head;教育資料/*/struct student * Readpoint()/ 學(xué)生信息寫入內(nèi)存,便于操作FILE * fp1;struct student *head,* p,* q;int n;if(fp1 = f
18、open(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,&q-English);n = 0;head =NULL;while( !feof(fp1)教育資料 n = n+1;if (n = 1) head = q;elsep-next = q;p = q;q = (struct st
19、udent *)malloc(sizeof(struct student);fscanf(fp1,%s %d %s %d %d %d,&q-name,&q-num,&q-sex,&q-Chin ese,&q-Math,&q-English);p-next = NULL;fclose(fp1); return head;/*/教育資料 void Swap(struct student * phead, struct student * pback) / 鏈表元素?cái)?shù)據(jù)交換struct student * temp = (struct student *)malloc(sizeof(struct s
20、tudent); 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-name);phead-num= pback-num;strcpy(phead-sex,pback-sex);phead-Chinese = pback-Chinese;phead-Math = pback-Math;
21、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;free(temp);/*/void Sort(struct student * head)/ 學(xué)號排序struct student * phead = (struct student *)malloc(siz
22、eof(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(phead,pback);Num = phead-num;pback = pback-next;phead = phead-next;/* void Read(struct student * head)
23、息讀取struct student * p;p = head;printf(n);printf( 學(xué)生的姓名 、 學(xué)號 、 性別 、語文成績 語成績 :n);while(p != NULL)/ 學(xué)生信高等數(shù)學(xué)成績 、 英教育資料printf( %s t%dt%s t %d t %dtt %dn,p-name,p-num,p-sex,p-Chinese,p-Math,p-English);p = p-next;printf(n);/*/ 學(xué)生void Save(struct student * head) 信息保存到文件struct student * p;FILE * fp;if(fp = f
24、open(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);/*/ 學(xué)生void Search(struct student * head) 信息查找int n;struct student * p;教育資料char name24;int num;c
25、har sex5;int Chinese;int Math;int English;printf( 您想以何種方式進(jìn)行查找 :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:printf( 請輸入姓名 :); / 按姓名查找scanf(%s,name);教育資料p = head;while(strcmp(name,p-name)!=0 & p-next !=
26、 NULL)p = p-next;if(strcmp(name,p-name)=0)printf(%s %d %s %d %d %dn,p-name,p-num,p-sex,p-Chine se,p-Math,p-English);elseprintf( 查無此人 !n);break;/ 按學(xué)case 2:printf( 請輸入學(xué)號 :);號查找scanf(%d,&num);p = head;while(num != p-num & p-next != NULL)p = p-next;if(num = p-num)printf(%s %d %s %d %d %dn,p-name,p-num,p
27、-sex,p-Chine se,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-Chinese,p-Math,p-English);p = p-next;break;case 4:printf( 請輸入語文成績 :);scanf(%d,&Chinese);教育資料p =
28、head;while(p!= NULL)if(Chinese = p-Chinese)printf(%s %d %s %d %d %dn,p-name,p-num,p-sex,p-Chine se,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)printf(%s %d %s %d %d %dn,p-name,p-num,p-sex,p-Chine se,p-Math,p-Eng
29、lish);教育資料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-Chine se,p-Math,p-English);p = p-next;break;default:printf( 指令錯誤返回二級菜單 !n);Menu_2();教育資料break;/*/struct student * Modify(str
30、uct student * head) int n;struct student * p; char name24;int num;printf( 您想以何種方式進(jìn)行修改 :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-next != NULL)p = p-next;if(strcmp(na
31、me,p-name)=0)scanf(%s %d %s %d %d %d,p-name,&p-num,p-sex,&p-Chi nese,&p-Math,&p-English);printf( 修改后 :n);printf(%s %d %s %d %d %dn,p-name,p-num,p-sex,p-Chine se,p-Math,p-English);elseprintf( 查無此人 !n);break;case 2:printf( 請輸入學(xué)號 :);/ 按學(xué)號查找后修改信息scanf(%d,&num);p = head;while(num != p-num & p-next != NUL
32、L)教育資料p = p-next;if(num = p-num)scanf(%s %d %s %d %d %d,p-name,&p-num,p-sex,&p-Chi nese,&p-Math,&p-English);printf( 修改后 :n);printf(%s %d %s %d %d %dn,p-name,p-num,p-sex,p-Chine se,p-Math,p-English);elseprintf( 查無此人 !n);break;default:printf( 指令錯誤 ,返回二級菜單 !n);Menu_2();break;return head;struct student
33、* Add(struct student * head)/增加學(xué)生信息教育資料struct student * p,* q;/ 為增加的學(xué)生分配內(nèi)存struct student * add = (struct student *)malloc(sizeof(struct student );scanf(%s %d %s %d %d %d,add-name,&add-num,add-sex,&add-Ch inese,&add-Math,&add-English);q = head;if(head = NULL)/ 空表插入head = add;add-next = NULL;else while(add-num q-num) & (q-next != NULL)/ 指向下個節(jié)點(diǎn)p = q;q = q-next;if(add-num
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公路ppp合同范本
- 分紅比例合同范本
- 公路規(guī)劃合同范本
- 協(xié)議合同范本寫法
- 兼職還款合同范本
- pos機(jī)推廣合同范本
- 入股店鋪協(xié)議合同范本
- 義齒加工合同范本模板
- 京東入職合同范本
- 醫(yī)院整體轉(zhuǎn)讓合同范本
- GB/T 24338.1-2018軌道交通電磁兼容第1部分:總則
- GB/T 13145-2018冷藏集裝箱堆場技術(shù)管理要求
- 《城市管理綜合執(zhí)法問題研究國內(nèi)外文獻(xiàn)綜述》4800字
- 數(shù)據(jù)結(jié)構(gòu)英文教學(xué)課件:chapter4 Stacks and Queues
- 結(jié)構(gòu)化面試題型及套路
- 無人機(jī)測繪技術(shù)及應(yīng)用課件
- 生殖崇拜專題知識講座
- 工業(yè)CT發(fā)展及應(yīng)用課件
- 浦發(fā)銀行個人信用報(bào)告異議申請表
- DBJ50∕T-098-2019 城市綠化養(yǎng)護(hù)質(zhì)量標(biāo)準(zhǔn)
- 五子棋棋盤完整
評論
0/150
提交評論