版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、學生成績管理系統(tǒng)(數(shù)據(jù)結構c語言版源代碼)#include<>#include<>#include<>struct studentschar num10; /*字符型學生學號*/char name20; /*字符型學生姓名*/char sex3; /*字符型學生性別*/double english; /*雙精度實型英語成績*/double java; /*雙精度實型java成績*/double sjjg; /*雙精度實數(shù)據(jù)結構*/double szdl; /*雙精度實型數(shù)字電路*/double jsj; /*計算機組成原理*/struct students
2、*next; /*用與構建連表指向下一結點*/;file *fp; /*定義全局變量fp*/void revisemenu();/*修改菜單*/void sortmenu();/*排序菜單*/void menu();/*主菜單*/void secret();/*安全驗證*/struct students * input();/*新建學生信息*/void fprint(struct students *head);/*將信息導入文件可追加*/void fprint_(struct students *head);/*將信息導入文件并覆蓋*/void browse(struct students
3、*head);/*瀏覽全部學生信息*/struct students * create(struct students *head,int *n);/*從tushu_list中讀取數(shù)據(jù)構建鏈表*/void findofnum(struct students *head);/*按學號查詢學生信息*/void findofnname(struct students *head);/*按姓名查詢學生信息*/void sortenglish(struct students * head);/*按英語成績排序*/void sortjava(struct students * head);/*按java成
4、績排序*/void sortsjjg(struct students * head);/*按數(shù)據(jù)結構成績排序*/void sortszdl(struct students * head);/*按數(shù)字邏輯電路成績排序*/void sortjsj(struct students * head);/*按計算機組成原理成績排序*/struct students * delete(struct students * head,char m15);/*按學號刪除學生成績信息*/struct students * revise();/*修改學生信息(按編號修改)*/*主菜單*/void menu()prin
5、tf("nn");printf("*n");printf(" 學生成績管理系統(tǒng) n");printf("-n");printf(" 1-添加新同學 2-瀏覽學生信息 n");printf(" 3-按學號查詢 4-按姓名查詢 n");printf(" 5-按成績排序 6-修改學生信息 n");printf(" 7-刪除學生信息 0-退出系統(tǒng) n");printf("-n");printf("_n")
6、;/*排序菜單*/void sortmenu()printf("nn");printf("*n");printf(" 按成績排序 n");printf(" 1-大學英語 2-java編程 n");printf(" 3-數(shù)據(jù)結構 4-數(shù)字邏輯電路 n");printf(" 5-計算機組成原理 0-返回上級菜單 n");printf("*n");/*修改菜單*/void revisemenu()printf("nn"); printf(&q
7、uot; 1-修改學生姓名 2-修改學生學號 n"); printf(" 3-修改學生性別 4-修改英語成績 n"); printf(" 5-修改java成績 6-修改數(shù)據(jù)結構 n"); printf(" 7-修改數(shù)字電路 8-修改計算計 n");printf(" 0-返回上級菜單 n"); printf("nn");/*安全驗證*/void secret()char a20;printf("*歡迎來到學生信息管理系統(tǒng),進入系統(tǒng)前請先進行密碼驗證-");printf
8、(" ");dogets(a); /*輸入密碼*/system("cls"); /*調用庫函數(shù)清屏*/printf("對不起!您輸入的密碼有誤,請重新輸入-");while(strcmp(a,"0605")!=0); /*單一密碼"0605"*/system("cls");/*新建學生信息*/struct students * input()struct students *p1,*p2,*head; /*建立輔助結點及頭結點*/char name;int n=0,x;pri
9、ntf("n請按對應項輸入學生信息以#結束:n");printf("姓名 學號 性別 英語 java 數(shù)據(jù)結構 數(shù)字電路 計算機組成原理n");p1=(struct students *)malloc(sizeof(struct students);head=p2=p1;do /*使用do while語句輸入學生信息*/scanf("%s",&p1->name);if(strcmp(p1->name,"#")=0)break; /*判斷結束符*/elsescanf("%s%s%lf%l
10、f%lf%lf%lf",p1->num,p1->sex,&p1->english,&p1->java,&p1->sjjg,&p1->szdl,&p1->jsj);name='#'p1=(struct students *)malloc(sizeof(struct students);p2->next=p1;p2=p1;n+;while(1);p1->next=null;printf("學生信息輸入結束!n");getchar(); printf("
11、;是否保存學生信息(1.是/2.否):");scanf("%d",&x);if(x=1)fprint(head); /*調用函數(shù)保存至文件*/elseprintf("n文件沒有被保存!n");return head; /*返回頭指針*/*將信息導入文件可追加*/void fprint(struct students *head)struct students *p1;if(fp=fopen("","a")=null)printf("file open error!n");exi
12、t(0);for(p1=head;p1->next!=null;p1=p1->next) /*遍歷*/fprintf(fp,"%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p1->name,p1->num,p1->sex,p1->english,p1->java,p1->sjjg,p1->szdl,p1->jsj);/*將學生信息寫入文件*/fclose(fp); /*關閉文件*/printf("n學生信息已成功保存到文件 中!n");getchar();/*
13、將信息導入文件并覆蓋*/void fprint_(struct students *head)struct students *p1;if(fp=fopen("","w")=null)printf("file open error!n");exit(0);for(p1=head;p1!=null;p1=p1->next) /*遍歷*/fprintf(fp,"%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p1->name,p1->num,p1->sex,p1
14、->english,p1->java,p1->sjjg,p1->szdl,p1->jsj);/*將學生信息寫入文件*/fclose(fp); /*關閉文件*/;getchar();/*瀏覽全部學生信息*/void browse(struct students *head) char num10; /*字符型學生學號*/char name20; /*字符型學生姓名*/char sex3; /*字符型學生性別*/double english; /*雙精度實型英語成績*/double java; /*雙精度實型java成績*/double sjjg; /*雙精度實數(shù)據(jù)結
15、構*/double szdl; /*雙精度實型數(shù)字電路*/double jsj; /*計算機組成原理*/if(fp=fopen("","a+")=null)printf("file open error!n");exit(0);printf("-n");printf("姓名 學號 性別 英語 java 數(shù)據(jù)結構 數(shù)字電路 計算機n");while(!feof(fp)/*讀取并輸出*/fscanf(fp,"%s%s%s%lf%lf%lf%lf%lf",name,num,sex,
16、&english,&java,&sjjg,&szdl,&jsj);printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",name,num,sex,english,java,sjjg,szdl,jsj);if(fclose(fp)printf("can not close the file!n");exit(0);/*從tushu_list中讀取數(shù)據(jù)構建鏈表*/struct students * create(struct students * head,int *n)fi
17、le *fp;struct students*p,*p1,*p2;if(fp=fopen("","a+")=null)printf("file open error!n");exit(0);while(!feof(fp)(*n)+; p=(struct students *)malloc(sizeof(struct students);fscanf(fp,"%s%s%s%lf%lf%lf%lf%lf",p->name,p->num,p->sex,&p->english,&p-
18、>java,&p->sjjg,&p->szdl,&p->jsj);if(head=null)head=p;p1=p;elsep1->next=p;p2=p1;p1=p; p2->next=null;free(p);(*n)-;fclose(fp);return head;/*按姓名查詢學生信息*/void findofname(struct students *head)int i=0,n=0; char b20; struct students *p;head=create(head,&n);p=head;printf(&q
19、uot;n請輸入要查詢的學生姓名:");scanf("%s",b);while(p!=null)if(strcmp(p->name,b)=0) printf("姓名 學號 性別 英語 java 數(shù)據(jù)結構 數(shù)字電路 計算機n");printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->name,p->num,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj);i+;p=p->
20、;next;if(i=0)printf("n對不起!沒有找到名為“%s”的學生信息!n",b);/*按學號查詢學生信息*/void findofnum(struct students *head)int i=0,n;char b20;struct students *p;head=create(head,&n);p=head;printf("n請輸入要查詢的學生學號:");scanf("%s",b);while(p!=null)if(strcmp(p->num,b)=0)printf("姓名 學號 性別 英語
21、java 數(shù)據(jù)結構 數(shù)字電路 計算機n");printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->name,p->num,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj);i+;p=p->next;if(i=0)printf("n對不起!沒有找到學號為“%s”學生信息!n",b);/*按英語成績排序*/void sortenglish(struct students * head)struct
22、 students *p,*tail; /*定義中間變量*/int n;double english;p=(struct students *)malloc(sizeof(struct students);head=create(head,&n);printf("姓名 學號 性別 英語 java 數(shù)據(jù)結構 數(shù)字電路 計算機n");while(head->next!=null) /*利用選擇法排序*/tail=null; p=head; english=p->english; /*將鏈表中第一個成績賦給english*/ while(p!=null)if(
23、p->english)>english)/*比較*/english=p->english;tail=p; p=p->next;tail=null;p=head;while(p->next!=null)if(p->english=english)printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->name,p->num,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj);if(p=head)he
24、ad=head->next;elsetail->next=p->next;tail=p;p=p->next;if(p->english=english) /*分數(shù)相同時無需比較*/printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->name,p->num,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj);tail->next=null;p=head; /*將鏈表賦給結構體指針*/printf
25、("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->name,p->num,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj);/*瀏覽排序后的信息*/printf("按英語成績排序后輸出如上(注:此過程不保存至文件):n");return;/*按java成績排序*/void sortjava(struct students * head)struct students *p,*tail; /*定義中間變量*/int n
26、;double java;p=(struct students *)malloc(sizeof(struct students);head=create(head,&n);printf("姓名 學號 性別 英語 java 數(shù)據(jù)結構 數(shù)字電路 計算機n");while(head->next!=null) /*利用選擇法排序*/tail=null; p=head; java=p->java; /*將鏈表中第一個成績賦給java*/ while(p!=null)if(p->java)>java)/*比較*/java=p->java;tail=
27、p; p=p->next;tail=null;p=head;while(p->next!=null)if(p->java=java)printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->name,p->num,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj);if(p=head)head=head->next;elsetail->next=p->next;tail=p;p=p->next
28、;if(p->java=java) /*成績相同時無需比較*/printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->name,p->num,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj);tail->next=null;p=head; /*將鏈表賦給結構體指針*/printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->name,p->n
29、um,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj);/*瀏覽排序后的信息*/printf("按java成績排序后輸出如上(注:此過程不保存至文件):n");return;/*按數(shù)據(jù)結構排序*/void sortsjjg(struct students * head)struct students *p,*tail; /*定義中間變量*/int n;double sjjg;p=(struct students *)malloc(sizeof(struct students);head=c
30、reate(head,&n);printf("姓名 學號 性別 英語 java 數(shù)據(jù)結構 數(shù)字電路 計算機n");while(head->next!=null) /*利用選擇法排序*/tail=null; p=head; sjjg=p->sjjg; /*將鏈表中第一個成績賦給sjjg*/ while(p!=null)if(p->sjjg)>sjjg)/*比較*/sjjg=p->sjjg;tail=p; p=p->next;tail=null;p=head;while(p->next!=null)if(p->sjjg=s
31、jjg)printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->name,p->num,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj);if(p=head)head=head->next;elsetail->next=p->next;tail=p;p=p->next;if(p->sjjg=sjjg) /*成績相同時無需比較*/printf("%st%st%st%.1lft%.1lft%.1
32、lft%.1lft%.1lfn",p->name,p->num,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj);tail->next=null;p=head; /*將鏈表賦給結構體指針*/printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->name,p->num,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj);
33、/*瀏覽排序后的信息*/printf("按數(shù)據(jù)結構成績排序后輸出如上(注:此過程不保存至文件):n");return;/*按數(shù)字電路排序*/void sortszdl(struct students * head)struct students *p,*tail; /*定義中間變量*/int n;double szdl;p=(struct students *)malloc(sizeof(struct students);head=create(head,&n);printf("姓名 學號 性別 英語 java 數(shù)據(jù)結構 數(shù)字電路 計算機n");
34、while(head->next!=null) /*利用選擇法排序*/tail=null; p=head; szdl=p->szdl; /*將鏈表中第一個成績賦給szdl*/ while(p!=null)if(p->szdl)>szdl)/*比較*/szdl=p->szdl;tail=p; p=p->next;tail=null;p=head;while(p->next!=null)if(p->szdl=szdl)printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->na
35、me,p->num,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj);if(p=head)head=head->next;elsetail->next=p->next;tail=p;p=p->next;if(p->szdl=szdl) /*成績相同時無需比較*/printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->name,p->num,p->sex,p->english,p-&g
36、t;java,p->sjjg,p->szdl,p->jsj);tail->next=null;p=head; /*將鏈表賦給結構體指針*/printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->name,p->num,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj);/*瀏覽排序后的信息*/printf("按數(shù)字電路成績排序后輸出如上(注:此過程不保存至文件):n");return;/*
37、按計算機組成原理排序*/void sortjsj(struct students * head)struct students *p,*tail; /*定義中間變量*/int n;double jsj;p=(struct students *)malloc(sizeof(struct students);head=create(head,&n);printf("姓名 學號 性別 英語 java 數(shù)據(jù)結構 數(shù)字電路 計算機n");while(head->next!=null) /*利用選擇法排序*/tail=null; p=head; jsj=p->jsj
38、; /*將鏈表中第一個成績賦給jsj*/ while(p!=null)if(p->jsj)>jsj)/*比較*/jsj=p->jsj;tail=p; p=p->next;tail=null;p=head;while(p->next!=null)if(p->jsj=jsj)printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->name,p->num,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj
39、);if(p=head)head=head->next;elsetail->next=p->next;tail=p;p=p->next;if(p->jsj=jsj) /*成績相同時無需比較*/printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->name,p->num,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj);tail->next=null;p=head; /*將鏈表賦給結構體指針*/
40、printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->name,p->num,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj);/*瀏覽排序后的信息*/printf("按計算機組成原理成績排序后輸出如上(注:此過程不保存至文件):n");return;/*按學號刪除學生成績信息*/struct students * delete(struct students * head,char m15)struct s
41、tudents *ptr1,*ptr2;int n; printf("n所有學生信息如下:n");browse(head);printf("n請輸入想要刪除的學生學號:");scanf("%s",m);head=create(head,&n);if(head=null)printf("無學生信息!n");return head;if(strcmp(head->num,m)=0)&&head!=null)ptr2=head;head=head->next;free(ptr2);if
42、(strcmp(head->num,m)!=0)ptr1=head;ptr2=head->next;while(ptr2!=null)if(strcmp(ptr2->num,m)=0)ptr1->next=ptr2->next;free(ptr2);elseptr1=ptr2;ptr2=ptr1->next;fprint_(head);printf("n學號為' %s '學生信息已被刪除,并保存至文件!n",m);return head;/*修改學生信息(按編號修改)*/struct students * revise()
43、int n=0,t; char num10; char num10; /*字符型學生學號*/char name20; /*字符型學生姓名*/char sex3; /*字符型學生性別*/double english; /*雙精度實型英語成績*/double java; /*雙精度實型java成績*/double sjjg; /*雙精度實數(shù)據(jù)結構*/double szdl; /*雙精度實型數(shù)字電路*/double jsj; /*計算機組成原理*/ struct students *head=null; struct students *p; printf("n所有學生信息如下:n&quo
44、t;);browse(head);head=create(head,&n);printf("n輸入需要修改的學生的學號:");scanf("%s",num);p=head;while(head!=null)if(strcmp(p->num,num)=0)system("cls");revisemenu();printf("編號為%s的學生信息如下:n",num);printf("姓名 學號 性別 英語 java 數(shù)據(jù)結構 數(shù)字電路 計算機n");printf("%st%s
45、t%st%.1lft%.1lft%.1lft%.1lft%.1lfn",p->name,p->num,p->sex,p->english,p->java,p->sjjg,p->szdl,p->jsj);while(1)printf("請選擇需要修改的信息:");scanf("%d",&t);switch(t)case 1:printf("請輸入新姓名:");scanf("%s",name);strcpy(p->name,name);break;
46、case 2:printf("請輸入新學號:");scanf("%s",&num);strcpy(p->num,num);break;case 3:printf("請輸入新性別:");scanf("%s",sex);strcpy(p->sex,sex);break;case 4:printf("請輸入新英語成績:");scanf("%lf",&english);p->english=english;break;case 5:printf("請輸入新java成績:");scanf("%lf",&java);p->java=java;break;case
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版二手房交易房產(chǎn)稅費結算及合同履行協(xié)議4篇
- 二零二五年度高科技產(chǎn)業(yè)園區(qū)廠房承包合作協(xié)議書3篇
- 個人借款合同范本模板(2024版)
- 二零二五年度租賃房產(chǎn)修繕與維護合同3篇
- 二零二五版住宅小區(qū)綠化工程苗木采購與養(yǎng)護合同4篇
- 2025年二手挖掘機交易稅費承擔協(xié)議4篇
- 二零二五版大型活動同聲傳譯及現(xiàn)場翻譯服務合同2篇
- 二零二五版房產(chǎn)抵押合同變更及權屬變更協(xié)議3篇
- 臨時建筑工程合作合同書(2024年版)版
- 二零二五年度留置車輛安全檢測借款服務協(xié)議4篇
- 餐飲行業(yè)智慧餐廳管理系統(tǒng)方案
- 2025年度生物醫(yī)藥技術研發(fā)與許可協(xié)議3篇
- 電廠檢修安全培訓課件
- 殯葬改革課件
- 2024企業(yè)答謝晚宴會務合同3篇
- 雙方個人協(xié)議書模板
- 新外研版九年級上冊(初三)英語全冊教學課件PPT
- 初中中考英語總復習《代詞動詞連詞數(shù)詞》思維導圖
- 植物和五行關系解說
- 滬教牛津版初中英語七年級下冊全套單元測試題
- 因式分解法提公因式法公式法
評論
0/150
提交評論