




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、數據結構實驗報告院系 光電與信息工程學院 專業 電子信息工程姓名 學號 電話 2011級 2班 2013年7月6日一實驗題目數據結構期末綜合實驗11.5學生數據結構成績管理系統2 實驗要求(1)學生信息及成績的錄入(2)學生成績的查詢(3)學生成績的分段統計和排序輸出三實驗內容基本要求(1)學生信息及成績的錄入要求包括的學生信息有:學號、姓名、班級及數據結構等成績(具體內容可自行假設,至少錄入10名以上學生)所錄入的學生按學號散列存儲(散列函數為 學號%5 取整,如 1002%5 =2),采用拉鏈法解決沖突。(2)學生成績的查詢 要求根據提供的學號完成學生成績的查詢(必須采用散列查找)。(3)
2、學生成績的分段統計和排序輸出統計出各分數段學生人數(60分以下,6070,7180,.) 采用堆排序,將學生成績從高到低排序輸出四調試與結果測試 * * * * 學生成績管理系統 * * * * 1.學生數據鍵盤錄入 2.學生成績統計排序 3.查詢學生數據 4.插入學生數據 5.顯示當前成績表 6.統計各分數段學生人數 0.退出成績管理系統 * * * * * * * * * * * * * * * * *請輸入你要執行的操作:11、建立新的數據系統。請選擇:1請輸入第1名學生的學號,學號為0表示結束輸入:01請輸入第1名學生的姓名:林一請輸入第1名學生的性別:男請輸入第1名學生的民族:漢請輸
3、入第1名學生的數據結構成績:77請輸入第1名學生的英語成績:87請輸入第1名學生的高數成績:80請輸入第2名學生的學號,沒有此學生則輸入0表示結束:02請輸入第2名學生的姓名:林二請輸入第2名學生的性別:女請輸入第2名學生的民族:漢請輸入第2名學生的數據結構成績:80請輸入第2名學生的英語成績:85請輸入第2名學生的高數成績:90請輸入第3名學生的學號,沒有此學生則輸入0表示結束:03請輸入第3名學生的姓名:林三請輸入第3名學生的性別:女請輸入第3名學生的民族:漢請輸入第3名學生的數據結構成績:78請輸入第3名學生的英語成績:83請輸入第3名學生的高數成績:95請輸入第4名學生的學號,沒有此學
4、生則輸入0表示結束:0此系統目前共計學生3名:*學生成績統計*學號 姓名 數構成績 英語成績 高數成績 總分1 林一 77 87 80 2442 林二 80 85 90 2553 林三 78 83 95 256* * * * * 學生成績管理系統 * * * * 1.學生數據鍵盤錄入 2.學生成績統計排序 3.查詢學生數據 4.插入學生數據 5.顯示當前成績表 6.統計各分數段學生人數 0.退出成績管理系統 * * * * * * * * * * * * * * * * *請輸入你要執行的操作:6 數構 英語 高數060的學生人數是: 0 0 06070的學生人數是: 0 0 07080的學生
5、人數是: 2 0 08090的學生人數是: 1 3 190100的學生人數是:0 0 2 * * * * 學生成績管理系統 * * * * 1.學生數據鍵盤錄入 2.學生成績統計排序 3.查詢學生數據 4.插入學生數據 5.顯示當前成績表 6.統計各分數段學生人數 0.退出成績管理系統 * * * * * * * * * * * * * * * * *請輸入你要執行的操作:2 * * * * 學生成績統計排序 * * * * 1.按學生學號排序 2.按學生總分排序 3.按學生數構成績排序 4.按學生英語成績排序 5.按學生高數成績排序 6.顯示當前學生成績 0.返回上一級菜單 * * * *
6、* * * * * * * * * * * * *請輸入你要執行的操作:2排序后的成績表為:此系統目前共計學生3名:*學生成績統計*學號 姓名 數構成績 英語成績 高數成績 總分3 林三 78 83 95 2562 林二 80 85 90 2551 林一 77 87 80 244* * * * * 學生成績統計排序 * * * * 1.按學生學號排序 2.按學生總分排序 3.按學生數構成績排序 4.按學生英語成績排序 5.按學生高數成績排序 6.顯示當前學生成績 0.返回上一級菜單 * * * * * * * * * * * * * * * * *請輸入你要執行的操作:3排序后的成績表為:此系
7、統目前共計學生3名: * * * * 學生成績統計排序 * * * * 1.按學生學號排序 2.按學生總分排序 3.按學生數構成績排序 4.按學生英語成績排序 5.按學生高數成績排序 6.顯示當前學生成績 0.返回上一級菜單 * * * * * * * * * * * * * * * * *請輸入你要執行的操作:4排序后的成績表為:此系統目前共計學生3名: * * * * 學生成績統計排序 * * * * 1.按學生學號排序 2.按學生總分排序 3.按學生數構成績排序 4.按學生英語成績排序 5.按學生高數成績排序 6.顯示當前學生成績 0.返回上一級菜單 * * * * * * * * *
8、* * * * * * * *請輸入你要執行的操作:5排序后的成績表為:此系統目前共計學生3名: * * * * 學生成績統計排序 * * * * 1.按學生學號排序 2.按學生總分排序 3.按學生數構成績排序 4.按學生英語成績排序 5.按學生高數成績排序 6.顯示當前學生成績 0.返回上一級菜單 * * * * * * * * * * * * * * * * *請輸入你要執行的操作:0 * * * * 學生成績管理系統 * * * * 1.學生數據鍵盤錄入 2.學生成績統計排序 3.查詢學生數據 4.插入學生數據 5.顯示當前成績表 6.統計各分數段學生人數 0.退出成績管理系統 * *
9、* * * * * * * * * * * * * * *請輸入你要執行的操作:3請輸入您要查詢學生的方式:1、按學號查詢;2、按姓名查詢。請選擇:1請輸入你要查詢的學生的學號,輸入0退出學號查詢:03學號為3學生的數據為:學號 姓名 性別 民族 數構成績 英語成績 高數成績 總分5 林三 女 漢 78 83 95 256請輸入你還要查詢的學生的學號,輸入0退出學號查詢:0請輸入您要查詢學生的方式:1、按學號查詢;2、按姓名查詢。請選擇:2請輸入你要查詢的學生的姓名,輸入0退出姓名查詢:林二姓名為異靈學生的數據為:學號 姓名 性別 民族 數構成績 英語成績 高數成績 總分1 林二 女 漢 80
10、 85 90 255請輸入你還要查詢的學生的姓名,輸入0退出姓名查詢:0請輸入您要查詢學生的方式:1、按學號查詢;2、按姓名查詢。請選擇:3你選擇不查詢! * * * * 學生成績管理系統 * * * * 1.學生數據鍵盤錄入 2.學生成績統計排序 3.查詢學生數據 4.插入學生數據 5.顯示當前成績表 6.統計各分數段學生人數 0.退出成績管理系統 * * * * * * * * * * * * * * * * *請輸入你要執行的操作:4請輸入要新加入的學生的學號,學號為0表示結束輸入:04請輸入新加入學生的姓名:林四請輸入新加入學生的性別:女請輸入新加入學生的民族:漢請輸入新加入學生的數構
11、成績:80請輸入新加入學生的英語成績:80請輸入新加入學生的高數成績:85請輸入還要加入的學生的學號,輸入0表示結束:0加入后的成績表為:此系統目前共計學生4名: * * * * 學生成績管理系統 * * * * 1.學生數據鍵盤錄入 2.學生成績統計排序 3.查詢學生數據 4.插入學生數據 5.顯示當前成績表 6.統計各分數段學生人數 0.退出成績管理系統 * * * * * * * * * * * * * * * * *請輸入你要執行的操作:5此系統目前共計學生4名: * * * * 學生成績管理系統 * * * * 1.學生數據鍵盤錄入 2.學生成績統計排序 3.查詢學生數據 4.插入學
12、生數據 5.顯示當前成績表 6.統計各分數段學生人數 0.退出成績管理系統 * * * * * * * * * * * * * * * * *請輸入你要執行的操作:6 * * * * 學生成績管理系統 * * * * 1.學生數據鍵盤錄入 2.學生成績統計排序 3.查詢學生數據 4.插入學生數據 5.顯示當前成績表 6.統計各分數段學生人數 0.退出成績管理系統 * * * * * * * * * * * * * * * * *請輸入你要執行的操作:0請按任意鍵繼續. . .Press any key to continue附:實驗源代碼#include <stdio.h>#inc
13、lude <stdlib.h>#include <malloc.h>#include <winsock2.h>typedef struct studentlong num; /學號char name20; /姓名char sex20; /性別 char nation20; /民族 int score3; /成績int sum; /總分struct student *next;Student;int n;Student *enter(void); Student *sort_1(Student *head,int); void print(Student *h
14、ead);Student *sort_all(Student *head);void find(Student *head);Student *add_new(Student *head);void stats(Student *head);Student *enter() /錄入學生數據int flag; Student *head,*p1,*p2;n=0;head=(Student *)malloc(sizeof(Student);p2=head;printf("n請輸入第%d名學生的學號,學號為0表示結束輸入:",n+1); scanf("%d",
15、&flag);while(getchar()!='n');for(;flag;)n+;p1=(Student *)malloc(sizeof(Student);p1->num=flag;printf("請輸入第%d名學生的姓名:",n);scanf("%s",p1->name); printf("請輸入第%d名學生的性別:",n);scanf("%s",p1->sex);printf("請輸入第%d名學生的民族:",n);scanf("%s&q
16、uot;,p1->nation);printf("請輸入第%d名學生的數據結構成績:",n);scanf("%d",&p1->score0);printf("請輸入第%d名學生的英語成績:",n);scanf("%d",&p1->score1);printf("請輸入第%d名學生的高數成績:",n);scanf("%d",&p1->score2);p1->sum=p1->score0+p1->score1+p1
17、->score2;p2->next=p1;p2=p1;printf("n請輸入第%d名學生的學號,沒有此學生則輸入0表示結束:",n+1); scanf("%d",&flag);p2->next=NULL;printf("nn");return head;Student *sort_all(Student *head) /學生成績統計排序int choose;for(;) printf("ntt* * * * 學生成績統計排序 * * * *n");printf("ttt1.按學
18、生學號排序n");printf("ttt2.按學生總分排序n");printf("ttt3.按學生數據結構成績排序n");printf("ttt4.按學生英語成績排序n");printf("ttt5.按學生高數成績排序n");printf("ttt6.顯示當前學生成績n");printf("ttt0.返回上一級菜單n");printf("tt* * * * * * * * * * * * * * * * *nn"); printf("請
19、輸入你要執行的操作:");scanf("%d",&choose);while(getchar()!='n');switch(choose)case 1:case 2:case 3: case 4:case 5:head=sort_1(head,choose);break;case 6:print(head);break;case 0:return head;default: printf("nn您的輸入有誤!請重新輸入:nn");break;Student *sort_1(Student *head,int choose
20、)Student *p1,*p2=head->next,*pm,*px;Student mid;if (!p2) return head;for(p1=p2;p1->next!=NULL;p1=p1->next)pm=p1;for(p2=p1->next;p2!=NULL;p2=p2->next)switch(choose) case 1:if (pm->num>p2->num) pm=p2;break; /按學生學號排序 case 2:if (pm->sum<p2->sum) pm=p2;break; /按學生總分排序 cas
21、e 3:if (pm->score0<p2->score0) pm=p2;break; /按學生數據結構成績排序 case 4:if (pm->score1<p2->score1) pm=p2;break; /按學生英語成績排序 case 5:if (pm->score2<p2->score2) pm=p2;break; /按學生高數成績排序if(pm!=p1) mid=*pm; *pm=*p1; *p1=mid; px=pm->next; pm->next=p1->next; p1->next=px;printf(
22、"n排序后的成績表為:n");print(head); return head; void find(Student *head) /查詢學生數據Student *p;int choose,fnum;char tem20;if (n=0) printf("n當前系統沒有任何學生數據。n ");return;for(;) printf("n請輸入您要查詢學生的方式:nn");printf("1、按學號查詢;2、按姓名查詢。nn");printf("請選擇:");scanf("%d&quo
23、t;,&choose);while(getchar()!='n');if (choose=1) printf("n請輸入你要查詢的學生的學號,輸入0退出學號查詢:");scanf("%d",&fnum);for(;fnum;)for(p=head->next;p!=NULL&&p->num!=fnum;p=p->next);if (!p) printf("nn找不到你要查詢的學號,請重新輸入,輸入0表示結束:");scanf("%d",&fn
24、um);else if (p->num=fnum)printf("n學號為%d學生的數據為:n",p->num);printf("學號t姓名t性別t民族t數據結構成績 英語成績 高數成績 總分n");printf("%dt%st%st%st %d %d %d %dn", p->num,p->name,p->sex,p->nation,p->score0,p->score1,p->score2,p->sum);printf("nn請輸入你還要查詢的學生的學號,輸入0退
25、出學號查詢:");scanf("%d",&fnum); else if (choose=2) printf("n請輸入你要查詢的學生的姓名,輸入0退出姓名查詢:"); scanf("%s",tem); for(;strcmp(tem,"0");) for(p=head->next;p!=NULL&&strcmp(p->name,tem);p=p->next); if (!p) printf("nn找不到你要查詢的姓名,請重新輸入,輸入0表示結束:&quo
26、t;); scanf("%s",tem); else if (!strcmp(p->name,tem)printf("n姓名為%s學生的數據為:n",p->name);printf("學號t姓名t性別t民族t數據結構成績 英語成績 高數成績 總分n");printf("%dt%st%st%st %d %d %d %dn",p->num,p->name,p->sex,p->nation,p->score0,p->score1,p->score2,p->sum
27、);printf("nn請輸入你還要查詢的學生的姓名,輸入0退出姓名查詢:");scanf("%s",tem); else printf("n你選擇不查詢!n");break;Student *add_new(Student *head) /插入學生數據Student *p;int flag; printf("nn請輸入要新加入的學生的學號,學號為0表示結束輸入:"); scanf("%d",&flag);while(getchar()!='n');for(;flag;)
28、p=(Student *)malloc(sizeof(Student);p->num=flag;printf("請輸入新加入學生的姓名:",n);scanf("%s",p->name); printf("請輸入新加入學生的性別:",n);scanf("%s",p->sex);printf("請輸入新加入學生的民族:",n);scanf("%s",p->nation);printf("請輸入新加入學生的數據結構成績:",n);scan
29、f("%d",&p->score0);printf("請輸入新加入學生的英語成績:",n);scanf("%d",&p->score1);printf("請輸入新加入學生的高數成績:",n);scanf("%d",&p->score2);p->sum=p->score0+p->score1+p->score2;p->next=head->next;head->next=p;n+;printf("n請輸入
30、還要加入的學生的學號,輸入0表示結束:"); scanf("%d",&flag);printf("加入后的成績表為:n");return head; void print(Student *head) /顯示學生成績表Student *p=head->next;if (!p) printf("nn此系統目前沒有任何學生數據!nnn");return;printf("此系統目前共計學生%d名:n",n); printf("*學生成績統計*n");printf("學
31、號t姓名t數據結構成績 英語成績 高數成績 總分n");for(;p;p=p->next)printf("%dt%st %d %d %d %dn",p->num,p->name,p->score0,p->score1,p->score2,p->sum=p->score0+p->score1+p->score2); printf("*nn");void stats(Student *head) /統計各分數段人數Student *p=head->next;int cou05=0,0
32、,0,0,0,cou15=0,0,0,0,0,cou25=0,0,0,0,0;if(!p) printf("n當前系統沒有任何學生數據。n ");return;printf("ntt 數據結構 英語 高數");while(p)if(p->score0<60)cou00+;if(p->score1<60)cou10+; if(p->score2<60)cou20+;p=p->next; printf("n060的學生人數是: %d %d %d",cou00,cou10,cou20);p=head
33、->next;while(p)if(p->score0>=60&&p->score0<70)cou01+; if(p->score1>=60&&p->score1<70)cou11+; if(p->score2>=60&&p->score2<70)cou21+;p=p->next; printf("n6070的學生人數是: %d %d %d",cou01,cou11,cou21);p=head->next;while(p)if(p->
34、;score0>=70&&p->score0<80)cou02+; if(p->score1>=70&&p->score1<80)cou12+; if(p->score2>=70&&p->score2<80)cou22+;p=p->next; printf("n7080的學生人數是: %d %d %d",cou02,cou12,cou22); p=head->next;while(p)if(p->score0>=80&&p->score0<90)cou03+; if(p->score1>=80&&p->score1<90)cou13+; if(p->score2>=80&&p->score2<90)cou23+;p=p->next; printf("n8090的學生人數是: %d %d %d",cou03,cou13,cou23); p=head->next;while(p)if(p->score0>=90)cou04+;if(p->score1>=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 出品部培訓課件
- 2025-2030年中國電腦周邊組合線項目投資可行性研究分析報告
- 中國殺線蟲劑行業調查報告
- 2025年混凝土密封固化劑市場調研報告
- 2025年AC發泡劑項目可行性分析報告
- 中國大蒜及深加工行業發展趨勢及投資前景預測報告
- 2025年 江西工商職業技術學院招聘考試筆試試題附答案
- 2025年 杭州市供銷社社有企業招聘考試筆試試題附答案
- 中國電聲元件行業發展前景預測及投資方向研究報告
- 2025年 甘肅臨夏雙城高級中學招聘教師考試試題附答案
- 夾具考試題及答案
- (高清版)DB31∕T 1530-2024 心理咨詢機構服務規范
- 青海省消防救援總隊招聘消防文員筆試真題2024
- 便秘科普宣傳課件
- 浙江潔普斯清潔設備有限公司年產11萬臺清洗機技改項目環評報告
- 高校資產管理十五五規劃方案
- 2024年威寧自治縣在職在編教師考調真題
- 小學生反洗錢課件
- 酒店前廳部管理制度
- 2022~2023學年廣東廣州天河區初一下學期期末語文試卷(標準版)
- 廣東省深圳市光明區2025年八年級下學期期末數學試題及答案
評論
0/150
提交評論