c++ 学生成绩输入程序

合集下载

C语言学生成绩管理系统源程序文件

C语言学生成绩管理系统源程序文件

附录程序#include"stdio.h"#include<stdlib.h>#include<string.h>#include"process.h"#include"ctype.h"typedef struct{char num[10];char name[10];int chinese;int math;int english;int dianlu;double aver;}Student;Student stu[99];int shuru(Student stud[],int n)/*输入若干条记录*/{int i=0;char sign,x[10];double a=0.0;while(sign!='n'&&sign!='N'){printf("输入学生学号:");scanf("%s",stu[n+i].num);printf("输入学生:");scanf("%s",stu[n+i].name);printf("输入学生的语文、数学、英语、电路分数:");scanf("%d%d%d%d",&stu[n+i].chinese,&stu[n+i].math,&stu[n+i].english,&stu[n+i].d ianlu);a=1.0*(stu[n+i].chinese+stu[n+i].math+stu[n+i].english+stu[n+i].dianlu)/4; stu[n+i].aver=a;gets(x); /*清除多余的输入*/printf("是否继续输入?(Y/N):\n");scanf("%c",&sign);i++;}return(n+i);}void xianshi(Student stud[],int n) /*显示所有记录*/{int i ;printf("----------------------------------------------------------\n"); /*格式头*/printf("学号语文数学英语电路平均成绩 \n");printf("----------------------------------------------------------\n");for(i=0;i<n;i++){printf("%-10s%-10s%-10d%-10d%-10d%-10d%-10.2lf\n",stu[i].num,stu[i].name,stu[i].chinese,stu[i].math,stu[i].english,stu[i].dianlu,stu[i].aver); }}void xiugai(Student stud[],int n)/*修改*/{int i=0,choice=1;char x[10];while(choice!=0){ printf("请输入您要修改的学生的学号:\n");scanf("%s",x);for(i=0;;i++){if(strcmp(stu[i].num,x)==0) break;}printf("请选择您要修改的容:\n");printf(" ---------------------- \n");printf("| 请按 1 |\n");printf("| 语文请按 2 |\n");printf("| 数学分数请按 3 |\n");printf("| 英语分数请按 4 |\n");printf("| 电路请按 5 |\n");printf("| 退出请按 0|\n");printf("+----------------------+\n");printf("请输入您的选择:");scanf("%d", &choice);switch(choice){case 0:break;case 1:printf("请输入新:");scanf("%s", stu[i].name);break;case 2:printf("请输入新的语文分数:");scanf("%d", &stu[i].chinese);break;case 3:printf("请输入新的数学分数:");scanf("%d",&stu[i].math);break;case 4:printf("请输入新的英语分数:"); scanf("%d", &stu[i].english);break;case 5:printf("请输入新的电路分数:"); scanf("%d", &stu[i].dianlu);break;default:printf("\n无效选项!");break;} break;}return;}int shanchu(Student stud[],int n) /*按查找,删除一条记录*/{ char s[20];int i;int j;i=0;printf("输入要删除记录的:");scanf("%s",s);while(strcmp(stu[i].name,s)!=0&&i<n) i++;if(i==n){printf("not find!\n");return(n); }for(j=i;j<n-1;j++) /*删除操作*/{strcpy(stu[j].num,stu[j+1].num);strcpy(stu[j].name,stu[j+1].name);stu[j].chinese=stu[j+1].chinese;stu[j].math=stu[j+1].math;stu[j].english=stu[j+1].english;stu[j].dianlu=stu[j+1].dianlu;stu[j].aver=stu[j+1].aver;}printf("Delete Successed!\n");return(n-1);}void chaxun_xingming(Student stud[],int n) /*按查找并显示一个记录*/{ char s[20];int i=0;printf("输入:");scanf("%s",s);while(strcmp(stu[i].name,s)!=0&&i<n) i++; /*查找判断*/if(i==n){printf("not find!\n"); /*输入失败信息*/return; }printf("他的、学号是:%s %s\n",stu[i].name,stu[i].num); /*输出该学生信息*/ printf("语文高数英语电路平均成绩是:%d,%d,%d,%d,%lf\n",stu[i].chinese,stu[i].math,stu[i].english,stu[i].dianlu,s tu[i].aver);}void chaxun_pingjun(Student stud[],int n) /*按平均成绩查找并显示一个记录*/ { double s;int i=0;printf("输入平均成绩:");scanf("%lf",&s);while(stu[i].aver!=s && i<n) i++;if(i==n){ printf("not find!\n"); /*输入失败信息*/return;}printf("他的学号是:%s\n",stu[i].num); /*输出该学生信息*/printf("他的是:%s\n",stu[i].name);printf("他的语文、数学、英语、电路分数是:%d %d %d %d \n",stu[i].chinese,stu[i].math,stu[i].english,stu[i].dianlu); }void paixu_xuehao(Student stud[],int n) /*按学号排序*/{ int i,j,p,q,r,w;double y;char x[20],t[10];for(i=0;i<n-1;i++) /*冒泡法排序*/for(j=0;j<n-1-i;j++)if(strcmp(stud[j].num,stud[j+1].num)>0){ strcpy(t,stud[j].num);strcpy(stud[j].num,stud[j+1].num);strcpy(stud[j+1].num,t);strcpy(x,stud[j].name);strcpy(stud[j].name,stud[j+1].name);strcpy(stud[j+1].name,x);y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p;q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r;w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w;}return;}void paixu_pingjun(Student stud[],int n) /*按平均成绩排序*/{ int i,j,p,q,r,w;double y;char x[20],t[10];for(i=0;i<n-1;i++) /*冒泡法排序*/for(j=0;j<n-1-i;j++)if(stu[j].aver>stu[j+1].aver){ y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p;q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r;w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w;strcpy(x,stu[j].name);strcpy(stu[j].name,stu[j+1].name);strcpy(stu[j+1].name,x);strcpy(t,stu[j].num);strcpy(stu[j].num,stu[j+1].num);strcpy(stu[j+1].num,t);}return;}void paixu_chinese(Student stud[],int n) /*按语文成绩排序*/{ int i,j,p,q,r,w;double y;char x[20],t[10];for(i=0;i<n-1;i++) /*冒泡法排序*/for(j=0;j<n-1-i;j++)if(stu[j].chinese>stu[j+1].chinese){y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p;q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r;w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w;strcpy(x,stu[j].name);strcpy(stu[j].name,stu[j+1].name);strcpy(stu[j+1].name,x);strcpy(t,stu[j].num);strcpy(stu[j].num,stu[j+1].num);strcpy(stu[j+1].num,t);}return;}void paixu_english(Student stud[],int n) /*按英语成绩排序*/{ int i,j,p,q,r,w;double y;char x[20],t[10];for(i=0;i<n-1;i++) /*冒泡法排序*/for(j=0;j<n-1-i;j++)if(stu[j].english>stu[j+1].english){y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p;q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r;w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w;strcpy(x,stu[j].name);strcpy(stu[j].name,stu[j+1].name);strcpy(stu[j+1].name,x);strcpy(t,stu[j].num);strcpy(stu[j].num,stu[j+1].num);strcpy(stu[j+1].num,t);}return;}void paixu_math(Student stud[],int n) /*按数学成绩排序*/{ int i,j,p,q,r,w;double y;char x[20],t[10];for(i=0;i<n-1;i++) /*冒泡法排序*/for(j=0;j<n-1-i;j++)if(stu[j].math>stu[j+1].math){y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p;q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r;w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w;strcpy(x,stu[j].name);strcpy(stu[j].name,stu[j+1].name);strcpy(stu[j+1].name,x);strcpy(t,stu[j].num);strcpy(stu[j].num,stu[j+1].num);strcpy(stu[j+1].num,t);}return;}void paixu_dianlu(Student stud[],int n) /*按电路成绩排序*/{ int i,j,p,q,r,w;double y;char x[20],t[10];for(i=0;i<n-1;i++) /*冒泡法排序*/for(j=0;j<n-1-i;j++)if(stu[j].dianlu>stu[j+1].dianlu){y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p;q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r;w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w;strcpy(x,stu[j].name);strcpy(stu[j].name,stu[j+1].name);strcpy(stu[j+1].name,x);strcpy(t,stu[j].num);strcpy(stu[j].num,stu[j+1].num);strcpy(stu[j+1].num,t);}return;}void tongji(Student stud[],int n)//按分数段统计人数{ int i,j,a,max,min,k,l,q,p,w;k=0,l=0,p=0,q=0,w=0;printf("你想统计哪科成绩: 1语文 2数学 3英语 4电路 5平均 \n");scanf("%d",&j);printf("input 2 score:\n");scanf("%d%d",&max,&min);if(max<min){a=max;max=min;min=a;}if(j==1){for(i=0;i<99;i++){if(stu[i].chinese>min&&stu[i].chinese<max) k++;}printf("分数段的人数为 :%d",k);}else if(j==2){for(i=0;i<99;i++){if(stu[i].math>min&&stu[i].math<max) l++;}printf("分数段的人数为 :%d",l);}else if(j==3){for(i=0;i<99;i++){if(stu[i].english>min&&stu[i].english<max) p++;}printf("分数段的人数为 :%d",p);}else if(j==4){for(i=0;i<99;i++){if(stu[i].dianlu>min&&stu[i].dianlu<max)w++;}printf("分数段的人数为 :%d",w);}else if(j==5){for(i=0;i<99;i++){if(stu[i].aver>min&&stu[i].aver<max) q++;}printf("分数段的人数为 :%d",q);}return;}int wenjian2(Student stud[],int n) /*从文件中读入数据*/{ int i=0,num;FILE *fp; /*定义文件指针*/char filename[20]; /*定义文件名*/printf("\t\t\tInput the filename:");scanf("\t\t\t%s",filename); /*输入文件名*/if((fp=fopen(filename,"rb"))==NULL) /*打开文件*/{ printf("\t\t\tcann't open the file\n"); /*打开失败信息*/printf("\t\t\t");system("pause");return(n);}fscanf(fp,"%d",&num); /*读入总记录量*/while(i<num) /*循环读入数据*/{fscanf(fp,"%s %s %d %d %d %d %lf\n",stu[n+i].num,stu[n+i].name,&stu[n+i].chines e,&stu[n+i].math,&stu[n+i].english,&stu[n+i].dianlu,&stu[n+i].aver);i++;}n+=num;fclose(fp); /*关闭文件*/printf("\t\t\tSuccessed!\n");printf("\t\t\t");system("pause");return(n);}void wenjian1(Student stud[],int n) /*将所有记录写入文件*/{int i=0;FILE *fp; /*定义文件指针*/char filename[20]; /*定义文件名*/printf("Input the filename:");/*输入文件名*/scanf("%s",filename);if((fp=fopen(filename,"w"))==NULL) /*打开文件*/{printf("cann't open the file\n");return;}fprintf(fp,"%d\n",n); /*循环写入数据*/while(i<n){fprintf(fp,"%s %s %d %d %d %d %lf\n",stu[i].num,stu[i].name,stu[i].chinese,stu[ i].math,stu[i].english,stu[i].dianlu,stu[i].aver);i++;}fclose(fp); /*关闭文件*/printf("Successed!\n"); /*返回成功信息*/}int menu() /*菜单函数*/{int c;do{printf("\t\t****学生信息管理系统菜单****\n");printf("\t\t 1. 编辑 \n");printf("\t\t 2. 显示 \n");printf("\t\t 3. 查询 \n");printf("\t\t 4. 排序\n");printf("\t\t 5. 统计\n");printf("\t\t 6. 文件 \n");printf("\t\t 0. 退出 \n");printf("************************************************************\n"); printf("\t\t\t请选择(0-6):");scanf("%d",&c);}while(c<0||c>6);return(c-0); /*返回选择*/}int bianji(){printf("\t\t 1. 录入\n");printf("\t\t 2 .修改\n");printf("\t\t 3. 删除 \n");printf("\t\t 按其它数字键退出 \n");int i;scanf("%d",&i);return i;}int chaxun(){printf("\t\t 1. 按查询\n");printf("\t\t 2 .按平均成绩查询\n");printf("\t\t 按其它数字键退出\n");int i;scanf("%d",&i);return i;}int paixu(){printf("\t\t 1. 按学号\n");printf("\t\t 2 .按语文成绩\n");printf("\t\t 3 .按数学成绩\n");printf("\t\t 4 .按英语成绩\n");printf("\t\t 5 .按电路成绩\n");printf("\t\t 6 .按平均成绩\n");printf("\t\t按其它数字键退出\n");int i;scanf("%d",&i);return i;}int wenjian(){printf("\t\t 1. 从文件中读入数据\n");printf("\t\t 2 .将所有记录写入文件\n"); printf("\t\t 按其它数字键退出 \n");int i;scanf("%d",&i);return i;}void main() /*主函数*/{int n=0;for(;;){for(;;){switch(menu()){case 1: switch(bianji()){case 1:n=shuru(stu,n);xianshi(stu,n); break;case 2:xiugai(stu ,n);xianshi(stu,n); break;case 3:shanchu(stu ,n);xianshi(stu,n); break;} break;case 2:xianshi(stu,n);break;case 3:switch(chaxun()){case 1:chaxun_xingming(stu,n);break;case 2:chaxun_pingjun(stu ,n);break;} break;case 4: switch(paixu()){case 1:paixu_xuehao(stu,n);xianshi(stu,n); break ; case 2:paixu_chinese(stu ,n);xianshi(stu,n);break;case 3:paixu_math(stu ,n);xianshi(stu,n); break;case 4:paixu_english(stu ,n);xianshi(stu,n); break;case 5:paixu_dianlu(stu ,n);xianshi(stu,n); break;case 6:paixu_pingjun(stu ,n);xianshi(stu,n); break;} break;case 5:tongji(stu,n);break;case 6:switch(wenjian()){case 1:n=wenjian2(stu,n);break;case 2:wenjian1(stu ,n);break;} break;case 0:exit(0); /*结束程序*/}}}}。

