學(xué)生成績管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)C語言源代碼_第1頁
學(xué)生成績管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)C語言源代碼_第2頁
學(xué)生成績管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)C語言源代碼_第3頁
學(xué)生成績管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)C語言源代碼_第4頁
學(xué)生成績管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)C語言源代碼_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、天助自助者,你要你就能。#include<stdio.h>#include<string.h>#include<stdlib.h>struct studentschar Num10; /*字符型學(xué)生學(xué)號*/char Name20; /*字符型學(xué)生姓名*/char Sex3; /*字符型學(xué)生性別*/double English; /*雙精度實型英語成績*/double Java; /*雙精度實型Java成績*/double Sjjg; /*雙精度實數(shù)據(jù)結(jié)構(gòu)*/double Szdl; /*雙精度實型數(shù)字電路*/double Jsj; /*計算機(jī)組成原理*/st

2、ruct students *next; /*用與構(gòu)建連表指向下一結(jié)點*/;FILE *fp; /*定義全局變量fp*/void Revisemenu();/*修改菜單*/void Sortmenu();/*排序菜單*/void menu();/*主菜單*/void secret();/*安全驗證*/struct students * Input();/*新建學(xué)生信息*/void fprint(struct students *head);/*將信息導(dǎo)入文件可追加*/void fprint_(struct students *head);/*將信息導(dǎo)入文件并覆蓋*/void Browse(st

3、ruct students *head);/*瀏覽全部學(xué)生信息*/struct students * create(struct students *headint *n);/*從tushu_list中讀取數(shù)據(jù)構(gòu)建鏈表*/void FindofNum(struct students *head);/*按學(xué)號查詢學(xué)生信息*/void FindofNname(struct students *head);/*按姓名查詢學(xué)生信息*/void SortEnglish(struct students * head);/*按英語成績排序*/void SortJava(struct students * h

4、ead);/*按Java成績排序*/void SortSjjg(struct students * head);/*按數(shù)據(jù)結(jié)構(gòu)成績排序*/void SortSzdl(struct students * head);/*按數(shù)字邏輯電路成績排序*/void SortJsj(struct students * head);/*按計算機(jī)組成原理成績排序*/struct students * Delete(struct students * headchar m15);/*按學(xué)號刪除學(xué)生成績信息*/struct students * Revise();/*修改學(xué)生信息(按編號修改)*/*主菜單*/voi

5、d menu()printf("nn");printf("*n");printf(" 學(xué)生成績管理系統(tǒng) n");printf("-n");printf(" 1-添加新同學(xué) 2-瀏覽學(xué)生信息 n");printf(" 3-按學(xué)號查詢 4-按姓名查詢 n");printf(" 5-按成績排序 6-修改學(xué)生信息 n");printf(" 7-刪除學(xué)生信息 0-退出系統(tǒng) n");printf("-n");printf(&qu

6、ot;_n");/*排序菜單*/void Sortmenu()printf("nn");printf("*n");printf(" 按成績排序 n");printf(" 1-大學(xué)英語 2-JAVA編程 n");printf(" 3-數(shù)據(jù)結(jié)構(gòu) 4-數(shù)字邏輯電路 n");printf(" 5-計算機(jī)組成原理 0-返回上級菜單 n");printf("*n");/*修改菜單*/void Revisemenu()printf("nn"

7、); printf(" 1-修改學(xué)生姓名 2-修改學(xué)生學(xué)號 n"); printf(" 3-修改學(xué)生性別 4-修改英語成績 n"); printf(" 5-修改JAVA成績 6-修改數(shù)據(jù)結(jié)構(gòu) n"); printf(" 7-修改數(shù)字電路 8-修改計算計 n");printf(" 0-返回上級菜單 n"); printf("nn");/*安全驗證*/void secret()char a20;printf("*歡迎來到學(xué)生信息管理系統(tǒng)進(jìn)入系統(tǒng)前請先進(jìn)行密碼驗證-&qu

8、ot;);printf(" ");dogets(a); /*輸入密碼*/system("cls"); /*調(diào)用庫函數(shù)清屏*/printf("對不起!您輸入的密碼有誤請重新輸入-");while(strcmp(a"0605")!=0); /*單一密碼"0605"*/system("cls");/*新建學(xué)生信息*/struct students * Input()struct students *p1*p2*head; /*建立輔助結(jié)點及頭結(jié)點*/char Name;int n=

