简单的教务系统

#include <stdio.h>
#include <string.h>
#define N 20
int i,j,n,m,lll=0,renshu=6;
double zcj[N]={0};
 struct stu{ 
    char num[10]; //学号
    char name[10]; //姓名
    char sex; //姓别
	double score[3]; //3 门课的成绩
	double sum; //3 门课的总分
	double aver; //3 门课的平均分
}temp,STU[N]={{"115101", "LiMin", 'M', {76,78,82}},
		  {"115102", "WangRui", 'F', {80,85,89}},
		  {"115103", "ZhaoQin", 'F', {65,75,80}},
		  {"115104", "ZhouYu", 'M', {95,92,88}},
		  {"115105", "GuoHui", 'M', {70,73,74}},
		  {"115106", "ZengPin", 'F', {87,90,94}}};;
char num1[7]={'1','2','3','a','b','c','\0'};
char zum[7];
void xhcz(){//按学号查找学生
	printf("**************************************************************\n");
	printf("\t\t     按学号查找学生记录\n");
	printf("**************************************************************\n");
for(i=0;i<renshu;i++){
		for(j=0;j<3;j++){
			zcj[i]+=STU[i].score[j];
		}
	}
char xx[N];
printf("请输入待查找的学生学号:");
scanf("%s",xx);
int sss=0;
	printf("学号\t姓名\t性别\t3门课成绩\t\t\t\t\t总分\t\t平均分\n"); 
	for(i=0;i<renshu;i++){
		if(strcmp(xx,STU[i].num)==0){
		printf("%s\t",STU[i].num);
		printf("%s\t",STU[i].name);
		printf("%c\t",STU[i].sex);
		for(j=0;j<3;j++){
			printf("%lf\t",STU[i].score[j]);
		}
		printf("%lf\t%lf\n\n",zcj[i],zcj[i]/3);
		sss=1;
		break;
		}
	}
	if(sss==0)printf("查找失败,没有指定学号的学生\n\n");
	return; 

}
void xmcz(){//按姓名查找学生
    for(i=0;i<renshu;i++){
		for(j=0;j<3;j++){
			zcj[i]+=STU[i].score[j];
		}
	}
    printf("**************************************************************\n");
	printf("\t\t     按姓名查找学生记录\n");
	printf("**************************************************************\n");
	char xx[N];
	printf("请输入待查找的学生姓名:");
	scanf("%s",xx); 
	int sss=0;
	printf("学号\t姓名\t性别\t3门课成绩\t\t\t\t\t总分\t\t平均分\n"); 
	for(i=0;i<renshu;i++){
		if(strcmp(xx,STU[i].name)==0){
		printf("%s\t",STU[i].num);
		printf("%s\t",STU[i].name);
		printf("%c\t",STU[i].sex);
		for(j=0;j<3;j++){
			printf("%lf\t",STU[i].score[j]);
		}
		printf("%lf\t%lf\n\n",zcj[i],zcj[i]/3);
		sss=1;
		break;
		}
	}
	if(sss==0)printf("查找失败,没有指定姓名的学生\n\n");
	return ;
}
void pjfj(){//按平均分降序排序
	printf("**************************************************************\n");
	printf("\t\t按平均分降序排序的学生记录\n");
	printf("**************************************************************\n");
	printf("学号\t姓名\t性别\t3门课成绩\t\t\t\t\t总分\t\t平均分\n"); 
for(i=0;i<renshu;i++){
		for(j=0;j<3;j++){
			zcj[i]+=STU[i].score[j];
		}
	}
	for(i=0;i<renshu-1;i++){
		for(j=i+1;j<renshu;j++){
			if(zcj[i]<zcj[j]){
				double l=zcj[i];
				zcj[i]=zcj[j];
				zcj[j]=l;
				temp=STU[j];
				STU[j]=STU[i];
				STU[i]=temp;
			}
		}
	}
	for(i=0;i<renshu;i++){
		printf("%s\t",STU[i].num);
		printf("%s\t",STU[i].name);
		printf("%c\t",STU[i].sex);
		for(j=0;j<3;j++){
			printf("%lf\t",STU[i].score[j]);
		}
		printf("%lf\t%lf\n",zcj[i],zcj[i]/3);
	}
	return ;
}
void lzzg(){//出总分最高的学生记录
	printf("**************************************************************\n");
	printf("\t\t  总分最高的学生记录\n");
	printf("**************************************************************\n");
	printf("学号\t姓名\t性别\t3门课成绩\t\t\t\t\t总分\t\t平均分\n"); 
	for(i=0;i<renshu;i++){
		for(j=0;j<3;j++){
			zcj[i]+=STU[i].score[j];
		}
	}
	int x=0;
	for(i=0;i<renshu;i++){
		if(zcj[i]>zcj[x])x=i;//x为最高 
	}
		printf("%s\t",STU[x].num);
		printf("%s\t",STU[x].name);
		printf("%c\t",STU[x].sex);
		for(j=0;j<3;j++){
			printf("%lf\t",STU[x].score[j]);
		}
		printf("%lf\t%lf\n",zcj[x],zcj[x]/3);
		return; 
	}
