学生作业完成情况管理程序--C语言--数据结构--顺序表实现

学生作业完成情况管理程序

【题目描述】
请设计一个学生作业完成情况管理程序。
假设某门课程一学期要完成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:;
		}
	}



}
  • 12
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值