9、0x;printf("n請按對應(yīng)項輸入學(xué)生信息以#結(jié)束:n");printf("姓名 學(xué)號 性別 英語 Java 數(shù)據(jù)結(jié)構(gòu) 數(shù)字電路 計算機(jī)組成原理n");p1=(struct students *)malloc(sizeof(struct students);head=p2=p1;do /*使用do while語句輸入學(xué)生信息*/scanf("%s"&p1->Name);if(strcmp(p1->Name"#")=0)break; /*判斷結(jié)束符*/elsescanf("%s%s%

10、lf%lf%lf%lf%lf"p1->Nump1->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("學(xué)生信息輸入結(jié)束!n");getchar(); printf("是否

11、保存學(xué)生信息?(1.是/2.否):");scanf("%d"&x);if(x=1)fprint(head); /*調(diào)用函數(shù)保存至文件*/elseprintf("n文件沒有被保存!n");return head; /*返回頭指針*/*將信息導(dǎo)入文件可追加*/void fprint(struct students *head)struct students *p1;if(fp=fopen("students_list.txt""a")=NULL)printf("File open error

12、!n");exit(0);for(p1=head;p1->next!=NULL;p1=p1->next) /*遍歷*/fprintf(fp"%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn"p1->Namep1->Nump1->Sexp1->Englishp1->Javap1->Sjjgp1->Szdlp1->Jsj);/*將學(xué)生信息寫入文件*/fclose(fp); /*關(guān)閉文件*/printf("n學(xué)生信息已成功保存到文件 students_list.txt 中

13、!n");getchar();/*將信息導(dǎo)入文件并覆蓋*/void fprint_(struct students *head)struct students *p1;if(fp=fopen("students_list.txt""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"

14、p1->Namep1->Nump1->Sexp1->Englishp1->Javap1->Sjjgp1->Szdlp1->Jsj);/*將學(xué)生信息寫入文件*/fclose(fp); /*關(guān)閉文件*/;getchar();/*瀏覽全部學(xué)生信息*/void Browse(struct students *head) char Num10; /*字符型學(xué)生學(xué)號*/char Name20; /*字符型學(xué)生姓名*/char Sex3; /*字符型學(xué)生性別*/double English; /*雙精度實型英語成績*/double Java; /*雙精度實型J

15、ava成績*/double Sjjg; /*雙精度實數(shù)據(jù)結(jié)構(gòu)*/double Szdl; /*雙精度實型數(shù)字電路*/double Jsj; /*計算機(jī)組成原理*/if(fp=fopen("students_list.txt""a+")=NULL)printf("File open error!n");exit(0);printf("-n");printf("姓名 學(xué)號 性別 英語 Java 數(shù)據(jù)結(jié)構(gòu) 數(shù)字電路 計算機(jī)n");while(!feof(fp)/*讀取并輸出*/fscanf(fp&qu

16、ot;%s%s%s%lf%lf%lf%lf%lf"NameNumSex&English&Java&Sjjg&Szdl&Jsj);printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn"NameNumSexEnglishJavaSjjgSzdlJsj);if(fclose(fp)printf("Can not close the file!n");exit(0);/*從tushu_list中讀取數(shù)據(jù)構(gòu)建鏈表*/struct students * create(stru

17、ct students * headint *n)FILE *fp;struct students*p*p1*p2;if(fp=fopen("students_list.txt""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->Namep->Nu

18、mp->Sex&p->English&p->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;/*按姓名查詢學(xué)生信息*/void FindofName(struct students *head)int i=0n=0; char b20; struct students *p;head=creat

19、e(head&n);p=head;printf("n請輸入要查詢的學(xué)生姓名:");scanf("%s"b);while(p!=NULL)if(strcmp(p->Nameb)=0) printf("姓名 學(xué)號 性別 英語 Java 數(shù)據(jù)結(jié)構(gòu) 數(shù)字電路 計算機(jī)n");printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp

20、->Jsj);i+;p=p->next;if(i=0)printf("n對不起!沒有找到名為"%s"的學(xué)生信息!n"b);/*按學(xué)號查詢學(xué)生信息*/void FindofNum(struct students *head)int i=0n;char b20;struct students *p;head=create(head&n);p=head;printf("n請輸入要查詢的學(xué)生學(xué)號:");scanf("%s"b);while(p!=NULL)if(strcmp(p->Numb)=0)

21、printf("姓名 學(xué)號 性別 英語 Java 數(shù)據(jù)結(jié)構(gòu) 數(shù)字電路 計算機(jī)n");printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);i+;p=p->next;if(i=0)printf("n對不起!沒有找到學(xué)號為"%s"學(xué)生信息!n"b);/*按英語成績排序*/void SortEnglish(str

22、uct students * head)struct students *p*tail; /*定義中間變量*/int n;double English;p=(struct students *)malloc(sizeof(struct students);head=create(head&n);printf("姓名 學(xué)號 性別 英語 Java 數(shù)據(jù)結(jié)構(gòu) 數(shù)字電路 計算機(jī)n");while(head->next!=NULL) /*利用選擇法排序*/tail=NULL; p=head; English=p->English; /*將鏈表中第一個成績賦給Eng

23、lish*/ while(p!=NULL)if(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->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->J

24、sj);if(p=head)head=head->next;elsetail->next=p->next;tail=p;p=p->next;if(p->English=English) /*分?jǐn)?shù)相同時無需比較*/printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);tail->next=NULL;p=head; /*將鏈表賦給結(jié)構(gòu)體指針

25、*/printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->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("姓名 學(xué)號 性別 英語 Java 數(shù)據(jù)結(jié)構(gòu) 數(shù)字電路 計算機(jī)n");while(head->next!=NULL) /*利用選擇法排序*/tail=NULL; p=head; Java=p->Java; /*將鏈表中第一個成績賦給Java*/ while(p!=NULL)if(p->Java)>Java)/*比較*/Java=p->Java;tail=p;

27、 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->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);if(p=head)head=head->next;elsetail->next=p->next;tail=p;p=p->next;if(p->

28、Java=Java) /*成績相同時無需比較*/printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);tail->next=NULL;p=head; /*將鏈表賦給結(jié)構(gòu)體指針*/printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn"p->Namep->Nump->Sexp->Eng

