学生成绩管理系统(大一大作业)
功能
实现添加,排序,修改,保存等功能
库函数
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<string.h>
头文件
#define functioncreate(major) void major##compare(mana mn){\int i,j,sum=mn->sum;\for(i=0;i<sum-1;i++)\for(j=0;j<sum-i-1;j++)\if(mn->student[j].grade->major<mn->student[j+1].grade->major)\swap(&mn->student[j],&mn->student[j+1]);\
}
typedef struct a1 { //学生成绩信息int Chinese;int Math;int English;int Physics;int Chemistry;int Organism;int All;
}*grade;
typedef struct a2 { //学生信息char name[10];int stunum;grade grade;int namelong;
}*student;
typedef struct a3{ //全体学生信息int sum;student student;int capacity;
}*mana;
void setpos(short x, short y); //设置位置
void init(); //初始化
void welcome(); //欢迎界面
void start(); //开始
void menu(); //菜单
void addstu(mana mn);//加入
void initmana(mana mn);// 初始化
void exportcapacity(mana mn);//扩容
void modifystu(mana mn);//修改个人
void showsin(student stu,int i);//展示单人
void showall(mana mn);//展示全部
void clean(mana mn);//清空
void swap(student p1, student p2);//交换
void compare(mana mn);//比较
void initstu(student mn);//初始化学生信息
void stunumcompare(mana mn);//学号排序
void save(mana mn);//保存
void read(mana mn);//读取
void cpy(char*a1,char*a2);//复制字符串
函数实现
void setpos(short x, short y) {HANDLE mn = GetStdHandle(STD_OUTPUT_HANDLE);COORD pos = { x,y };SetConsoleCursorPosition(mn, pos);
}
void init() {HANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE);//影藏光标操作CONSOLE_CURSOR_INFO CursorInfo;GetConsoleCursorInfo(hOutput, &CursorInfo);//获取控制台光标信息CursorInfo.bVisible = false; //隐藏控制台光标SetConsoleCursorInfo(hOutput, &CursorInfo);//设置控制台光标状态
}
void welcome() {init();system("title 学生成绩管理系统");system("mode con cols=100 lines=30");setpos(35,10);printf("欢迎来到学生成绩管理系统");setpos(40, 17);system("pause");
}
void menu() {system("cls");setpos(30, 5);printf("请点击相应按键决定您的下一步操作");setpos(30,10);printf("1.添加新学生-------2.清空");setpos(30, 12);printf("3.排序---------------4.无");setpos(30, 14);printf("5.修改学生信息-----6.查看学生成绩");setpos(30, 16);printf("------------0.退出-----------");setpos(38, 20);
}
void initmana(mana mn) {mn->capacity = 0;mn->student = NULL;mn->sum = 0;
}
void exportcapacity(mana mn) {if (mn->capacity > mn->sum)return;int capacity = mn->capacity == 0 ? 1 : 2 * mn->capacity;mn->capacity = capacity;mn->student = (student)realloc(mn->student, sizeof(struct a2) * capacity);
}
void initstu(student mn) {student now = mn;int sum = 0;setpos(30, 10);printf("请输入新学生的姓名(拼音):");scanf("%s", now->name);now->namelong = strlen(now->name);system("cls");setpos(35, 10);printf("请输入新学生的学号:");scanf("%d", &(now->stunum));system("cls");setpos(35, 10);printf("请输入语文成绩:");scanf("%d", &(now->grade->Chinese));sum += now->grade->Chinese;system("cls");setpos(35, 10);printf("请输入数学成绩:");scanf("%d", &(now->grade->Math));sum += now->grade->Math;system("cls");setpos(35, 10);printf("请输入英语成绩:");scanf("%d", &(now->grade->English));sum += now->grade->English;system("cls");setpos(35, 10);printf("请输入物理成绩:");scanf("%d", &(now->grade->Physics));sum += now->grade->Physics;system("cls");setpos(35, 10);printf("请输入化学成绩:");scanf("%d", &(now->grade->Chemistry));sum += now->grade->Chemistry;system("cls");setpos(35, 10);printf("请输入生物成绩:");scanf("%d", &(now->grade->Organism));sum += now->grade->Organism;now->grade->All = sum;system("cls");
}
void stunumcompare(mana mn)
{int i, j, sum = mn->sum;for (i = 0; i < sum - 1; i++) {for (j = 0; j < sum - i - 1; j++) {if (mn->student[j].stunum < mn->student[j + 1].stunum)swap(&mn->student[j], &mn->student[j + 1]);}}
}
void addstu(mana mn) {system("cls");exportcapacity(mn);mn->student[mn->sum].grade = (grade)malloc(sizeof(struct a1));initstu(&mn->student[mn->sum]);mn->sum++;setpos(40, 10);printf("加入完成");setpos(40, 12);system("pause");system("cls");
}void modifystu(mana mn) {system("cls");setpos(30, 10);printf("请输入你要修改的学生名字(拼音):");char s[10];scanf("%s", s);int i;for (i = 0; i < mn->sum; i++) {if (strcmp(s, mn->student[i].name)==0)break;}system("cls");if (i == mn->sum) {setpos(30, 10);printf("查无此人");return;}student now = &(mn->student[i]);initstu(now);
}
void showsin(student stu,int i) {//姓名,学号,语数英物化生顺序setpos(25, 5 + 2 * i);printf("%s", stu->name);setpos(30, 5 + 2 * i);printf("%d", stu->stunum);setpos(35, 5 + 2 * i);printf("%d", stu->grade->Chinese);setpos(40, 5 + 2 * i);printf("%d", stu->grade->Math);setpos(45, 5 + 2 * i);printf("%d", stu->grade->English);setpos(50, 5 + 2 * i);printf("%d", stu->grade->Physics);setpos(55, 5 + 2 * i);printf("%d", stu->grade->Chemistry);setpos(60, 5 + 2 * i);printf("%d", stu->grade->Organism);setpos(65, 5 + 2 * i);printf("%d", stu->grade->All);
}
void showall(mana mn) {int i = 0, sum = mn->sum;if (sum == 0) {setpos(45, 13);printf("暂空");}system("cls");setpos(25,3);printf("姓名");setpos(30, 3);printf("学号");setpos(35, 3);printf("语文");setpos(40, 3);printf("数学");setpos(45, 3);printf("英语");setpos(50, 3);printf("物理");setpos(55, 3);printf("化学");setpos(60, 3);printf("生物");setpos(65, 3);printf("总分");for (i = 0; i < sum; i++)showsin(&mn->student[i], i);setpos(50, 25);system("pause");system("cls");
}
void clean(mana mn) {system("cls");free(mn->student);mn->student = NULL;mn->capacity = mn->sum = 0;setpos(40, 14);printf("清空成功");system("pause");
}
void swap(student p1, student p2) {struct a2 mn = *p1;*p1 = *p2;*p2 = mn;
}
functioncreate(Math)
functioncreate(Chinese)
functioncreate(English)
functioncreate(Physics)
functioncreate(Chemistry)
functioncreate(Organism)
functioncreate(All)
void compare(mana mn) {system("cls");setpos(37, 10);printf("请选择您的排序方式");setpos(35, 12);printf("1.语文");setpos(45, 12);printf("2.数学");setpos(35, 14);printf("3.英语");setpos(45, 14);printf("4.物理");setpos(35, 16);printf("5.化学");setpos(45, 16);printf("6.生物");setpos(35, 18);printf("7.学号");setpos(45, 18);printf("8.总分");setpos(40, 20);int a;scanf("%d", &a);switch (a) {case 1:Chinesecompare(mn); break;case 2:Mathcompare(mn); break;case 3:Englishcompare(mn); break;case 4:Physicscompare(mn); break;case 5:Chemistrycompare(mn); break;case 6:Organismcompare(mn); break;case 7:stunumcompare(mn); break;case 8:Allcompare(mn); break;}system("cls");setpos(40, 14);printf("排序完成,请自行查看");setpos(40, 15);system("pause");
}
void start() {welcome();mana mn = (mana)malloc(sizeof(struct a3));initmana(mn);read(mn);int choose;do {menu();scanf("%d", &choose);switch (choose) {case 1:addstu(mn); break;case 2:clean(mn); break;case 3:compare(mn); break;case 5:modifystu(mn); break;case 6:showall(mn); break;case 0:break;}} while (choose);save(mn);
}
void save(mana mn) {FILE* file = fopen("save.txt", "wb");int i;for (i = 0; i < mn->sum; i++) {//先存名字长度,再存学号,再存名字,最后存成绩fwrite(&((mn->student + i)->namelong), sizeof(int), 1, file);fwrite(&((mn->student+i)->stunum), sizeof(int), 1, file);fwrite((mn->student + i)->name, (mn->student + i)->namelong, 1, file);fwrite((mn->student+i)->grade, sizeof(struct a1), 1, file);}fclose(file);
}
void cpy(char* a1, char* a2,int sum) {while (sum--) {*a1 = *a2;a1++;a2++;}
}
void read(mana mn) {FILE* file = fopen("save.txt", "rb");int i;char arr[10];while (fread(&i, sizeof(int), 1, file)) {exportcapacity(mn);mn->student[mn->sum].namelong = i;mn->student[mn->sum].grade = (grade)malloc(sizeof(struct a1));fread(&i, sizeof(int), 1, file);mn->student[mn->sum].stunum = i;fread(arr, sizeof(char) * (mn->student[mn->sum].namelong), 1, file);cpy(mn->student[mn->sum].name, arr, mn->student[mn->sum].namelong);mn->student[mn->sum].name[mn->student->namelong] = '\0';fread(mn->student[mn->sum].grade, sizeof(struct a1), 1, file);mn->sum++;}fclose(file);
}
展示
相关文章:
学生成绩管理系统(大一大作业)
功能 实现添加,排序,修改,保存等功能 库函数 #include<stdio.h> #include<stdlib.h> #include<windows.h> #include<string.h> 头文件 #define functioncreate(major) void major##compare(mana mn){\int i,j,s…...
数据结构:模拟栈
数据结构:模拟栈 题目描述参考代码 题目描述 输入样例 10 push 5 query push 6 pop query pop empty push 4 query empty输出样例 5 5 YES 4 NO参考代码 #include <iostream>using namespace std;const int N 1000010;int m, x; int q[N]; string op; int…...
02-2.3.6 顺序表和链表的比较
喜欢《数据结构》部分笔记的小伙伴可以订阅专栏,今后还会不断更新。🧑💻 此外,《程序员必备技能》专栏和《程序员必备工具》专栏(该专栏暂未开设)日后会逐步更新,感兴趣的小伙伴可以点一下订阅…...
C++ : 模板初阶
标题:C : 模板初阶 水墨不写bug 正文开始: C语言的问题 : 写不完的swap函数 在学习C语言时,我们有一个经常使用的函数swap函数,它可以将两个对象的值交换。 我们通常这样实现它: void swap(int t1,int t2)…...
FFA-Net:用于单图像去雾的特征融合注意力网络
摘要 论文链接:https://arxiv.org/pdf/1911.07559v2 在这篇论文中,我们提出了一种端到端的特征融合注意力网络(FFA-Net)来直接恢复无雾图像。FFA-Net架构由三个关键组件组成: 一种新颖的特征注意力(FA&…...
网工内推 | 联通公司,云计算售前,AWS认证优先
01 联通数字科技有限公司 🔷招聘岗位:云计算售前工程师 🔷职责描述: 1.了解私有云,公有云,混合云等云计算技术知识,了解云计算行业现状及发展趋势。 2.承担区域项目售前工作支持,为…...
[Redis]Zset类型
Zset有序集合相对于字符串、列表、哈希、集合来说会有一些陌生。 它保留了集合不能有重复成员的特点,但与集合不同的是,有序集合中的每个元素都有一个唯一的浮点类型的分数(score)与之关联,着使得有序集合中的元素是可…...
【云原生】Kubernetes----Ingress对外服务
目录 引言 一、K8S对外方式 (一)NodePort 1.作用 2.弊端 3.示例 (二)externalIPs 1.作用 2.弊端 3.示例 (三)LoadBalancer 1.作用 2.弊端 (四)Ingress 二、Ingress的…...
项目管理之maven svn
管理jar包之间依赖关系 编译、打包、清理、测试等一系列构建工具 一、Maven的标志 1、每一个maven工程都有一个pom.xml maven项目坐标 <groupId>com.aaa</groupId>//项目路径 <artifactId>web</artifactId>项目名称 <version>0.0.1-SNAPS…...
Redis篇 list类型在Redis中的命令操作
list在redis基本的命令 一.基本命令1.lpush和range2.lpushx rpushx3.lpop rpop4.lindex linsert llen5.lrem6.ltrim lset7.blpop brpop 一.基本命令 list在redis中相当于数组或者顺序表. 1.lpush和range 2.lpushx rpushx 3.lpop rpop 4.lindex linsert llen 如果要插入的列表中…...
【C++课程学习】:类和对象(上)(类的基础详细讲解)
🎁个人主页:我们的五年 🔍系列专栏:C课程学习 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 🍟1.1类的引出: 🍟1.2类的结构: 🍟1.3类的…...
HTML 转义字符(escape characters)及其对应的符号(symbols)
以下是常见的 HTML 转义字符及其对应的符号,这些可以用于在 HTML 或 JSX 中避免解析错误和特殊字符的冲突: 空格 ( ): 或 引号: 单引号():'、‘、、’双引号("&#x…...
CPASSOC代码详解
加载环境 library("MASS") require(MASS) # Modern Applied Statistics with S,"S"指的是S语言,由贝尔实验室的约翰钱伯斯(John Chambers)等人开发。S语言是R语言的前身,许多R语言的语法和功能都…...
dirfuzz-web敏感目录文件扫描工具
dirfuzz介绍 dirfuzz是一款基于Python3的敏感目录文件扫描工具,借鉴了dirsearch的思路,扬长避短。在根据自身实战经验的基础上而编写的一款工具,经过断断续续几个月的测试、修改和完善。 项目地址:https://github.com/ssrc-c/di…...
计算机发展史 | 从起源到现代技术的演进
computer | Evolution from origins to modern technology 今天没有参考资料哈哈 PPT:(评论区?) 早期计算工具 算盘 -算盘是一种手动操作的计算辅助工具,起源于中国,迄今已有2600多年的历史,是…...
45-3 护网溯源 - 为什么要做溯源工作
官网:CVERC-国家计算机病毒应急处理中心 西工大遭网络攻击再曝细节!13名攻击者身份查明→ (baidu.com) 护网溯源是指通过技术手段追踪网络攻击的来源和行为,其重要性体现在以下几个方面: 安全防御:了解攻击源头可以帮助组织加强网络安全防御,及时采取措施防止攻击的再次…...
【JavaEE 进阶(二)】Spring MVC(下)
❣博主主页: 33的博客❣ ▶️文章专栏分类:JavaEE◀️ 🚚我的代码仓库: 33的代码仓库🚚 🫵🫵🫵关注我带你了解更多进阶知识 目录 1.前言2.响应2.1返回静态界面2.2返回数据2.3返回HTML代码 3.综合练习3.1计算器3.2用户登…...
光波长 深入程度
UV深入程度(UVC, UVB, UVA)https://mp.weixin.qq.com/s?__bizMzkwNTM0Njk3MA&mid2247483934&idx1&sn92d1ba67ead404e7714af11ec0526786&chksmc0f868ebf78fe1fd0610493e6f49a5d90835a20a829a900746906cda12f2fa12…...
MySQL数据库常见工具的基础使用_1
在上一篇文章中提到了对MySQL数据库进行操作的一些常见工具 mysqlcheck mysqlcheck是一个用于数据库表的检查,修复,分析和优化的一个客户端程序 分析的作用是查看表的关键字分布,能够让sql生成正确的执行计划(支持InnoDB,MyISAM,NDB)检查的作用是检查…...
C语言中指针的说明
什么是指针? 在C语言当中,我们可以将指针理解为内存当中存储的地址,就像生活当中,一个小区里面,在小区里面有很单元,每一栋单元,单元内的房间有着不同的房间号,我们可以同过几栋几单…...
webrtc vp8/9视频编解码介绍
文章目录 一、libvpx项目介绍libvpx基本概念编码器使用流程解码器使用流程示例代码:官方文档和资源二、VP8/9在WebRTC中的应用2.1 VP82.2 VP92.3如何选择哪种编码方式2.4 vp9编码的主要步骤2.5 vp9解码C++代码示例注意事项三、webrtc在音视频传输中是怎样选择vp8还是vp9<...
【机器学习300问】107、自然语言处理(NLP)领域有哪些子任务?
自然语言处理(NLP)是计算机科学、人工智能和语言学领域的一个交叉学科,致力于让计算机能够理解、解析、生成和与人类的自然语言进行互动。自然语言指的是人们日常交流使用的语言,如英语、汉语等,与计算机编程语言相对。…...
面试被问准备多久要孩子?这样回答
听说有人面试被问到多久要孩子的问题,当时觉得很尴尬,不知如何回答,怕回答的不好不被录用,其实你可以这样回答,让面试官心满意足。 A 面试官:结婚了吗? 我:结婚了 面试官࿱…...
HCIP-Datacom-ARST自选题库__多种协议简答【11道题】
1.BGP/MPLSIP VPN的典型组网场景如图所示,PE1和PE2通过LoopbackO建立MP-IBGP,PE1和PE2之间只传递VPN路由,其中PE1BGP进程的部分配置已在图中标出,则编号为0的命令不是必须的。(填写阿拉伯数字) 3 2.在如图所示的Hub&Spok…...
C# 泛型函数
1.非约束 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace MyGeneirc {public class GeneircMethod{/// <summary>/// 泛型方法解决,一个方法,满足不同参数类型…...
C# Onnx E2Pose人体关键点检测
C# Onnx E2Pose人体关键点检测 目录 效果 模型信息 项目 代码 下载 效果 模型信息 Inputs ------------------------- name:inputimg tensor:Float[1, 3, 512, 512] --------------------------------------------------------------- Outputs ---…...
YOLO10:手把手安装教程与使用说明
目录 前言一、YOLO10检测模型二、YOLO安装过程1.新建conda的环境 yolo10安装依赖包测试 总结 前言 v9还没整明白,v10又来了。而且还是打败天下无敌手的存在,连最近很火的RT-DETR都被打败了。那么,笑傲目标检测之林的v10又能持续多久呢&#…...
EasyRecovery2024永久免费crack激活码注册码
在数字化时代,数据已经成为我们生活和工作中不可或缺的一部分。无论是个人用户还是企业用户,都面临着数据丢失的风险。一旦数据丢失,可能会给我们的工作带来极大的不便,甚至可能对企业造成重大损失。因此,数据安全和恢…...
Linux Centos内网环境中安装mysql5.7详细安装过程
一、下载安装包 下载地址(可下载历史版本): https://downloads.mysql.com/archives/community 二、解压到安装路径 tar -zxvf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz三、重命名 mv /usr/local/mysql-5.7.20-linux-glibc2.12-x86_64 …...
新字符设备驱动实验学习
register_chrdev 和 unregister_chrdev 这两个函数是老版本驱动使用的函数,现在新的字符设备驱动已经不再使用这两个函数,而是使用Linux内核推荐的新字符设备驱动API函数。新字符设别驱动API函数在驱动模块加载的时候自动创建设备节点文件。 分配和释放…...
做电影网站如何规避版权/方象科技服务案例
先膜拜一波神仙yww 给定一个矩阵(没有任何特殊性质),如何求它的特征多项式? 算法一 直接把\(\lambda\)代入\((n1)\)个点值,求完行列式之后插值即可。 时间复杂度\(O(n^4)\) 算法二 下面介绍一个更快的做法。定义 对于矩阵\(\bm A,\bm B\), 若…...
赣州做网站哪家好/seo优化多久能上排名
sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId1005269003&utm_campaigncommission&utm_sourcecp-400000000398149&utm_mediumshare 架构概览 各组件作用 Scrapy Engine 引擎负…...
武汉做网站好/成都网络营销品牌代理机构
转眼之间,51cto七周年了,记不清楚自己是什么时候来51cto的,一切的一切,都过去了。生活和工作都发生了变化,物是人非,我们只有朝着自己的理想努力奋斗和拼搏,不管前方的道路是平坦还是崎岖&#…...
淄博网站制作形象/seo单词优化
1.获取所有数据库名 --SELECT Name FROM Master..SysDatabases ORDER BY Name -- 2.获取所有表名: --SELECT Name NAMEtemp,* FROM TEST..SysObjects Where XTypeU ORDER BY Name --表名 ----XTypeU:表示所有用户表; ----XTypeS:表示所有系统表; 3.获取所有字段名: SELECT Nam…...
护肤品网站建设分析/个人优秀网页设计
1.docker简介: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有…...
怎么做一款网站/搜索点击软件
本系列文章将会对CSS的flex布局做一个简单的介绍,希望读者朋友们能够对它的功能有一个整体的认知,在工作中可以自由的运用。这是本系列文章的第一篇,主要介绍flex布局中元素的收缩和扩展。如果要使用flex布局,那么第一个使用到的C…...