#include <stdio.h>
#define MAXSIZE 10
//定义学生的数据结构,包含学号,姓名,数学成绩,英语成绩,平均分信息以及录入,修改学生信息,成绩表等操作
struct student
{
int num;
char name[10];
int math,english;
double average;
};
int sum=0;
int main()
{
int choice;
struct student students[MAXSIZE];
void new_student(struct student *p);
void change(struct student*p);
void get(struct student*p);
do{
printf("输入操作对应的序号\n1.录入成绩 2.修改成绩 3.获取所有学生成绩 4.退出\n");
scanf("%d",&choice);
switch (choice)
{
case 1: new_student(students);break;
case 2: change(students);break;
case 3: get(students);break;
case 4: break;
default: printf("无效操作序号\n");break;
}
}while(choice!=4);
return 0;
}
void new_student(struct student *p)
{
int flag =0,num_new,i,flag1;
struct student *p1; //用于检查学号是否重复
do {
if (sum<MAXSIZE){
do {
p1=p;
flag1=0;
printf("输入学生学号\n");
scanf("%d",&num_new);
for (i=0;i<sum;p1++) //检查学号是否重复
{
if (p1->num==num_new)
{
printf("学号重复\n");
flag1=1;
break;
}
i++;
}
if (flag1==0) (p+sum)->num=num_new;
}while(flag1==1);
printf("输入学生姓名\n");
scanf("%s",(p+sum)->name);
printf("输入学生数学成绩\n");
scanf("%d",&((p+sum)->math));
printf("输入学生英语成绩\n");
scanf("%d",&((p+sum)->english));
(p+sum)->average=((p+sum)->math+(p+sum)->english)/2;
sum+=1;
printf("继续录入输入1,否则输入0\n");
scanf("%d",&flag);
}else
{
printf("系统已满,无法录入\n");
break;
}
}while(flag==1);
}
void change(struct student*p)
{
int num_change,i,choice;
printf("输入待修改学生的学号\n");
scanf("%d",&num_change);
for (i=0;i<sum;p++)
{
if (p->num==num_change)
{
printf("输入修改的信息类型对应的序号\n1.学号 2.姓名 3.数学成绩 4.英语成绩\n");
scanf("%d",&choice);
switch (choice)
{
case 1:
{
printf("输入新学号\n");
scanf("%d",&(p->num));
break;
}
case 2:
{
printf("输入新姓名\n");
scanf("%s",p->name);
break;
}
case 3:
{
printf("输入新数学成绩\n");
scanf("%d",&(p->math));
break;
}
case 4:
{
printf("输入新英语成绩\n");
scanf("%d",&(p->english));
break;
}
default:{
printf("无效输入\n");
break;
}
}
if (choice==3 ||choice==4) //如果修改成绩,则平均分也要变
{
p->average=(p->math+p->english)/2;
}
break;
}
i++;
}
if (i==sum)
{
printf("没有此学生\n");
}
}
void get(struct student*p)
{
int i;
if (sum==0)
{
printf("空\n");
}else
{
printf("学号 姓名 数学成绩 英语成绩 平均分\n");
for (i=0;i<sum;p++)
{
printf("%d %s %d %d %.1f\n",p->num,p->name,p->math,p->english,p->average);
i++;
}
}
}
简易的学生成绩录入系统(结构,结构指针,结构数组的运用)
最新推荐文章于 2024-05-24 02:25:48 发布