C語言學(xué)籍管理系統(tǒng)源代碼
更新時(shí)間:2018年03月22日 08:35:31 作者:唯一
這篇文章主要為大家詳細(xì)介紹了C語言學(xué)籍管理系統(tǒng)源代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
C語言學(xué)籍管理系統(tǒng),整理一份,供大家參考,具體內(nèi)容如下
#include <stdio.h> #include <conio.h> #include <stdlib.h> #define N 100 void mycreat(); void mynewcreat(); void mydisplay(); void myretake(); void myselect(); void mynumsort(); void mysort(); void myprint1(); void myprint2(); void myprint3(); void myfenduan(); struct student { char name[10]; int grade[5]; double ave; char num[10]; }; void myprint1() { char choose='\0',yes_no='\0'; do { system("cls"); printf (" |---------------------------|\n"); printf (" | 請(qǐng)輸入選項(xiàng)編號(hào)(0-4) |\n"); printf (" |---------------------------|\n"); printf (" | 1----------錄入成績 |\n"); printf (" | 2----------統(tǒng)計(jì)成績 |\n"); printf (" | 3----------處理學(xué)籍 |\n"); printf (" | 4----------顯示數(shù)據(jù) |\n"); printf (" | 0----------退出系統(tǒng) |\n"); printf (" |---------------------------|\n"); printf(" "); choose=getche(); switch(choose) { case '1':mycreat(); break; case '2':myprint2(); break; case '3':myprint3(); break; case '4':mydisplay(); break; case '0':break; default :printf("\n %c為非法選項(xiàng)!\n",choose); } if(choose=='0') { printf("\n"); printf("感謝您的使用!\n"); break; } printf("\n 要繼續(xù)選擇嗎(Y/N)?\n"); do { yes_no=getch( ); } while(yes_no!='Y' && yes_no!='y'&& yes_no!='N' && yes_no!='n'); } while(yes_no=='Y' || yes_no=='y'); } void myprint2() { char choose='\0',yes_no='\0'; do { system("cls"); printf (" |-----------------------------------|\n"); printf (" | 請(qǐng)輸入選項(xiàng)編號(hào)(0-4) |\n"); printf (" |-----------------------------------|\n"); printf (" | 1----------按學(xué)號(hào)排序 |\n"); printf (" | 2----------計(jì)算平均分并排序 |\n"); printf (" | 3----------統(tǒng)計(jì)分?jǐn)?shù)段 |\n"); printf (" | 4----------返回 |\n"); printf (" | 0----------退出系統(tǒng) |\n"); printf (" |-----------------------------------|\n"); printf(" "); choose=getche(); switch(choose) { case '1':mynumsort(); break; case '2':mysort(); break; case '3':myfenduan(); break; case '4':myprint1(); break; case '0':break; default :printf("\n %c為非法選項(xiàng)!\n",choose); } if(choose=='0') { printf("\n"); printf("感謝您的使用!\n"); break; } printf("\n 要繼續(xù)選擇嗎(Y/N)?\n"); do { yes_no=getch( ); } while(yes_no!='Y' && yes_no!='y'&& yes_no!='N' && yes_no!='n'); } while(yes_no=='Y' || yes_no=='y'); } void myprint3() { char choose='\0',yes_no='\0'; do { system("cls"); printf (" |---------------------------------------|\n"); printf (" | 請(qǐng)輸入選項(xiàng)編號(hào)(0-4) |\n"); printf (" |---------------------------------------|\n"); printf (" | 1----------生成并打印補(bǔ)考通知單 |\n"); printf (" | 2----------生成并打印退學(xué)通知單 |\n"); printf (" | 3----------生成并打印新名冊(cè) |\n"); printf (" | 4----------返回 |\n"); printf (" | 0----------退出系統(tǒng) |\n"); printf (" |---------------------------------------|\n"); printf(" "); choose=getche(); switch(choose) { case '1':myretake(); break; case '2':myselect(); break; case '3':mynewcreat(); break; case '4':myprint1(); break; case '0':break; default :printf("\n %c為非法選項(xiàng)!\n",choose); } if(choose=='0') { printf("\n"); printf("感謝您的使用!\n"); break; } printf("\n 要繼續(xù)選擇嗎(Y/N)?\n"); do { yes_no=getch( ); } while(yes_no!='Y' && yes_no!='y'&& yes_no!='N' && yes_no!='n'); } while(yes_no=='Y' || yes_no=='y'); } void mycreat() { int i=1,j=0; struct student temp={0}; FILE*fp=NULL; fp=fopen("d:\\yuan.dat","w"); if(fp==NULL) { printf("打開文件失?。n"); return; } system("cls"); printf("注意:輸入學(xué)號(hào)時(shí)請(qǐng)將所有位數(shù)保持一致不足位用0補(bǔ)齊。例如最大學(xué)號(hào)為1000則均保持4位有效數(shù)字。"); printf("\n 請(qǐng)輸入第1個(gè)記錄:\n"); printf(" 學(xué)號(hào)(用#結(jié)束輸入):"); do { gets(temp.num); }while(strcmp(temp.num,"")==0); printf(" 姓名(用#結(jié)束輸入):"); gets(temp.name); printf(" 請(qǐng)輸入 高數(shù) 英語 物理 編程 馬哲 5組成績(用#結(jié)束輸入): "); for(j=0;j<=4;j++) { scanf("%d",&temp.grade[j]); } while(temp.num[0]!='#'&&temp.name[0]!='#'&&temp.grade[0]!='#') { fprintf(fp,"%23s%15s",temp.num,temp.name); for(j=0;j<=4;j++) { fprintf(fp,"%5d",temp.grade[j]); } fprintf(fp,"\n"); i++; printf("\n 請(qǐng)輸入第%d個(gè)記錄:\n",i); printf(" 學(xué)號(hào)(用#結(jié)束輸入):"); do { gets(temp.num); }while(strcmp(temp.num,"")==0); printf(" 姓名(用#結(jié)束輸入):"); gets(temp.name); printf(" 請(qǐng)輸入 高數(shù) 英語 物理 編程 馬哲 5組成績 (用#結(jié)束輸入): "); for(j=0;j<=4;j++) { scanf("%8d",&temp.grade[j]); } } fclose(fp); } void mynumsort() { int i=0,j=0,k=0,n=0,grade=0,num=0,m=0,ww; struct student temp[N]={0}; struct student a; FILE *fp=NULL; FILE *fq=NULL; fp=fopen("d:\\yuan.dat","r"); if(fp==NULL) { printf("\n 打開文件失敗!\n"); return; } system("cls"); while(feof(fp)==0) { ww=fscanf(fp,"%23s%15s",temp[n].num,temp[n].name); if(ww==-1) break; for(j=0;j<5;j++) { fscanf(fp,"%d",&temp[n].grade[j]); } n++; } printf("n=%d",n); fclose(fp); printf("\n"); for(i=0; i<n; i++) { k=i; for(j=k+1; j<n; j++) if(strcmp(temp[k].num,temp[j].num)>0) k=j; a=temp[i]; temp[i]=temp[k]; temp[k]=a; } for(k=0;k<n;k++) { printf("%10s號(hào) %10s同學(xué)",temp[k].num,temp[k].name); for(m=0;m<5;m++) { printf("%5d分",temp[k].grade[m]); } printf("\n"); } if(n==0)printf("\n 文件中無記錄!\n"); else printf("\n 文件中有%d個(gè)記錄",n); fq=fopen("d:\\std.dat","w"); if(fq==NULL) { printf("打開文件失敗!\n"); exit(0); } for(i=0;i<n;i++) { fprintf(fq,"%23s%15s",temp[i].num,temp[i].name); for(j=0;j<5;j++) { fprintf(fq,"%2d",temp[i].grade[j]); } fprintf(fq,"\n"); } fclose(fq); printf("計(jì)算已完成 保存在d:\std.dat文件當(dāng)中,請(qǐng)查驗(yàn)"); } void mysort() { struct student temp[N]={0},a[N]={0}; int i=0,j=0,n=0,ww=0; FILE*fp=NULL; FILE*fq=NULL; fp=fopen("d:\\yuan.dat","r"); if(fp==NULL) { printf("打開文件失敗!\n"); exit(0); } system("cls"); while(feof(fp)==0) { ww=fscanf(fp,"%23s%15s",temp[n].num,temp[n].name); if(ww==-1) break; for(j=0;j<5;j++) { fscanf(fp,"%d",&temp[n].grade[j]); } n++; } for(i=0;i<n;i++) { for(j=0;j<5;j++) { temp[i].ave=temp[i].ave+temp[i].grade[j]; } temp[i].ave=temp[i].ave/5; } for(i=0;i<n;i++) { if(temp[i].ave<temp[i+1].ave) { a[i]=temp[i]; temp[i]=temp[i+1]; temp[i+1]=a[i]; } } fq=fopen("d:\\sort.dat","w"); if(fq==NULL) { printf("打開文件失敗!\n"); exit(0); } for(i=0;i<n;i++) { fprintf(fq,"%23s%15s%10.2f",temp[i].num,temp[i].name,temp[i].ave ); for(j=0;j<5;j++) { fprintf(fq,"%2d",temp[i].grade[j]); } fprintf(fq,"\n"); } fclose(fq); printf("計(jì)算已完成 保存在d:\sort.dat文件當(dāng)中,請(qǐng)查驗(yàn)"); } void myfenduan() { int i=0,j=0,n=0,ww; int b[N]={0},c[N]={0},d[N]={0},e[N]={0},f[N]={0}; struct student temp[N]={0}; FILE*fp=NULL; fp=fopen("d:\\yuan.dat","r"); if(fp==NULL) { printf("打開文件失敗!\n"); return; } system("cls"); while(feof(fp)==0) { ww=fscanf(fp,"%23s%15s",temp[n].num,temp[n].name); if(ww==-1) break; for(j=0;j<5;j++) { fscanf(fp,"%d",&temp[n].grade[j]); } n++; } for(i=0;i<n;i++) { for(j=0;j<5;j++) { if(temp[i].grade[j]>=90) b[j]=b[j]+1; else if(temp[i].grade[j]>=80) c[j]=c[j]+1; else if(temp[i].grade[j]>=70) d[j]=d[j]+1; else if(temp[i].grade[j]>=60) e[j]=e[j]+1; else f[j]=f[j]+1; } } printf("各門課、各分?jǐn)?shù)段學(xué)生的人數(shù)\n"); printf("________________________________________________________\n"); printf(" |90分以上 | 80~89分 | 70~79分 | 60~69分 | 60分以下 \n"); printf("--------------------------------------------------------\n"); printf("高數(shù)_____%d________%d_________%d________%d_________%d___\n",b[0],c[0],d[0],e[0],f[0]); printf("__________________________________________________\n"); printf("英語_____%d________%d_________%d________%d_________%d___\n",b[1],c[1],d[1],e[1],f[1]); printf("__________________________________________________\n"); printf("物理_____%d________%d_________%d________%d_________%d___\n",b[2],c[2],d[2],e[2],f[2]); printf("__________________________________________________\n"); printf("編程_____%d________%d_________%d________%d_________%d___\n",b[3],c[3],d[3],e[3],f[3]); printf("__________________________________________________\n"); printf("馬哲_____%d________%d_________%d________%d_________%d___\n",b[4],c[4],d[4],e[4],f[4]); printf("__________________________________________________\n"); fclose(fp); } void mydisplay() { int n=0,j=0,k=0,m=0,ww; struct student temp[N]={0}; FILE*fp=NULL; fp=fopen("d:\\yuan.dat","r"); if(fp==NULL) { printf("打開文件失?。n"); return; } system("cls"); while(feof(fp)==0) { ww=fscanf(fp,"%23s%15s",temp[n].num,temp[n].name); if(ww==-1) break; for(j=0;j<5;j++) { fscanf(fp,"%d",&temp[n].grade[j]); } n++; } for(k=0;k<n;k++) { printf("%23s %15s ",temp[k].num,temp[k].name); for(m=0;m<5;m++) { printf("%d ",temp[k].grade[m]); } printf("\n"); } if(n==0)printf("\n 文件中無記錄!\n"); else printf("\n 文件中共有%d個(gè)記錄!",n); fclose(fp); } void myretake() { int i=0,e=0,j=0,n=0,s[5]={0},ww; struct student temp[N]={0}; FILE*fp=NULL; fp=fopen("d:\\yuan.dat","r"); if(fp==NULL) { printf("打開文件失敗!\n"); return; } while(feof(fp)==0) { ww=fscanf(fp,"%23s%15s",temp[n].num,temp[n].name); if(ww==-1) break; for(j=0;j<5;j++) { fscanf(fp,"%d",&temp[n].grade[j]); } n++; } for (i=0;i<n;i++) { for(j=0;j<5;j++) { if(temp[i].grade[j]<60) s[i]++; } if(s[i]>=1 && s[i]<=3) { printf("\n"); printf("學(xué)號(hào)%10s 姓名%10s \n",temp[i].num,temp[i].name); if(temp[i].grade[0]<60) printf("%10s您的高數(shù)成績?yōu)?6d,需要補(bǔ)考,請(qǐng)于2011年2月26日上午9點(diǎn)在教學(xué)樓5023教室進(jìn)行補(bǔ)考考試\n",temp[i].name,temp[i].grade[0]); if(temp[i].grade[1]<60) printf("%10s您的英語成績?yōu)?6d,需要補(bǔ)考,請(qǐng)于2011年2月27日上午9點(diǎn)在教學(xué)樓5023教室進(jìn)行補(bǔ)考考試\n",temp[i].name,temp[i].grade[1]); if(temp[i].grade[2]<60) printf("%10s您的物理成績?yōu)?6d,需要補(bǔ)考,請(qǐng)于2011年2月28日上午9點(diǎn)在教學(xué)樓5023教室進(jìn)行補(bǔ)考考試\n",temp[i].name,temp[i].grade[2]); if(temp[i].grade[3]<60) printf("%10s您的編程成績?yōu)?6d,需要補(bǔ)考,請(qǐng)于2011年2月26日下午3點(diǎn)在教學(xué)樓5023教室進(jìn)行補(bǔ)考考試\n",temp[i].name,temp[i].grade[3]); if(temp[i].grade[4]<60) printf("%10s您的馬哲成績?yōu)?6d,需要補(bǔ)考,請(qǐng)于2011年2月28日下午3點(diǎn)在教學(xué)樓5023教室進(jìn)行補(bǔ)考考試\n",temp[i].name,temp[i].grade[4]); } } for(e=0;e<n;e++) { if(s[e]!=0) { printf("\n"); printf("以上學(xué)生需要補(bǔ)考!"); } else { printf("\n"); printf("沒有學(xué)生需要補(bǔ)考!"); } break; } } void myselect() { int i=0,k=0,s[5]={0},n=0,j=0,ww; struct student temp[N]={0}; FILE*fp=NULL; fp=fopen("d:\\yuan.dat","r"); if(fp==NULL) { printf("打開文件失??!\n"); return; } while(feof(fp)==0) { ww=fscanf(fp,"%23s%15s",temp[n].num,temp[n].name); for(j=0;j<5;j++) { ww=fscanf(fp,"%d",&temp[n].grade[j]); if(ww==-1) break; } n++; } for(i=0;i<n-1;i++) { for(k=0;k<5;k++) { if (temp[i].grade[k]<60) s[i]=s[i]+1; } if(s[i]>3) { printf("\n"); printf("學(xué)號(hào)%10s 姓名%10s 由于您不及格的科目為%d門(多于3門),因此退學(xué)。\n",temp[i].num,temp[i].name,s[i]); if (temp[i].grade[0]<60) printf("%15s您的高數(shù)成績?yōu)?6d,為不及格。\n",temp[i].name,temp[i].grade[0]); if (temp[i].grade[1]<60) printf("%15s您的英語成績?yōu)?6d,為不及格。\n",temp[i].name,temp[i].grade[1]); if (temp[i].grade[2]<60) printf("%15s您的物理成績?yōu)?6d,為不及格。\n",temp[i].name,temp[i].grade[2]); if (temp[i].grade[3]<60) printf("%15s您的編程成績?yōu)?6d,為不及格。\n",temp[i].name,temp[i].grade[3]); if (temp[i].grade[4]<60) printf("%15s您的馬哲成績?yōu)?6d,為不及格。\n",temp[i].name,temp[i].grade[4]); } } } void mynewcreat() { int i=0,k=0,s[5]={0},z[5]={0},v=0,n=0,m=0,j=0,p=0,c=0,ww; struct student temp[N]={0}; FILE*fp=NULL; FILE*fq=NULL; fp=fopen("d:\\yuan.dat","r"); if(fp==NULL) { printf("打開文件失敗!\n"); return; } while(feof(fp)==0) { ww=fscanf(fp,"%23s%15s",temp[n].num,temp[n].name); if(ww==-1) break; for(j=0;j<5;j++) { fscanf(fp,"%d",&temp[n].grade[j]); } n++; } while(i<=n) { for(k=0;k<5;k++) { if (temp[i].grade[k]<60) s[i]=s[i]+1; } for(v=0;v<5;v++) { if(temp[i].grade[v]==0) z[i]++; } if(z[i]==5) { break; } if(s[i]<=3) { i++; } if(s[i]>3) { for(c=i;c<=n;c++) { temp[c]=temp[c+1]; } s[i]=0; } } printf("\n"); printf("刪除已退學(xué)的學(xué)生后,學(xué)生名冊(cè)為:"); printf("\n"); for(p=0;p<n-1;p++) { printf("\n"); printf("%10s號(hào) %10s分 ",temp[p].num,temp[p].name); for(m=0;m<5;m++) { printf("%d ",temp[p].grade[m]); } printf("\n"); } fq=fopen("d:\\next.dat","w"); if(fq==NULL) { printf("打開文件失?。n"); exit(0); } for(i=0;i<n;i++) { fprintf(fq,"%23s%15s",temp[i].num,temp[i].name); for(j=0;j<5;j++) { fprintf(fq,"%2d",temp[i].grade[j]); } fprintf(fq,"\n"); } fclose(fq); printf("計(jì)算已完成 保存在d:\next.dat文件當(dāng)中,請(qǐng)查驗(yàn)"); } main() { myprint1(); }
有時(shí)間整理整理學(xué)過的,溫故知新。
更多學(xué)習(xí)資料請(qǐng)關(guān)注專題《管理系統(tǒng)開發(fā)》。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- C語言模擬實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)
- C語言實(shí)現(xiàn)學(xué)籍信息管理系統(tǒng)
- C語言實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)課程設(shè)計(jì)
- C語言實(shí)現(xiàn)學(xué)籍管理系統(tǒng)課程設(shè)計(jì)
- C語言實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)程序設(shè)計(jì)
- C語言實(shí)現(xiàn)學(xué)籍管理系統(tǒng)
- C語言實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)
- C語言學(xué)生學(xué)籍管理系統(tǒng)課程設(shè)計(jì)
- C語言實(shí)現(xiàn)簡單學(xué)生學(xué)籍管理系統(tǒng)
- C語言動(dòng)態(tài)鏈表實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)
相關(guān)文章
C語言實(shí)現(xiàn)文件內(nèi)容按行隨機(jī)排列的算法示例
這篇文章主要介紹了C語言實(shí)現(xiàn)文件內(nèi)容按行隨機(jī)排列的算法,涉及C語言字符串、數(shù)組遍歷與隨機(jī)數(shù)相關(guān)算法實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-09-09Qt掃盲篇之QRegularExpression正則匹配總結(jié)
QRegularExpression是Qt5.0引進(jìn)的,修復(fù)了很多bug,提高了效率,使用時(shí)建議使用QRegularExpression,下面這篇文章主要給大家介紹了關(guān)于Qt掃盲篇之QRegularExpression正則匹配的相關(guān)資料,需要的朋友可以參考下2023-03-03詳解C語言中的錯(cuò)誤報(bào)告errno與其相關(guān)應(yīng)用方法
這篇文章主要介紹了C語言中的錯(cuò)誤報(bào)告errno與其相關(guān)應(yīng)用方法,包括errno和strerror以及perror的介紹,需要的朋友可以參考下2015-08-08使用單鏈表實(shí)現(xiàn)多項(xiàng)式計(jì)算示例
這篇文章主要介紹了使用單鏈表實(shí)現(xiàn)多項(xiàng)式計(jì)算示例,需要的朋友可以參考下2014-03-03