C语言程序设计 链表的综合作(急)

max2=shuxue[j];

我是问题提问者【rimu293】以下为我编写的程序:

学生成绩管理系统c语言代码链表_学生成绩管理系统c语言流程图学生成绩管理系统c语言代码链表_学生成绩管理系统c语言流程图


学生成绩管理系统c语言代码链表_学生成绩管理系统c语言流程图


#include

#include

#define NULL 0

#define LEN sizeof(struct student)

struct student

{long num;

char name[20];

float score[3];

struct studenprintf("=============================================================================n");t next;

};

int n;long a;float b,c,d;

struct student creat(void)

{struct student head;

struct student p1, p2;

n=0;

p1=p2=(struct student )malloc(LEN);

scanf("%ld,%s,%f,%f,%f",&a,p1->name,&b,&c,&d);

p1->num=a;

p1->score[0]=b;

p1->score[1]=c;

p1->score[2]=d;

head=NULL;

while(p1->num!=0)

{n=n+1;

if(n==1)head=p1;

else p2->next=p1;

p2=p1;

p1=(struct student )malloc(LEN);

scanf("%ld,%s,%f,%f,%f",&a,p1->name,&b,&c,&d);

p1->num=a;

p1->score[0]=b;

p1->score[1]=c;

p1->score[2]=d;

}p2->next=NULL;

return(head);

}void print(struct student head)

{struct student p;

printf("nNow,These %d records are:n",n);

p=head;

if(head!=NULL)

do

{printf("%ld,%s,%f,%f,%fn",a,p->name,b,c,d);

p=p->next;

}while(p!=NULL);

}struct student insert(struct student head,struct sutdent stud)

{struct sutdent p0, p1, p2;

p1=head;

p0=stud;

if(head==NULL)

{head=p0;p0->next=NULL;}

{while((p0->num>p1->num))

{p2=p1;

p1=p1->next;}

if(p0->num<=p1->num)

{if(head==p1)head=p0;

else p2->next=p0;

p0->next=p1;}

{p1->next=p0;p0->next=NULL;}

}n=n+1;

return(head);

}struct student del(struct student head,long num)

{struct student p1, p2;

if(head==NULL)

p1=head;

while(num!=p1->num&&p1->next!=NULL)

{p2=p1;p1=p1->next;}

if(num==p1->num)

{if(p1==head)head=p1->next;

printf("delete:%ldn",num);

n=n-1;

}else printf("%ld not been found!n",num);

end:;

return(head);

{struct student head, stu;

long del_num;

printf("input records:n");

head=creat();

print(head);

printf("ninput the insertd record:");

stu=(struct student )malloc(LEN);

scanf("%ld,%s,%f,%f,%f",&a,stu->name,&b,&c,&d);

while(stu->num!=0)

{head=insert(head,stu);

print(head);

printf("input the inserted record:");

stu=(struct student )malloc(LEN);

scanf("%ld,%s,%f,%f,%f",&a,stu->name,&b,&c,&d);

}printf("ninput the deleted number:");

scanf("%ld",&del_num);

while(del_num!=0)

{head=del(head,del_num);

print(head);

printf("input the deleted number:");

scanf("%ld",&del_num);}

getch();

}辛苦了printf("n输入学员成绩3:");,谢谢帮忙。

c语言大作业 学生成绩管理系统

else p2->next=p1->next;

#includprintf("请你输入新的数学成绩(原来是%d分):",p->data.mgrade);e

#include

#include

#include

void caidan();

void denglu()

{//定义用户名数组为char类型

char mz[20];

//定义密码数组为char类型

char mima[20];

//定义学员初始值为0

int count=0;

do

{//清空屏幕

printf("tttt学员管理系统平台n");

printf("tt【用户登陆】n");

printf("tttt用户名:");

//存储用户名

scanf("%s",}if(p==0)mz);

printf("tttt密码:");

//存储密码

scanf("%s",mima);

//如果输入正确,执行菜单功能

if(strcmp(mz,"kkk")==0&&strcmp(mima,"ok")==0)

{caidan();

break;

}//如果输不正确,提示登录失败

{printf("登陆失败n");

count++;

("pause");

}//超过三次退出程序

if(count>=3)

{printf("登陆失败,请稍后再试n");

exit(5);

}}while(1);

}struct student

{int num;

char name[20];

int fs[3];

int zf;

}stu[50];

//定义登录函数

void danlu(student p)