29、lishp->Javap->Sjjgp->Szdlp->Jsj);/*瀏覽排序后的信息*/printf("按Java成績排序后輸出如上(注:此過程不保存至文件):n");return;/*按數(shù)據(jù)結(jié)構(gòu)排序*/void SortSjjg(struct students * head)struct students *p*tail; /*定義中間變量*/int n;double Sjjg;p=(struct students *)malloc(sizeof(struct students);head=create(head&n);printf(&q

30、uot;姓名 學(xué)號 性別 英語 Java 數(shù)據(jù)結(jié)構(gòu) 數(shù)字電路 計算機(jī)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=Sjjg)printf("%st%st%st%.

31、1lft%.1lft%.1lft%.1lft%.1lfn"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->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%.1lft%.1lft%.1lfn"p->Namep->

32、;Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);tail->next=NULL;p=head; /*將鏈表賦給結(jié)構(gòu)體指針*/printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);/*瀏覽排序后的信息*/printf("按數(shù)據(jù)結(jié)構(gòu)成績排序后輸出如上(注:此過程不保存至文件)

33、: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("姓名 學(xué)號 性別 英語 Java 數(shù)據(jù)結(jié)構(gòu) 數(shù)字電路 計算機(jī)n");while(head->next!=NULL) /*利用選擇法排序*/tail=NULL; p=hea

34、d; 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->Namep->Nump->Sexp->Englishp->Javap->Sjjgp-

35、>Szdlp->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->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);tail->next=NULL;p=head; /*將

36、鏈表賦給結(jié)構(gòu)體指針*/printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);/*瀏覽排序后的信息*/printf("按數(shù)字電路成績排序后輸出如上(注:此過程不保存至文件):n");return;/*按計算機(jī)組成原理排序*/void SortJsj(struct students * head)struct students *p*tail; /*定義中

37、間變量*/int n;double Jsj;p=(struct students *)malloc(sizeof(struct students);head=create(head&n);printf("姓名 學(xué)號 性別 英語 Java 數(shù)據(jù)結(jié)構(gòu) 數(shù)字電路 計算機(jī)n");while(head->next!=NULL) /*利用選擇法排序*/tail=NULL; p=head; Jsj=p->Jsj; /*將鏈表中第一個成績賦給Jsj*/ while(p!=NULL)if(p->Jsj)>Jsj)/*比較*/Jsj=p->Jsj;tail