void xsjl(){//列出所以学生记录
	printf("**************************************************************\n");
	printf("\t\t\t所以学生记录\n");
	printf("**************************************************************\n");
	printf("学号\t姓名\t性别\t3门课成绩\t\t\t\t\t总分\t\t平均分\n"); 
	for(i=0;i<renshu;i++){
		double ssum=0;
		printf("%s\t",STU[i].num);
		printf("%s\t",STU[i].name);
		printf("%c\t",STU[i].sex);
		for(j=0;j<3;j++){
			printf("%lf\t",STU[i].score[j]);
			ssum+=STU[i].score[j];
		}
		printf("%lf\t%lf\n",ssum,ssum/3);
	}
	return ;
}
void gaimima(){//改密码 
	printf("请输入原来的密码:");
	for(i=0;i<6;i++){
		scanf("%c",&zum[i]);
	}
	putchar('\n');
	printf("请输入新密码:");
	for(i=0;i<6;i++){
		scanf("%c",&num1[i]);
	}
	printf("修改密码成功\n\n");
	return;
}
void dayin(){//打印标识选择 

	        printf("密码正确,进入系统\n\n\n"); 
			printf("******************************\n");
			printf("\t学生成绩管理系统\n");
			printf("******************************\n");
			printf("1.修改密码\n");
			printf("2.列出所以学生记录\n");
			printf("3.列出总分最高的学生记录\n");
			printf("4.按平均分降序排序\n");
			printf("5.按姓名查找学生\n");
			printf("6.按学号查找学生\n");
			printf("7.退出学生成绩管理系统\n");
			printf("******************************\n\n");
}
void czxx(){//操作选项 
    while(1){
	printf("请输入选项值:");
	scanf("%d",&j);
	switch(j){
		case 1:gaimima();break;//修改密码
		case 2:xsjl();break;//列出所以学生记录
		case 3:lzzg();break;//出总分最高的学生记录
		case 4:pjfj();break;//按平均分降序排序
		case 5:xmcz();break;//按姓名查找学生
		case 6:xhcz();break;//按学号查找学生
//		case 7:exit(0);break;//退出学生成绩管理系统
		}
	}
} 
int main(){
	printf("进入学生成绩管理系统,请输入6位密码:\n");
	for(i=2;i>=0;i--){
		gets(zum);
		if(strcmp(num1,zum)==0){
			dayin();//打印标识选择
			czxx();//操作选项
		}
		else{
			printf("密码错误,还剩%d次机会\n\n",i);
		}
	}
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/246119.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【深度学习目标检测】五、基于深度学习的安全帽识别(python,目标检测)

深度学习目标检测方法则是利用深度神经网络模型进行目标检测&#xff0c;主要有以下几种&#xff1a; R-CNN系列&#xff1a;包括R-CNN、Fast R-CNN、Faster R-CNN等&#xff0c;通过候选区域法生成候选目标区域&#xff0c;然后使用卷积神经网络提取特征&#xff0c;并通过分类…

超聚变服务器(原华为服务器)网站模拟器

一、超聚变服务器&#xff08;原华为服务器&#xff09;网站模拟器&#xff1a; 原来了解服务器可以从他的网站上进行了解&#xff0c;模拟器做的很好了。 https://support.xfusion.com/server-simulators/ 有很多的模拟器&#xff0c;今天主要看下BMC的设置 有很多的在线工具…

vue中element-ui日期选择组件el-date-picker 清空所选时间,会将model绑定的值设置为null 问题 及 限制起止日期范围

一、问题 在Vue中使用Element UI的日期选择组件 <el-date-picker>&#xff0c;当你清空所选时间时&#xff0c;组件会将绑定的 v-model 值设置为 null。这是日期选择器的预设行为&#xff0c;它将清空所选日期后将其视为 null。但有时后端不允许日期传空。 因此&#xff…

生产实践:基于K8S的私有化部署解决方案

随着国内数字化转型的加速和国产化进程推动&#xff0c;软件系统的私有化部署已经成为非常热门的话题&#xff0c;因为私有化部署赋予了企业更大的灵活和控制权&#xff0c;使其可以根据自身需求和安全要求定制和管理软件系统。下面分享下我们的基于k8S私有化部署经验。 私有化…

AR眼镜光学方案_AR眼镜整机硬件定制

增强现实(Augmented Reality&#xff0c;AR)技术通过将计算机生成的虚拟物体或其他信息叠加到真实世界中&#xff0c;实现对现实的增强。AR眼镜作为实现AR技术的重要设备&#xff0c;具备虚实结合、实时交互的特点。为了实现透视效果&#xff0c;AR眼镜需要同时显示真实的外部世…

【WebRTC】用WebRTC做即时视频聊天应用

【配套项目源码】 打开即用,设置一个免费的Agora账户就可以实现视频电话。非常好的WebRTC学习和应用项目。 用VSCode打开即可。 https://download.csdn.net/download/weixin_41697242/88630069 【什么是WebRTC?】 WebRTC是一套基于JS的API,能够建立端对端的直接通信,实…

服务器上配置jupyter,提示Invalid credentials如何解决

我是按照网上教程在服务器上安装的jupyter以及进行的密码配置&#xff0c;我利用 passwd()这个口令生成的转译密码是"argon...."。按照教程配置jupyter notebook配置文件里面的内容&#xff0c;登陆网页提示"Invalid credentials"。我谷歌得到的解答是&…

如何学习Kubernetes,学习K8S入门教程

学习 Kubernetes&#xff08;K8s&#xff09;确实不容易 你的硬件资源有限时&#xff0c;不过别担心&#xff0c;我帮你理清思路&#xff0c;让你在学习 K8s 的路上更加从容。 1、资源限制下的学习方法 当硬件资源有限时&#xff0c;一个好的选择是使用云服务提供的免费层或者…

✺ch2——OpenGL图像管线

目录 基于C图形应用&#xff06;管线概览OpenGL类型第一个C/OpenGL应用程序◍API (1) GLSL类型着色器——画一个点的程序◍API (2)◍API (3) 栅格化像素操作——Z-buffer算法检测 OpenGL 和 GLSL 错误◍API (4) 从顶点来构建一个三角形场景动画◍API (5) OpenGL某些方面的数值—…

蓝牙物联网智慧物业解决方案

蓝牙物联网智慧物业解决方案是一种利用蓝牙技术来提高物业管理和服务效率的解决方案。它通过将蓝牙技术与其他智能设备、应用程序和云服务相结合&#xff0c;为物业管理和服务提供更便捷、高效和智能化的支持。 蓝牙物联网智慧物业解决方案包括&#xff1a; 1、设备管理&#…

【Qt QML入门】TextInput

TextInput&#xff1a;单行文本输入框。 TextInput除了光标和文本外&#xff0c;默认没有边框等效果。 import QtQuick import QtQuick.Window import QtQuick.ControlsWindow {id: winwidth: 800height: 600visible: truetitle: qsTr("Hello World")//单行文本输…

Vue2.x源码:new Vue()做了啥

例子1new Vue做了啥?new Vue做了啥,源码解析 initMixin函数 初始化 – 初始化Vue实例的配置initLifecycle函数 – 初始化生命周期钩子函数initEvents – 初始化事件系统初始化渲染 initRender初始化inject选项 例子1 <div id"app"><div class"home&…

C_11练习题答案

一、单项选择题(本大题共20小题,每小题2分,共40分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。) 以下叙述中正确的是(C)A.C语言不是一种高级语言 B.C语言不用编译就能被计算机执行 C.C语言能够直接访问物理地址和进行位…

计算机设计大赛信息可视化设计的获奖经验剖析解读—基于本专栏文章助力4C大赛【全网最全万字攻略-获奖必读】

文章目录 一.中国大学生计算机设计大赛1.1赛道解读1.2 信息可视化设计小类介绍1.2 小类区别解读 二.信息可视化设计赛道获奖经验2.1 四小类作品预览2.1.1 数据可视化小类-优秀参赛作品展览2.1.2 信息图形设计小类-优秀参赛作品展览2.1.3 动态信息影像&#xff08;MG动画&#x…

css3 clip-path剪切图片

大致看了一下&#xff0c;反正以后用到就慢慢调吧 剪切四个角 clip-path: polygon(14px 0, calc(100% - 14px) 0, 100% 14px, 100% calc(100% - 14px), calc(100% - 14px) 100%, 14px 100%, 0 calc(100% - 14px), 0 14px); 三角形 clip-path: polygon(50% 0,0 100%, 100% 100…

ShardingSphere数据分片之读写分离

1、概述 读写分离是一种常见的数据库架构&#xff0c;它将数据库分为主从库&#xff0c;一个主库&#xff08;Master&#xff09;用于写数据&#xff0c;多个从库&#xff08;Slave&#xff09;进行轮询读取数据的过程。主从库之间通过某种通讯机制进行数据的同步。 所以&…

【视觉SLAM十四讲学习笔记】第四讲——李代数求导与扰动模型

专栏系列文章如下&#xff1a; 【视觉SLAM十四讲学习笔记】第一讲——SLAM介绍 【视觉SLAM十四讲学习笔记】第二讲——初识SLAM 【视觉SLAM十四讲学习笔记】第三讲——旋转矩阵 【视觉SLAM十四讲学习笔记】第三讲——旋转向量和欧拉角 【视觉SLAM十四讲学习笔记】第三讲——四元…

《PCL多线程加速处理》-滤波-统计滤波

《PCL多线程加速处理》-滤波-统计滤波 一、效果展示二、实现方式三、代码一、效果展示 提升速度随着点云越多效果越明显 二、实现方式 1、原始的统计滤波实现方式 #include <pcl/filters/statistical_outlier_removal.h>pcl::PointCloud<pcl::PointXYZ

pr模板哪个网站好?免费Pr模板视频素材下载网站 Prmuban.com

pr模板哪个网站好&#xff1f;哪里可以下载免费的pr模板视频素材&#xff0c;PR模板网&#xff08;Prmuban.com&#xff09;影视后期制作模板视频剪辑素材资源网站。 包含PR模板、PR插件、PR预设、MOGRT、LUT、转场特效、音乐素材、音效素材等&#xff0c;更好的剪辑师必备资源…

【jmeter】接口测试流程

1、Jmeter简介 Jmeter是由Apache公司开发的一个纯Java的开源项目&#xff0c;即可以用于做接口测试也可以用于做性能测试。 Jmeter具备高移植性&#xff0c;可以实现跨平台运行。 Jmeter可以实现分布式负载。 Jmeter采用多线程&#xff0c;允许通过多个线程并发取样或通过独…