您好,登錄后才能下訂單哦!
今天小編給大家分享一下C語言如何實(shí)現(xiàn)學(xué)生檔案管理系統(tǒng)的相關(guān)知識點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
/* 課程設(shè)計(jì)項(xiàng)目名稱:學(xué)生檔案管理系統(tǒng) 作者:施瑞文 時間:2018.3.3 */ #include<stdio.h> #include<string.h> #include<stdlib.h> #include<conio.h> #include<windows.h> #define N sizeof(struct Student) #define M sizeof(struct Password) #define MAX 1000 struct Student { char number[10]; //學(xué)號 char name[10]; //姓名 char sex[2]; //性別 struct Birthday //出生日期 { int year; //年 int month; //月 int day; //日 }birtnday; struct Score //成績 { float c_language; //c語言 float math; //高數(shù) float Russian;//俄語 float Russian_hearing; //俄語聽力 float professional; //專業(yè)導(dǎo)論 float politics; //政治 }score; char remark[100]; //備注 int num; struct Student *next; }; typedef struct Student Stu; typedef Stu *Stup; typedef struct Password { char password[18]; struct Password *next; }pass; typedef pass *passw; typedef struct TOTAL //總分 { char number[10]; char name[10]; char sex[2]; float c_language; //c語言 float math; //高數(shù) float Russian;//俄語 float Russian_hearing; //俄語聽力 float professional; //專業(yè)導(dǎo)論 float politics; //政治 float sum; }Total; Total total[MAX]; //好多自定義函數(shù) void color(short x);//設(shè)置顏色 void HideCursor(); //隱藏光標(biāo) void toxy(int x, int y); //將光標(biāo)移動到X,Y坐標(biāo)處 void menu(); //主菜單 void over(); //退出軟件 void signin(); //登陸 passw ff(); //將文件中的內(nèi)容讀入鏈表,返回值為表頭地址 void save_password(passw p);//保存密碼 void amend_password(); //修改密碼 void input_information(); //信息錄入 void amend_information(); //修改信息 void delete_information(); //刪除信息 void delete_number(); //按學(xué)號查詢刪除 void delete_name(); //按姓名查詢刪除 void save_information(Stup p); //保存信息 void print_information(); //信息顯示 Stup ss(); //將文件中的內(nèi)容讀入鏈表,返回值為表頭地址 void find_information(); ///查找信息 void find_number_information(); //按學(xué)號查詢 void find_name_information(); //按姓名查詢 void statistics_information(); //信息統(tǒng)計(jì) void average_score(); //平均分 void total_score_ranked(); //總分排名 void fail_numbers(); //各科不及格人數(shù) void assignment(); //將信息賦值到一個結(jié)構(gòu)體中 void grade_table(); //各科成績分布 void analyze_c(); //c語言 void analyze_math();//高數(shù) void analyze_Russian();//俄語 void analyze_Russian_hearing();//俄語聽力 void analyze_professional();//專業(yè)導(dǎo)論 void analyze_politics(); //政治 int cmp(const void *a,const void *b); int cmp1(const void *a,const void *b); //快速排序 int cmp2(const void *a,const void *b); int cmp3(const void *a,const void *b); int cmp4(const void *a,const void *b); int cmp5(const void *a,const void *b); int cmp6(const void *a,const void *b); char _password[18]; passw password_head; int len; void color(short x) //設(shè)置顏色 { if(x>=0&&x<=15) { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),x); } else { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),x); } } void HideCursor() //隱藏光標(biāo) { CONSOLE_CURSOR_INFO cursor_info = {1, 0}; SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info); } void toxy(int x, int y) //將光標(biāo)移動到X,Y坐標(biāo)處 { COORD pos = { x , y }; HANDLE Out = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(Out, pos); } int cmp(const void *a,const void *b) //快速排序 { return ((*(Total *)b).sum)-((*(Total *)a).sum); } int cmp1(const void *a,const void *b) //快速排序 { return ((*(Total *)b).c_language)-((*(Total *)a).c_language); } int cmp2(const void *a,const void *b) //快速排序 { return ((*(Total *)b).math)-((*(Total *)a).math); } int cmp3(const void *a,const void *b) //快速排序 { return ((*(Total *)b).Russian)-((*(Total *)a).Russian); } int cmp4(const void *a,const void *b) //快速排序 { return ((*(Total *)b).Russian_hearing)-((*(Total *)a).Russian_hearing); } int cmp5(const void *a,const void *b) //快速排序 { return ((*(Total *)b).professional)-((*(Total *)a).professional); } int cmp6(const void *a,const void *b) //快速排序 { return ((*(Total *)b).politics)-((*(Total *)a).politics); } void menu() //主菜單 { do { system("cls"); //清屏 fflush(stdin); //清空緩存 color(14); char t; toxy(45,6); printf("-----學(xué)生檔案管理系統(tǒng)-----"); toxy(45,7); printf("| |"); toxy(45,8); printf("| 1.信息錄入 |"); toxy(45,9); printf("| |"); toxy(45,10); printf("| 2.信息修改 |"); toxy(45,11); printf("| |"); toxy(45,12); printf("| 3.信息刪除 |"); toxy(45,13); printf("| |"); toxy(45,14); printf("| 4.信息顯示 |"); toxy(45,15); printf("| |"); toxy(45,16); printf("| 5.信息查找 |"); toxy(45,17); printf("| |"); toxy(45,18); printf("| 6.信息統(tǒng)計(jì) |"); toxy(45,19); printf("| |"); toxy(45,20); printf("| 7.修改密碼 |"); toxy(45,21); printf("| |"); toxy(45,22); printf("| 8.退出軟件 |"); toxy(45,23); printf("--------------------------"); t=getch(); switch(t) { case '1':input_information();break; case '2':amend_information();break; case '3':delete_information();break; case '4':print_information();break; case '5':find_information();break; case '6':statistics_information();break; case '7':amend_password();break; case '8':over();break; default :break; } }while(1);//永遠(yuǎn)為真 } passw ff() //將文件中的內(nèi)容讀入鏈表,返回值為表頭地址 { FILE *fp; //文件指針 passw password_head=NULL; fp=fopen("password","a+"); //以追加和讀的方式打開名為password的文件 if(fp==NULL) { printf("cannot open file"); } //printf("%p\n",password_head); password_head=(passw)malloc(M); //申請空間 strcpy(password_head->password," "); //初始化密碼 //printf("%s\n",password_head); fread(password_head,M,1,fp); fclose(fp); //關(guān)閉文件 return password_head; //返回值表頭地址 } void signin() //登錄 { do { system("cls"); color(13); //好看的顏色 passw p,head; int i=0; char k; head=ff(); //調(diào)用函數(shù),返回值為表頭地址 p=head; //printf("%s\n",p->password); //printf("%p\n",p); char str[]="000000"; //初始密碼 toxy(45,6); printf("-----學(xué)生檔案管理系統(tǒng)-----"); toxy(45,8); printf("請輸入管理者密碼:"); for(;;) //此處為輸入密碼不回顯操作 { k=getch(); //輸入k if(k=='\r') //如果輸入k為回車,則跳出循環(huán) { break; } else if(k=='\b') //如果輸入k為刪除鍵 { if(i>0) //如若密碼還沒完全刪除 { printf("\b"); printf(" "); printf("\b"); i--; } } else //如果輸入的k既不是刪除鍵,也不是回車鍵 { _password[i]=k; //把k的值賦給_password[i]; printf("*"); //輸出*號,保護(hù)用戶隱私 i++; //密碼位數(shù)加1 } } _password[i]='\0'; if(strcmp(p->password," ")==0) //判斷程序是否是第一次運(yùn)行, { strcpy(p->password,str);//如果是,則將初始密碼000000賦值給p->password save_password(p); //保存p } if(strcmp(head->password,_password)==0) //判斷密碼是否輸入正確 { system("cls"); toxy(45,8); printf("正在登陸...."); Sleep(500); menu(); } else { toxy(45,10); printf("密碼錯誤!"); Sleep(500); } }while(1); } void amend_password() //修改密碼 { system("cls"); //清屏 color(12); //看著舒服的顏色 passw p,head; //隱藏光標(biāo),看著更舒服 head=ff(); do { system("cls"); //清屏 p=head; char password[18],newpassword[18],t,k; int i=0; toxy(45,6); //將光標(biāo)移動到坐標(biāo)為(50,5)的位置 printf("學(xué)生檔案管理系統(tǒng)"); toxy(48,8); printf("修改密碼"); toxy(45,10); printf("請輸入舊密碼:"); for(;;) //此處為輸入密碼不回顯操作 { k=getch(); //輸入k if(k=='\r') //如果輸入k為回車,則跳出循環(huán) { break; } else if(k=='\b') //如果輸入k為刪除鍵 { if(i>0) //如若密碼還沒完全刪除 { printf("\b"); printf(" "); printf("\b"); i--; } } else //如果輸入的k既不是刪除鍵,也不是回車鍵 { password[i]=k; //把k的值賦給_password[i]; printf("*"); //輸出*號,保護(hù)用戶隱私 i++; //密碼位數(shù)加1 } } password[i]='\0'; i=0; toxy(45,12); printf("請輸入新密碼:"); for(;;) //此處為輸入密碼不回顯操作 { k=getch(); //輸入k if(k=='\r') //如果輸入k為回車,則跳出循環(huán) { break; } else if(k=='\b') //如果輸入k為刪除鍵 { if(i>0) //如若密碼還沒完全刪除 { printf("\b"); printf(" "); printf("\b"); i--; } } else //如果輸入的k既不是刪除鍵,也不是回車鍵 { newpassword[i]=k; //把k的值賦給_password[i]; printf("*"); //輸出*號,保護(hù)用戶隱私 i++; //密碼位數(shù)加1 } } newpassword[i]='\0'; if(p!=NULL) //如果p不為空 { if(strcmp(p->password,password)==0) //如果舊密碼輸入正確 { strcpy(p->password,newpassword); //將舊密碼改為新密碼 break; //跳出循環(huán) } else //如果舊密碼輸入錯誤 { system("cls"); toxy(46,8); printf("--------------------------"); toxy(46,9); printf("| |"); toxy(46,10); printf("| 密碼錯誤!是否繼續(xù)? |"); toxy(46,11); printf("| |"); toxy(46,12); printf("| 1.是 2.否 |"); toxy(46,13); printf("| |"); toxy(46,14); printf("--------------------------"); while(1) { t=getch(); //輸入t if(t=='1') { system("cls"); break; } else if(t=='2') menu(); } } } }while(1); save_password(p); //永遠(yuǎn)為真 system("cls"); toxy(45,10); printf("修改成功!即將返回主菜單...."); Sleep(500); menu(); } void save_password(passw p) //將p所指向的內(nèi)容保存到文件中 { FILE *fp; fp=fopen("password","w"); //以只寫的方式打開名為password的文件 if(fp==NULL) { printf("cannot open file"); } if(fwrite(p,M,1,fp)!=1) //將p所指向的一段大小為M的內(nèi)容寫入fp所指向的文件中 { printf("write error!"); } fclose(fp); //關(guān)閉文件 } Stup ss() //將文件中的內(nèi)容讀出到鏈表中 { FILE *fp; //文件指針 Stup head=NULL,p,p1,pr=NULL; int n=0; fp=fopen("student","ab+"); if(fp==NULL) { printf("cannot open file"); } while(!feof(fp))// feof函數(shù)可以檢查文件讀寫位置標(biāo)志是否移動到文件末尾,feof(fp)檢查fp所指向的文件是否結(jié)束,如果是 { //則函數(shù)值為真,否則為假,即“!feof(fp)”為真,在while循環(huán)中檢查 “!feof(fp)”為真,就執(zhí)行循環(huán)體 n++; p=(Stup)malloc(N); //向內(nèi)存申請一段空間 fread(p,N,1,fp); //從fp所指向的文件讀入1個大小為M的數(shù)據(jù),存儲到p所指向的空間中 if(n==1) { head=p; p1=p; } else { pr=p1; p1->next=p; p1=p; } } if(pr!=NULL) pr->next=NULL; else if(pr==NULL) head=NULL; fclose(fp); return head; } void input_information()//錄入信息 { system("cls"); color(15); int i=0,n; Stup p; toxy(45,6); printf("-----學(xué)生檔案管理系統(tǒng)-----"); toxy(50,7); printf("信息錄入"); toxy(45,8); printf("你需要錄入多少個學(xué)生的信息?請輸入:"); scanf("%d",&n);getchar(); while(i!=n) { system("cls"); i++; p=(Stup)malloc(N); toxy(45,6); printf("-----學(xué)生檔案管理系統(tǒng)-----"); toxy(50,7); printf("信息錄入"); toxy(45,8); printf("請輸入學(xué)生學(xué)號:"); gets(p->number); toxy(45,9); printf("請輸入學(xué)生姓名:"); gets(p->name); toxy(45,10); printf("請輸入學(xué)生性別(男或女):"); gets(p->sex); toxy(45,11); printf("請輸入學(xué)生出生日期(年月日,以空格隔開):"); scanf("%d%d%d",&p->birtnday.year,&p->birtnday.month,&p->birtnday.day);getchar(); toxy(45,12); printf("請輸入c語言成績:"); scanf("%f",&p->score.c_language);getchar(); toxy(45,13); printf("請輸入高數(shù)成績:"); scanf("%f",&p->score.math);getchar(); toxy(45,14); printf("請輸入俄語成績:"); scanf("%f",&p->score.Russian);getchar(); toxy(45,15); printf("請輸入俄語聽力成績:"); scanf("%f",&p->score.Russian_hearing);getchar(); toxy(45,16); printf("請輸入專業(yè)導(dǎo)論成績:"); scanf("%f",&p->score.professional);getchar(); toxy(45,17); printf("請輸入政治成績:"); scanf("%f",&p->score.politics);getchar(); toxy(45,18); printf("請輸入備注:"); gets(p->remark); save_information(p); } toxy(48,19); printf("錄入完畢!按任意鍵返回主菜單!"); getch(); } void amend_information() //修改信息 { system("cls"); //清屏 color(11); Stup p,head; FILE *fp; int i=15,j=0,c; char number[10]; //學(xué)號 char name[10],_name[10]; //姓名 char sex[2]; //性別 int year; //年 int month; //月 int day; //日 float c_language; //c語言 float math; //高數(shù) float Russian;//俄語 float Russian_hearing; //俄語聽力 float professional; //專業(yè)導(dǎo)論 float politics; //政治 char remark[100]; //備注 char ch,t; head=ss(); p=head; do { system("cls"); toxy(45,6); printf("-----學(xué)生檔案管理系統(tǒng)-----"); toxy(45,7); printf("修改信息"); toxy(40,9); printf("請輸入您要修改的信息:"); gets(_name); toxy(20,8); printf("----------------------------------------------------------------------------------------------"); toxy(20,9); printf("學(xué)號 姓名 性別 出生--日期 c語言 高 數(shù) 俄 語 俄語聽力 專業(yè)導(dǎo)論 政 治 備注"); toxy(20,10); printf("----------------------------------------------------------------------------------------------"); i=11;j=0; while(p!=NULL) //將每個結(jié)點(diǎn)的p->num都賦為0,以免后面數(shù)據(jù)干擾 { p->num=0; p=p->next; } p=head; //重新讓p指向head while(p!=NULL) { if(strcmp(p->name,_name)==0) { toxy(18,i); j++; if(p->birtnday.month<10&&p->birtnday.day<10) printf("%d.%s %s %s %d.0%d.0%d %.2f %.2f %.2f %.2f %.2f %.2f %s\n",j,p->number,p->name,p->sex,p->birtnday.year,p->birtnday.month,p->birtnday.day,p->score.c_language,p->score.math,p->score.Russian,p->score.Russian_hearing,p->score.professional,p->score.politics,p->remark); else if(p->birtnday.month<10&&p->birtnday.day>=10) printf("%d.%s %s %s %d.0%d.%d %.2f %.2f %.2f %.2f %.2f %.2f %s\n",j,p->number,p->name,p->sex,p->birtnday.year,p->birtnday.month,p->birtnday.day,p->score.c_language,p->score.math,p->score.Russian,p->score.Russian_hearing,p->score.professional,p->score.politics,p->remark); else if(p->birtnday.month>=10&&p->birtnday.day<10) printf("%d.%s %s %s %d.%d.0%d %.2f %.2f %.2f %.2f %.2f %.2f %s\n",j,p->number,p->name,p->sex,p->birtnday.year,p->birtnday.month,p->birtnday.day,p->score.c_language,p->score.math,p->score.Russian,p->score.Russian_hearing,p->score.professional,p->score.politics,p->remark); else printf("%d.%s %s %s %d.%d.%d %.2f %.2f %.2f %.2f %.2f %.2f %s\n",j,p->number,p->name,p->sex,p->birtnday.year,p->birtnday.month,p->birtnday.day,p->score.c_language,p->score.math,p->score.Russian,p->score.Russian_hearing,p->score.professional,p->score.politics,p->remark); i++; p->num=j; //給p->num賦值,即給滿足搜索要求的結(jié)點(diǎn)編號 } p=p->next; } if(j==0) //如果j=0,即沒有進(jìn)入前面的搜索循環(huán),也就是沒有找到相應(yīng)的信息 { toxy(50,i); printf("沒有找到相應(yīng)的信息!(按0返回,按1重新搜索)"); while(1) //死循環(huán)是為了防止除0和1的其他按鍵干擾 { ch=getch(); if(ch=='0') { menu();break; } else if(ch=='1') { break; } } if(ch=='1') //如果輸入的ch等于1,則結(jié)束本次循環(huán) continue; } while(1) { toxy(50,i); printf("請輸入您要修改的信息的標(biāo)號:"); scanf("%d",&c); getchar(); i++; if(c<=j) //如果c<=j,即輸入正確 break; else if(c>j) //否則,輸入錯誤 { toxy(50,i); printf("沒有找到您所要修改的信息,請重新輸入!"); i++; Sleep(500); //暫停0.5秒 } } p=head; //讓p重新指向head,即第一個結(jié)點(diǎn) while(p!=NULL&&p->num!=c) //遍歷鏈表,尋找滿足要求的結(jié)點(diǎn) { p=p->next; } if(p!=NULL) //如果尋找成功,進(jìn)入修改部分 { system("cls"); //清屏 toxy(45,8); printf("請輸入學(xué)生學(xué)號:"); gets(number); strcpy(p->number,number); toxy(45,9); printf("請輸入學(xué)生姓名:"); gets(name); strcpy(p->name,name); toxy(45,10); printf("請輸入學(xué)生性別(男或女):"); gets(sex); strcpy(p->sex,sex); toxy(45,11); printf("請輸入學(xué)生出生日期(年月日,以空格隔開):"); scanf("%d%d%d",&year,&month,&day);getchar(); p->birtnday.year=year; p->birtnday.month=month; p->birtnday.day=day; toxy(45,12); printf("請輸入c語言成績:"); scanf("%f",&c_language);getchar(); p->score.c_language=c_language; toxy(45,13); printf("請輸入高數(shù)成績:"); scanf("%f",&math);getchar(); p->score.math=math; toxy(45,14); printf("請輸入俄語成績:"); scanf("%f",&Russian);getchar(); p->score.Russian=Russian; toxy(45,15); printf("請輸入俄語聽力成績:"); scanf("%f",&Russian_hearing);getchar(); p->score.Russian_hearing=Russian_hearing; toxy(45,16); printf("請輸入專業(yè)導(dǎo)論成績:"); scanf("%f",&professional);getchar(); p->score.professional=professional; toxy(45,17); printf("請輸入政治成績:"); scanf("%f",&politics);getchar(); p->score.politics=politics; toxy(45,18); printf("請輸入備注:"); gets(remark); strcpy(p->remark,remark); toxy(46,16); printf("-------------------------"); toxy(46,17); printf("| |"); toxy(46,18); printf("| 是否確認(rèn)修改? |"); toxy(46,19); printf("| 1.確認(rèn) 2.取消 |"); toxy(46,20); printf("| |"); toxy(46,21); printf("-------------------------"); while(1) //死循環(huán)為防止其他按鍵干擾 { t=getch(); if(t=='1') break; else if(t=='2') { menu(); } } if(t=='1') //如果t等于1,則跳出循環(huán) { break; } } }while(1); p=head; //p重新指向頭節(jié)點(diǎn) system("cls"); toxy(44,12); printf("正在修改...."); fp=fopen("student","wb"); //打開文件的同時清除文件內(nèi)的內(nèi)容 if(fp==NULL) { printf("cannot open file"); } while(p!=NULL) { if(fwrite(p,N,1,fp)!=1) //將p所指向的內(nèi)容存入fp所指向的文件中 { printf("file write error\n"); } p=p->next; } fclose(fp); //關(guān)閉文件 Sleep(500); system("cls"); toxy(44,12); printf("修改成功!正在自動跳轉(zhuǎn)到主菜單...."); Sleep(500); menu(); } void delete_information() //刪除信息 { do { system("cls"); color(12); char t; toxy(45,6); printf("-----學(xué)生檔案管理系統(tǒng)-----"); toxy(48,7); printf("信息刪除"); toxy(45,9); printf("1) 按學(xué)號查詢刪除"); toxy(45,11); printf("2) 按姓名查詢刪除"); toxy(48,13); printf("按0返回主菜單"); t=getch(); switch(t) { case '0':menu();break; case '1':delete_number();break; case '2':delete_name();break; default :break; } }while(1); } void delete_number() //按學(xué)號查詢刪除 { do { system("cls"); color(10); char number[10]; char t,c; int i=11,j=0; Stup head,p,pre=NULL ; FILE *fp; toxy(48,9); printf("請輸入你要刪除的學(xué)生的學(xué)號:"); gets(number); head=ss(); p=head; toxy(45,6); printf("-----學(xué)生檔案管理系統(tǒng)-----"); toxy(20,8); printf("----------------------------------------------------------------------------------------------"); toxy(20,9); printf("學(xué)號 姓名 性別 出生--日期 c語言 高 數(shù) 俄 語 俄語聽力 專業(yè)導(dǎo)論 政 治 備注"); toxy(20,10); printf("----------------------------------------------------------------------------------------------"); while(p!=NULL&&strcmp(p->number,number)!=0) { pre=p; p=p->next; } if(p!=NULL) { toxy(20,i); if(p->birtnday.month<10&&p->birtnday.day<10) printf("%s %s %s %d.0%d.0%d %.2f %.2f %.2f %.2f %.2f %.2f %s\n",p->number,p->name,p->sex,p->birtnday.year,p->birtnday.month,p->birtnday.day,p->score.c_language,p->score.math,p->score.Russian,p->score.Russian_hearing,p->score.professional,p->score.politics,p->remark); else if(p->birtnday.month<10&&p->birtnday.day>=10) printf("%s %s %s %d.0%d.%d %.2f %.2f %.2f %.2f %.2f %.2f %s\n",p->number,p->name,p->sex,p->birtnday.year,p->birtnday.month,p->birtnday.day,p->score.c_language,p->score.math,p->score.Russian,p->score.Russian_hearing,p->score.professional,p->score.politics,p->remark); else if(p->birtnday.month>=10&&p->birtnday.day<10) printf("%s %s %s %d.%d.0%d %.2f %.2f %.2f %.2f %.2f %.2f %s\n",p->number,p->name,p->sex,p->birtnday.year,p->birtnday.month,p->birtnday.day,p->score.c_language,p->score.math,p->score.Russian,p->score.Russian_hearing,p->score.professional,p->score.politics,p->remark); else printf("%s %s %s %d.%d.%d %.2f %.2f %.2f %.2f %.2f %.2f %s\n",p->number,p->name,p->sex,p->birtnday.year,p->birtnday.month,p->birtnday.day,p->score.c_language,p->score.math,p->score.Russian,p->score.Russian_hearing,p->score.professional,p->score.politics,p->remark); toxy(45,i+1); printf("1.刪除 2.取消"); while(1) { c=getch(); if(c=='1') break; else if(c=='2') delete_number(); } if(pre==NULL) head=head->next; else pre->next=p->next; system("cls"); toxy(45,10); printf("正在刪除...."); p=head->next; fp=fopen("student","wb"); if(fp==NULL) { printf("cannot open file"); } if(fwrite(head,N,1,fp)!=1) { printf("write error"); } fclose(fp); fp=fopen("student","ab"); if(fp==NULL) { printf("cannot open file"); } while(p!=NULL) { if(fwrite(p,N,1,fp)!=1) { printf("write error"); } p=p->next; } fclose(fp); Sleep(500); system("cls"); toxy(45,10); printf("刪除成功!正在返回...."); Sleep(500); delete_information(); } else if(p==NULL) { toxy(48,i); printf("您輸入的信息不存在!按0返回主菜單,1返回上一級菜單,2重新查找"); while(1) { t=getch(); if(t=='0') { menu(); } else if(t=='1') { delete_information(); } else if(t=='2') { break; } } } free(p); }while(1); } void delete_name() //按姓名查詢刪除 { do { system("cls"); color(10); char name[10]; char t,c; int i=11,j=0,key; Stup head,p,pre; FILE *fp; toxy(48,9); printf("請輸入你要刪除的學(xué)生的姓名:"); gets(name); head=ss(); p=head; while(p!=NULL) { p->num=0; p=p->next; } p=head; toxy(45,6); printf("-----學(xué)生檔案管理系統(tǒng)-----"); toxy(20,8); printf("----------------------------------------------------------------------------------------------"); toxy(20,9); printf("學(xué)號 姓名 性別 出生--日期 c語言 高 數(shù) 俄 語 俄語聽力 專業(yè)導(dǎo)論 政 治 備注"); toxy(20,10); printf("----------------------------------------------------------------------------------------------"); while(p!=NULL) { if(strcmp(p->name,name)==0) { toxy(18,i); j++; if(p->birtnday.month<10&&p->birtnday.day<10) printf("%d.%s %s %s %d.0%d.0%d %.2f %.2f %.2f %.2f %.2f %.2f %s\n",j,p->number,p->name,p->sex,p->birtnday.year,p->birtnday.month,p->birtnday.day,p->score.c_language,p->score.math,p->score.Russian,p->score.Russian_hearing,p->score.professional,p->score.politics,p->remark); else if(p->birtnday.month<10&&p->birtnday.day>=10) printf("%d.%s %s %s %d.0%d.%d %.2f %.2f %.2f %.2f %.2f %.2f %s\n",j,p->number,p->name,p->sex,p->birtnday.year,p->birtnday.month,p->birtnday.day,p->score.c_language,p->score.math,p->score.Russian,p->score.Russian_hearing,p->score.professional,p->score.politics,p->remark); else if(p->birtnday.month>=10&&p->birtnday.day<10) printf("%d.%s %s %s %d.%d.0%d %.2f %.2f %.2f %.2f %.2f %.2f %s\n",j,p->number,p->name,p->sex,p->birtnday.year,p->birtnday.month,p->birtnday.day,p->score.c_language,p->score.math,p->score.Russian,p->score.Russian_hearing,p->score.professional,p->score.politics,p->remark); else printf("%d.%s %s %s %d.%d.%d %.2f %.2f %.2f %.2f %.2f %.2f %s\n",j,p->number,p->name,p->sex,p->birtnday.year,p->birtnday.month,p->birtnday.day,p->score.c_language,p->score.math,p->score.Russian,p->score.Russian_hearing,p->score.professional,p->score.politics,p->remark); i++; p->num=j; } p=p->next; } if(j==0) { toxy(48,i); printf("您輸入的信息不存在!按0返回主菜單,1返回上一級菜單,2重新查找"); while(1) { t=getch(); if(t=='0') { menu(); } else if(t=='1') { delete_information(); } else if(t=='2') { break; } } if(t=='2') continue; } while(1) { toxy(50,i); printf("請輸入您要刪除的信息的標(biāo)號:"); scanf("%d",&key); getchar(); i++; if(key<=j) //如果c<=j,即輸入正確 break; else if(key>j) //否則,輸入錯誤 { toxy(50,i); printf("沒有找到您所要刪除的信息,請重新輸入!"); i++; Sleep(500); //暫停0.5秒 } } toxy(46,16); printf("-------------------------"); toxy(46,17); printf("| |"); toxy(46,18); printf("| 確認(rèn)刪除? |"); toxy(46,19); printf("| 1.確認(rèn) 2.取消 |"); toxy(46,20); printf("| |"); toxy(46,21); printf("-------------------------"); while(1) { p=head; pre=NULL; c=getch(); if(c=='1') { while(p!=NULL&&p->num!=key) { pre=p; p=p->next; } if(p!=NULL) { if(pre==NULL) head=head->next; else pre->next=p->next; } free(p); break; } else if(c=='2') delete_number(); } system("cls"); toxy(45,10); printf("正在刪除...."); fp=fopen("student","wb"); if(fp==NULL) { printf("cannot open file"); } if(head!=NULL&&fwrite(head,N,1,fp)!=1) { printf("write error"); } fclose(fp); if(head!=NULL) { p=head->next; fp=fopen("student","ab"); if(fp==NULL) { printf("cannot open file"); } while(p!=NULL) { if(fwrite(p,N,1,fp)!=1) { printf("write error"); } p=p->next; } fclose(fp); } Sleep(500); system("cls"); toxy(45,10); printf("刪除成功!正在返回...."); Sleep(500); delete_information(); }while(1); } void print_information() //輸出信息 { system("cls"); color(11); Stup head,p; int i=11; head=ss(); p=head; toxy(45,6); printf("-----學(xué)生檔案管理系統(tǒng)-----"); toxy(20,8); printf("----------------------------------------------------------------------------------------------"); toxy(20,9); printf("學(xué)號 姓名 性別 出生--日期 c語言 高 數(shù) 俄 語 俄語聽力 專業(yè)導(dǎo)論 政 治 備注"); toxy(20,10); printf("----------------------------------------------------------------------------------------------"); while(p!=NULL) { toxy(20,i); if(p->birtnday.month<10&&p->birtnday.day<10) printf("%s %s %s %d.0%d.0%d %.2f %.2f %.2f %.2f %.2f %.2f %s\n",p->number,p->name,p->sex,p->birtnday.year,p->birtnday.month,p->birtnday.day,p->score.c_language,p->score.math,p->score.Russian,p->score.Russian_hearing,p->score.professional,p->score.politics,p->remark); else if(p->birtnday.month<10&&p->birtnday.day>=10) printf("%s %s %s %d.0%d.%d %.2f %.2f %.2f %.2f %.2f %.2f %s\n",p->number,p->name,p->sex,p->birtnday.year,p->birtnday.month,p->birtnday.day,p->score.c_language,p->score.math,p->score.Russian,p->score.Russian_hearing,p->score.professional,p->score.politics,p->remark); else if(p->birtnday.month>=10&&p->birtnday.day<10) printf("%s %s %s %d.%d.0%d %.2f %.2f %.2f %.2f %.2f %.2f %s\n",p->number,p->name,p->sex,p->birtnday.year,p->birtnday.month,p->birtnday.day,p->score.c_language,p->score.math,p->score.Russian,p->score.Russian_hearing,p->score.professional,p->score.politics,p->remark); else printf("%s %s %s %d.%d.%d %.2f %.2f %.2f %.2f %.2f %.2f %s\n",p->number,p->name,p->sex,p->birtnday.year,p->birtnday.month,p->birtnday.day,p->score.c_language,p->score.math,p->score.Russian,p->score.Russian_hearing,p->score.professional,p->score.politics,p->remark); i++; p=p->next; } toxy(45,i); printf("按任意鍵返回主菜單!"); getch(); } void find_information() //查找信息 { do { system("cls"); char t; color(10); toxy(45,6); printf("-----學(xué)生檔案管理系統(tǒng)-----"); toxy(50,7); printf("查找信息"); toxy(48,9); printf("1) 學(xué)號查詢"); toxy(48,11); printf("2) 姓名查詢"); toxy(48,13); printf("按0返回主菜單"); t=getch(); switch(t) { case '0':menu();break; case '1':find_number_information();break; case '2':find_name_information();break; default :break; } }while(1); } void find_number_information() //按學(xué)號查找 { do { system("cls"); color(10); char number[10]; char t; int i=11,j=0; Stup head,p; toxy(48,9); printf("請輸入你要查找的學(xué)生的學(xué)號:"); gets(number); head=ss(); p=head; toxy(45,6); printf("-----學(xué)生檔案管理系統(tǒng)-----"); toxy(20,8); printf("----------------------------------------------------------------------------------------------"); toxy(20,9); printf("學(xué)號 姓名 性別 出生--日期 c語言 高 數(shù) 俄 語 俄語聽力 專業(yè)導(dǎo)論 政 治 備注"); toxy(20,10); printf("----------------------------------------------------------------------------------------------"); while(p!=NULL) { if(strcmp(p->number,number)==0) { toxy(20,i); if(p->birtnday.month<10&&p->birtnday.day<10) printf("%s %s %s %d.0%d.0%d %.2f %.2f %.2f %.2f %.2f %.2f %s\n",p->number,p->name,p->sex,p->birtnday.year,p->birtnday.month,p->birtnday.day,p->score.c_language,p->score.math,p->score.Russian,p->score.Russian_hearing,p->score.professional,p->score.politics,p->remark); else if(p->birtnday.month<10&&p->birtnday.day>=10) printf("%s %s %s %d.0%d.%d %.2f %.2f %.2f %.2f %.2f %.2f %s\n",p->number,p->name,p->sex,p->birtnday.year,p->birtnday.month,p->birtnday.day,p->score.c_language,p->score.math,p->score.Russian,p->score.Russian_hearing,p->score.professional,p->score.politics,p->remark); else if(p->birtnday.month>=10&&p->birtnday.day<10) printf("%s %s %s %d.%d.0%d %.2f %.2f %.2f %.2f %.2f %.2f %s\n",p->number,p->name,p->sex,p->birtnday.year,p->birtnday.month,p->birtnday.day,p->score.c_language,p->score.math,p->score.Russian,p->score.Russian_hearing,p->score.professional,p->score.politics,p->remark); else printf("%s %s %s %d.%d.%d %.2f %.2f %.2f %.2f %.2f %.2f %s\n",p->number,p->name,p->sex,p->birtnday.year,p->birtnday.month,p->birtnday.day,p->score.c_language,p->score.math,p->score.Russian,p->score.Russian_hearing,p->score.professional,p->score.politics,p->remark); i++; j++; } p=p->next; } if(j==0) { toxy(48,i); printf("您輸入的信息不存在!"); } toxy(48,i+1); printf("按0繼續(xù)查找,按1返回"); while(1) { t=getch(); if(t=='0') { break; } else if(t=='1') { find_information(); } } }while(1); } void find_name_information() //按姓名查找 { do { system("cls"); color(10); char name[10]; char t; int i=11,j=0; Stup head,p; toxy(48,9); printf("請輸入你要查找的學(xué)生的姓名:"); gets(name); head=ss(); p=head; toxy(45,6); printf("-----學(xué)生檔案管理系統(tǒng)-----"); toxy(20,8); printf("----------------------------------------------------------------------------------------------"); toxy(20,9); printf("學(xué)號 姓名 性別 出生--日期 c語言 高 數(shù) 俄 語 俄語聽力 專業(yè)導(dǎo)論 政 治 備注"); toxy(20,10); printf("----------------------------------------------------------------------------------------------"); while(p!=NULL) { if(strcmp(p->name,name)==0) { toxy(20,i); if(p->birtnday.month<10&&p->birtnday.day<10) printf("%s %s %s %d.0%d.0%d %.2f %.2f %.2f %.2f %.2f %.2f %s\n",p->number,p->name,p->sex,p->birtnday.year,p->birtnday.month,p->birtnday.day,p->score.c_language,p->score.math,p->score.Russian,p->score.Russian_hearing,p->score.professional,p->score.politics,p->remark); else if(p->birtnday.month<10&&p->birtnday.day>=10) printf("%s %s %s %d.0%d.%d %.2f %.2f %.2f %.2f %.2f %.2f %s\n",p->number,p->name,p->sex,p->birtnday.year,p->birtnday.month,p->birtnday.day,p->score.c_language,p->score.math,p->score.Russian,p->score.Russian_hearing,p->score.professional,p->score.politics,p->remark); else if(p->birtnday.month>=10&&p->birtnday.day<10) printf("%s %s %s %d.%d.0%d %.2f %.2f %.2f %.2f %.2f %.2f %s\n",p->number,p->name,p->sex,p->birtnday.year,p->birtnday.month,p->birtnday.day,p->score.c_language,p->score.math,p->score.Russian,p->score.Russian_hearing,p->score.professional,p->score.politics,p->remark); else printf("%s %s %s %d.%d.%d %.2f %.2f %.2f %.2f %.2f %.2f %s\n",p->number,p->name,p->sex,p->birtnday.year,p->birtnday.month,p->birtnday.day,p->score.c_language,p->score.math,p->score.Russian,p->score.Russian_hearing,p->score.professional,p->score.politics,p->remark); i++; j++; } p=p->next; } if(j==0) { toxy(48,i); printf("您輸入的信息不存在!"); } toxy(48,i+1); printf("按0繼續(xù)查找,按1返回"); while(1) { t=getch(); if(t=='0') { break; } else if(t=='1') { find_information(); } } }while(1); } void assignment() //將鏈表的內(nèi)容賦值給一個結(jié)構(gòu)體數(shù)組 { Stup head,p; head=ss(); p=head; int i=0; while(p!=NULL) { strcpy(total[i].number,p->number); strcpy(total[i].name,p->name); strcpy(total[i].sex,p->sex); total[i].c_language=p->score.c_language; total[i].math=p->score.math; total[i].Russian=p->score.Russian; total[i].Russian_hearing=p->score.Russian_hearing; total[i].professional=p->score.professional; total[i].politics=p->score.politics; total[i].sum=total[i].c_language+total[i].math+total[i].Russian+total[i].Russian_hearing+total[i].professional+total[i].politics; i++; p=p->next; } len=i; } void statistics_information() //數(shù)據(jù)統(tǒng)計(jì) { do { system("cls"); color(6); char t; toxy(45,6); printf("-----學(xué)生檔案管理系統(tǒng)-----"); toxy(50,7); printf("數(shù)據(jù)統(tǒng)計(jì)"); toxy(48,9); printf("1) 平均分"); toxy(48,11); printf("2) 總分排名"); toxy(48,13); printf("3) 各學(xué)科不及格人數(shù)"); toxy(48,15); printf("4) 各科成績分布分析"); toxy(45,17); printf("按0返回主菜單"); t=getch(); switch(t) { case '0':menu();break; case '1':average_score();break; case '2':total_score_ranked();break; case '3':fail_numbers();break; case '4':grade_table();break; default :break; } }while(1); } void average_score() //平均分 { system("cls"); color(10); float sum_c=0,sum_math=0,sum_Russian=0,sum_Russian_hearing=0,sum_professional=0,sum_politics=0; float average_c,average_math,average_Russian,average_Russian_hearing,average_professional,average_politics; int i=0; Stup head,p; head=ss(); p=head; while(p!=NULL) { sum_c+=p->score.c_language; sum_math+=p->score.math; sum_Russian+=p->score.Russian; sum_Russian_hearing+=p->score.Russian_hearing; sum_professional+=p->score.professional; sum_politics+=p->score.politics; p=p->next; i++; } average_c=sum_c*1.0/i; average_math=sum_math*1.0/i; average_Russian=sum_Russian*1.0/i; average_Russian_hearing=sum_Russian_hearing*1.0/i; average_professional=sum_professional*1.0/i; average_politics=sum_politics*1.0/i; toxy(45,6); printf("-----學(xué)生檔案管理系統(tǒng)-----"); toxy(48,7); printf("各學(xué)科平均分"); toxy(30,8); printf("----------------------------------------------------"); toxy(30,9); printf(" c語言 高數(shù) 俄語 俄語聽力 專業(yè)導(dǎo)論 政治"); toxy(30,10); printf("----------------------------------------------------"); toxy(30,11); printf(" %.2f %.2f %.2f %.2f %.2f %.2f",average_c,average_math,average_Russian,average_Russian_hearing,average_professional,average_politics); toxy(45,12); printf("總?cè)藬?shù)為:%d",i); toxy(50,13); printf("按任意鍵返回主菜單"); getch(); } void total_score_ranked() //總分排名 { system("cls"); color(10); assignment(); int j,k=11; qsort(total,len,sizeof(Total),cmp); //快速排序 toxy(45,6); printf("-----學(xué)生檔案管理系統(tǒng)-----"); toxy(48,7); printf("總分排名"); toxy(20,8); printf("--------------------------------------------------------------------------------------------"); toxy(20,9); printf("學(xué)號 姓名 性別 c語言 高 數(shù) 俄 語 俄語聽力 專業(yè)導(dǎo)論 政 治 總分 名次"); toxy(20,10); printf("--------------------------------------------------------------------------------------------"); for(j=0;j<len;j++) { toxy(20,k); printf("%s %s %s %.2f %.2f %.2f %.2f %.2f %.2f %.2f %d\n",total[j].number,total[j].name,total[j].sex,total[j].c_language,total[j].math,total[j].Russian,total[j].Russian_hearing,total[j].professional,total[j].politics,total[j].sum,j+1); k++; } toxy(45,k); printf("按任意鍵返回主菜單"); getch(); } void fail_numbers() //各科不及格人數(shù) { system("cls"); color(10); int fail_c=0,fail_math=0,fail_Russian=0,fail_Russian_hearing=0,fail_professional=0,fail_politics=0; int i; assignment(); for(i=0;i<len;i++) { if(total[i].c_language<60) fail_c++; if(total[i].math<60) fail_math++; if(total[i].Russian<60) fail_Russian++; if(total[i].Russian_hearing<60) fail_Russian_hearing++; if(total[i].professional<60) fail_professional++; if(total[i].politics<60) fail_politics++; } toxy(45,6); printf("-----學(xué)生檔案管理系統(tǒng)-----"); toxy(48,7); printf("各科不及格人數(shù)"); toxy(30,8); printf("-----------------------------------------------------"); toxy(30,9); printf("c語言 高 數(shù) 俄 語 俄語聽力 專業(yè)導(dǎo)論 政 治"); toxy(30,10); printf("-----------------------------------------------------"); toxy(30,11); printf("%-10d%-10d%-10d%-10d%-10d%-10d",fail_c,fail_math,fail_Russian,fail_Russian_hearing,fail_professional,fail_politics); toxy(45,12); printf("請按任意鍵返回"); getch(); } void grade_table() //各科各分?jǐn)?shù)段人數(shù)信息統(tǒng)計(jì) { do { system("cls"); color(10); char t; toxy(45,6); printf("-----學(xué)生檔案管理系統(tǒng)-----"); toxy(50,7); printf("各分?jǐn)?shù)段統(tǒng)計(jì)"); toxy(48,9); printf("(1) c語言"); toxy(48,11); printf("(2) 高等數(shù)學(xué)"); toxy(48,13); printf("(3) 俄語"); toxy(48,15); printf("(4) 俄語聽力"); toxy(48,17); printf("(5) 專業(yè)導(dǎo)論"); toxy(48,19); printf("(6) 政治"); toxy(48,21); printf("按0返回上一級"); t=getch(); switch(t) { case '0':statistics_information();break; case '1':analyze_c();break; case '2':analyze_math();break; case '3':analyze_Russian();break; case '4':analyze_Russian_hearing();break; case '5':analyze_professional();break; case '6':analyze_politics();break; default :break; } }while(1); } void analyze_c() //c語言 { system("cls"); color(11); assignment(); qsort(total,len,sizeof(Total),cmp1); //快速排序 int numbers_A=0,numbers_B=0,numbers_C=0,numbers_D=0,numbers_E=0; int i,j,k=12; for(i=0;i<len;i++) { switch((int)(total[i].c_language/10)) { case 10: case 9:numbers_A++;break; case 8:numbers_B++;break; case 7:numbers_C++;break; case 6:numbers_D++;break; default:numbers_E++;break; } } toxy(45,6); printf("-----學(xué)生檔案管理系統(tǒng)-----"); toxy(50,7); printf("c語言--各分?jǐn)?shù)段統(tǒng)計(jì)"); toxy(36,9); printf("-------------------------------------------------"); toxy(36,10); printf("學(xué)號 姓名 性別 分?jǐn)?shù)"); toxy(36,11); printf("-------------------------------------------------"); toxy(18,12); printf("90~100人數(shù)為:%d",numbers_A); for(j=0;j<numbers_A;j++) { toxy(36,k); printf("%s %s %s %.2f",total[j].number,total[j].name,total[j].sex,total[j].c_language); k++; } k++; toxy(18,k); printf("80~90人數(shù)為:%d",numbers_B); for(j=numbers_A;j<numbers_A+numbers_B;j++) { toxy(36,k); printf("%s %s %s %.2f",total[j].number,total[j].name,total[j].sex,total[j].c_language); k++; } k++; toxy(18,k); printf("70~80人數(shù)為:%d",numbers_C); for(j=numbers_A+numbers_B;j<numbers_A+numbers_B+numbers_C;j++) { toxy(36,k); printf("%s %s %s %.2f",total[j].number,total[j].name,total[j].sex,total[j].c_language); k++; } k++; toxy(18,k); printf("60~70人數(shù)為:%d",numbers_D); for(j=numbers_A+numbers_B+numbers_C;j<numbers_A+numbers_B+numbers_C+numbers_D;j++) { toxy(36,k); printf("%s %s %s %.2f",total[j].number,total[j].name,total[j].sex,total[j].c_language); k++; } k++; toxy(18,k); printf("0~60人數(shù)為:%d",numbers_E); for(j=numbers_A+numbers_B+numbers_C+numbers_D;j<len;j++) { toxy(36,k); printf("%s %s %s %.2f",total[j].number,total[j].name,total[j].sex,total[j].c_language); k++; } toxy(48,k); printf("按任意鍵返回上一級"); getch(); } void analyze_math() //高數(shù) { system("cls"); color(11); assignment(); qsort(total,len,sizeof(Total),cmp2); //快速排序 int numbers_A=0,numbers_B=0,numbers_C=0,numbers_D=0,numbers_E=0; int i,j,k=12; for(i=0;i<len;i++) { switch((int)(total[i].math/10)) { case 10: case 9:numbers_A++;break; case 8:numbers_B++;break; case 7:numbers_C++;break; case 6:numbers_D++;break; default:numbers_E++;break; } } toxy(45,6); printf("-----學(xué)生檔案管理系統(tǒng)-----"); toxy(50,7); printf("高數(shù)--各分?jǐn)?shù)段統(tǒng)計(jì)"); toxy(36,9); printf("-------------------------------------------------"); toxy(36,10); printf("學(xué)號 姓名 性別 分?jǐn)?shù)"); toxy(36,11); printf("-------------------------------------------------"); toxy(18,12); printf("90~100人數(shù)為:%d",numbers_A); for(j=0;j<numbers_A;j++) { toxy(36,k); printf("%s %s %s %.2f",total[j].number,total[j].name,total[j].sex,total[j].math); k++; } k++; toxy(18,k); printf("80~90人數(shù)為:%d",numbers_B); for(j=numbers_A;j<numbers_A+numbers_B;j++) { toxy(36,k); printf("%s %s %s %.2f",total[j].number,total[j].name,total[j].sex,total[j].math); k++; } k++; toxy(18,k); printf("70~80人數(shù)為:%d",numbers_C); for(j=numbers_A+numbers_B;j<numbers_A+numbers_B+numbers_C;j++) { toxy(36,k); printf("%s %s %s %.2f",total[j].number,total[j].name,total[j].sex,total[j].math); k++; } k++; toxy(18,k); printf("60~70人數(shù)為:%d",numbers_D); for(j=numbers_A+numbers_B+numbers_C;j<numbers_A+numbers_B+numbers_C+numbers_D;j++) { toxy(36,k); printf("%s %s %s %.2f",total[j].number,total[j].name,total[j].sex,total[j].math); k++; } k++; toxy(18,k); printf("0~60人數(shù)為:%d",numbers_E); for(j=numbers_A+numbers_B+numbers_C+numbers_D;j<len;j++) { toxy(36,k); printf("%s %s %s %.2f",total[j].number,total[j].name,total[j].sex,total[j].math); k++; } toxy(48,k); printf("按任意鍵返回上一級"); getch(); } void analyze_Russian() //俄語 { system("cls"); color(11); assignment(); qsort(total,len,sizeof(Total),cmp3); //快速排序 int numbers_A=0,numbers_B=0,numbers_C=0,numbers_D=0,numbers_E=0; int i,j,k=12; for(i=0;i<len;i++) { switch((int)(total[i].Russian/10)) { case 10: case 9:numbers_A++;break; case 8:numbers_B++;break; case 7:numbers_C++;break; case 6:numbers_D++;break; default:numbers_E++;break; } } toxy(45,6); printf("-----學(xué)生檔案管理系統(tǒng)-----"); toxy(50,7); printf("俄語--各分?jǐn)?shù)段統(tǒng)計(jì)"); toxy(36,9); printf("-------------------------------------------------"); toxy(36,10); printf("學(xué)號 姓名 性別 分?jǐn)?shù)"); toxy(36,11); printf("-------------------------------------------------"); toxy(18,12); printf("90~100人數(shù)為:%d",numbers_A); for(j=0;j<numbers_A;j++) { toxy(36,k); printf("%s %s %s %.2f",total[j].number,total[j].name,total[j].sex,total[j].Russian); k++; } k++; toxy(18,k); printf("80~90人數(shù)為:%d",numbers_B); for(j=numbers_A;j<numbers_A+numbers_B;j++) { toxy(36,k); printf("%s %s %s %.2f",total[j].number,total[j].name,total[j].sex,total[j].Russian); k++; } k++; toxy(18,k); printf("70~80人數(shù)為:%d",numbers_C); for(j=numbers_A+numbers_B;j<numbers_A+numbers_B+numbers_C;j++) { toxy(36,k); printf("%s %s %s %.2f",total[j].number,total[j].name,total[j].sex,total[j].Russian); k++; } k++; toxy(18,k); printf("60~70人數(shù)為:%d",numbers_D); for(j=numbers_A+numbers_B+numbers_C;j<numbers_A+numbers_B+numbers_C+numbers_D;j++) { toxy(36,k); printf("%s %s %s %.2f",total[j].number,total[j].name,total[j].sex,total[j].Russian); k++; } k++; toxy(18,k); printf("0~60人數(shù)為:%d",numbers_E); for(j=numbers_A+numbers_B+numbers_C+numbers_D;j<len;j++) { toxy(36,k); printf("%s %s %s %.2f",total[j].number,total[j].name,total[j].sex,total[j].Russian); k++; } toxy(48,k); printf("按任意鍵返回上一級"); getch(); } void analyze_Russian_hearing() //俄語聽力 { system("cls"); color(11); assignment(); qsort(total,len,sizeof(Total),cmp4); //快速排序 int numbers_A=0,numbers_B=0,numbers_C=0,numbers_D=0,numbers_E=0; int i,j,k=12; for(i=0;i<len;i++) { switch((int)(total[i].Russian_hearing/10)) { case 10: case 9:numbers_A++;break; case 8:numbers_B++;break; case 7:numbers_C++;break; case 6:numbers_D++;break; default:numbers_E++;break; } } toxy(45,6); printf("-----學(xué)生檔案管理系統(tǒng)-----"); toxy(50,7); printf("俄語聽力--各分?jǐn)?shù)段統(tǒng)計(jì)"); toxy(36,9); printf("-------------------------------------------------"); toxy(36,10); printf("學(xué)號 姓名 性別 分?jǐn)?shù)"); toxy(36,11); printf("-------------------------------------------------"); toxy(18,12); printf("90~100人數(shù)為:%d",numbers_A); for(j=0;j<numbers_A;j++) { toxy(36,k); printf("%s %s %s %.2f",total[j].number,total[j].name,total[j].sex,total[j].Russian_hearing); k++; } k++; toxy(18,k); printf("80~90人數(shù)為:%d",numbers_B); for(j=numbers_A;j<numbers_A+numbers_B;j++) { toxy(36,k); printf("%s %s %s %.2f",total[j].number,total[j].name,total[j].sex,total[j].Russian_hearing); k++; } k++; toxy(18,k); printf("70~80人數(shù)為:%d",numbers_C); for(j=numbers_A+numbers_B;j<numbers_A+numbers_B+numbers_C;j++) { toxy(36,k); printf("%s %s %s %.2f",total[j].number,total[j].name,total[j].sex,total[j].Russian_hearing); k++; } k++; toxy(18,k); printf("60~70人數(shù)為:%d",numbers_D); for(j=numbers_A+numbers_B+numbers_C;j<numbers_A+numbers_B+numbers_C+numbers_D;j++) { toxy(36,k); printf("%s %s %s %.2f",total[j].number,total[j].name,total[j].sex,total[j].Russian_hearing); k++; } k++; toxy(18,k); printf("0~60人數(shù)為:%d",numbers_E); for(j=numbers_A+numbers_B+numbers_C+numbers_D;j<len;j++) { toxy(36,k); printf("%s %s %s %.2f",total[j].number,total[j].name,total[j].sex,total[j].Russian_hearing); k++; } toxy(48,k); printf("按任意鍵返回上一級"); getch(); } void analyze_professional() //專業(yè)導(dǎo)論 { system("cls"); color(11); assignment(); qsort(total,len,sizeof(Total),cmp5); //快速排序 int numbers_A=0,numbers_B=0,numbers_C=0,numbers_D=0,numbers_E=0; int i,j,k=12; for(i=0;i<len;i++) { switch((int)(total[i].professional/10)) { case 10: case 9:numbers_A++;break; case 8:numbers_B++;break; case 7:numbers_C++;break; case 6:numbers_D++;break; default:numbers_E++;break; } } toxy(45,6); printf("-----學(xué)生檔案管理系統(tǒng)-----"); toxy(50,7); printf("專業(yè)導(dǎo)論--各分?jǐn)?shù)段統(tǒng)計(jì)"); toxy(36,9); printf("-------------------------------------------------"); toxy(36,10); printf("學(xué)號 姓名 性別 分?jǐn)?shù)"); toxy(36,11); printf("-------------------------------------------------"); toxy(18,12); printf("90~100人數(shù)為:%d",numbers_A); for(j=0;j<numbers_A;j++) { toxy(36,k); printf("%s %s %s %.2f",total[j].number,total[j].name,total[j].sex,total[j].professional); k++; } k++; toxy(18,k); printf("80~90人數(shù)為:%d",numbers_B); for(j=numbers_A;j<numbers_A+numbers_B;j++) { toxy(36,k); printf("%s %s %s %.2f",total[j].number,total[j].name,total[j].sex,total[j].professional); k++; } k++; toxy(18,k); printf("70~80人數(shù)為:%d",numbers_C); for(j=numbers_A+numbers_B;j<numbers_A+numbers_B+numbers_C;j++) { toxy(36,k); printf("%s %s %s %.2f",total[j].number,total[j].name,total[j].sex,total[j].professional); k++; } k++; toxy(18,k); printf("60~70人數(shù)為:%d",numbers_D); for(j=numbers_A+numbers_B+numbers_C;j<numbers_A+numbers_B+numbers_C+numbers_D;j++) { toxy(36,k); printf("%s %s %s %.2f",total[j].number,total[j].name,total[j].sex,total[j].professional); k++; } k++; toxy(18,k); printf("0~60人數(shù)為:%d",numbers_E); for(j=numbers_A+numbers_B+numbers_C+numbers_D;j<len;j++) { toxy(36,k); printf("%s %s %s %.2f",total[j].number,total[j].name,total[j].sex,total[j].professional); k++; } toxy(48,k); printf("按任意鍵返回上一級"); getch(); } void analyze_politics() //政治 { system("cls"); color(11); assignment(); qsort(total,len,sizeof(Total),cmp6); //快速排序 int numbers_A=0,numbers_B=0,numbers_C=0,numbers_D=0,numbers_E=0; int i,j,k=12; for(i=0;i<len;i++) { switch((int)(total[i].politics/10)) { case 10: case 9:numbers_A++;break; case 8:numbers_B++;break; case 7:numbers_C++;break; case 6:numbers_D++;break; default:numbers_E++;break; } } toxy(45,6); printf("-----學(xué)生檔案管理系統(tǒng)-----"); toxy(50,7); printf("政治--各分?jǐn)?shù)段統(tǒng)計(jì)"); toxy(36,9); printf("-------------------------------------------------"); toxy(36,10); printf("學(xué)號 姓名 性別 分?jǐn)?shù)"); toxy(36,11); printf("-------------------------------------------------"); toxy(18,12); printf("90~100人數(shù)為:%d",numbers_A); for(j=0;j<numbers_A;j++) { toxy(36,k); printf("%s %s %s %.2f",total[j].number,total[j].name,total[j].sex,total[j].politics); k++; } k++; toxy(18,k); printf("80~90人數(shù)為:%d",numbers_B); for(j=numbers_A;j<numbers_A+numbers_B;j++) { toxy(36,k); printf("%s %s %s %.2f",total[j].number,total[j].name,total[j].sex,total[j].politics); k++; } k++; toxy(18,k); printf("70~80人數(shù)為:%d",numbers_C); for(j=numbers_A+numbers_B;j<numbers_A+numbers_B+numbers_C;j++) { toxy(36,k); printf("%s %s %s %.2f",total[j].number,total[j].name,total[j].sex,total[j].politics); k++; } k++; toxy(18,k); printf("60~70人數(shù)為:%d",numbers_D); for(j=numbers_A+numbers_B+numbers_C;j<numbers_A+numbers_B+numbers_C+numbers_D;j++) { toxy(36,k); printf("%s %s %s %.2f",total[j].number,total[j].name,total[j].sex,total[j].politics); k++; } k++; toxy(18,k); printf("0~60人數(shù)為:%d",numbers_E); for(j=numbers_A+numbers_B+numbers_C+numbers_D;j<len;j++) { toxy(36,k); printf("%s %s %s %.2f",total[j].number,total[j].name,total[j].sex,total[j].politics); k++; } toxy(48,k); printf("按任意鍵返回上一級"); getch(); } void save_information(Stup p) //將p所指向的內(nèi)容寫入文件中 { FILE *fp; fp=fopen("student","ab+"); if(fp==NULL) { printf("cannot open file"); } if(fwrite(p,N,1,fp)!=1) { printf("write error"); } fclose(fp); } void over() //退出軟件 { char t; toxy(45,11); printf("--------------------------"); toxy(45,12); printf("| 您確定要退出嗎? |"); toxy(45,14); printf("| 1.確定 2.取消 |"); toxy(45,15); printf("--------------------------"); while(1) { t=getch(); //輸入t switch(t) { case '1': system("cls"); color(6); toxy(48,10); printf("正在安全退出...."); Sleep(1000); //暫停1秒 system("cls"); color(8); toxy(48,10); printf("已安全退出軟件"); toxy(48,12); printf("謝謝使用!"); toxy(48,14); printf("by-by^_^"); free(password_head); exit(0); break; //終止程序 case '2': menu(); break; //調(diào)用函數(shù),進(jìn)入菜單 default :break; } } } main() //簡單明了的主函數(shù)^_^ { HideCursor(); signin(); //登錄界面 }
以上就是“C語言如何實(shí)現(xiàn)學(xué)生檔案管理系統(tǒng)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。