C语言 学生成绩管理系统

C语言 学生成绩管理系统

C语言学生成绩管理系统#include <stdlib.h>#include 〈stdio.h〉#include <string。

h〉#define MAXN 35#define MAX_NAME 256typedef struct student //学生信息{int no;char name[MAX_NAME];double english;double math;double Programming;double mark_ave;double mark_tot;} STUDENT;/*-----—-—---输入信息子程序—----—-——*/void input(STUDENT *data, int *len){int no;putchar(’\n’);printf(”%s\n”,"请输入新的记录,如果需要退出当前菜单请输入0.”);printf(”%s\n”, "格式:\n学号\n");printf(”%s\n",”姓名英语数学C语言");putchar('\n');scanf(”%d”,&no);while(no != 0) {data[*len]。

no = no;scanf(”%s %lf %lf %lf",data[*len].name,&data[*len].english,&data[*len].math,&data[*len]。

Programming);data[*len]。

mark_ave=(data[*len].english+data[*len]。

math+data[*len].Programming)/3.0;data[*len].mark_tot=data[*len].english+data[*len]。

math+data[*len]。

Programming;(*len)++;scanf(”%d”, &no);}}/*--—----——-—————输出信息子程序--—-——----——--—*/void output(STUDENT *data, int len){int i;system(”cls”);printf("%8s”, "学号”);printf("%8s”, "姓名");printf("%8s", "英语");printf("%8s", "数学");printf(”%10s”, ”C语言");printf("%12s”, "平均分”);printf("%10s",”总分");putchar(’\n');for (i =0;i 〈80;i++)putchar(’=');putchar(’\n');for (i = 0; i〈len;i++){printf(”%8d”, data[i].no);printf("%8s",data[i].name);printf(”%8。

学生成绩信息表(c语言程序)

学生成绩信息表(c语言程序)

# include<stdio.h># include<stdlib.h># include<string.h>typedef struct student{int ij;char no[10];char name[10];float score[2];float average;}student;typedef struct link{student ia;struct link*next;}List;List *input0() //录入数据{List *p;student x;p=NULL;x.average=0;int i=0;float y=0;fflush(stdin);puts("\t请输入学生学号:(输0结束)");gets(x.no);if(strcmp(x.no,"0")!=0){puts("\t请输入学生姓名:");gets();puts("\t请输入数学成绩:");scanf("%f",&x.score[0]);y=y+x.score[0];puts("\t请输入英语成绩:");scanf("%f",&x.score[1]);y=y+x.score[1];x.average=y/2.0;p=(List *)malloc(sizeof(List));strcpy(p->ia.no,x.no);strcpy(p->,);for(i=0;i<2;i++)p->ia.score[i]=x.score[i];p->ia.average=x.average;p->next=NULL;}return p;}List *creat_List() //创建链表{int ix;List *head,*p,*tail;head=(List*)malloc(sizeof(List));head->next=NULL;tail=head;p=input0();while(p!=NULL){tail->next=p;tail=p;tail->next=NULL;p=input0();}return head;}void output_List(List *head) //遍历链表{int i;int ii=1;List *p=head->next;puts("\t序号\t学号\t姓名\t数学\t英语\t平均成绩");while(p!=NULL){printf("\t%d",ii);ii++;printf("\t%s",p->ia.no);printf("\t%s",p->);for(i=0;i<2;i++)printf("\t%-4.1f",p->ia.score[i]);printf("\t%-4.1f\n",p->ia.average);p=p->next;}}List *input1() //插入数据的学生信息{List *p;char ix[10];int i=0;float y=0;fflush(stdin);puts("请输入学生学号:");gets(ix);p=(List *)malloc(sizeof(List));strcpy(p->ia.no,ix);puts("\t请输入学生姓名:");gets(p->);puts("\t请输入数学成绩:");scanf("%f",&p->ia.score[0]);y=y+p->ia.score[0];puts("\t请输入英语成绩:");scanf("%f",&p->ia.score[1]);y=y+p->ia.score[1];p->ia.average=y/2.0;p->next=NULL;return p;}void insert_List(List *head,List *p) //链表的插入{List *q,*s;s=(List *)malloc(sizeof(List));s=p;q=head;while(strcmp(q->next->ia.no,s->ia.no)<=0){q=q->next;if(q->next==NULL)break;}s->next=q->next;q->next=s;}List *output0(List *p) //输出某位学生的信息{int i;puts("\t学号\t姓名\t数学\t英语\t平均成绩");printf("\t%s",p->ia.no);printf("\t%s",p->);for(i=0;i<2;i++)printf("\t%-4.1f",p->ia.score[i]);printf("\t%-4.1f\n",p->ia.average);return p;}void find1_List(List *head) // 查找学生信息{List *p;char ix[10];int ii=0;fflush(stdin);p=head->next;puts("请输入学生学号:");gets(ix);while(1){if(p==NULL){if(ii==0){puts("不存在此学号的学生信息");break;}break;}while(strcmp(ix,p->ia.no)==0){output0(p);if(p->next==NULL)break;p=p->next;ii++;}p=p->next;}}List *find2(List *head) //查找指定节点{List *p;char ix[10];fflush(stdin);p=head->next;puts("输入查找学生的学号:");gets(ix);while(p!=NULL&&strcmp(ix,p->ia.no)!=0)p=p->next;return p;}List *delete_List(List *head,List *p) //链表的删除{List *q=head,*s=head->next;while(s!=NULL&&strcmp(p->ia.no,s->ia.no)!=0){q=s;s=s->next;}q->next=s->next;free(s);return head;}int length_List(List *head) //链表长度{List *p=head;int ii=0;while(p->next!=NULL){p=p->next;ii++;}return ii;}List *find3(List *head,int ij) //查找指定节点{List *p;int ii;fflush(stdin);p=head->next;while(p!=NULL&&ii!=ij){ii++;p=p->next;}return p;}List *paixu(List *head) /*排序*/ {List *p,*q,*large;float itemp;int i;char ctemp[10];for(p=head->next;p->next!=NULL;p=p->next)for(q=p->next;q!=NULL;q=q->next){large=p;if(p->ia.average<q->ia.average)large=q;if(large==q){strcpy(ctemp,p->ia.no);strcpy(p->ia.no,q->ia.no);strcpy(q->ia.no,ctemp);strcpy(ctemp,p->);strcpy(p->,q->);strcpy(q->,ctemp);for(i=0;i<2;i++){itemp=p->ia.score[i];p->ia.score[i]=q->ia.score[i];q->ia.score[i]=itemp;}itemp=p->ia.average;p->ia.average=q->ia.average;q->ia.average=itemp;}}return(head);}int menu() //链表菜单{int ii=0;puts("\t\t 欢迎进入链表系统");puts("========================================================="); /*界面设计*/puts("|\t\t 请选择下列某一项 \t\t\t|");puts("|\t\t\t(1)创建 \t\t\t|");puts("|\t\t\t(2)序号输出\t\t\t|");puts("|\t\t\t(3)查找 \t\t\t|");puts("|\t\t\t(4)插入 \t\t\t|");puts("|\t\t\t(5)删除 \t\t\t|");puts("|\t\t\t(6)成绩输出\t\t\t|");puts("|\t\t\t(7)退出 \t\t\t|");puts("=========================================================");do{fflush(stdin);puts("请输入你的选择:");scanf("%d",&ii);}while(ii<1||ii>7);return ii;}void main(){int ii,I,ij,ix,in;List *head,*p;do{system("cls"); /*清屏函数*/fflush(stdin); /*清除键盘缓冲区*/ii=menu();switch(ii){case 1: head=creat_List(); puts("录入成功");break;case 2: output_List(head);break;case 3: find1_List(head);break;case 4: p=input1();insert_List(head,p);puts("插入成功");break;case 5: p=find2(head);if(p==NULL)puts("该学生不存在");else{delete_List(head,p);puts("删除成功");}break;case 6: paixu(head);output_List(head);break;case 7: puts("谢谢使用!再见");getch();exit(0);}puts("输入任意键返回:");getch();}while(ii!=0);}。

学生成绩管理系统c源程序

学生成绩管理系统c源程序

《学生成绩管理系统》-蕲宥1C++程序设计源程序: ---------------- 《学生成绩管理系统》#in clude<iostream.h>#in clude<stri ng.h>#i nclude <process.h>#include<cstring> //数组比较头文件#include <fstream.h>〃文件的输入输出#i nclude <stdio.h>int time=0;char n ame_[20];class CPerson 〃 ---- CPerson 基类 成员:IDNo Name Addr Tel{public:char IDNo[30];char Name[30];char Addr[30];char Tel[30];};class CStudent:public CPerson//----CStudent 类--继承自 CPerson 成员:StudNo MathEnglish {public:char StudNo[30];double Math;double En glish;double Average;};class CClass// --------- CClass 类 成员:CClassName CStudent{private:char CCIassName[30];CStude nt* stu[50];public:CClass();~CCIass();void CreateClass(); //void OutClassName();〃 输出班级名字void NewAStu(); //1.创建学生信息void chan ge(); //3.修改学生信息void del(); 〃4.删除学生信息void writei n(); // 文件写入void writeout(); // 文件读出void writei no(); // 文件另存为void writeouto(); //打开其他文件void fin d(); //6.查询学生信息 };Averagevoid back()〃----------------------- // 屈9频函数{cout<<"\t\t\t 执行成功!"<<endl;system("pause"); // 任意键继续system("cls"); // 清除屏幕}void back_ no(){system("pause"); // 任意键继续system("cls"); // 清除屏幕}void title()// -------------{system("cls");cout<<" -------------- 学生信息管理程序----------- \n您现在的位置:\t主菜单-->";}void CCIass::writein()〃 ------- 保存文件{ofstream SaveFile("myfile.txt");SaveFile<<CCIassName<<"\t"<<time<<e ndl;for(i nt i=0;i<time;i++){SaveFile<<stu[i]->IDNo<<"\t"<<stu[i]->Name<<"\t"<<stu[i]->Addr<<"\t"<<stu[i]->Tel<<"\t"<<stu[i]->StudNo<<"\t"<<stu[i]->Math<<"\t"<<stu[i]->E nglish<<"\t"<<stu[i]->Average<<e ndl;}SaveFile.close();ofstream Save(n ame_);Save<<CClassName<<"\t"<<time<<e ndl;for(i nt j=O;j<time;j++){Save<<stu[j]->IDNo<<"\t"<<stu[j]->Name<<"\t"<<stu[j]->Addr<<"\t"<<stu[j]->Tel<<"\t"<<stu[j]->StudNo<<"\t"<<stu[j]->Math<<"\t"<<stu[j]->E nglish<<"\t"<<stu[j]->Average<<e ndl;}2Save.close();}void CCIass::writeino()〃 ----------- 文件另存为{char choice[30];ofstream fop;ifstream fip;cout<<"文件已默认保存了!\t现在需要另存为?(Y/N)"<<endl;cin> >choice;while(strcmp(choice,"Y")==0||strcmp(choice,"y")==0){cout<<"请输入文件名称:\t"<<endl;cin»n ame_;strcat (n ame_, ".txt ");fop.ope n(n ame_);fop<<CCIassName<<"\t"<<time<<e ndl;for(i nt i=0;i<time;i++){fop<<stu[i]->IDNo<<"\t"<<stu[i]->Name<<"\t"<<stu[i]->Addr<<"\t"<<stu[i]->Tel<<"\t"<<stu[i]->StudNo<<"\t"<<stu[i]->Math<<"\t"<<stu[i]->E nglish<<"\t"<<stu[i]->Average<<e ndl;}fip.close();cout<<"另存为"<<name_<<"成功!"<<endl;back_ no ();return;}while(strcmp(choice," n")==0||strcmp(choice,"N")==0){back_ no ();return;}while(strcmp(choice,"Y")!=0||strcmp(choice,"y")!=0){cout<<"输入错误!"<<endl;back_ no ();return;}}3void CCIass::writeout()〃 -------{int i=0;char c[30];FILE *fp;if((fp=fope n( "myfile.txt","r"))==NULL){cout<<"ca nn't ope n the file\n";exit(0);}fsca nf(fp,"%s%d",c, &time);strcpy(CClassName,c);while(i<time){fsca nf(fp,"%s%s%s%s%s%lf%lf%lf',stu[i]->IDNo,stu[i]->Name,stu[i]->Addr, &stu[i]->Tel,stu[i]->StudNo, &stu[i]->Math, &stu[i]->E nglish, &stu[i]->Average);i++;}fclose(fp); /* 关闭文件*/cout<<"恭喜你!成功读取班级信息!\n";}void CClass::writeouto() // ----------------------- 打开其他文件{int i=0;char c[30];FILE *fp;fstream _file;ofstream fop;ifstream fip;cout<<"请输入文件名称:\t"<<endl;cin»n ame_;strcat( name_, ".txt "); // 创建文件名ifstream fin(n ame_);_file.ope n(n ame_,ios::i n);while(!_file){cout<<name_<<"没有被创建\n";cout<<"请输入文件名称:\t"<<endl;cin»n ame_;}if((fp=fope n(n ame_,"r"))==NULL){cout<<"ca nn't ope n the file\n";4exit(O);}fsca nf(fp,"%s%d",c, &time);strcpy(CCIassName,c);while(i<time){fsca nf(fp,"%s%s%s%s%s%lf%lf%lf',stu[i]->IDNo,stu[i]->Name,stu[i]->Addr, &stu[i]->Tel,stu[i]->StudNo,&stu[i]->Math, &stu[i]->E nglish, &stu[i]->Average);i++;}fclose(fp); /* 关闭文件*/cout<<"恭喜你!成功读取班级信息!\n";}CCIass::CCIass()〃--------{for(i nt i=0;i<50;i++){stu[i]=new CStude nt();}}CCIass::~CCIass()〃-------{for(i nt i=0;i<50;i++){delete stu[i];}}void CCIass::CreateClass()〃 ------- 创建班级{char choice[30];char *c;char cn ame[30];cout<<" -------------- 学生信息管理程序----------- "<<endl;cout<<"1、创建班级"<<endl<<"2、读取班级信息"<<endl<<"3、退出程序"<<endl;cout<<"请选择:";cin> >choice;for(i nt o=0;o<100;o++){while(strcmp(choice,"1")==0){system("cls");5cout<<" -------------- 学生信息管理程序----------- "<<endl; 6cout<<"请输入班级名称:";c=new char[];cin> >c;strcpy(CCIassName,c);return;}while(strcmp(choice,"2")==0){system("cls");title();cout<<"\n1、打开上次的文件"<<endl<<"2、打开其他文件"<<endl<<"\n 请选择:";cin»cn ame;for(i nt k=0;k<100;k++){while(strcmp(c name,"1")==0){writeout();return;}while(strcmp(c name,"2")==0){writeouto();return;}cout<<"请在1〜2中选择:";cin»cn ame;}}while(strcmp(choice,"0")==0)exit(0);cout<<"请在1〜2中选择:";cin> >choice;}}void CCIass::NewAStu()〃------- 0.创建学生{cout<<"->输入学生信息\n";cout<<"请输入身份证号码(18位):\t\t";cin>>stu[time]->IDNo; // ---------- 检验身份证位数while(stu[time]->IDNo[18]!='\0'){cout<<"Data Error!\n 请输入18 位身份证号码:\t\t";cin >>stu[time]->IDNo;}cout<<"请输入姓名:\t\t";7cin> >stu[time]->Name;cout<<"请输入住址:\t\t";cin> >stu[time]->Addr;cout<<"请输入电话号码:\t\t";cin> >stu[time]->Tel;cout<<"请输入学号(12位):\t\t";cin >>stu[time]->StudNo;for(int o=0;o<1000;o++){while(stu[time]->StudNo[12]!='\0') // ---------- 检验学号位数{cout<<"Data Error!'n 请输入12 位学号:\t\t\t";cin >>stu[time]->StudNo;}for(int i=0;i<time;i++) // ------------------ 检验是否重复{if(strcmp(stu[i]->StudNo,stu[time]->StudNo)==0){cout<<"Data Error!'n学号重复:请重新输入:\n"; cin >>stu[time]->StudNo;}}}cout<<"请输入数学成绩:\t\t";cin> >stu[time]->Math;while(stu[time]->Math<0||stu[time]->Math>100){cout<<"Data Error!\n 请重新输入一个分数(0~100):\t";cin> >stu[time]->Math;}cout<<"请输入英语成绩:\t\t";cin> >stu[time]->E nglish;while(stu[time]->E nglish<O||stu[time]->E nglish>100){cout<<"Data Error!\n 请重新输入一个分数(0~100):\t"; cin> >stu[time]->E nglish;}stu[time]->Average=(stu[time]->Math+stu[time]->E nglish)/2; back();}void CCIass::OutClassName()〃------- 2.打印班级名称{int fen shu; char temp[30];8double temp_;for(i nt cha nge=0;cha nge<time;cha nge++){fen shu=cha nge;for(i nt j=cha nge;j<time;j++)if(strcmp(stu[j]->StudNo,stu[fe nshu]->StudNo)<0)fen shu=j;strcpy(temp,stu[fe nshu]->Addr); strcpy(stu[fe nshu]->Addr,stu[cha nge]->Addr);strcpy(stu[change]->Addr,temp); /* 地址*/ strcpy(temp,stu[fe nshu]->StudNo);strcpy(stu[fe nshu]->StudNo,stu[cha nge]->StudNo); strcpy(stu[change]->StudNo,temp); /*身份证*/ strcpy(temp,stu[fe nshu]->Name);strcpy(stu[fe nshu]->Name,stu[cha nge]->Name); strcpy(stu[change]->Name,temp); /* 姓名*/ strcpy(temp,stu[fe nshu]->Tel);strcpy(stu[fe nshu]->Tel,stu[cha nge]->Tel); strcpy(stu[change]->Tel,temp); /* 电话*/strcpy(temp,stu[fe nshu]->IDNo);strcpy(stu[fe nshu]->IDNo,stu[cha nge]->IDNo); strcpy(stu[change]->IDNo,temp); /* 学号*/temp_=stu[fe nshu]->Math;stu[fe nshu]->Math=stu[cha nge]->Math; stu[change]->Math=temp_; /* 数学*/ temp_=stu[fenshu]->E nglish;stu[fe nshu]->E nglish=stu[cha nge]->E nglish; stu[change]->English=temp_; /* 英语*/temp_=stu[fe nshu]->Average;stu[fe nshu]->Average=stu[cha nge]->Average; stu[change]->Average=temp_; /* 平均分*/}〃------------------------------------cout<<"\n 班级名称:"<<CCIassName<<"\t"<<"人数:"<<time<<endl<<endl;平均分"<<endl; cout<<" 学号身份证号码姓名住址电话数学英语for(i nt i=0;i<time;i++){cout<<stu[i]->StudNo<<""<<stu[i]->IDNo<<""<<stu[i]->Name<<""<<stu[i]->Addr<<""<<stu[i]->Tel<<"\t"<<stu[i]->Math<<"\t"<<stu[i]->E nglish <<"\t"<<stu[i]->Average<<e ndl;}910back_ no();}void CCIass::change()〃 ------- 3.修改学生的信息 {char str[30];int i,had=0;char *a;char x[30];if(time!=0){cout<<"请输入您要修改学生的学号 /名字:"; cin> >str; for(i=0;i<50;i++) if(strcmp(stu[i]->StudNo,str)==0||strcmp(stu[i]->Name,str)==0) { :"<<"\t"<<stu[i]->IDNo<<e ndl :"<<"\t"<<stu[i]->Name<<e ndl :"<<"\t"<<stu[i]->Addr<<e ndl :"<<"\t"<<stu[i]->Tel<<e ndl :"<<"\t"<<stu[i]->StudNo<<e ndl :"<<"\t"<<stu[i]->Math :"<<"\t"<<stu[i]->E nglish :"<<"\t"<<stu[i]->Average<<e ndl<<e ndl cout<<"1、修改地址"<<endl; cout<<"2、修改电话号码 cout<<"3、修改数学成绩 cout<<"4、修改英语成绩 cout<<"0、返回"<<endl; cout<<"请选择操作:"; cin> >x; for(i nt k=0;k<100;k++) { while(strcmp(x,"1")==0) { cout<<"请输入新的地址:" a=new char[]; cin> >a; strcpy(stu[i]_>Addr,a); back(); return; } while(strcmp(x,"2")==0) { cout<<"请输入新的电话号码 cout<<"\t"<<"身份证号码 <<"\t"<<" 姓名 <<"\t"<<" 住址 <<"\t"<<" 电话 <<"\t"<<" 学号 <<"\t"<<" 数学成绩 <<"\t"<<" 英语成绩 <<"\t"<<" 平均分 "<<e ndl; "<<e ndl; had=1;cin> >stu[i]_>Tel;back();return;}while(strcmp(x,"3")==0){cout<<"请输入新的数学成绩:";cin >>stu[i]->Math;while(stu[i]->Math>100||stu[i]->Math<0){cout<<"请重新输入0~100:";cin»stu[i]->Math;}stu[i]->Average=(stu[i]->Math+stu[i]->E nglish)/2; back();return;}while(strcmp(x,"4")==0){cout<<"请输入新的英语成绩:";cin> >stu[i]->E nglish;while(stu[i]->E nglish>100||stu[i]->E nglish<0){cout<<"请重新输入0~100:";cin»stu[i]->English;};stu[i]->Average=(stu[i]->Math+stu[i]->E nglish)/2; back();return;}cout<<"请在1〜4中选择:";cin> >x;}}if(had==O){cout<<"对不起!没有查询到"<<str<<"的信息!"<<endl; back_ no();}}}void CCIass::del()〃-------- 4.删除学生的信息{char str[30];int i,had=0;if(time!=0){cout<<"请输入您要删除的学号 cin> >str;for(i=0;i<50;i++)if(strcmp(stu[i]->StudNo,str)==0)had=1;cout<<"第"<<i+l<<"位学生:"<<endl;cout<<"\t"<<"身份证号码:"<<"\t"<<stu[i]->IDNo<<endl"<<"\t"<<stu[i]->Name<<e ndl "<<"\t"<<stu[i]->Addr<<e ndl "<<"\t"<<stu[i]->Tel<<e ndl "<<"\t"<<stu[i]->StudNo<<e ndl "<<"\t"<<stu[i]->Math<<e ndl "<<"\t"<<stu[i]->E nglish<<e ndl "<<"\t"<<stu[i]->Average<<e ndl<<e ndl;for(i nt j=i;j<=time-1;j++)strcpy(stu[j]->IDNo,stu[j+1]->IDNo); strcpy(stu[j]->Name,stu[j+1]->Name);strcpy(stu[j]->Addr,stu[j+1]->Addr); strcpy(stu[j]->Tel,stu[j+1]->Tel);strcpy(stu[j]->StudNo,stu[j+1]->StudNo); stu[j]->Math=stu[j+1]->Math;stu[j]->E nglish=stu[j+1]->E nglish;stu[j]->Average=stu[j+1]->Average; }back();time=time-1;}if(had==0){cout<<"对不起!没有查询到"<<str<<"的信息!"<<endl; back_ no();}}}void CClass::find()// ------------- 6.查询学生的信息{char str[30];cout<<"请输入您要查询学生的姓名/学号/身份证号码/电话号码:\t";cin> >str;for(i nt i=0;i<time;i++) { <<"\t"<<"姓名 <<"\t"<<"住址 <<"\t"<<"电话 <<"\t"<<" 学号 <<"\t"<<" 数学成绩 <<"\t"<<" 英语成绩<<"\t"<<" 平均分if(strcmp(stu[i]-〉Name,str)==0||strcmp(stu[i]->IDNo,str)==0||strcmp(stu[i]->StudNo,str)==0||strcmp(stu[i]-> Tel,str)==O){cout<<"\n\t"<<"身份证号码:"<<"\t"<<stu[i]->IDNo<<endl"<<"\t"<<stu[i]->Name<<e ndl "<<"\t"<<stu[i]->Addr<<e ndl "<<"\t"<<stu[i]->Tel<<e ndl "<<"\t"<<stu[i]->StudNo<<e ndl "<<"\t"<<stu[i]->Math "<<"\t"<<stu[i]->E nglish "<<"\t"<<stu[i]->Average<<e ndl<<e ndl;back_ no (); return;cout<<"对不起!没有查询到"<<str<<"的信息!"<<endl;back_ no();}void main()〃 -------- main 主函数{system("ver");CClass ClassRoom; char select ion[ 30];ClassRoom.CreateClass();system("cls");for(int o=0;o<1000;o++) {ClassRoom.writei n();cout<<" ------------- 学生信息管理程序 -----------"<<endl;cout<<"1、添加学生信息"<<endl<<"2、显示学生信息"<<endl <<"3、修改学生信息"<<endl <<"4、删除学生信息"<<endl <<"5、保存学生信息"<<endl <<"6、查询学生信息"<<endl <<"0、退出程序"<<endl<<"请选择:"; cin> >selecti on; if(strcmp(selectio n,"1")==0){title();cout<<"1.添加学生信息"<<endl; ClassRoom.NewAStu(); time=time+1;}else if(strcmp(selectio n,"2")==0)title();cout<<"2.打印学生信息"<<endl;if(time==0){cout<<"\n\n\t\t\t 暂时没有记录!"<<endl; back_ no();}else{ClassRoom.OutClassName ();}}else if(strcmp(selectio n,"3")==0)<<"\t"<<"<<"\t"<<"<<"\t"<<"<<"\t"<<" <<"\t"<<" <<"\t"<<" <<"\t"<<" 姓名 住址 电话 学号 数学成绩 英语成绩平均分{title();cout<<"3.修改学生信息"<<endl;ClassRoom.cha nge();}else if(strcmp(selectio n,"4")==0) {title();cout<<"4.删除学生信息"<<endl;ClassRoom.del();}else if(strcmp(selectio n,"5")==0){title();cout<<"5.保存学生信息"<<endl;ClassRoom.writei no();}else if(strcmp(selectio n,"6")==0){title();cout<<"6.查询学生信息"<<endl;ClassRoom.fi nd();}else if(strcmp(selectio n,"0")==0){exit(0);}else{system("cls");cout<<"请在0〜6中选择:\n";。

学生成绩管理系统C语言(附完整源代码)

学生成绩管理系统C语言(附完整源代码)

学生成绩管理系统C语言(附完整源代码)课程设计报告学生成绩管理系统院系: 专业: 班级: 完成日期: 2009年1月03日设计题目:学生成绩管理系统目录1、题目描述2、算法设计/设计思想3、结构框图、各模块的功能描述4、主体思想:5、程序的,,,流程图6、源代码1.题目描述设计一个简单的学生成绩管理系统,要求有简单的界面,程序段要分清模块,该程序应该:(1)输入学生成绩,求总分,平均分,以及排序。

(2)查询学生单科成绩,总分和平均成绩;(3)添加、修改学生成绩具有下列功能:(4)实现保存与查看功能2.算法设计/设计思想利用二维数组——定义stu[][]存储学生学号、各科成绩,总分,平均分,名次,利用文件来存储,读取数据。

具体分工是:: 负责inputx(),print1(),input();:负责文件的存储和读取,main(),System(),Idea()以及各调用函数之间的连;: 负责find1(),find2(),find3(),find31(),Find();: 负责del(),add(),change1(),Change();后期调试由小组共同负责。

3. 结构框图、各模块的功能描述3.1 创建成绩表3.1.1 input()功能是输入学生的信息,便于以后的查询、浏览。

3.2 添加3.2.1 add( )功能是向inputy()添加新的内容。

3.3.2 chance( )对单科成绩进行修改。

3.3 查询3.3.1 可根据学号,科目,名次,进行查询。

3.3.2 查询内容包括:该学生的各课成绩、、平均分。

3.4 删除3.4.1可以输入学号删除一名学生的一课成绩。

3.5 浏览成绩单3.5.1 通过此print1()可以查看所有学生的各课成绩、总分、平均分和名次。

3.6 文件()3.6.1 保存以上所输入的信息以达到既是关闭窗口信息也不会丢失信息的目的。

3.6.2 随时打开,修改文件。

3.7.退出功能是退出主菜单退出系意见评述功能菜单统输入添加及改查找功能退出功能菜单成绩功能查输排查找学学添修某某生生加改段生成成成某成成绩绩科绩绩绩成绩按按按名学科次号目查查查找找找四、主体思想:1、考虑到此程序量大代码多,所以用函数调用,分几个人去完成。

C语言程序设计项目三 输入学生成绩转化为等级

C语言程序设计项目三 输入学生成绩转化为等级

项目三 输入学生成绩转化为等级
if(shuxue <0|| shuxue >100) printf(“您输入的成绩不合法,请重新输入\n”); else { if(shuxue >=90) gradeB=’A’; else if(shuxue >=80) gradeB=’B’; else if(shuxue >=70) gradeB=’C’; else if(shuxue >=60) gradeB=’D’; else gradeB=’E’; break; } }
编译、连接、和运行程序。程序运行后,屏幕显示 :
3.3 选择结构引例
【例3.4】分段计算水费
0 x0 4x y f ( x) 0 x 15 3 x 15 2.5 x 10.5
为了提倡节省用电,对电费的收取分三个收费区间:
(1)当x<0时,不收费。 (2)当用电数量在0到15之间时,按一种方法计算。 (3)当用电数量大于15时,则按另外一种方法计算。
项目三 输入学生成绩转化为等级
else if(yingyu >=60) gradeC=’D’; else gradeC=’E’; break; } } sum=yuwen+shuxue+yingyu; ave=sum/3; printf("该生的语文,数学,英语的成绩分别是:\n"); printf(“%f分\t%f分\t%f分\n”,yuwen,shuxue,yingyu); printf("该生的语文,数学,英语的成绩的等级分别是:\n"); printf(“%c级\t%c级\t%c级\n”,gradeA,gradeB,gradeC) ; printf(“总分是%f分\t平均分是%f分\n”,sum,ave); }