{printf("输入学号:");

scanf("%d",&p->num);

printf("输入姓名:");

scanf("%s",&p->name);

p->zf=0;

//循环输入三门成绩

for(int i=0;i<3;i++)

{printf("输入第%d门成绩",i+1);

scanf("%d",&p->fs[i]);

p->zf=p->zf+p->fs[i];

//定义录入函数

int luru(student p,int n)

{//int j=0;

do

{printf("输入第%d个学员的学号:",n+1);

scanf("%d",&(p+n)->num);

printf("输入第%d个学员的姓名:",n+1);

scanf("%s",&(p+n)->name);

(p+n)->zf=0;

for(int i=0;i<3;i++)

{printf("输入第%d个学员第%d门成绩",n+1,i+1);

scanf("%d",&(p+n)->fs[i]);

(p+n)->zf=(p+n)->zf+(p+n)->fs[i];

}n++;

printf("继续请按y键");

//如果输入的不是‘y’,就退出

if(getchar()!='y')

break;

continue;

}while(1);

return n;

}//定义排序函数

void paixu(student stu[],int h)

{//定义一个student类型的结构tt

student tt;

for(int i=0;i

{for(int j=0;j

{if(stu[j].zf

{tt=stu[j];

stu[j]=stu[j+1];

stu[j+1]=tt;

//定义插入函数

void charu(student stu[],int t,student s)

{int i=0;

for( i=0;i

{if(stu[i].zf>s.zf)

break;

}for(int j=t-1;j>=i;j--)

{stu[j+1] = stu[j];

}stu[i]=s;

}int cha(student stu[],int n)

{//定义变量保存要插入学员的信息

student s;

do{

//录入单个学员信息

danlu(&s);

//把学员信息插入到数组中

charu(stu,n,s);

//学员的总数要加1

n++;

printf("是否继续插入(y/n):");

if(getchar()!='y')

break;

}while(1);

return n;

}void shucu(student stu[],int k)

{printf("-----------学员信息如下---------n");

printf("学号t姓名t语文t数学t英语t总分n");

for(int i=0;i

{printf("%dt%st%dt%dt%dt%dn",stu[i].num,stu[i].name,stu[i].fs[0],stu[i].fs[1],stu[i].fs[2],stu[i].zf);

int shancu(student stu[],int n)

{int i,xuehao;

printf("输入要删除的学号:");

scanf("%d",&xuehao);

for(i=0;i

{if(xuehao==stu[i].num)

break;

}for(int j = i;j<=n-2;j++)

stu[j] = stu[j+1];

return n-1;

}void chazao(student stu[],int d)

{int xuehao,i;

printf("输入要查找的学号");

scanf("%d",&xuehao);

for(i=0;i

{if(xuehao==stu[i].num)

break;

}printf("-----------该学员信息如下---------n");

printf("学号t姓名t语文t数学t英语t总分n");

printf("%dt%st%dt%dt%dt%dn",stu[i].num,stu[i].name,stu[i].fs[0],stu[i].fs[1],stu[i].fs[2],stu[i].zf);

}void baocun(student stu[],int n)

{FILE fp;

fp=fopen("E:studentbin.txt","wb");

fwrite(stu,sizeof(struct student),n,fp);

fclose(fp);

printf("保存成功!n");

}void read(student stu[])

{FILE fp;

int a=0;

fp=fopen("E:studentbin.txt","rb");

a=fread(stu,sizeof(struct student),100,fp);

printf("学号t姓名t语文t数学t英语t总分n");

for(int i=0;i

{printf("%dt%st%dt%dt%dt%dn",stu[i].num,stu[i].name,stu[i].fs[0],stu[i].fs[1],stu[i].fs[2],stu[i].zf);

}fclose(fp);

}void caidan()

{int i;

student stu[50];

int count=0,s=0;

do{

printf("tttt请选择要进行功能菜单:n");

printf("tttt1.录入单个学员信息。n");

Sleep(100);

printf("tttt2.显示所有学员信息。n");

Sleep(100);

printf("tttt3.排序显示所有学员信息。n");

Sleep(100);

printf("tttt4.插入单个学员信息。n");

Sleep(100);

printf("tttt5.删除单个学员信息。n");

Sleep(100);

printf("tttt6.查找单个学员信息。n");

Sleep(100);

printf("tttt7.读取所有学员信息。n");

Sleep(100);

printf("tttt8.保存所有学员信息。n");

Sleep(100);

printf("tttt9.退出系统。n");

scanf("%d",&i);

switch(i)

{case 1:

//录入学员

count = luru(stu,count);

("pause");

break;

case 2:

//输出学员信息

shucu(stu,count);

("pause");

break;

case 3:

//排序

paixu(stu,count);

shucu(stu,count);

("pause");

break;

case 4:

//插入学员信息

count = cha(stu,count);

paixu(stu,count);

shucu(stu,count);

("pause");

break;

case 5:

//删除学员信息

count = shancu(stu,count);

shucu(stu,count);

("pause");

break;

case 6:

chazao(stu,count);

("pause");

break;

case 7:

read(stu);

("pause");

break;

case 8:

baocun(stu,count);

("pause");

break;

case 9:

exit(8);

}}while('0');

{int m,w,n;

struct student stu[50];

denglu();

caidan();

}

#include

#include

#include

#include

void caidan();

void denglu()

{//定义用户名数组为char类型

char mz[20];

//定义密码数组为char类型

char mima[20];

//定义学员初始值为0

int count=0;

do

{//清空屏幕

printf("tttt学员管理系统平台n");

printf("tt【用户登陆】n");

printf("tttt用户名:");

//存储用户名

scanf("%s",mz);

printf("tttt密码:");

//存储密码

scanf("%s",mima);

//如果输入正确,执行菜单功能

if(strcmp(mz,"kkk")==0&&strcmp(mima,"ok")==0)

{caidan();

break;

}//如果输不正确,提示登录失败

{printf("登陆失败n");

count++;

("pause");

}//超过三次退出程序

if(count>=3)

{printf("登陆失败,请稍后再试n");

exit(5);

}}while(1);

}struct student

{int num;

char name[20];

int fs[3];

int zf;

}stu[50];

//定义登录函数

void danlu(student p)

{printf("输入学号:");

scanf("%d",&p->num);

printf("输入姓名:");

scanf("%s",&p->name);

p->zf=0;

//循环输入三门成绩

for(int i=0;i<3;i++)

{printf("输入第%d门成绩",i+1);

scanf("%d",&p->fs[i]);

p->zf=p->zf+p->fs[i];

//定义录入函数

int luru(student p,int n)

{//int j=0;

do

{printf("输入第%d个学员的学号:",n+1);

scanf("%d",&(p+n)->num);

printf("输入第%d个学员的姓名:",n+1);

scanf("%s",&(p+n)->name);

(p+n)->zf=0;

for(int i=0;i<3;i++)

{printf("输入第%d个学员第%d门成绩",n+1,i+1);

scanf("%d",&(p+n)->fs[i]);

(p+n)->zf=(p+n)->zf+(p+n)->fs[i];

}n++;

printf("继续请按y键");

//如果输入的不是‘y’,就退出

if(getchar()!='y')

break;

continue;

}while(1);

return n;

}//定义排序函数

void paixu(student stu[],int h)

{//定义一个student类型的结构tt

student tt;

for(int i=0;i

{for(int j=0;j

{if(stu[j].zf

{tt=stu[j];

stu[j]=stu[j+1];

stu[j+1]=tt;

//定义插入函数

void charu(student stu[],int t,student s)

{int i=0;

for( i=0;i

{if(stu[i].zf>s.zf)

break;

}for(int j=t-1;j>=i;j--)

{stu[j+1] = stu[j];

}stu[i]=s;

}int cha(student stu[],int n)

{//定义变量保存要插入学员的信息

student s;

do{

//录入单个学员信息

danlu(&s);

//把学员信息插入到数组中

charu(stu,n,s);

//学员的总数要加1

n++;

printf("是否继续插入(y/n):");

if(getchar()!='y')

break;

}while(1);

return n;

}void shucu(student stu[],int k)

{printf("-----------学员信息如下---------n");

printf("学号t姓名t语文t数学t英语t总分n");

for(int i=0;i

{printf("%dt%st%dt%dt%dt%dn",stu[i].num,stu[i].name,stu[i].fs[0],stu[i].fs[1],stu[i].fs[2],stu[i].zf);

int shancu(student stu[],int n)

{int i,xuehao;

printf("输入要删除的学号:");

scanf("%d",&xuehao);

for(i=0;i

{if(xuehao==stu[i].num)

break;

}for(int j = i;j<=n-2;j++)

stu[j] = stu[j+1];

return n-1;

}void chazao(student stu[],int d)

{int xuehao,i;

printf("输入要查找的学号");

scanf("%d",&xuehao);

for(i=0;i

{if(xuehao==stu[i].num)

break;

}printf("-----------该学员信息如下---------n");

printf("学号t姓名t语文t数学t英语t总分n");

printf("%dt%st%dt%dt%dt%dn",stu[i].num,stu[i].name,stu[i].fs[0],stu[i].fs[1],stu[i].fs[2],stu[i].zf);

}void baocun(student stu[],int n)

{FILE fp;

fp=fopen("E:studentbin.txt","wb");

fwrite(stu,sizeof(struct student),n,fp);

fclose(fp);

printf("保存成功!n");

}void read(student stu[])

{FILE fp;

int a=0;

fp=fopen("E:studentbin.txt","rb");

a=fread(stu,sizeof(struct student),100,fp);

printf("学号t姓名t语文t数学t英语t总分n");

for(int i=0;i

{printf("%dt%st%dt%dt%dt%dn",stu[i].num,stu[i].name,stu[i].fs[0],stu[i].fs[1],stu[i].fs[2],stu[i].zf);

}fclose(fp);

}void caidan()

{int i;

student stu[50];

int count=0,s=0;

do{

printf("tttt请选择要进行功能菜单:n");

printf("tttt1.录入单个学员信息。n");

Sleep(100);

printf("tttt2.显示所有学员信息。n");

Sleep(100);

printf("tttt3.排序显示所有学员信息。n");

Sleep(100);

printf("tttt4.插入单个学员信息。n");

Sleep(100);

printf("tttt5.删除单个学员信息。n");

Sleep(100);

printf("tttt6.查找单个学员信息。n");

Sleep(100);

printf("tttt7.读取所有学员信息。n");

Sleep(100);

printf("tttt8.保存所有学员信息。n");

Sleep(100);

printf("tttt9.退出系统。n");

scanf("%d",&i);

switch(i)

{case 1:

//录入学员

count = luru(stu,count);

("pause");

break;

case 2:

//输出学员信息

shucu(stu,count);

("pause");

break;

case 3:

//排序

paixu(stu,count);

shucu(stu,count);

("pause");

break;

case 4:

//插入学员信息

count = cha(stu,count);

paixu(stu,count);

shucu(stu,count);

("pause");

break;

case 5:

//删除学员信息

count = shancu(stu,count);

shucu(stu,count);

("pause");

break;

case 6:

chazao(stu,count);

("pause");

break;

case 7:

read(stu);

("pause");

break;

case 8:

baocun(stu,count);

("pause");

break;

case 9:

exit(8);

}}while('0');

{int m,w,n;

struct student stu[50];

denglu();

caidan();

}

#include

#define N 10

int input(struct Stud st[]);

void display(struct Stud st[],int n);

void maxmin(struct Stud st[],int n,int ax,int );

struct Stud

{int no;

char name[10];

int degree;

};

void main()

{int n,max,min;

struct Stud st[N];

n=input(st);

printf(" 显示结果如下:n");

display(st,n);

maxmin(st,n,max,min);

printf(" 分:n");

printf("t%dt%st%dn",st[min].no,st[max].name,st[max].degree);

printf(" 分:n");

printf("t%dt%st%dn",st[min].no,st[min].name,st[min].degree);

}int input(struct Stud st[])

{int n,i;

printf("学生人数:");

scanf("%d",&n);

for(i=0;i

{printf(" 第%d个学生:",i+1);

scanf("%d%s%d",&st[i].no,st[i].name,st[i].degree);

}return n;

}void display(struct Stud st[],int n)

{int i;

printf("t学号t姓名t分数n");

for(i=0;i

{printf("t%dt%st%dn",st[i].no,st[i].name,st[i].degree);

void main(struct Stud st[],int n, int max,int min)

{int i;

max=min=0;

for(i=1;i

{if(st[max].degree

max=i;

if(st[min].degree>st[i].degree)

min=i;

是不是这样的?

编程如何用C语言编写一个学生成绩管理系统程序

printf("tttt----------------------n");

我们才做了这个作业。。。

printf("姓名:%sn",name[i]);

#include

#include

#include

#define LEN sizeof(struct scorenode)

#define DEBUG

#include

struct scorenode

{int number;/学号/

char name[8];/姓名/

float cj1;/成绩1/

float cj3;/成绩3 /

struct scorenode next;

};

typedef struct scorenode score;

int n,k;/n,k为全局变量,本程序中的函数均可以使用它/

/==============================================================================================/

score creat(void)

/函数creat,功能:创建链表,此函数带回一个指向链表头的指针/

{scorehead;

score p1,p2,p3,max;

int i,j;

float fen;

char t[10];

n=0;

p1=p2=p3=(score )malloc(LEN);head=p3; /申请一个新单元/

printf("请输入,输0退出!n");

repeat1: printf("请输入学生学号(学号应大于0):");/输入大于0的学号/

scanf("%d",&p1->number);

while(p1->number<0)

{getchar();

printf("输入错误,请重新输入学生学号:");

scanf("%d",&p1->number);

}/输入学号为字符或小于0时,程序报错,提示重新输入学号/

if(p1->number==0)

goto end;/当输入的学号为0时,转到末尾,结束创建链表/

{p3=head;

if(n>0)

{for(i=0;i

{if(p1->number!=p3->number)

p3=p3->next;

{printf("学号重复,请重输!n");

goto repeat1;

/当输入的学号已经存在,程序报错,返回前面重新输入/

printf("请输入学生姓名:");

scanf("%s",&p1->name); /输入学生姓名/

printf("请输入cj1(0~100):"); /输入cj1,成绩应在0-100/

scanf("%f",&p1->cj1);

while(p1->cj1<0||p1->cj1>100)

{getchar();

printf("输入错误,请重新输入cj1"); /输入错误,重新输入成绩1/

scanf("%f",&p1->cj1);

}printf("请输入cj2(0~100):"); /输入cj2,成绩应在0-100/

scanf("%f",&p1->cj2);

while(p1->cj2<0||p1->cj2>100)

{getchar();

printf("输入错误,请重新输入cj2"); /输入错误,重新输入cj2直到正确为止/

scanf("%f",&p1->cj2);

}printf("请输入cj3(0~100):");/输入cj3,成绩应在0-100/

scanf("%f",&p1->cj3);

while(p1->cj3<0||p1->cj3>100)

{getchar();

printf("输入错误,请重新输入cj3");

scanf("%f",&p1->cj3);} /输入错误,重新输入cj3直到正确为止/

head=NULL;

while(p1->number!=0)

{n=n+1;

if(n==1)

head=p1;

p2->next=p1;

p2=p1;

p1=(score )malloc(LEN);

printf("请输入,输0退出!n");

repeat2:printf("请输入学生学号(学号应大于0):");

scanf("%d",&p1->number); /输入学号,学号应大于0/

while(p1->number<0)

{getchar();

printf("输入错误,请重新输入学生学号:");

scanf("%d",&p1->number);

}/输入学号为字符或小于0时,程序报错,提示重新输入学号/

if(p1->number==0)

goto end; /当输入的学号为0时,转到末尾,结束创建链表/

{p3=head;

if(n>0)

{for(i=0;i

{if(p1->number!=p3->number)

p3=p3->next;

{printf("学号重复,请重输!n");

goto repeat2;

/当输入的学号已经存在,程序报错,返回前面重新输入/

printf("请输入学生姓名:");

scanf("%s",&p1->name);/输入学生姓名/

printf("请输入cj1(0~100):");

scanf("%f",&p1->cj1);/输入cj1,成绩应在0-100/

while(p1->cj1<0||p1->cj1>100)

{getchar();

printf("输入错误,请重新输入cj1");

scanf("%f",&p1->cj1);}/输入错误,重新输入cj1直到正确为止/

printf("请输入cj2(0~100):");

scanf("%f",&p1->cj2);/输入cj2,成绩应在0-100/

while(p1->cj2<0||p1->cj2>100)

{getchar();

printf("输入错误,请重新输入cj2");

scanf("%f",&p1->cj2);

} /输入错误,重新输入cj2绩直到正确为止/

printf("请输入cj3(0~100):");

scanf("%f",&p1->cj3);/输入cj3,成绩应在0-100/

while(p1->cj3<0||p1->cj3>100)

{getchar();

printf("输入错误,请重新输入cj3");

scanf("%f",&p1->cj3);} /输入错误,重新输入cj3直到正确为止/

}end: p1=head;

p3=p1;

for(i=1;i

{for(j=i+1;j<=n;j++)

{max=p1;

p1=p1->next;

if(max->number>p1->number)

{k=max->number;

max->number=p1->number;

p1->number=k;

/交换前后结点中的学号值,使得学号大者移到后面的结点中/

strcpy(t,max->name);

strcpy(max->name,p1->name);

strcpy(p1->name,t);

/交换前后结点中的姓名,使之与学号相匹配/

fen=max->cj1;

max->cj1=p1->cj1;

p1->cj1=fen;

/交换前后结点中的cj1,使之与学号相匹配/

fen=max->cj2;

max->cj2=p1->cj2;

p1->cj2=fen;

/交换前后结点中的cj2,使之与学号相匹配/

fen=max->cj3;

max->cj3=p1->cj3;

p1->cj3=fen;

max=head;p1=head;/重新使max,p指向链表头/

}p2->next=NULL;/链表结尾/

printf("输入的学生数为:%d个!n",n);

return(head);

}score add(score head,score stu)

/函数add,功能:追加,并且将所有按学号排序/

{score p0,p1,p2,p3,max;

int i,j;

float fen;

char t[10];

p3=stu=(score )malloc(LEN);/开辟一个新单元/

printf("n输入要增加的学生的资料!");

repeat4: printf("请输入学生学号(学号应大于0):");

scanf("%d",&stu->number);

/输入学号,学号应大于0/

while(stu->number<0)

{getchar();

printf("输入错误,请重新输入学生学号:");

scanf("%d",&stu->number);} /输入错误,重新输入学号/

//

if(stu->number==0)

goto end2;/当输入的学号为0时,转到末尾,结束追加/

{p3=head;

if(n>0)

{for(i=0;i

{if(stu->number!=p3->number)

p3=p3->next;

{printf("学号重复,请重输!n");

goto repeat4;

/当输入的学号已经存在,程序报错,返回前面重新输入/

//

printf("输入学生姓名:");

scanf("%s",stu->name); /输入学生姓名/

printf("请输入cj1(0~100):");

scanf("%f",&stu->cj1); /输入cj1,成绩应在0-100/

{getchar();

printf("输入错误,请重新输入cj1");

scanf("%f",&stu->cj1);

} /输入错误,重新输入cj1直到正确为止/

printf("请输入cj2(0~100):");

while(stu->cj2<0||stu->cj2>100)

{getchar();

printf("输入错误,请重新输入cj2");

scanf("%f",&stu->cj2);}/输入错误,重新输入cj2直到正确为止/

printf("请输入cj3(0~100):");

scanf("%f",&stu->cj3);/输入cj3,成绩应在0-100/

while(stu->cj3<0||stu->cj3>100)

{getchar();

printf("输入错误,请重新输入cj3");

scanf("%f",&stu->cj3);}/输入错误,重新输入cj3直到正确为止/

p1=head;

p0=stu;

if(head==NULL)

{head=p0;p0->next=NULL;}/当原来链表为空时,从首结点开始存放资料/

else/原来链表不为空/

{if(p1->next==NULL)/找到原来链表的末尾/

{p1->next=p0;

p0->next=NULL;/将它与新开单元相连接/

}else

{while(p1->next!=NULL)/还没找到末尾,继续找/

{p2=p1;p1=p1->next;

}p1->next=p0;

p0->next=NULL;

n=n+1;

p1=head;

p0=stu;

for(i=1;i

{for(j=i+1;j<=n;j++)

{max=p1;

p1=p1->next;

if(max->number>p1->number)

{k=max->number;

max->number=p1->number;

p1->number=k;

/交换前后结点中的学号值,使得学号大者移到后面的结点中/

strcpy(t,max->name);

strcpy(max->name,p1->name);

strcpy(p1->name,t);

/交换前后结点中的姓名,使之与学号相匹配/

fen=max->cj1;

max->cj1=p1->cj1;

p1->cj1=fen;

/交换前后结点中的cj1,使之与学号相匹配/

fen=max->cj2;

max->cj2=p1->cj2;

p1->cj2=fen;

/交换前后结点中的cj2绩,使之与学号相匹配/

fen=max->cj3;

max->cj3=p1->cj3;

p1->cj3=fen;

max=head;p1=head;/重新使max,p指向链表头/

} end2:

printf("现在的学生数为:%d个!n",n);

return(head);

}/========================================================

======================================/

score search(score head)

/函数search,功能:查询学生成绩/

{int number;

score p1,p2;

printf("输入要查询的学生的学号,");

scanf("%d",&number);

while(number!=0)

{if(head==NULL)

{printf("n没有任何!n");return(head);}

printf("-----------------------------------------n");

printf("|学号t|姓名t|cj1t|cj2t|cj3t|n");

printf("-----------------------------------------n");/打印表格域/

p1=head;

while(number!=p1->number&&p1->next!=NULL)

{p2=p1;p1=p1->next;}

if(number==p1->number)

{printf("|%dt|%st|%.1ft|%.1ft|%.1ft|n",p1->number,p1->name,p1->cj1,p1->cj2,p1->cj3);

printf("-----------------------------------------n");}/打印表格域/

printf("%d不存在此学生!n",number);

printf("输入要查询的学生的学号,");

scanf("%d",&number);

}printf("已经退出了!n");

return(head);

}/=============================================

=================================================/

score del(score head)/函数del,功能:删除/

{score p1,p2;

int number;

printf("输入要删除的学生的学号(输入0时退出):");

scanf("%d",&number);

getchar();

while(number!=0)/输入学号为0时退出/

{if(head==NULL)

{printf("n没有任何!n");

return(head);

}p1=head;

while(number!=p1->number&&p1->next!=NULL)

/p1指向的不是所要找的首结点,并且后面还有结点/

{p2=p1;p1=p1->next;

} /p1后移一个结点/

if(number==p1->number)

/找到了/

{if(p1==head)

head=p1->next;

/若p1指向的是首结点,把地二个结点地址赋予head/

p2->next=p1->next;

/否则将下一个结点地址 赋给前一结点地址/

printf("已经删除}void main():%dn",number);n=n-1;

}else

printf("%d不存在此学生!n",number);

/找不到该结点/

printf("输入要删除的学生的学号:");

scanf("%d",&number);

getchar();

}#ifdef DEBUG

printf("已经退出了!n");

#endif

printf("现在的学生数为:%d个!n",n);

return(head);

} /==================================================

============================================/

score statistics(score head)

/函数statistics,功能:统计学生成绩/

{float sum1=0,sum2=0,sum3=0,e1=0,e2=0,e3=0,max=0,min;

score p;

int x,y=0,i=0;

p=head;

printf("1个人总分和平均分t2单科平均分t3总分分t4总分分n");

scanf("%d",&x);

getchar();

switch(x)

/用switch语句实现功能选择/

{case 1: if(head==NULL)

{printf("n没有任何!n");return(head);}/链表为空/

{printf("---------------------------------------------------------n");

printf("|学号t|姓名t|cj1t|cj2t|cj3t|总分t|平均分t|n");

printf("---------------------------------------------------------n");/打印表格域/

while(p!=NULL)

{sum1=p->cj1+p->cj2+p->cj3; /计算个人总分/

e1=sum1/3;/计算个人平均分/

/打印结果/

printf("---------------------------------------------------------n");/打印表格域/

p=p->next;}

}return(head); break;

case 2: if(head==NULL)

{printf("n没有任何!n");return(head);}/链表为空/

while(p!=NULL)

{sum1=sum1+p->cj1;

sum2=sum2+p->cj2;

sum3=sum3+p->cj3;/计算总分/

y=y+1;

e1=sum1/y;

e2=sum2/y;

e3=sum3/y;/计算平均分/

p=p->next;/使p指向下一个结点/

}printf("cj1平均分是%.1fn",e1);

printf("cj2平均分是%.1fn",e2);

printf("cj3平均分是%.1fn",e3);/打印结果/

return(head); break;

case 3:

if(head==NULL)

{printf("n没有任何!n");return(head);}/链表为空/

max=p->cj1+p->cj2+p->cj3;

while(i

{i=i+1;

sum1=p->cj1+p->cj2+p->cj3; /计算个人总分/

if(max

max=sum1;

p=p->next;

}printf("总分分:%.1f",max);

printf("n");

return(head); break;

case 4: if(head==NULL)

{printf("n没有任何!n");return(head);}/链表为空/

while(p!=NULL)

{min=p->cj1+p->cj2+p->cj3;

while(p!=NULL)

{sum2=p->cj1+p->cj2+p->cj3;

if(min>sum2)

min=sum2;

p=p->next;

printf("总分分:%.1f",min);

printf("n");

return(head); break;

default :printf("输入错误,请重试!n");

}return(head);

}/===========================================================

===================================/

int se(score p1)

/函数se,功能:保存学生的资料/

{FILE fp;

char filepn[20];/用来存放文件保存路径以及文件名/

printf("请输入文件路径及文件名:");

scanf("%s",filepn);

if((fp=fopen(filepn,"w+"))==NULL)

{printf("不能打开文件!n");

return 0;

}fprintf(fp," 学生成绩管理系统 n");

fprintf(fp,"-------------------------------------------------------n");

fprintf(fp,"| 学号t| 姓名t| cj1t| cj2t| cj3t|n");

fprintf(fp,"-------------------------------------------------------n");

/打印表格域/

while(p1!=NULL)

{fprintf(fp,"%dt%st%.1ft%.1ft%.1ftn",p1->number,p1->name,p1->cj1,p1->cj2,p1->cj3);

p1=p1->next;/下移一个结点/

}fclose(fp);

printf("文件已经保存!n");

return 0;

}int menu()/函数menu,功能:菜单选择界面/

{int i,k;

printf("tttt学生成绩管理系统n");

for(i=0;i<80;i++)

printf("");

printf("tt1创建资料ttt2查询成绩ttn");

printf("tt3删除资料ttt4追加资料ttn");

printf("tt5统计成绩ttt6保存资料ttn");

/菜单选择界面/

for(i=0;i<80;i++)

printf("");

printf("请选择您所要的作(选择(0)退出):");

scanf("%d",&k);/选择作/

getchar();

return (k);}

/==============================================================================================/

main() /主函数main,功能:通过调用creat,search,del,add,print,ststistics,se,taxis等函数,实现学生成绩查询系统功能/

{score head=0,stu=0;

while(1)

{k=menu();

switch(k)/用switch语句实现功能选择/

{case 1: head=creat();break;/调用创建链表函数/

case 2: head=search(head);break;/调用查询函数/

case 3: head=del(head); break;/调用删除函数/

case 4: head=add(head,stu);break;/调用追加函数/

case 5: statistics(head); break;/调用统计函数/

case 6: se(head);break;/调用保存函数/

case 0: exit(0);/退出系统,返回主界面/

default: printf("输入错误,请重试!n");

}

学生成绩管理系统C语言不用链表而用结构体数组如何实现

case 2:Del(l);break;/ 删除学生 /

我刚做了一个类似的,除了总分 平均分没有其他都一样

while(s)

你补上那些很简单,417954192想要就加

原理一样的,只要把链表中的指针域去掉,然后再定义一个结构体数组就可以了.其它什么查询增加,排序比链表都简单.排序可以用选择法,冒泡都可以.不多就是下面一个.

#include"stdio.h"

#include"string.h"

struct student

{char name[10];

int no;

int score[5];

};

struct student ss[25];

float er1[25],sum[25],er2[5];

void fun1() /求每个同学的平均分并输出/

{int i,j,s=0;

for(i=0;i<25;i++)

{for(j=0;j<5;j++)

s+=ss[i].score[j];

er1[i]=s/5.0;

printf("the%dstudent's erage score is%f",i+1,er1[i]);

void funn2() /求门课的平均分并输出/

{int i,j=0,s=0;

for(j=0;j<5;j++)

{for(i=0;i<25;i++)

s+=ss[i].score[j];

er2[j]=s/25.0;

printf("the%d lesson's erage scroe is%f",j+1,er2[j]);

void sort()/排序/

{int i,j,k,t;

float m;

char s[10];

for(i=0;i<24;i++)

{k=i;

for(j=i+1;j<25;j++)

if(er1[k]

if(k!=i)

{m=er1[i];

er1[i]=er1[k];

er1[k]=m;

strcpy(s,ss[i].name);

strcpy(ss[i].name,ss[k].name);

strcpy(ss[k].name,s);

t=ss[i].no;

ss[i].no=ss[k].no;

}}ss[k].no=t;

}void fun5()

{int g,h;

printf("name number erage'score:");

for(g=0;g<25;g++)

printf("%s %d %f nry students' erage score:n",ss[g].name,ss[g].no,er1[g]);

for(g=0,h=0;h<5;h++)

}void funn3()/输出不不及格的学生信息/

{int i,j;

for(i=0;i<25;i++)

{for(j=0;j<5;j++)

if(ss[i].score[j]<60)

printf("%s %d %f ",ss[i].no,ss[i].score[j],er1[i]);

void funn4()/输出成绩位于85-95的学生成绩/

{int i,j;

for(i=0;i<25;i++)

{if(er1[i]>90||er1[i]>85)

printf("number%d,erage score%f",ss[i].no,er1[i]);

main()

{int i,j;

void fun1();

void fun2();

void funn3();

void funn4();

void sort();

void fun5();

printf("please input 25 students'name and score:n");

for(i=0;i<25;i++)

{printf("the number %d student's name and number is:",i+1);

scanf("%s,%d",ss[i].name,&ss[i].no);

printf("please input number %d students'five lesson's score:n",i+1);

for(j=0;j<5;j++)

scanf("%d",&ss[i].score[j]);

}fun1();

sort();

void fun5();

funn3();

funn4();

}

C++ 用链表实现一个学生成绩管理系统

scanf("%f",&stu->cj2);/输入cj2,成绩应在0-100/

Student head,p[n]; 中的p定义方式不对

puts(g_pFind->addr);

数组在申明的时候必须指定长度,这个长度必须在编译的时候就知道,而你的n是在运行时由用户输入的,所以不对。

printf("|%dt|%st|%.1ft|%.1ft|%.1ft|%.1ft|%.1ft|n",p->number,p->name,p->cj1,p->cj2,p->cj3,sum1,e1);

你可以使用动态申请内存的方式来创建不知道长度多少的数组,如:

Student p = new Student[n];

已发!

学生成绩管理系统 c语言

};break;

这个问题 只能用链表或者文件来实现

>x)&&((p->link)->link

#include

#include

#include

using namespace std;

struct lx

{long num;

char name[20];

struct lx link;

};

struct lx addlist(struct lx head,long x);//添加;

void listclear(struct lx head);

struct lx creaist(void );

void listprintf(struct lx p);

int main(int argc,char argv)

{long x;

struct lx p = creaist();

listprintf(p);

cout<<"输入学号"<

cin>> x;

struct lx head = addlist(p,x);

listprintf(head);

listclear(head);

//listprintf(temp);

return 0;

}struct lx creaist(void )

{struct lx head ;

struct lx tail ;

struct lx p;

char buf[20];

head = NULL;

p = (struct lx )malloc(sizeof (struct lx));

// cout<< "内存分配失败!!!!"<< endl;

cout<< "请输入学号:";

cin>> p->num;

cout<< "请输入姓名:";

cin>> p->name;

//cout<

//strcpy(p->name, buf);

while(1)

{if(head == NULL)

{head = p;

tail = p;

}else

{tail->link = p;

tail = p;

}p = (struct lx)malloc(sizeof(struct lx));

// cout<<"内存分配失败!!!!!"<< endl;

cout<< "请输入学号:";

cin>> p->num;

if(p->num == 0)

break;

cout<< "请输入姓名:";

cin>> p->name;

//strcpy(p->name,buf);

}tail->link = NULL;

return head;

}void listprintf(struct lx p)

{struct lx q = p;

while(q!= NULL)

{cout<< q->num<

cout<< q->name<

q = q->link;

struct lx addlist(struct lx head,long x)//添加

{struct lx p = head;

struct lx q,temp,temp1;

q = NULL;

if(p->link == NULL )

{if((p->num ) > x )

{q=(struct lx )malloc(sizeof(struct lx));

cout<<"输入姓名:"<

cin>>q->name;

q->num = x;

q->link = p;

p = q;

}else

{q=(struct lx )malloc(sizeof(struct lx));

cout<<"输入姓名:"<

cin>>q->name;

q->num = x;

temp1 = p->link;

p->link = q;

q->link = temp1;

temp1->link = NULL;

else if(((p->num) > x)&&((p->link)->link == NULL))

{q=(struct lx )malloc(sizeof(struct lx));

cout<<"输入姓名:"<

cin>>q->name;

q->num = x;

p->link = q;

q->link = p;

q->link = NULL;

}else

{while(1)

{if((p->num < x)&&((p->link)->num > x))

break;

p = p->link;

}q=(struct lx )malloc(sizeof(struct lx));

cout<<"输入姓名:"<

cin>>q->name;

q->num = x;

temp = p->link;

p->link = q;

q->link = temp;

}return p;

}void listclear(str

这是当初我做的那个,用链表做的,各项都能实现好好熟悉一下,希望对你有帮助

#include

#include

#include

struct stud_node{

int num;

char name[20];

int score;

struct stud_node next;

};

struct stud_node Create_Stu_Doc(); //新建链表

struct stud_node InsertDoc(struct stud_node head,struct stud_node stud); //插入

struct stud_node DeleteDoc(struct stud_node head,int num); //删除

void Print_Stu_Doc(struct stud_node head); //遍历

int main(void)

{struct stud_node head,p;

int cho,num,score;

char name[20];

int size=sizeof(struct stud_node);

do{

printf("1:Create 2:Insert 3:Delete 4:Print 0:Exitn");

scanf("%d",&cho);

switch(cho){

case 1:

head=Create_Stu_Doc();

break;

case 2:

printf("Input nun,nameand score:n");

scanf("%d%s%d",&num,name,&score);

p=(struct stud_node )malloc(size);

p->num=num;

strcpy(p->name,name);

p->score=score;

head=InsertDoc(head,p);

break;

case 3:

printf("Input num:n");

scanf("%d",&num);

head=DeleteDoc(head,num);

break;

case 4:

Print_Stu_Doc(head);

break;

case 0:

break;

}}while(cho!=0);

return 0;

}//新建链表

struct stud_node Create_Stu_Doc()

{struct stud_node head,p;

int num,score;

char name[20];

int size=sizeof(struct stud_node);

head=NULL;

printf("Input num,name,score:n");

scanf("%d%s%d",&num,name,&score);

while(num!=0){

p=(struct stud_node )malloc(size);

p->num=num;

strcpy(p->name,name);

p->score=score;

head=InsertDoc(head,p);

scanf("%d%s%d",&num,name,&score);

}return head;

}//插入作

struct stud_node InsertDoc(struct stud_node head,struct stud_node stud)

{struct stud_node ptr,ptr1, ptr2;

ptr2=head;

ptr=stud; //ptr指向待插入的新的学生记录结点

//原链表为空时的插入

if(head==NULL){

head=ptr; //新插入结点成为头结点

head->next=NULL;

}else{ //原链表不为空时的插入

while((ptr->num>ptr2->num)&&(ptr2->next!=NULL)){

ptr1=ptr2;

ptr2=ptr2->next;

}if(ptr->num<=ptr2->num){

if(head==ptr2) head=ptr;

else ptr1->next=ptr;

ptr->next=ptr2;

}else{ //新插入结点成为尾结点//

ptr2->next=ptr;

ptr->next=NULL;

return head;

}//删除作//

struct stud_node DeleteDoc(struct stud_node head,int num)

{struct stud_node ptr1,ptr2;

//要被删除的结点为表头结点

while(head!=NULL && head->num==num){

ptr2=head;

head=head->next;

free(ptr2);

}if(head==NULL) //链表空

return NULL;

//要被删除的结点为非表头结点

ptr1=head;

ptr2=head->next; //从表头的下一个结点搜索所有符合删除要求的结点

while(ptr2!=NULL){

if(ptr2->num==num){

ptr1->next=ptr2->next;

free(ptr2);

}else

ptr1=ptr2;

ptr2=ptr1->next;

}return head;

}//遍历作printf("n输入学生编号:");

void Print_Stu_Doc(struct stud_node head)

{struct stud_node ptr;

if(head==NULL){

printf("nNo Recordn");

return;

}printf("nThe Student Records Are: n");

printf(" Num name scoren");

for(ptr=head;ptr;ptr=ptr->next)

printf("%8d %20s %6dn",ptr->num,ptr->name,ptr->score);

}

两年前做的,现在都不会C语言了。

下面的代码应该是对的。没有注释,但应该能看的懂,起名字也很不规范。只有信息输入、和查询,还有平均成绩。不求得分,只是拿出来共享一下,提供个参考。

#include

#include

void fine(int size[][6],char xh[][5],char name[][9])

{int i,a,b;

char d[5];

for(;;)

{printf("请输入要查找的学号或姓名:");

scanf("%s",d);

for(i=0;i

if(strcmp(d,xh[i])==0||strcmp(d,name[i])==0)

{printf("学号:%st",xh[i]);

printf("成绩:");

for(a=0;a<5;a++)

{printf("%d ",size[i][a]);

}printf("n平均成绩:%dnn",size[i][5]);

{int size[pl][6],a,i;

char b, name[pl][9], xh[pl][5];

for(i=0;i

{printf("学号:");

scanf("%s",xh[i]);

printf("姓名:");

scanf("%s",name[i]);

printf("成绩:");

size[i][5]=0;

for(a=0;a<5;a++)

{scanf("%d",&size[i][a]);

size[i][5]+=size[i][a];

}size[i][5]/=5;

}for(i=0;i

{printf("学号:%st",xh[i]);

printf("成绩:");

for(a=0;a<5;a++)

{printf("%d ",size[i][a]);

}printf("n平均成绩:%dn",size[i][5]);

}fflush(stdin);

printf("是否要查找:y or n:n");

scanf("%c",&b);

if(b=='y'||b=='Y')

fine(size,xh,name);

}

学生成绩管理系统C语言不用链表而用结构体数组如何实现

scanf("%f",&stu[i].score1);

原理一样的,只要把链表中的指针域去掉,然后再定义一个结构体数组就可以了.其它什么查询增加,排序比链表都简单.排序可以用选择法,冒泡都可以.不多就是下面一个.

#include"stdio.h"

#include"string.h"

struct

student

{char

name[10];

int

no;

int

score[5];

};

struct

student

ss[25];

float

er1[25],sum[25],er2[5];

void

fun1()

/求每个同学的平均分并输出/

{int

i,j,s=0;

for(i=0;i}p=l->next;<25;i++)

{for(j=0;j<5;j++)

s+=ss[i].score[j];

er1[i]=s/5.0;

printf("the%dstudent's

erage

score

is%f",i+1,er1[i]);

void

funn2()

/求门课的平均分并输出/

{int

i,j=0,s=0;

for(j=0;j<5;j++)

{for(i=0;i<25;i++)

s+=ss[i].score[j];

er2[j]=s/25.0;

printf("the%d

lesson's

erage

scroe

is%f",j+1,er2[j]);

void

sort()/排序/

{int

i,j,k,t;

float

m;

char

s[10];

for(i=0;i<24;i++)

{int ch;{k=i;

for(j=i+1;j<25;j++)

if(er1[k]

90||er1[i]>85)

printf("number%d,erage

score%f",ss[i].no,er1[i]);

main()

{int

i,j;

void

fun1();

void

fun2();

void

funn3();

void

funn4();

void

sort();

void

fun5();

printf("please

25

students'name

and

score:n");

for(i=0;i<25;i++)

{printf("the

number

%d

student's

name

and

number

is:",i+1);

scanf("%s,%d",ss[i].name,&ss[i].no);

printf("please

number

%d

students'five

lesson's

score:n",i+1);

for(j=0;j<5;j++)

scanf("%d",&ss[i].score[j]);

}fun1();

sort();

void

fun5();

funn3();

funn4();

}

C语言课程设计—学生成绩管理系统<急!!!!!>注意要求,谢谢

}}

#include "stdio.h"

input

#include "stdlib.h"

#include "string.h"

int shoudse=0; //

struct student

{char num[10];//学号

char name[20];

char [4];

int cgrade;

int mgrade;

int egrade;

int totle;

int e;

char neartime[10];//最近更新时间

};

typedef struct node

{struct student data;

struct node next;

}Node,Link;

void menu()

{printf("");

printf("t1输入ttttt2删除n");

printf("t3查询ttttt4修改n");

printf("t5显示ttttt6统计学生成绩n");

printf("t7排序学生成绩ttttt8保存n");

printf("t9获取帮助信息ttttt0退出系统n");

printf("n");

}void printstart()

{printf("-----------------------------------------------------------------------n");

}void Wrong()

}void Nofind()

{printf("n=====>提示:没有找到该学生!n");

}void printc() // 本函数用于输出中文

{printf(" 学号t 姓名 性别 英语成绩 数学成绩 C语言成绩 总分 平均分n");

}void printe(Node p)//本函数用于输出英文

{printf("%-12s%st%st%dt%dt%dt %dt %dn",p->data.num,p->data.name,p->data.,p->data.egrade,p->data.mgrade,p->data.cgrade,p->data.totle,p->data.e);

}Node Locate(Link l,char findmess[],char nameornum[]) //该函数用于定位连表中符合要求的接点,并返回该指针

{Node r;

if(strcmp(nameornum,"num")==0) //按学号查询

{r=l->next;

while(r!=NULL)

{if(strcmp(r->data.num,findmess)==0)

return r;

r=r->next;

else if(strcmp(nameornum,"name")==0) //按姓名查询

{r=l->next;

while(r!=NULL)

{if(strcmp(r->data.name,findmess)==0)

return r;

r=r->next;

return 0;

}void Add(Link l) //增加学生

{Node p,r,s;

char num[10];

r=l;

s=l->next;

while(r->next!=NULL)

r=r->next; //将指针置于最末尾

while(1)

{printf("请你输入学号(以'0'返回上一级菜单:)");

scanf("%s",num);

if(strcmp(num,"0")==0)

break;

{if(strcmp(s->data.num,num)==0)

{printf("=====>提示:学号为'%s'的学生已经存在,若要修改请你选择'4 修改'!n",num);

printstart();

printc();

printe(s);

printstart();

printf("n");

return;

}s=s->next;

}p=(Node )malloc(sizeof(Node));

strcpy(p->data.num,num);

printf("请你输入姓名:");

scanf("%s",p->data.name);

getchar();

printf("请你输入性别:");

scanf("%s",p->data.);

getchar();

printf("请你输入c语言成绩:");

scanf("%d",&p->data.cgrade);

getchar();

printf("请你输入数学成绩:");

scanf("%d",&p->data.mgrade);

getchar();

printf("请你输入英语成绩:");

scanf("%d",&p->data.egrade);

getchar();

p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade;

p->data.e=p->data.totle / 3;

//信息输入已经完成

p->next=NULL;

r->next=p;

r=p;

shoudse=1;

void Qur(Link l) //查询学生

{int sel;

char findmess[20];

Node p;

if(!l->next)

{printf("n=====>提示:没有资料可以查询!n");

return;

}printf("n=====>1按学号查找n=====>2按姓名查找n");

scanf("%d",&sel);

if(sel==1)//学号

{printf("请你输入要查找的学号:");

scanf("%s",findmess);

p=Locate(l,findmess,"num");

if(p)

{printf("tttt查找结果n");

printstart();

printc();

printe(p);

printstart();

}else

Nofind();

}else if(sel==2) //姓名

{printf("请你输入要查找的姓名:");

scanf("%s",findmess);

p=Locate(l,findmess,"name");

if(p)

{printf("tttt查找结果n");

printstart();

printc();

printe(p);

printstart();

}else

Nofind();

}else

Wrong();

}void Del(Link l) //删除

{int sel;

Node p,r;

char findmess[20];

if(!l->next)

{printf("n=====>提示:没有资料可以删除!n");

return;

}printf("n=====>1按学号删除n=====>2按姓名删除n");

scanf("%d",&sel);

if(sel==1)

{printf("请你输入要删除的学号:");

scanf("%s",findmess);

p=Locate(l,findmess,"num");

if(p)

{r=l;

while(r->next!=p)

r=r->next;

r->next=p->next;

free(p);

printf("n=====>提示:该学生已经成功删除!n");

shoudse=1;

}else

Nofind();

}else if(sel==2)

{printf("请你输入要删除的姓名:");

scanf("%s",findmess);

p=Locate(l,findmess,"name");

if(p)

{r=l;

while(r->next!=p)

r=r->next;

r->next=p->next;

free(p);

printf("n=====>提示:该学生已经成功删除!n");

shoudse=1;

}else

Nofind();

}else

Wrong();

}void Modify(Link l)

{Node p;

char findmess[20];

if(!l->next)

{printf("n=====>提示:没有资料可以修改!n");

return;

}printf("请你输入要修改的学生学号:");

scanf("%s",findmess);

p=Locate(l,findmess,"num");

if(p)

{printf("请你输入新学号(原来是%s):",p->data.num);

scanf("%s",p->data.num);

printf("请你输入新的c语言成绩(原来是%d分):",p->data.cgrade);printf("请你输入新姓名(原来是%s):",p->data.name);

scanf("%s",p->data.name);

getchar();

printf("请你输入新性别(原来是%s):",p->data.);

scanf("%s",p->data.);

scanf("%d",&p->data.cgrade);

getchar();

scanf("%d",&p->data.mgrade);

getchar();

printf("请你输入新的英语成绩(原来是%d分):",p->data.egrade);

scanf("%d",&p->data.egrade);

p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade;

p->data.e=p->data.totle/3;

printf("n=====>提示:资料修改成功!n");

shoudse=1;

}else

Nofind();

}void Disp(Link l)

{int count=0;

Node p;

p=l->next;

if(!p)

{printf("n=====>提示:没有资料可以显示!n");

return;

}printf("tttt显示结果n");

printstart();

printc();

printf("n");

while(p)

{printe(p);

p=p->next;

}printstart();

printf("n");

}void Tongji(Link l)

{Node pm,pe,pc,pt,pa; //用于指向分数的接点

Node r=l->next;

if(!r)

{printf("n=====>提示:没有资料可以统计!n");

return ;

}pm=pe=pc=pt=pa=r;

while(r!=NULL)

{if(r->data.cgrade>=pc->data.cgrade)

pc=r;

if(r->data.mgrade>=pm->data.mgrade)

pm=r;

if(r->data.egrade>=pe->data.egrade)

pe=r;

if(r->data.totle>=pt->data.totle)

pt=r;

if(r->data.e>=pa->data.e)

pa=r;

r=r->next;

}printf("------------------------------统计结果--------------------------------n");

printf("总分者:t%s %d分n",pt->data.name,pt->data.totle);

printf("平均分者:t%s %d分n",pa->data.name,pa->data.e);

printf("英语者:t%s %d分n",pe->data.name,pe->data.egrade);

printf("数学者:t%s %d分n",pm->data.name,pm->data.mgrade);

printf("c语言者:t%s %d分n",pc->data.name,pc->data.cgrade);

printstart();

}void Sort(Link l)

{Link ll;

Node p,rr,s;

ll=(Link)malloc(sizeof(Node)); //用于做新的连表

ll->next=NULL;

if(l->next==NULL)

{printf("n=====>提示:没有资料可以排序!n");

return ;

while(p)

{s=(Node)malloc(sizeof(Node)); //新建接点用于保存信息

s->data=p->data;

s->next=NULL;

rr=ll;

while(rr->next!=NULL && rr->next->data.totle>=p->data.totle)

rr=rr->next;

if(rr->next==NULL)

rr->next=s;

{s->next=rr->next;

rr->next=s;

}p=p->next;

}free(l);

l->next=ll->next;

printf("n=====>提示:排序已经完成!n");

}void Se(Link l)

{FILE fp;

Node p;

int flag=1,count=0;

fp=fopen("c:student","wb");

if(fp==NULL)

{printf("n=====>提示:重新打开文件时发生错误!n");

exit(1);

while(p)

{if(fwrite(p,sizeof(Node),1,fp)==1)

{p=p->next;

count++;

}else

{flag=0;

break;

if(flag)

{printf("n=====>提示:文件保存成功.(有%d条记录已经保存.)n",count);

shoudse=0;

}fclose(fp);

{Link l;//连表

FILE fp; //文件指针

int sel;

char ch;

char jian;

int count=0;

Node p,r;

printf("tttt学生成绩管理系统ntttt-------07康尼学院 XX(123456789)n");

l=(Node)malloc(sizeof(Node));

l->next=NULL;

r=l;

fp=fopen("C:student","rb");

if(fp==NULL)

{printf("n=====>提示:文件还不存在,是否创建?(y/n)n");

scanf("%c",&jian);

if(jian=='y'||jian=='Y')

fp=fopen("C:student","wb");

exit(0);

}printf("n=====>提示:文件已经打开,正在导入记录......n");

while(!feof(fp))

{p=(Node)malloc(sizeof(Node));

if(fread(p,sizeof(Node),1,fp)) //将文件的内容放入接点中

{p->next=NULL;

r->next=p;

r=p; //将该接点挂入连中

count++;

fclose(fp); //关闭文件

printf("n=====>提示:记录导入完毕,共导入%d条记录.n",count);

while(1)

{menu();

printf("请你选择作:");

scanf("%d",&sel);

if(sel==0)

{if(shoudse==1)

{ getchar();

printf("n=====>提示:资料已经改动,是否将改动保存到文件中(y/n)?n");

scanf("%c",&ch);

if(ch=='y'||ch=='Y')

Se(l);

}printf("n=====>提示:你已经退出系统,再见!n");

break;

}switch(sel)

{case 1:Add(l);break; //增加学生

case 2:Del(l);break;//删除学生

case 3:Qur(l);break;//查询学生

case 4:Modify(l);break;//修改学生

case 5:Disp(l);break;//显示学生

case 6:Tongji(l);break;//统计学生

case 7:Sort(l);break;//排序学生

case 8:Se(l);break;//保存学生

case 9:printf("ttt==========帮助信息==========n");break;

default: Wrong();getchar();break;

}//

#include "stdio.h"

#include "stdlib.h"

#include "string.h"

int shoudse=0; / /

struct student

{char num[10];/ 学号 /

char name[20];

char class[10];

char term[2];

int ygrade;

int cgrade;

int mgrade;

int egrade;

int totle;

int e;

char neartime[10];/ 最近更新时间 /

};

typedef struct node

{struct student data;

struct node next;

}Node,Link;

void menu()

{printf("");

printf("t1登记ttttt2删除n");

printf("t3查询ttttt4修改n");

printf("t5保存ttttt0退出系统n");

printf("n");

}void printstart()

{printf("-----------------------------------------------------------------------n");

}void Wrong()

}void Nofind()

{printf("n=====>提示:没有找到该学生!n");

}void printc() / 本函数用于输出中文 /

{printf(" 学号t 姓名 班级 学期 语言成绩 英语成绩 数学成绩 C语言成绩 总分 平均分n");

}void printe(Node p)/ 本函数用于输出英文 /

{printf("%-12s%st%st%st%dt%dt%dt %dt %dn",p->data.num,p->data.name,p->data.class,p->data.term,p->data.ygrade,p->data.egrade,p->data.mgrade,p->data.cgrade,p->data.totle,p->data.e);

}Node Locate(Link l,char findmess[],char nameornum[]) / 该函数用于定位连表中符合要求的接点,并返回该指针 /

{Node r;

if(strcmp(nameornum,"num")==0) / 按学号查询 /

{r=l->next;

while(r!=NULL)

{if(strcmp(r->data.num,findmess)==0)

return r;

r=r->next;

else if(strcmp(nameornum,"name")==0) / 按姓名查询 /

{r=l->next;

while(r!=NULL)

{if(strcmp(r->data.name,findmess)==0)

return r;

r=r->next;

return 0;

}void Add(Link l) / 增加学生 /

{Node p,r,s;

char num[10];

r=l;

s=l->next;

while(r->next!=NULL)

r=r->next; / 将指针置于最末尾 /

while(1)

{printf("请你输入学号(以'0'返回上一级菜单:)");

scanf("%s",num);

if(strcmp(num,"0")==0)

break;

{if(strcmp(s->data.num,num)==0)

{printf("=====>提示:学号为'%s'的学生已经存在,若要修改请你选择'4 修改'!n",num);

printstart();

printc();

printe(s);

printstart();

printf("n");

return;

}s=s->next;

}p=(Node )malloc(sizeof(Node));

strcpy(p->data.num,num);

printf("请你输入姓名:");

scanf("%s",p->data.name);

getchar();

printf("请你输入班级:");

scanf("%s",p->data.class);

getchar();

printf("请你输入学期:");

scanf("%s",p->data.term);

getchar();

printf("请你输入语文成绩:");

scanf("%d",&p->data.ygrade);

getchar();

printf("请你输入c语言成绩:");

scanf("%d",&p->data.cgrade);

getchar();

printf("请你输入数学成绩:");

scanf("%d",&p->data.mgrade);

getchar();

printf("请你输入英语成绩:");

scanf("%d",&p->data.egrade);

getchar();

p->data.totle=p->data.ygrade+p->data.egrade+p->data.cgrade+p->data.mgrade;

p->data.e=p->data.totle / 3;

/ 信息输入已经完成 /

p->next=NULL;

r->next=p;

r=p;

shoudse=1;

void Qur(Link l) / 查询学生 /

{int sel;

char findmess[20];

Node p;

if(!l->next)

{printf("n=====>提示:没有资料可以查询!n");

return;

}printf("n=====>1按学号查找n=====>2按姓名查找n");

scanf("%d",&sel);

if(sel==1)/ 学号 /

{printf("请你输入要查找的学号:");

scanf("%s",findmess);

p=Locate(l,findmess,"num");

if(p)

{printf("tttt查找结果n");

printstart();

printc();

printe(p);

printstart();

}else

Nofind();

}else if(sel==2) / 姓名 /

{printf("请你输入要查找的姓名:");

scanf("%s",findmess);

p=Locate(l,findmess,"name");

if(p)

{printf("tttt查找结果n");

printstart();

printc();

printe(p);

printstart();

}else

Nofind();

}else

Wrong();

}void Del(Link l) / 删除 /

{int sel;

Node p,r;

char findmess[20];

if(!l->next)

{printf("n=====>提示:没有资料可以删除!n");

return;

}printf("n=====>1按学号删除n=====>2按姓名删除n");

scanf("%d",&sel);

if(sel==1)

{printf("请你输入要删除的学号:");

scanf("%s",findmess);

p=Locate(l,findmess,"num");

if(p)

{r=l;

while(r->next!=p)

r=r->next;

r->next=p->next;

free(p);

printf("n=====>提示:该学生已经成功删除!n");

shoudse=1;

}else

Nofind();

}else if(sel==2)

{printf("请你输入要删除的姓名:");

scanf("%s",findmess);

p=Locate(l,findmess,"name");

if(p)

{r=l;

while(r->next!=p)

r=r->next;

r->next=p->next;

free(p);

printf("n=====>提示:该学生已经成功删除!n");

shoudse=1;

}else

Nofind();

}else

Wrong();

}void Modify(Link l)

{Node p;

char findmess[20];

if(!l->next)

{printf("n=====>提示:没有资料可以修改!n");

return;

}printf("请你输入要修改的学生学号:");

scanf("%s",findmess);

p=Locate(l,findmess,"num");

if(p)

{printf("请你输入新学号(原来是%s):",p->data.num);

scanf("%s",p->data.num);

printf("请你输入新姓名(原来是%s):",p->data.name);

scanf("%s",p->data.name);

getchar();

printf("请你输入新班级(原来是%s):",p->data.class);

scanf("%s",p->data.class);

getch();

printf("请你输入新学期(原来是%s):",p->data.term);

scanf("%s",p->data.term);

getchar();

printf("请你输入新的语文成绩(原来是%d分):",p->data.ygrade);

scanf("%d",&p->data.ygrade);

getchar();

scanf("%d",&p->data.cgrade);

getchar();

scanf("%d",&p->data.mgrade);

getchar();

printf("请你输入新的英语成绩(原来是%d分):",p->data.egrade);

scanf("%d",&p->data.egrade);

p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade;

p->data.e=p->data.totle/3;

printf("n=====>提示:资料修改成功!n");

shoudse=1;

}else

Nofind();

}void Disp(Link l)

{int count=0;

Node p;

p=l->next;

if(!p)

{printf("n=====>提示:没有资料可以显示!n");

return;

}printf("tttt显示结果n");

printstart();

printc();

printf("n");

while(p)

{printe(p);

p=p->next;

}printstart();

printf("n");

}void Tongji(Link l)

{Node pm,pe,pc,pa; / 用于指向不及格学生的接点 /

Node r=l->next;

if(!r)

{printf("n=====>提示:没有资料可以统计!n");

return ;

}pm=pe=pc=pa=r;

while(r!=NULL)

{if(r->data.ygrade<60)

pa=r;

if(r->data.cgrade<60)

pc=r;

if(r->data.mgrade<60)

pm=r;

if(r->data.egrade<60)

pe=r;

r=r->next;

}printf("------------------------------统计结果--------------------------------n");

printf("语文不及格:t%s %d分n",pe->data.name,pe->data.ygrade);

printf("英语不及格:t%s %d分n",pe->data.name,pe->data.egrade);

printf("数学不及格:t%s %d分n",pm->data.name,pm->data.mgrade);

printf("c语言不及格:t%s %d分n",pc->data.name,pc->data.cgrade);

printstart();

}void Sort(Link l)

{Link ll;

Node p,rr,s;

ll=(Link)malloc(sizeof(Node)); / 用于做新的连表 /

ll->next=NULL;

if(l->next==NULL)

{printf("n=====>提示:没有资料可以排序!n");

return ;

while(p)

{s=(Node)malloc(sizeof(Node)); / 新建接点用于保存信息 /

s->data=p->data;

s->next=NULL;

rr=ll;

while(rr->next!=NULL && rr->next->data.totle>=p->data.totle)

rr=rr->next;

if(rr->next==NULL)

rr->next=s;

{s->next=rr->next;

rr->next=s;

}p=p->next;

}free(l);

l->next=ll->next;

printf("n=====>提示:排序已经完成!n");

}void Se(Link l)

{FILE fp;

Node p;

int flag=1,count=0;

fp=fopen("c:student","wb");

if(fp==NULL)

{printf("n=====>提示:重新打开文件时发生错误!n");

exit(1);

while(p)

{if(fwrite(p,sizeof(Node),1,fp)==1)

{p=p->next;

count++;

}else

{flag=0;

break;

if(flag)

{printf("n=====>提示:文件保存成功.(有%d条记录已经保存.)n",count);

shoudse=0;

}fclose(fp);

{Link l;/ 连表 /

FILE fp; / 文件指针 /

int sel;

char ch;

char jian;

int count=0;

Node p,r;

l=(Node)malloc(sizeof(Node));

l->next=NULL;

r=l;

fp=fopen("C:student","rb");

if(fp==NULL)

{printf("n=====>提示:文件还不存在,是否创建?(y/n)n");

scanf("%c",&jian);

if(jian=='y'||jian=='Y')

fp=fopen("C:student","wb");

exit(0);

}printf("n=====>提示:文件已经打开,正在导入记录......n");

while(!feof(fp))

{p=(Node)malloc(sizeof(Node));

if(fread(p,sizeof(Node),1,fp)) / 将文件的内容放入接点中 /

{p->next=NULL;

r->next=p;

r=p; / 将该接点挂入连中 /

count++;

fclose(fp); / 关闭文件 /

printf("n=====>提示:记录导入完毕,共导入%d条记录.n",count);

while(1)

{menu();

printf("请你选择作:");

scanf("%d",&sel);

if(sel==0)

{if(shoudse==1)

{ getchar();

printf("n=====>提示:资料已经改动,是否将改动保存到文件中(y/n)?n");

scanf("%c",&ch);

if(ch=='y'||ch=='Y')

Se(l);

}printf("n=====>提示:你已经退出系统,再见!n");

break;

}switch(sel)

{case 1:Add(l);break; / 增加学生 /

case 3:Qur(l);break;/ 查询学生 /

case 4:Modify(l);break;/ 修改学生 /

case 5:Se(l);break;/ 保存学生 /

case 9:printf("ttt==========帮助信息==========n");break;

default: Wrong();getchar();break;

}

将这个学生成绩管理系统[C语言]不用链表而用结构体数组实现

funn2();

看看我变得这个,希望对你有所启发

printf("请输入分数段:n");

/ Note:Your cho is C IDE /

#define pl 64

#include "stdio.h"

#include "string.h"

#include "stdlib.h"

#include "ctype.h"

#include "math.h"

#define N 3 /这是总的学生数,你可以想多少就多少/

char name[N][20];

int i,num[N];

float yuwen[N],shuxue[N],yingyu[N];

int input()

{for(i=0;i

{printf("请输入第[%d]学生的姓名n",i+1);

scanf("%s",name[i]);

printf("请输入第[%d]学生的学号n",i+1);

scanf("%d",&num[i]);

printf("请输入第[%d]学生的语文成绩n",i+1);

scanf("%f",&yuwen[i]);

printf("请输入第[%d]学生的数学成绩n",i+1);

scanf("%f",&shuxue[i]);

printf("请输入第[%d]学生的英语成绩n",i+1);

scanf("%f",&yingyu[i]);

}return(i);

}void sort1()

{int n;

float t;

int i,j;

char a[10];

for(i=0;i

for(j=i+1;j

{if(num[i]>num[j]) /条件成立,交换前后学号/

{ n=num[j];

num[j]=num[i];

num[i]=n;

strcpy(a,name[j]); /交换前后姓名,使与学号相对应/

strcpy(name[j],name[i]);

strcpy(name[i],a);

t=yuwen[j]; /交换前后语文成绩,使与学号想对应/

yuwen[j]=yuwen[i];

yuwen[i]=t;

t=shuxue[j]; /交换前后数学成绩,使与学号想对应/

shuxue[j]=shuxue[i];

shuxue[i]=t;

t=yingyu[j]; /交换前后英语成绩,使与学号想对应/

yingyu[j]=yingyu[i];

yingyu[i]=t;

printf("学生成绩按学号排序:n");

printf("姓名t学号t语文成绩t数学成绩t英语成绩n");

for(i=0;i

printf("%st%dt%.2ftt%.2ftt%.2fn",name[i],num[i],yuwen[i],shuxue[i],yingyu[i]);

}void sort2()

{int i,j;

float t;

char a[10];

int b;

for(i=0;i

for(j=i+1;j

{if(yuwen[j]+shuxue[j]+yingyu[j]>yuwen[i]+shuxue[i]+yingyu[i])

{b=num[i];

num[i]=num[j];

num[j]=b;

strcpy(a,name[j]);/交换前后姓名,使与学号相对应/

strcpy(name[j],name[i]);

strcpy(name[i],a);

t=yuwen[i]; /交换前后语文成绩,使与学号想对应/

yuwen[i]=yuwen[j];

yuwen[j]=t;

t=shuxue[i]; /交换前后数学成绩,使与学号想对应/

shuxue[i]=shuxue[j];

shuxue[j]=t;

t=yingyu[i]; /交换前后英语成绩,使与学号想对应/

yingyu[i]=yingyu[j];

yingyu[j]=t;

printf("学生成绩按总分排序:n");

printf("姓名t学号t总分n");

for(i=0;i

{printf("%st%dt%.2f",name[i],num[i],yuwen[i]+shuxue[i]+yingyu[i]);

printf("n");

void stat()

{int i,j;

float max1,max2,max3,min1,min2,min3;

float sum1=0,sum2=0,sum3=0;

float er1,er2,er3;

printf("姓名t学号t语文t数学t英语t总分t平均分n");

for(i=0;i

{printf("%st%dt%.2ft%.2ft%.2ft%.2ft%.2f",name[i],num[i],yuwen[i],shuxue[i],yingyu[i],

yuwen[i]+shuxue[i]+yingyu[i],(yuwen[i]+shuxue[i]+yingyu[i])/3);

printf("n");

}for(i=0;i

{sum1=sum1+yuwen[i];

sum2=sum2+shuxue[i];

sum3=sum3+yingyu[i];

}er1=sum1/N;/求平均分/

er2=sum2/N;

er3=sum3/N;

max1=yuwen[N-1];min1=yuwen[0];/求语文成绩的分和分/

for(j=0;j

{if(max1

max1=yuwen[j];

if(min1>yuwen[j])

min1=yuwen[j];

}max2=shuxue[N-1];min2=shuxue[0]; /求数学成绩的分和分/

for(j=0;j

{if(max2

if(min2>shuxue[j])

min2=shuxue[j];

}max3=yingyu[N-1];min3=yingyu[0];/求英语成绩的分和分/

for(j=0;j

{if(max3

max3=yingyu[j];

if(min3>yingyu[j])

min3=yingyu[j];

}printf("语文成绩统计:n");

printf("平均分:%.2ft""分:%.2ft""分:%.2fn",er1,max1,min1);

printf("数学成绩统计:n");

printf("平均分:%.2ft""分:%.2ft""分:%.2fn",er2,max2,min2);

printf("英语成绩统计:n");

printf("平均分:%.2ft""分:%.2ft""分:%.2fn",er3,max3,min3);

{ int k;

while(1)

{printf("学生成绩管理系统n");

printf("tt | 1. 输入 |n");

printf("tt | 2. 学生成绩排序 |n");

printf("tt | 3. 学生成绩统计 |n");

printf("tt | 0. 退出 |n");

printf("n");

printf("请输入(0~3)选择:");

scanf("%d",&k);

switch(k) /用switch语句实现功能选择/

{case 1: input();break;/输入函数/

case 2: sort1();sort2();break;/成绩排序函数/

case 3: stat();break;/成绩统计函数/

case 0: exit(0);break;/退出/

}

用C++编写学生成绩管理系统

ADDR plocal;

#include

#include

#include

#include

#include

#include

struct student //定义一个学生结构体

{char name[8];

int num;

int GS,YYfloat cj2;/成绩2/,JSJ,SUM;

};

int s=0;

class student1 //定义一个学生类

{private:

student stu[40];

char name,add;

int num;

int GS,YY,JSJ,SUM;

public:

void sr(char ,int,char ,int,int,int);

void print(int);

int jc(int xxh)

{int m=0;

while(m<=s+1)

if(xxh==stu[m++].num)

break;

if(m>s+1)

return 0;

return 1;

}void cz(int);

void sc(int);

void sum(int);

};

void student1::sr(char xm,int xh,char dz,int gs,int yy,int jsj) //输入模块

{strcpy(stu[s].name,xm);

stu[s].num=xh;

strcpy(stu[s].add,dz);

stu[s].GS=gs;

stu[s].YY=yy;

stu[s].JSJ=jsj;

}void student1::print(int s) //输出模块

{cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

}void student1::cz(int s) //查找模块

{int xxh,p;

while(s==0)

{cout<<"没有记录,请先输入记录!"<

break;

}if(s!=0)

{cout<<"请输入您要查找的学号:";

cin>>xxh;

while (xxh<100000||xxh>999999) //判断输入的学号是否正确

{cout<<"您输入的学号不正确,请输入一个六位数的学号"<

cin>>xxh;

}while(s!=0) //查找是否有符合条件的记录

{p=1;

if (xxh==stu[s].num)

{cout<<"姓名t学号t地址t高数t英语t计算机"<

cout<

cout<

cout<

cout<

cout<

cout<

getch();

break;

}else

p=0;

s--;

cout<<"很抱歉,没有找到您要查找的学号!"<

getch();

}void student1::sc(int n) //删除模块

{int xxh,p;

char da;

while(s==0)

{cout<<"没有记录,请先输入记录!"<

break;

}if(s!=0)

{cout<<"请输入您要删除的学号:";

cin>>xxh;

while (xxh<100000||xxh>999999)

{cout<<"您输入的学号不正确,请您输入一个六位数的学号" <

cin>>xxh;

}for(int i=1;i<=n;i++)

{if(stu[i].num!=xxh)

p=0;

if(stu[i].num==xxh)

{cout<<"姓名t学号t地址t高数t英语t计算机"<

cout<

cout<

cout<

cout<

cout<

cout<

cout<<"您确实要删除该学生的记录吗?(y/n)";

cin>>da;

if(da=='y'||da=='Y')

{for(int j=fflush(stdin);i;j<=n-1;j++) //删除记录

{strcpy(stu[j].name,stu[j+1].name);

stu[j].num=stu[j+1].num;

strcpy(stu[j].add,stu[j+1].add);

stu[j].GS=stu[j+1].GS;

stu[j].YY=stu[j+1].YY;

stu[j].JSJ=stu[j+1].JSJ;

}cout<<"该记录已删除!"<

s=s-1;

p=1;

break;

}else

{cout<<"该记录未删除!"<

p=1;

cout<<"很抱歉,没有找到您要找的学号!"<

}getch();

}void student1::sum(int s) //排序模块

{int chang;

int b[40];

while(s==0)

{cout<<"没有记录,请先输入记录!"<

break;

}if(s!=0)

{cout<<"姓名t学号t地址t英语t";

cout<<"高数t计算机t总分"<

for(int k=1;k<=s;k++)

{b[k]=stu[k].GS+stu[k].YY+stu[k].JSJ;

stu[k].SUM=stu[k].GS+stu[k].YY+stu[k].JSJ;

}for(int i=1;i<=s;i++) //利用冒泡法对B[]进行排序

for(int j=1;j<=s-i;j++)

if(b[j]

{chang=b[j];

b[j]=b[j+1];

b[j+1]=chang;

}for(int h=1;h<=s;h++) //输出与B[]中相同总分所对应的内容

for(int e=1;e<=s;e++)

if(b[h]==stu[e].SUM)

{cout<

cout<

cout<

cout<

cout<

cout<

cout<

getch();

{student1 st;

char da,a;

char xm,dz;

int gs,yy,jsj,xh;

time_t t;

time(&t);

while(1)

{("cls");

cout<<" 版权所有:张珊珊 肖朋丽 姚约汉"<

cout<

cout<<" 学生成绩管理系统"<

cout<<" 显示系统时间和日期:"<

cout<<"1.输入/添加"<

cout<<"2.显示"<

cout<<"3.按学号查找"<

cout<<"4.删除记录"<

cout<<"5.按总分进行排序"<

cout<<"6.退出"<

cout<<"请选择作(1-6)"<

cin>>a;

t: if(a=='6') break;

switch (a)

{case '1':

{cout<<"请依次输入学生的姓名,学号,地址,高数,英语,计算机:"<

xm=new char[];dz=new char[];

cin>>xm>>xh>>dz>>gs>>yy>>jsj;

while(st.jc(xh)) //调用JC模块判断学号是否重复

{cout<<"学号重复,请重新输入!"<

cin>>xh;

}s=s+1;

st.sr(xm,xh,dz,gs,yy,jsj);

cout<<"是否继续输入?(y/n)";

cin>>da;

while (da=='y'||da=='Y') //判断是否要继续输入

{cout<<"请依次输入学生的姓名,学号,地址,高数,英语,计算机:"<

xm=new char[];dz=new char[];

cin>>xm>>xh>>dz>>gs>>yy>>jsj;

while(st.jc(xh))

{cout<<"学号重复,请重新输入!"<

cin>>xh;

}s=s+1;

st.sr(xm,xh,dz,gs,yy,jsj);

cout<<"是否继续输入?(y/n)";

cin>>da;

}getch();

case '2':

{if(s==0) //判断是否有记录输入

{cout<<"没有记录,请先输入记录!"<

getch();

break;

}if(s!=0)

{cout<<"序号"<<"t";

cout<<"姓名"<<"t";

cout<<"学号"<<"t";

cout<<"地址"<<"t";

cout<<"高数"<<"t";

cout<<"英语"<<"t";

cout<<"计算机"<

for(int i=1;i<=s;i++)

st.print(i);

getch();

}};break;

case '3':st.cz(s);break;

case '4':st.sc(s);break;

case '5':st.sum(s);break;

default:

{while(a=='0'||a>'6') //判断选项是否正确

{cout<<"错误选项,请重新选择!"<

cin>>a;

}goto t;

cout<<"谢谢您的使用!"<

}