高分求一c语言编程题(急!!!)
题目:期末综合实验(提前着手准备着,提交时间截止到考试后两天)内容:学生学籍、成绩管理系统学籍信息包括:学号,姓名,性别,年龄,籍贯,班级;成绩信息包括:学号,数学成绩,...
题目: 期末综合实验(提前着手准备着,提交时间截止到考试后两天) 内容: 学生学籍、成绩管理系统 学籍信息包括:学号,姓名,性别,年龄,籍贯,班级; 成绩信息包括:学号,数学成绩,英语成绩,C语言成绩,总分,平均分; 基本要求: 1. 用c语言实现; 2. 要有基本的字符操作界面,参考p.46自动售货机的例子; 3. 选则数组或链表模拟实现存放学籍和成绩的数据库; 4. 实现对成绩信息的插入、修改、删除和遍历操作; 5. 实现对学籍信息的插入、修改、删除和遍历操作; 6. 实现将学籍和成绩按固定格式存入.dat格式的文件,每个人的各项信息间用,分割,人与人之间的信息用;分割; 7. 实现由.dat格式的文件读入所存的学籍和成绩的功能。 提示: 可模仿书上p.176, p.227以及p.255三个例子。 最后将所有文件压缩成.rar的压缩包,在这个系统上提交就行了。 总分数: 100
展开
1个回答
展开全部
#include<stdio.h>
#define
N
50
struct
stu
{
int
num;
char
name[20];
float
score[3];
float
average;
};
int
count=0;
void
display(struct
stu
[]);
struct
stu
input();
void
sort(struct
stu
[]);
void
insert(struct
stu
infm[]);
void
search(struct
stu
infm[]);
void
del(struct
stu
infm[]);
void
main()
{
char
ch;
struct
stu
infm[N];
int
in_int;
do
{
printf("请输入要实现的功能:\n1、录入;2排序;3、显示;4、查找;5、插入;6、删除");
scanf("%d",&in_int);
switch(in_int)
{
case
1:
{
do
{
infm[count]=input();
count++;
printf("是否继续录入?(y/n)");
fflush(stdin);
scanf("%c",&ch);
}
while(ch=='y'||ch=='Y');
display(infm);
break;
}
case
2:
{
sort(infm);
break;
}
case
3:
{
display(infm);
break;
}
case
4:
{
search(infm);
break;
}
case
5:
{
insert(infm);
break;
}
case
6:
{
del(infm);
break;
}
default:
{
printf("输入错误!");
}
}
printf("是否继续?(y/n)");
fflush(stdin);
scanf("%c",&ch);
}
while(ch=='y'||ch=='Y');
}
struct
stu
input()
{
struct
stu
in;
int
i;
printf("请输入学生学号:");
fflush(stdin);
scanf("%d",&in.num);
printf("请输入学生姓名:");
fflush(stdin);
scanf("%s",in.name);
for(i=0;i<3;i++)
{
printf("请输入学生第%d科成绩:",i+1);
fflush(stdin);
scanf("%f",&in.score[i]);
}
in.average=(in.score[0]+in.score[1]+in.score[2])/3;
return
in;
}
void
sort(struct
stu
infm[])
{
int
i,j;
struct
stu
temp;
printf("排序前的学生顺序为:");
display(infm);
for(i=0;i<count-1;i++)
{
for(j=i+1;j<count;j++)
{
if(infm[i].average<infm[j].average)
{
temp=infm[i];
infm[i]=infm[j];
infm[j]=temp;
}
}
}
printf("排序后的学生顺序为:");
display(infm);
}
void
display(struct
stu
out[])
{
int
i;
printf("学号\t姓名\t\t平均成绩\n");
for(i=0;i<count;i++)
{
printf("%d\t%s\t\t%3.1f\n",out[i].num,out[i].name,out[i].average);
}
}
void
search(struct
stu
infm[])
{
int
i,
num;
printf("请输入要查找学生的学号:");
scanf("%d",&num);
for(i=0;i<count;i++)
{
if(infm[i].num==num)
{
break;
}
}
printf("学号\t姓名\t\t平均成绩\n");
printf("%d\t%s\t%4.1f\t",infm[i].num,infm[i].name,infm[i].average);
}
void
insert(struct
stu
infm[])
{
int
i,j;
struct
stu
temp;
temp=input();
for(i=0;i<count;i++)
{
if(temp.average>infm[i].average)
{
break;
}
}
for(j=count;j>i;j--)
{
infm[j]=infm[j-1];
}
infm[i]=temp;
count++;
printf("插入后的学生顺序为:\n");
display(infm);
}
void
del(struct
stu
infm[])
{
int
i,j,number;
printf("请输入要删除学生的学号:");
scanf("%d",&number);
for(i=0;i<count;i++)
{
if(infm[i].num==number)
{
break;
}
}
for(j=i;j<count-1;j++)
{
infm[j]=infm[j+1];
}
count--;
printf("删除后的学生顺序为:\n");
display(infm);
}
#define
N
50
struct
stu
{
int
num;
char
name[20];
float
score[3];
float
average;
};
int
count=0;
void
display(struct
stu
[]);
struct
stu
input();
void
sort(struct
stu
[]);
void
insert(struct
stu
infm[]);
void
search(struct
stu
infm[]);
void
del(struct
stu
infm[]);
void
main()
{
char
ch;
struct
stu
infm[N];
int
in_int;
do
{
printf("请输入要实现的功能:\n1、录入;2排序;3、显示;4、查找;5、插入;6、删除");
scanf("%d",&in_int);
switch(in_int)
{
case
1:
{
do
{
infm[count]=input();
count++;
printf("是否继续录入?(y/n)");
fflush(stdin);
scanf("%c",&ch);
}
while(ch=='y'||ch=='Y');
display(infm);
break;
}
case
2:
{
sort(infm);
break;
}
case
3:
{
display(infm);
break;
}
case
4:
{
search(infm);
break;
}
case
5:
{
insert(infm);
break;
}
case
6:
{
del(infm);
break;
}
default:
{
printf("输入错误!");
}
}
printf("是否继续?(y/n)");
fflush(stdin);
scanf("%c",&ch);
}
while(ch=='y'||ch=='Y');
}
struct
stu
input()
{
struct
stu
in;
int
i;
printf("请输入学生学号:");
fflush(stdin);
scanf("%d",&in.num);
printf("请输入学生姓名:");
fflush(stdin);
scanf("%s",in.name);
for(i=0;i<3;i++)
{
printf("请输入学生第%d科成绩:",i+1);
fflush(stdin);
scanf("%f",&in.score[i]);
}
in.average=(in.score[0]+in.score[1]+in.score[2])/3;
return
in;
}
void
sort(struct
stu
infm[])
{
int
i,j;
struct
stu
temp;
printf("排序前的学生顺序为:");
display(infm);
for(i=0;i<count-1;i++)
{
for(j=i+1;j<count;j++)
{
if(infm[i].average<infm[j].average)
{
temp=infm[i];
infm[i]=infm[j];
infm[j]=temp;
}
}
}
printf("排序后的学生顺序为:");
display(infm);
}
void
display(struct
stu
out[])
{
int
i;
printf("学号\t姓名\t\t平均成绩\n");
for(i=0;i<count;i++)
{
printf("%d\t%s\t\t%3.1f\n",out[i].num,out[i].name,out[i].average);
}
}
void
search(struct
stu
infm[])
{
int
i,
num;
printf("请输入要查找学生的学号:");
scanf("%d",&num);
for(i=0;i<count;i++)
{
if(infm[i].num==num)
{
break;
}
}
printf("学号\t姓名\t\t平均成绩\n");
printf("%d\t%s\t%4.1f\t",infm[i].num,infm[i].name,infm[i].average);
}
void
insert(struct
stu
infm[])
{
int
i,j;
struct
stu
temp;
temp=input();
for(i=0;i<count;i++)
{
if(temp.average>infm[i].average)
{
break;
}
}
for(j=count;j>i;j--)
{
infm[j]=infm[j-1];
}
infm[i]=temp;
count++;
printf("插入后的学生顺序为:\n");
display(infm);
}
void
del(struct
stu
infm[])
{
int
i,j,number;
printf("请输入要删除学生的学号:");
scanf("%d",&number);
for(i=0;i<count;i++)
{
if(infm[i].num==number)
{
break;
}
}
for(j=i;j<count-1;j++)
{
infm[j]=infm[j+1];
}
count--;
printf("删除后的学生顺序为:\n");
display(infm);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询