华清远见上海中心22071班8.19作业

本文介绍了如何通过stu Manage.c文件实现一个简单的学生管理系统,包括命令行操作如成绩录入(T),平均成绩计算(A),成绩列表(L)和排序(P),以及搜索(S)等功能。通过stu.c文件中的函数实现各个功能模块并配合stu.h头文件的声明。
摘要由CSDN通过智能技术生成

简单的学生管理系统

stu_manage.c :实验功能选择主函数

#include "stu.h"
int main(int argc, const char *argv[])
{
	char order;
	while(1)
	{
		help();
		printf("请输入命令=");
		scanf("%c", &order);
		switch(order)
		{
			case 'T':
				if(n == 0)
				{
					type();
					printf("按回车返回主页\n");
					getchar();
				}
				else
				{
					add();
					printf("按回车返回主页\n");
					getchar();
				}
				break;
			case 'A':
				if(n == 0)
				{
					puts("成绩表为空!请先使用命令T录入学生成绩。");
					printf("按回车返回主页\n");
					getchar();
				}
				else
				{
					average();
					printf("按回车返回主页\n");
					getchar();
				}break;
			case 'L':
				if(n == 0)
				{
					puts("成绩表为空!请先使用命令T录入学生成绩。");
					printf("按回车返回主页\n");
					getchar();
				}
				else
				{
					list();
					printf("按回车返回主页\n");
					getchar();
				}break;
			case 'P':
				if(n == 0)
				{
					puts("成绩表为空!请先使用命令T录入学生成绩。");
					printf("按回车返回主页\n");
					getchar();
				}
				else
				{
					sort();
					printf("按回车返回主页\n");
					getchar();
				}break;
			case 'S':
				if(n == 0)
				{
					puts("成绩表为空!请先使用命令T录入学生成绩。");
					printf("按回车返回主页\n");
					getchar();
				}
				else
				{
					search();
					printf("按回车返回主页\n");
					getchar();
				
				}break;
			case 'C':
				system("clear");
				break;
			case 'Q':
				exit(1);
		}
		getchar();//用scanf输入字符时,会同时把回车接受到,放在
				//缓存区中,执行下次while循环时,会打印两次输出语句,
				//所以使用getcahr来接收垃圾字符	
	}
	
	return 0;
}

stu.c 存放帮助界面和主函数需要调用的功能函数

#include "stu.h"
extern int n; 
STU st[N];