38、=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->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);if(p=head)head=head->next;elsetail->next=p->next;tail=p;p=p->next;if(p->

39、;Jsj=Jsj) /*成績相同時無需比較*/printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);tail->next=NULL;p=head; /*將鏈表賦給結(jié)構(gòu)體指針*/printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn"p->Namep->Nump->Sexp->Engl

40、ishp->Javap->Sjjgp->Szdlp->Jsj);/*瀏覽排序后的信息*/printf("按計算機(jī)組成原理成績排序后輸出如上(注:此過程不保存至文件):n");return;/*按學(xué)號刪除學(xué)生成績信息*/struct students * Delete(struct students * headchar m15)struct students *ptr1*ptr2;int n; printf("n所有學(xué)生信息如下:n");Browse(head);printf("n請輸入想要刪除的學(xué)生學(xué)號:")

41、;scanf("%s"m);head=create(head&n);if(head=NULL)printf("無學(xué)生信息!n");return head;if(strcmp(head->Numm)=0)&&head!=NULL)ptr2=head;head=head->next;free(ptr2);if(strcmp(head->Numm)!=0)ptr1=head;ptr2=head->next;while(ptr2!=NULL)if(strcmp(ptr2->Numm)=0)ptr1->n

42、ext=ptr2->next;free(ptr2);elseptr1=ptr2;ptr2=ptr1->next;fprint_(head);printf("n學(xué)號為' %s '學(xué)生信息已被刪除并保存至文件!n"m);return head;/*修改學(xué)生信息(按編號修改)*/struct students * Revise()int n=0t; char num10; char Num10; /*字符型學(xué)生學(xué)號*/char Name20; /*字符型學(xué)生姓名*/char Sex3; /*字符型學(xué)生性別*/double English; /*雙精度實

43、型英語成績*/double Java; /*雙精度實型Java成績*/double Sjjg; /*雙精度實數(shù)據(jù)結(jié)構(gòu)*/double Szdl; /*雙精度實型數(shù)字電路*/double Jsj; /*計算機(jī)組成原理*/ struct students *head=NULL; struct students *p; printf("n所有學(xué)生信息如下:n");Browse(head);head=create(head&n);printf("n輸入需要修改的學(xué)生的學(xué)號:");scanf("%s"num);p=head;while(

44、head!=NULL)if(strcmp(p->Numnum)=0)system("cls");Revisemenu();printf("編號為%s的學(xué)生信息如下:n"num);printf("姓名 學(xué)號 性別 英語 Java 數(shù)據(jù)結(jié)構(gòu) 數(shù)字電路 計算機(jī)n");printf("%st%st%st%.1lft%.1lft%.1lft%.1lft%.1lfn"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->J

45、sj);while(1)printf("請選擇需要修改的信息:");scanf("%d"&t);switch(t)case 1:printf("請輸入新姓名:");scanf("%s"Name);strcpy(p->NameName);break;case 2:printf("請輸入新學(xué)號:");scanf("%s"&Num);strcpy(p->NumNum);break;case 3:printf("請輸入新性別:");scanf("%s"Sex);strcpy(p->SexSex);break;case 4:printf("請輸入新英語成績:");scanf("%lf"&English);p->English=English;break;case 5:printf("請輸入新Java成績:");scanf("%lf"&Java);p->Java=Java;break;case 6:

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論