学生作业完成情况管理程序
【题目描述】
请设计一个学生作业完成情况管理程序。
假设某门课程一学期要完成10次作业,每次老师要进行批改,给出分数后还要进行登记。学期期末要根据每次作业的成绩计算出最终的平时成绩(满分100)。
该程序应该具有下列功能:
(1) 通过键盘输入某位学生某次作业的分数;
(2) 给定学号,显示某位学生作业完成情况;
(3) 给定某个班级的班号,显示该班所有学生的作业完成情况;
(4) 给定某位学生的学号,修改该学生的作业完成信息;
(5) 给定某位学生的学号,删除该学生的信息;
(6) 提供一些统计各类信息的功能或排序功能。
代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#define max 100
typedef struct student
{
char name[15];
int number;
int zuoye[10];
int zongfen;
int bh;
}elemtype;
typedef struct
{
elemtype elem[max];
int length;
}slt;
void createlist(slt *l)
{
int i, j, n;
printf("请问你要输入几位学生\n");
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
l->elem[i].zongfen = 0;
printf("\n 第%d 位学生的名字 :", i);
scanf("%s", l->elem[i].name);
printf("学号:");
scanf("%d", &l->elem[i].number);
printf("班号:");
scanf("%d", &l->elem[i].bh);
for (j = 0; j < 10; j++)
{
printf(" 第%d 次作业 :", j + 1);
scanf("%d", &l->elem[i].zuoye[j]);
l->elem[i].zongfen += l->elem[i].zuoye[j];
}
}
l->length = n;
printf("%d\n", l->length);
printf("\n\n 输入完毕!按任意键返回主菜单! ");
getch(); // getch有停顿作用
}
void printlist(slt *l)
{
int i, j;
for (i = 1; i <= l->length; i++)
{
printf(" 名字:%s 学号:%d 班号%d\n", l->elem[i].name, l->elem[i].number, l->elem[i].bh);
for (j = 0; j < 10; j++)
{
printf("第%d 次作业 :%d\n", j + 1, l->elem[i].zuoye[j]);
}
printf(" 总分 :%d\n", l->elem[i].zongfen);
}
getch();
}
int locatelist(slt *l, int x) //查找
{
int i, k, j;
i = 1;
while (((l->elem[i].number) != x) && (i <= 100))
++i;
if (l->elem[i].number == x)
{
}
//printf("\n\n 查看完毕!按任意键返回主菜单! ");
else
{
return(0);
printf("不存在%d\n");
}
getch();
}
int deletelist(slt *l, int i)
{
int j, x;
if (i < 1 || i >l->length)
printf("no insert position!\n");
else
{
for (j = i; j <= l->length - 1; j++)
{
l->elem[j] = l->elem[j + 1];
}
l->length--;
}
return ;
}
void H3(slt *l) //修改成绩
{
int i, j, x;
printf("请输入修改学生的学号\n");
scanf("%d", &x);
i = 1;
while (((l->elem[i].number) != x) && (i <= 100))
++i;
if (l->elem[i].number == x)
{
printf(" 名字:%s 学号%d\n", l->elem[i].name, l->elem[i].number);
for (j = 0; j < 10; j++)
{
printf("第%d 次作业 :%d\n", j + 1, l->elem[i].zuoye[j]);
printf(" 修改为 :");
scanf("%d", &l->elem[i].zuoye[j]);
}getch();
}
else
{
printf("不存在%d\n");
getch();
}
}
void H4(slt *l) //查找学号,显示成绩
{
int k, i, j, x;
printf("请输入你要查找学生的学号 :");
scanf("%d", &x);
i = 1;
while (((l->elem[i].number) != x) && (i <= 100))
++i;
if (l->elem[i].number == x)
{
printf(" 名字:%s 学号%d\n", l->elem[i].name, l->elem[i].number);
for (j = 0; j < 10; j++)
{
printf("第%d 次作业 :%d\n", j + 1, l->elem[i].zuoye[j]);
}getch();
}
else
{
printf("不存在%d\n");
getch();
}
}
void H5(slt *l) //删除
{
int i, x;
printf("输入学号");
scanf("%d", &x);
for (i = 1; i <= l->length; i++)
{
if (l->elem[i].number == x);
{
deletelist(l, i);
printlist(l);
}
}
}
void H8(slt *l) //班号显示成绩
{
int i, a, s = 0, j;
printf("输出班号显示各班级成绩\n");
scanf("%d", &a);
for (i = 1; i <= l->length; i++)
{
if (l->elem[i].bh == a)
{
printf(" 名字:%s 学号%d\n", l->elem[i].name, l->elem[i].number);
for (j = 0; j < 10; j++)
{
printf("第%d 次作业 :%d\n", j + 1, l->elem[i].zuoye[j]);
}
printf("总分;%d ", l->elem[i].zongfen); getch();
}
}
printf("/n");
printf("\n\n 显示完毕!按任意键返回主菜单! ");
getch();
}
void H6(slt *l)
{
int i, j;
struct student temp;
printf(" 从高到低排序 :\n");
for (i = 1; i <= l->length - 1; i++)
{
for (j = 1; j <= l->length - 1 - i; j++)
{
if (l->elem[j].zongfen > l->elem[i].zongfen)
{
temp.zongfen = l->elem[j].zongfen;
l->elem[j].zongfen = l->elem[j + 1].zongfen;
l->elem[j + 1].zongfen = temp.zongfen;
}
}
}
for (i = 1; i <= l->length; i++)
{
printf("%d 姓名:%s 总分:%d\n", i + 1, l->elem[i].name, l->elem[i].zongfen);
} printf("\n\n 排序完毕!按任意键返回主菜单! "); getch(); //getch有停顿作用
}
int
main()
{
slt l;
//struct l[1] = { "c",123,{1,2,3,4,5,6,7,8,9,0},99,1,0};
l.length = 0;
/*createlist(&l);
printlist(&l);*/
int m;
while (1)
{
system("cls");
printf("\n\t\t\t 学生作业完成情况管理 ");
printf("\n\t\t\t1 输入作业分数 ");
printf("\n\t\t\t2 学生作业情况 ");
printf("\n\t\t\t3 修改作业分数 ");
printf("\n\t\t\t4 查找学生作业 ");
printf("\n\t\t\t5 删除学生成绩 ");
printf("\n\t\t\t6 学生分数排序 ");
printf("\n\t\t\t8 班级的班号,显示该班所有学生的作业完成情况 ");
printf("\n\t\t\t7 退出系统 ");
printf("\n\t\t\t 请选择 :");
scanf("%d", &m);
switch (m)
{
case 1: //录入信息
system("cls");
createlist(&l);
break;
case 2: //显示
system("cls");
printlist(&l);
break;
case 3: //修改作业
system("cls");
H3(&l);
break;
case 4: //查找
system("cls");
H4(&l);
break;
case 5:
system("cls");
H5(&l);
break;
case 8: //班级成绩
system("cls");
H8(&l);
break;
case 6:
system("cls");
H6(&l); break;
case 7: exit(0);
default:;
}
}
}