C语言—学生的成绩管理

2024-01-03 15:52:27

?本科生大作业,不可以将录入的信息保存为txt文件。数据结构与数据库。

以下是部分代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define HH printf("%-10s%-10s%-10s%-10s%-10s%-10s\n","学号", "姓名", "语文成绩", "数学成绩", "英语成绩","总分")
struct student          //学生记录 
{
	int   	id;         //学号
	char	name[8];   //姓名
	int  	chinese;   //语文成绩
	int		math;	   //数学成绩
	int     english;   //英语成绩 
	int  	sum;	   //总分
};
static int n;  		   //记录学生信息条数

//函数声明
void menu();
void add(struct student stu[]);
void show(struct student stu[], int i);
void showAll(struct student stu[]);
void modify(struct student stu[]);
void del(struct student stu[]);
void search(struct student stu[]);
void sort(struct student stu[]);
void menu()
{
	
    system("cls");
    printf("\n");
	printf("\t\t --------------学生成绩管理系统--------------\n");
	printf("\t\t︱\t\t 1 添加记录                 ︱\n");
	printf("\t\t︱\t\t 2 显示记录                 ︱\n");
	printf("\t\t︱\t\t 3 修改记录                 ︱\n");
	printf("\t\t︱\t\t 4 删除记录                 ︱\n");
	printf("\t\t︱\t\t 5 查找记录                 ︱\n");
	printf("\t\t︱\t\t 6 排序记录                 ︱\n");
	printf("\t\t︱\t\t 0 退出系统                 ︱\n");
	printf("\t\t --------------------------------------------\n");
	printf("\t\t请选择(0-6):");
}

void add(struct student stu[])
{
	int i, id = 0; //i作为循环变量,id用来保存新学号
	char quit;  //保存是否退出的选择
	do
	{
		printf("学号:");
		scanf("%d", &id);
		for (i = 0; i < n; i++)
		{
			if (id == stu[i].id)  //假如新学号等于数组中某生的学号
			{
				printf("此学号存在!\n");
				return;
			}
		}
		stu[i].id = id;
		printf("姓名:");
		scanf("%s", &stu[i].name);
		printf("语文成绩:");
		scanf("%d", &stu[i].chinese);
		printf("数学成绩:");
		scanf("%d", &stu[i].math);
		printf("英语成绩:");
		scanf("%d", &stu[i].english);
		stu[i].sum = stu[i].chinese + stu[i].math+stu[i].english;  //计算出总成绩
		n++;  //记录条数加1
		printf("是否继续添加?(Y/N)");
		scanf("\t%c", &quit);
	} while (quit != 'N');
}

void show(struct student stu[], int i)
{
	printf("%-10d", stu[i].id);
	printf("%-10s", stu[i].name);
	printf("%-10d", stu[i].chinese);
	printf("%-10d", stu[i].math);
	printf("%-10d", stu[i].english);
	printf("%-10d\n", stu[i].sum);
}

void showAll(struct student stu[])
{
	int i;
	HH;
	for (i = 0; i < n; i++)
	{
		show(stu, i);
	}
}

void modify(struct student stu[])
{
	char name[8], ch;                 //name用来保存姓名,ch用来保存是否退出的选择
	int i;
	printf("修改学生的记录。\n");
	printf("请输入学生的姓名:");
	scanf("%s", &name);
	for (i = 0; i < n; i++)
	{
		if (strcmp(name, stu[i].name) == 0)
		{
			getchar();    	          //提取并丢掉回车键
			printf("找到该生的记录,如下所示:\n");
			HH;             	          //显示记录的标题
			show(stu, i);  	          //显示数组stu中的第i条记录 
			printf("是否修改?(Y/N)\n");
			scanf("%c", &ch);
			if (ch == 'Y' || ch == 'y')
			{
				getchar();   //提取并丢掉回车键
				printf("姓名:");
				scanf("%s", &stu[i].name);
				printf("语文成绩:");
				scanf("%d", &stu[i].chinese);
				printf("数学成绩:");
				scanf("%d", &stu[i].math);
				printf("英语成绩:");
				scanf("%d", &stu[i].english);
				stu[i].sum = stu[i].chinese + stu[i].math+stu[i].english;  //计算出总成绩
				printf("修改完毕。\n");
			}
			return;
		}
	}
	printf("没有找到该生的记录。\n");
}

void del(struct student stu[])
{
	int id, i;
	char ch;
	printf("删除学生的记录。\n");
	printf("请输入学号:");
	scanf("%d", &id);
	for (i = 0; i < n; i++)
	{
		if (id == stu[i].id)
		{
			getchar();
			printf("找到该生的记录,如下所示:\n");
			HH;                			    //显示记录的标题
			show(stu, i);     			    //显示数组stu中的第i条记录
			printf("是否删除?(Y/N)\n");
			scanf("%c", &ch);
			if (ch == 'Y' || ch == 'y')
			{
				for (; i < n; i++)
					stu[i] = stu[i + 1];	//被删除记录后面的记录均前移一位
				n--;          				//记录总条数减1
				printf("删除成功!");
			}
			return;
		}
	}
	printf("没有找到该生的记录!\n");
}

文章来源:https://blog.csdn.net/Joy19981127/article/details/135359723
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。