//******帮助菜单*******
void help()
{
	printf("**************************************\n");
	printf("*     学生成绩管理系统--帮助菜单     *\n");
	printf("**************************************\n");
	printf("*        T = 成绩录入                *\n");
	printf("*        A = 计算学生平均成绩        *\n");
	printf("*        L = 列出成绩表              *\n");
	printf("*        P = 按平均成绩由高到低排序  *\n");
	printf("*        S = 按学号查询学生成绩      *\n");
	printf("*        C = 清屏                    *\n");
	printf("*        Q = 退出系统                *\n");
	printf("**************************************\n");
}
//*****成绩录入*******T
void type()
{
	int i;
	while(1)
	{
		printf("请输入学生人数:");
		scanf("%d", &n);
		if(n>10||n<0)
		{
			printf("输入人数错误,请重新输入\n");
		}
		else
		{
			printf("请输入%d名学生的三门课成绩:\n", n);
			printf("学号 语文 数学 外语\n");
			for(i = 1; i <= n; i++)
			{
				st[i-1].num = i;
				printf("%d    ",st[i-1].num);
				scanf("%f %f %f",&st[i-1].score[0], &st[i-1].score[1], &st[i-1].score[2]);
			}
			break;
		}
	}
}
//*****列出成绩******L
void list()
{
	printf("学号 语文  数学  外语  平均分\n");
	for(int i=0;i<n;i++)
	{
		printf("%-5d%-6.2f%-6.2f%-6.2f%.2f\n",st[i].num,st[i].score[0],st[i].score[1],st[i].score[2],st[i].ave);
	}
	printf("求平均分请按A\n以平均分排序请按P\n");
}
//*****求出平均值******A
void average()
{
	int sum;
	for(int i=0;i<n;i++)
	{
		sum=st[i].score[0]+st[i].score[1]+st[i].score[2];
		st[i].ave=sum/3.0;
	}
	printf("平均分已求出,按L查看\n按平均分从高到低排序请按P\n");
}
//*****按平均分从高到低排序*****P
int sort()
{
	for(int x=0;x<n;x++)
	{
		if(st[x].ave==0)
		{
			printf("有学生的平均分尚未求出,按A求出后再排序\n");return 0;
		}
	}
	int max=0;
	for(int i=1;i<n;i++)
	{
		max=i-1;
		for(int j=0;j<n-i;j++)
		{
			if(st[max].ave<st[j+i].ave)
				max=i+j;
		}
		STU temp=st[max];
		st[max]=st[i-1];
		st[i-1]=temp;
	}
	printf("排序已完成,按L查看列表\n");
	return 1;
}
//*****按学号查询******S
void search()
{
	int num_search;
	while(1)
	{
		printf("输入你要查找的学生的学号:");
		scanf("%d",&num_search);
		if(num_search>n||num_search<0)
		{
			printf("学生不存在,请重新输入\n");
		}
		else
		{
			for(int i=0;i<n;i++)
			{
				if(st[i].num==num_search)
				{
					printf("您要找的学生信息为\n");
					printf("学号:%d语文:%.2f数学:%.2f外语:%.2f平均分:%.2f\n",st[i].num,st[i].score[0],st[i].score[1],st[i].score[2],st[i].ave);
				}
			}
			break;
		}
	}
}
//*****新增学生的成绩录入******T
void add()
{
	int n_add;
	while(1)
	{
		if(n==N)
		{
			printf("系统人数达到上线,无法添加\n");break;
		}
		printf("系统中已记录%d人,还有%d个空间\n",n,N-n);
		printf("输入本次要添加的学生人数:");
		scanf("%d",&n_add);
		if(n_add>(N-n)||n_add<0)
		{
			printf("输入不正确,重新输入");continue;
		}
		printf("请输入%d名学生的三门课成绩:\n", n_add);
		printf("学号 语文 数学 外语\n");
		for(int i=n;i<(n+n_add);i++)
		{
			st[i].num = i+1;
			printf("%d    ",st[i].num);
			scanf("%f %f %f",&st[i].score[0], &st[i].score[1], &st[i].score[2]);
		}
		break;
	}
	n=n+n_add;
}

stu.h 头文件,存放声明头文件,全局变量和函数

#include <stdio.h>
#include <stdlib.h>
#define N 10 
int n; 
typedef struct stu{
    int num;
    float score[3];
    float ave;
}STU;
void help();
void type();
void list();
void average();
int sort();
void search();
void add();

通过对以上三个文件的联合编译,基本实现一个简单的学生管理系统。

要在CentOS 7上安装MySQL 8.19,您可以按照以下步骤操作: 1. 首先,您需要下载MySQL 8.19的压缩包,并将其解压缩到/usr/local/目录下。您可以使用以下命令将解压得到的文件移动到/usr/local/目录,并重新命名为mysql: ``` mv mysql-8.0.19-linux-glibc2.12-x86_64 /usr/local/mysql ``` 引用 2. 接下来,您需要修改/usr/local/mysql/目录的权限,以确保MySQL能够正常运行。您可以使用以下命令更改目录的所有者和组为mysql: ``` chown -R mysql.mysql /usr/local/mysql/ ``` 引用 3. 之后,您可以将MySQL的启动脚本复制到/etc/init.d/目录中,以便MySQL可以作为服务启动和停止。您可以使用以下命令执行此操作: ``` cp ../support-files/mysql.server /etc/init.d/mysqld ``` 引用 完成上述步骤后,您就成功安装了MySQL 8.19。您可以使用适当的命令启动、停止和管理MySQL服务。请记住,这只是安装MySQL的基本步骤,您可能需要根据您的具体需求进行其他配置和设置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [centos7安装MySQL Community Server 8.0.19](https://blog.csdn.net/resuper0/article/details/104442933)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值