c语言编程输入学生信息(姓名年龄分数)并按照分数由高到低输出

43;+)
for(j=0;j<*num-1-i;j++)
{if(r[j].score<r[j+1].score)
{t=r[j];
r[j]=r[j+1];
r[j+1]=t;
}
}
}
output_stARR(int *num,struct student *Q)
{
int i;
printf("num=");
scanf("%d",num);
}
input_stIFO(int *num,struct student *p)
{
int i;
for(i=0;i<*num;i++)
{printf("请输入第%d学生信息:\n",i+1);
printf("age: ");
scanf("%d",&p[i].age);
输入学生信息(姓名,年龄,分数),并按照分数由高到低输出。
# include <stdio.h>
# include <malloc.h>
struct student
{int age;
float score;
char name[100];
};
input_stlen(int *num)
{
printf("请输入学生总数:\n");
pArr = (struct student *)malloc(sizeof(struct student)*len);//定义动态内存
input_stIFO(&len,pArr);//输入学生信息

最新C语)学生成绩管理系统程序

#include<stdio.h> /*引用库函数*/#include<stdlib.h>#include<ctype.h>#include<string.h>typedef struct /*定义结构体数组*/{int term; //学期char num[10]; //保存学号char name[20]; //保存姓名int cgrade; //保存C语言成绩int mgrade; //保存数学成绩int egrade; //保存英语成绩int sum; //总分float average;//平均分}Student;Student score[1000]; /*结构体数组变量*/int menu_select() /*菜单函数*/{int c;do{system("cls"); //运行前清屏printf("\t\t★★★★★★学生成绩管理系统★★★★★★\n"); //菜单选择printf("\t\t§1. 输入学生信息及数据§\n");printf("\t\t§2. 输出学生信息及数据§\n");printf("\t\t§3. 按姓名、学号及学期查找学生信息§\n");printf("\t\t§4. 按姓名、学号及学期修改学生信息§\n");printf("\t\t§5. 插入学生信息§\n");printf("\t\t§6. 按学号及学期删除信息§\n");printf("\t\t§7. 按单科降序(选择)排序§\n");printf("\t\t§8. 按总分降序(选择)排序§\n");printf("\t\t§9. 统计各科总分和平均分信息§\n");printf("\t\t§10.内存数据写入磁盘中§\n");printf("\t\t§11.磁盘中数据读入内存§\n");printf("\t\t§0. 结束程序§\n");printf("\t\t★★★★★★★★★★★★★★★★★★★★\n");printf("\t\t 请选择您要运行的选项按(0-11):");scanf("%d",&c); //读入选择}while(c<0||c>11);return(c); //返回选择}int Input(Student grade[],int n) /*输入学生信息及数据*/{int i=0;char sign;do{printf("\t\t 学期:"); /*交互输入*/scanf("\t\t%d",&grade[n+i].term);printf("\t\t 学号:");scanf("\t\t%s",grade[n+i].num);printf("\t\t 姓名:");scanf("\t\t%s",grade[n+i].name);printf("\t\t C语言成绩:");scanf("\t\t%d",&grade[n+i].cgrade);printf("\t\t 数学成绩:");scanf("\t\t%d",&grade[n+i].mgrade);printf("\t\t 英语成绩:");scanf("\t\t%d",&grade[n+i].egrade);printf("\t\t 是否继续输入?(Y/N)");scanf("\t\t%s",&sign); /*输入判断*/i++;if(sign=='N' || sign=='n') break;}while(sign=='Y' || sign=='y'); /*判断*/return (n+i);}void Disp(Student grade[],int n) /*输出学生信息及数据*/{int i=0;printf("\t\t--------------------------------------------------\n");printf("\t\t 学期学号姓名c语言成绩数学成绩英语成绩\n");printf("\t\t--------------------------------------------------\n");for(i=0;i<n;++i) /*循环输入*/{printf("%20d %s %s %d %d %d\n",grade[i].term,grade[i].num,grade[i].name,grade[i].cgrade,grade[i].mgrade,grade[i].egrade);if(i>1&&i%10==0) /*每十个暂停*/{printf("\t\t--------------------------------------------------\n");printf("\t\t");system("pause");printf("\t\t--------------------------------------------------\n");}}printf("\t\t");system("pause");}void Qur_info(Student grade[],int n) //按姓名、学号及学期查找学生信息{char name[20];char num[20];int term;int i=0;printf("\t\t 输入他(她)的姓名:");scanf("\t\t%s",&name);printf("\t\t 输入他(她)的学号:");scanf("\t\t%s",&num);printf("\t\t 输入他(她)的学期:");scanf("\t\t%d",&term);for(i=0;i<n;i++){if(strcmp(grade[i].name,name)==0&&strcmp(grade[i].num,num)==0&&grade[i].term==term){printf("\t\t 他(她)的C语言成绩:%d\n",grade[i].cgrade);printf("\t\t 他(她)的数学语言成绩:%d\n",grade[i].mgrade);printf("\t\t 他(她)的英语语言成绩:%d\n",grade[i].egrade);return;}else if(i==n-1){printf("\t\t 对不起没找到该学生!\n");return;}}}void Modify_info(Student grade[],int n) //按姓名、学号及学期修改学生信息{char name[20];char num[20];int term;int i=0;printf("\t\t 输入他(她)的姓名:");scanf("\t\t%s",&name);printf("\t\t 输入他(她)的学号:");scanf("\t\t%s",&num);printf("\t\t 输入他(她)的学期:");scanf("\t\t%d",&term);for(i=0;i<n;i++){if(strcmp(grade[i].name,name)==0&&strcmp(grade[i].num,num)==0&&grade[i].term==term){printf("\t\t 请输入修改的C语言成绩:");scanf("\t\t%d",&grade[i].cgrade);printf("\t\t 请输入修改的数学成绩:");scanf("\t\t%d",&grade[i].mgrade);printf("\t\t 请输入修改的英语成绩:");scanf("\t\t%d",&grade[i].egrade);return;}else if(i==n-1){printf("\t\t 对不起没找到该学生!\n");return;}}}int Insert(Student grade[],int n) //插入学生信息{printf("\t\t 学期:");scanf("\t\t%d",&grade[n].term);printf("\t\t 学号:");scanf("\t\t%s",grade[n].num);printf("\t\t 姓名:");scanf("\t\t%s",grade[n].name);printf("\t\t C语成绩:");scanf("\t\t%d",&grade[n].cgrade);printf("\t\t 数学语成绩:");scanf("\t\t%d",&grade[n].mgrade);printf("\t\t 英语成绩:");scanf("\t\t%d",&grade[n].egrade);n++;printf("\t\t 插入记录成功!\n");return n;}int Del_info(Student grade[],int n) //按学号及学期删除信息{char num[20];int term;int i=0;printf("\t\t 输入他(她)的学号:");scanf("\t\t%s",&num);printf("\t\t 输入他(她)的学期:");scanf("\t\t%d",&term);for(i=0;i<n;i++){if(strcmp(grade[i].num,num)==0&&grade[i].term==term){grade[i].term = grade[i+1].term;strcpy(grade[i].num,grade[i+1].num);strcpy(grade[i].name,grade[i+1].name);grade[i].cgrade = grade[i+1].cgrade;grade[i].mgrade = grade[i+1].mgrade;grade[i].egrade = grade[i+1].egrade;printf("\t\t 删除记录成功!\n");return(n-1);}else if(i==n-1){printf("\t\t 对不起没找到该学生!\n");return(n);}}}int compareCgrade(const void* a, const void* b) //C语降序排序{Student *s1 = (Student*)a;Student *s2 = (Student*)b;if (s1->cgrade > s2->cgrade){return 1;}else{return 0;}}int compareMgrade(const void* a, const void* b) //数学降序排序{Student *s1 = (Student*)a;Student *s2 = (Student*)b;if (s1->mgrade > s2->mgrade)return 1;}else{return 0;}}int compareEgrade(const void* a, const void* b) //英语降序排序{Student *s1 = (Student*)a;Student *s2 = (Student*)b;if (s1->egrade > s2->egrade){return 1;}else{return 0;}}int compareTotal(const void* a, const void* b) //总分降序排序{Student *s1 = (Student*)a;Student *s2 = (Student*)b;int total1 = s1->cgrade+s1->egrade+s1->mgrade;int total2 = s2->cgrade+s2->egrade+s2->mgrade;if (total1 > total2){return 1;}else{return 0;}}void Sort(Student grade[],int n, int choice) //选择排序的科目{if (choice == 1)qsort(grade, n, sizeof(grade[0]), compareCgrade);}else if(choice == 2){qsort(grade, n, sizeof(grade[0]), compareMgrade);}else if(choice == 3){qsort(grade, n ,sizeof(grade[0]), compareEgrade);}else{printf("选择无效\n");}}void Sort_sub(Student grade[],int n) //按单科降序(选择)排序{int choice = 0;printf("选择排序科目\n");printf("1-C语言,2-数学,3-英语\n");scanf("%d", &choice);Sort(grade, n, choice);}void Sort_sum(Student grade[],int n) //按总分降序排序{qsort(grade, n ,sizeof(grade[0]), compareTotal);}void Average(Student grade[],int n) //统计各科总分和平均分信息{int csum = 0;int msum = 0;int esum = 0;int sum = 0;int i;float aver = 0;for(i=0;i<n;i++){csum=csum+grade[i].cgrade;msum=msum+grade[i].mgrade;esum=esum+grade[i].egrade;}sum=csum + msum + esum;aver=(float)sum/3;printf("\n");printf("\t\t C语言总分是:%d\n",csum);printf("\t\t 数学总分是:%d\n",msum);printf("\t\t 英语总分是:%d\n",esum);printf("\t\t 平均分是:%3.1f\n",aver);}void Save(Student grade[],int n) //内存数据写入磁盘中{int i=0;FILE *fp; /*定义文件指针*/if((fp=fopen("mydata.txt","w"))==NULL) /*打开文件*/{printf("\t\t 无法打开该文件\n");system("pause");return;}fprintf(fp,"%d\n",n); /*循环写入数据*/while(i<n){fprintf(fp,"%-10d%-20s%-10s%-10d%-10d%-10d\n",grade[i].term,grade[i].num,grade[i].na me,grade[i].cgrade,grade[i].mgrade,grade[i].egrade);i++;}fclose(fp); /*关闭文件*/printf("写入成功!\n"); /*返回成功信息*/}int Read(Student grade[],int n) //磁盘中数据读入内存{int i=0,num;FILE *fp; /*定义文件指针*/if((fp=fopen("mydata.txt","rb"))==NULL) /*打开文件*/{printf("\t\t 无法打开该文件\n"); /*打开失败信息*/printf("\t\t");system("pause");return(n);}fscanf(fp,"%d",&num); /*读入总记录量*/while(i<num) /*循环读入数据*/{fscanf(fp,"%d%s%s%d%d%d",&grade[n+i].term,grade[n+i].num,grade[n+i].name,&grade[n+i].cgrade,&grade[n+i].mgrade,&grade[n+i].egrade);i++;}n+=num;fclose(fp); /*关闭文件*/printf("\t\t 读入成功!\n");return(n);}int main() /*主函数*/{int n=0;while(1){switch(menu_select()) /*选择判断*/{case 1:printf("\t\t 输入记录\n"); /*输入若干条记录*/n=Input(score,n);break;case 2:printf("\t\t 显示记录\n"); /*显示所有记录*/Disp(score,n);break;case 3:printf("\t\t 查找并显示一个记录\n"); /*查找学生信息*/Qur_info(score,n);printf("\t\t");system("pause");break;case 4:printf("\t\t 查找并修改一个记录\n"); /*修改学生信息*/Modify_info(score,n);printf("\t\t");system("pause");break;case 5:printf("\t\t 插入一条记录\n"); /*插入一条记录*/n=Insert(score,n);printf("\t\t");break;case 6:printf("\t\t 按学号及姓名找,删除一条记录\n"); /*按学号及学期删除信息*/ n=Del_info(score,n);printf("\t\t");system("pause");break;case 7:printf("\t\t 按单科排序并显示\n"); /*按单科降序(选择)排序*/Sort_sub(score,n);printf("\t\t\t 排序成功!\n");Disp(score,n);printf("\t\t");break;case 8:printf("\t\t 按总分排序并显示\n"); /*按总分降序排序*/Sort_sum(score,n);printf("\t\t\t 排序成功!\n");Disp(score,n);printf("\t\t");break;case 9:printf("\t\t各科总分和平均分信息"); /*统计各科总分和平均分信息*/ Average(score,n);system("pause");break;case 10:printf("\t\t 循环写入数据\n"); /*循环写入数据*/Save(score,n);printf("\t\t");system("pause");break;case 11:printf("\t\t 从文件中读入数据\n"); /*从文件中读入数据*/n=Read(score,n);printf("\t\t");学习-----好资料system("pause");break;case 0:printf("\t\t 谢谢使用,祝您好运,再见!\n"); /*结束程序*/printf("\t\t");system("pause");exit(0);return 0;}}}更多精品文档。

学生成绩管理系统C语言(附完整源代码)

学生成绩管理系统C语言(附完整源代码)学生成绩管理系统C语言(附完整源代码)课程设计报告学生成绩管理系统院系:专业:班级:完成日期: 2009年1月03日设计题目:学生成绩管理系统目录1、题目描述2、算法设计/设计思想3、结构框图、各模块的功能描述4、主体思想:5、程序的,,,流程图6、源代码1.题目描述设计一个简单的学生成绩管理系统,要求有简单的界面,程序段要分清模块,该程序应该:(1)输入学生成绩,求总分,平均分,以及排序。

(2)查询学生单科成绩,总分和平均成绩;(3)添加、修改学生成绩具有下列功能:(4)实现保存与查看功能2.算法设计/设计思想利用二维数组——定义stu[][]存储学生学号、各科成绩,总分,平均分,名次,利用文件来存储,读取数据。

详细合作是::负责inputx(),print1(),input();:卖力文件的储备和读取,main(),System(),Idea()和各挪用函数之间的连;:卖力find1(),find2(),find3(),find31(),Find();:负责del(),add(),change1(),Change();前期调试由小组配合卖力。

3.结构框图、各模块的功能描述3.1建立成就表3.1.1 input()功用是输退学生的信息,便于当前的查询、欣赏。

3.2增加3.2.1 add( )功用是向inputy()增加新的内容。

3.3.2 chance( )对单科成绩进行修改。

3.3查询3.3.1可根据学号,科目,名次,进行查询。

3.3.2查询内容包孕:该学生的各课成就、、均匀分。

3.4删除3.4.1能够输退学号删除一逻辑学生的一课成就。

3.5浏览成绩单3.5.1通过此print1()可以查看所有学生的各课成绩、总分、平均分和名次。

3.6文件()3.6.1保存以上所输入的信息以达到既是关闭窗口信息也不会丢失信息的目的。

3.6.2随时打开,修改文件。

3.7.退出功用是退出主菜单退出系意见评述功能菜单统输入增加及改查找功用退出功用菜单成就功用查输排查找学学添修某某生生加改XXX某成成就绩科绩绩绩成就按按按名学科次号目查查查找找找四、主体思想:1、斟酌到此步伐量大代码多,以是用函数挪用,分几小我去完成。

学生成绩C程序

#include "stdio.h" /*定义学生结构体*/struct Student{char ID[20];char Name[20];float Mark1;float Mark2;float Mark3;float Average;};/*声明学生数组及学生数量*/struct Student students[1000];int num=0;/*求平均值*/float Avg(struct Student stu){return (stu.Mark1+stu.Mark2+stu.Mark3)/3; }/*通过学号返回数组下标*/int Student_SearchByIndex(char id[]){int i;for (i=0;i<num;i++){if (strcmp(students[i].ID,id)==0){return i;}}return -1;}/*通过姓名返回数组下标*/int Student_SearchByName(char name[]){int i;for (i=0;i<num;i++){if (strcmp(students[i].Name,name)==0){}}return -1;}/*显示单条学生记录*/void Student_DisplaySingle(int index){printf("%10s%10s%8s%8s%8s%10s\n","学号","姓名","成绩","成绩","成绩","平均成绩");printf("-------------------------------------------------------------\n");printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",students[index].ID, students[index].Name,students[index].Mark1,students[index].Mark2,students[index].Mark3,stu dents[index].Average);}/*插入学生信息*/void Student_Insert(){while(1){printf("请输入学号:");scanf("%s",&students[num].ID);getchar();printf("请输入姓名:");scanf("%s",&students[num].Name);getchar();printf("请输入成绩:");scanf("%f",&students[num].Mark1);getchar();printf("请输入成绩:");scanf("%f",&students[num].Mark2);getchar();printf("请输入成绩:");scanf("%f",&students[num].Mark3);getchar();students[num].Average=Avg(students[num]);num++;printf("是否继续?(y/n)");if (getchar()=='n'){}}}/*修改学生信息*/void Student_Modify(){float mark1,mark2,mark3;while(1){char id[20];int index;printf("请输入要修改的学生的学号:");scanf("%s",&id);getchar();index=Student_SearchByIndex(id);if (index==-1){printf("学生不存在!\n");}else{printf("你要修改的学生信息为:\n");Student_DisplaySingle(index);printf("-- 请输入新值--\n");printf("请输入学号:");scanf("%s",&students[index].ID);getchar();printf("请输入姓名:");scanf("%s",&students[index].Name);getchar();printf("请输入成绩:");scanf("%f",&students[index].Mark1);getchar();printf("请输入成绩:");scanf("%f",&students[index].Mark2);getchar();printf("请输入成绩:");scanf("%f",&students[index].Mark3);getchar();students[index].Average=Avg(students[index]);}printf("是否继续?(y/n)");if (getchar()=='n'){break;}}}/*删除学生信息*/void Student_Delete(){int i;while(1){char id[20];int index;printf("请输入要删除的学生的学号:");scanf("%s",&id);getchar();index=Student_SearchByIndex(id);if (index==-1){printf("学生不存在!\n");}else{printf("你要删除的学生信息为:\n");Student_DisplaySingle(index);printf("是否真的要删除?(y/n)");if (getchar()=='y'){for (i=index;i<num-1;i++){students[i]=students[i+1];}num--;}getchar();}printf("是否继续?(y/n)");if (getchar()=='n'){break;}}}/*按姓名查询*/void Student_Select(){while(1){char name[20];int index;printf("请输入要查询的学生的姓名:");scanf("%s",&name);getchar();index=Student_SearchByName(name);if (index==-1){printf("学生不存在!\n");}else{printf("你要查询的学生信息为:\n");Student_DisplaySingle(index);}printf("是否继续?(y/n)");if (getchar()=='n'){break;}}}/*按平均值排序*/void Student_SortByAverage(){int i,j;struct Student tmp;for (i=0;i<num;i++){for (j=1;j<num-i;j++){if (students[j-1].Average<students[j].Average){tmp=students[j-1];students[j-1]=students[j];students[j]=tmp;}}}}/*显示学生信息*/void Student_Display(){int i;printf("%10s%10s%8s%8s%8s%10s\n","学号","姓名","成绩","成绩","成绩","平均成绩");printf("-------------------------------------------------------------\n");for (i=0;i<num;i++){printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",students[i].ID,students[i].Name,students[i].Mark1,students[i].Mark2,students[i].Mark3,students[i].Average);}}/*将学生信息从文件读出*/void IO_ReadInfo(){FILE *fp;int i;if ((fp=fopen("Database.txt","rb"))==NULL){printf("不能打开文件!\n");return;}if (fread(&num,sizeof(int),1,fp)!=1){num=-1;}else{for(i=0;i<num;i++){fread(&students[i],sizeof(struct Student),1,fp);}}fclose(fp);}/*将学生信息写入文件*/void IO_WriteInfo(){FILE *fp;int i;if ((fp=fopen("Database.txt","wb"))==NULL){printf("不能打开文件!\n");return;}if (fwrite(&num,sizeof(int),1,fp)!=1){printf("写入文件错误!\n");}for (i=0;i<num;i++){if (fwrite(&students[i],sizeof(struct Student),1,fp)!=1){printf("写入文件错误!\n");}}fclose(fp);}/*主程序*/main(){int choice;IO_ReadInfo();while(1){/*主菜单*/printf("\n------ 学生成绩管理系统------\n");printf("1. 增加学生记录\n");printf("2. 修改学生记录\n");printf("3. 删除学生记录\n");printf("4. 按姓名查询学生记录\n");printf("5. 按平均成绩排序\n");printf("6. 退出\n");printf("请选择(1-6):");scanf("%d",&choice);getchar();switch(choice){case 1:Student_Insert();break;case 2:Student_Modify();break;case 3:Student_Delete();break;case 4:Student_Select();break;case 5:Student_SortByAverage();Student_Display();break;case 6:exit();break;}IO_WriteInfo();}}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

# include<stdio.h># include<stdlib.h>#include<string.h># define stunum 5struct studentinfo //*学生结构体{char name[100];float score[5];float average,sum,max,min;};typedef struct studentinfo student;float findmax(float *a) //*找最大成绩函数{int i;float b;b=a[0];for(i=0;i<5;i++){if(b<=a[i])b=a[i];}return b;}float findmin(float *a) //*找最小成绩函数{int i;float b;b=a[0];for(i=0;i<5;i++){if(b>=a[i])b=a[i];}return b;}void paixu(float *a) //*排序函数{int i,minloc,j;float temp;for(i=0;i<stunum;i++){minloc=i;for(j=i+1;j<stunum;j++)if(a[j]<a[minloc])minloc=j;if(minloc!=i){temp=a[i]; a[i]=a[minloc]; a[minloc]=temp;}}}int main()//*程序开始{student s[stunum];int i,j;float tempsum,c[5];float k1[5],k2[5],k3[5],k4[5],k5[5];char filepath1[20]; //*临时存放数据FILE *fp1,*fp2;for(;(fp1=fopen(filepath1,"r"))==NULL;printf("再次"))//*输入文件位置{printf("输入文件路径:");fflush(stdin);gets(filepath1);printf("未找到文件!\n");}if((fp2=fopen("D:\\studentfinale.txt","w"))==NULL) //*建立输出文件{printf("Can not open the file!\n");exit(0);}for(i=0;i<stunum;i++)//*读取文件{fscanf(fp1,"%s",s[i].name);for(j=0;j<5;j++)fscanf(fp1," %f",&s[i].score[j]);}for(i=0;i<stunum;i++){tempsum=0;for(j=0;j<5;j++){tempsum+=s[i].score[j];}s[i].sum=tempsum; //*最大最小等s[i].average=tempsum/5;s[i].max=findmax(s[i].score);s[i].min=findmin(s[i].score);}for(j=0;j<5;j++)//*平均{tempsum=0;for(i=0;i<stunum;i++){tempsum+=s[i].score[j];}c[j]=tempsum/5;}for(i=0;i<stunum;i++)//*排序{k1[i]=s[i].score[0];k2[i]=s[i].score[1];k3[i]=s[i].score[2];k4[i]=s[i].score[3];k5[i]=s[i].score[4];}paixu(k1);paixu(k2);paixu(k3);paixu(k4);paixu(k5);//*输出和传递至文件printf("\n--名字---物理---化学---数学---语文---英语---平均分---总分---最高分---最低分---\n");fprintf(fp2,"\n--名字---物理---化学---数学---语文---英语---平均分---总分---最高分---最低分---\n");for(i=0;i<stunum;i++){printf("%8s",s[i].name);for(j=0;j<5;j++)printf("%8.1f",s[i].score[j]);printf("%8.1f",s[i].average);printf("%8.1f",s[i].sum);printf("%8.1f",s[i].max);printf("%8.1f",s[i].min);printf("\n");}for(i=0;i<stunum;i++){fprintf(fp2,"%8s",s[i].name);for(j=0;j<5;j++)fprintf(fp2,"%8.1f",s[i].score[j]);fprintf(fp2,"%8.1f",s[i].average);fprintf(fp2,"%8.1f",s[i].sum);fprintf(fp2,"%8.1f",s[i].max);fprintf(fp2,"%8.1f",s[i].min);fprintf(fp2,"\n");}printf("\n各科平均分:");fprintf(fp2,"\n各科平均分:");for(i=0;i<5;i++)printf("%8.1f",c[i]);for(i=0;i<5;i++)fprintf(fp2,"%8.1f",c[i]);printf("\n各科成绩排名(每门成绩从低到高):\n"); fprintf(fp2,"\n各科成绩排名(每门成绩从低到高):\n"); printf(" 物理:\n");for(i=4,j=1;i>=0&&j<=5;i--,j++)printf(" (%d)%3.1f\n",j,k1[i]);printf(" 化学:\n");for(i=4,j=1;i>=0&&j<=5;i--,j++)printf(" (%d)%3.1f\n",j,k2[i]);printf(" 数学:\n");for(i=4,j=1;i>=0&&j<=5;i--,j++)printf(" (%d)%3.1f\n",j,k3[i]);printf(" 语文:\n");for(i=4,j=1;i>=0&&j<=5;i--,j++)printf(" (%d)%3.1f\n",j,k4[i]);printf(" 英语:\n");for(i=4,j=1;i>=0&&j<=5;i--,j++)printf(" (%d)%3.1f\n",j,k5[i]);fprintf(fp2," 物理:\n");for(i=4,j=1;i>=0&&j<=5;i--,j++)fprintf(fp2," (%d)%3.1f\n",j,k1[i]);fprintf(fp2," 化学:\n");for(i=4,j=1;i>=0&&j<=5;i--,j++)fprintf(fp2," (%d)%3.1f\n",j,k2[i]);fprintf(fp2," 数学:\n");for(i=4,j=1;i>=0&&j<=5;i--,j++)fprintf(fp2," (%d)%3.1f\n",j,k3[i]);fprintf(fp2," 语文:\n");for(i=4,j=1;i>=0&&j<=5;i--,j++)fprintf(fp2," (%d)%3.1f\n",j,k4[i]);fprintf(fp2," 英语:\n");for(i=4,j=1;i>=0&&j<=5;i--,j++)fprintf(fp2," (%d)%3.1f\n",j,k5[i]);printf("文件已录入\n");fclose(fp1);fclose(fp2);return 0;}。

相关文档
最新文档