学生成绩管理系统(大一大作业)

2024-06-05 20:36

本文主要是介绍学生成绩管理系统(大一大作业),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

功能

实现添加,排序,修改,保存等功能

库函数

#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);
}

展示

这篇关于学生成绩管理系统(大一大作业)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1034108

相关文章

作业提交过程之HDFSMapReduce

作业提交全过程详解 (1)作业提交 第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。 第2步:Client向RM申请一个作业id。 第3步:RM给Client返回该job资源的提交路径和作业id。 第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。 第5步:Client提交完资源后,向RM申请运行MrAp

Vue3项目开发——新闻发布管理系统(六)

文章目录 八、首页设计开发1、页面设计2、登录访问拦截实现3、用户基本信息显示①封装用户基本信息获取接口②用户基本信息存储③用户基本信息调用④用户基本信息动态渲染 4、退出功能实现①注册点击事件②添加退出功能③数据清理 5、代码下载 八、首页设计开发 登录成功后,系统就进入了首页。接下来,也就进行首页的开发了。 1、页面设计 系统页面主要分为三部分,左侧为系统的菜单栏,右侧

工厂ERP管理系统实现源码(JAVA)

工厂进销存管理系统是一个集采购管理、仓库管理、生产管理和销售管理于一体的综合解决方案。该系统旨在帮助企业优化流程、提高效率、降低成本,并实时掌握各环节的运营状况。 在采购管理方面,系统能够处理采购订单、供应商管理和采购入库等流程,确保采购过程的透明和高效。仓库管理方面,实现库存的精准管理,包括入库、出库、盘点等操作,确保库存数据的准确性和实时性。 生产管理模块则涵盖了生产计划制定、物料需求计划、

STL经典案例(四)——实验室预约综合管理系统(项目涉及知识点很全面,内容有点多,耐心看完会有收获的!)

项目干货满满,内容有点过多,看起来可能会有点卡。系统提示读完超过俩小时,建议分多篇发布,我觉得分篇就不完整了,失去了这个项目的灵魂 一、需求分析 高校实验室预约管理系统包括三种不同身份:管理员、实验室教师、学生 管理员:给学生和实验室教师创建账号并分发 实验室教师:审核学生的预约申请 学生:申请使用实验室 高校实验室包括:超景深实验室(可容纳10人)、大数据实验室(可容纳20人)、物联网实验

使用Spring Boot集成Spring Data JPA和单例模式构建库存管理系统

引言 在企业级应用开发中,数据库操作是非常重要的一环。Spring Data JPA提供了一种简化的方式来进行数据库交互,它使得开发者无需编写复杂的JPA代码就可以完成常见的CRUD操作。此外,设计模式如单例模式可以帮助我们更好地管理和控制对象的创建过程,从而提高系统的性能和可维护性。本文将展示如何结合Spring Boot、Spring Data JPA以及单例模式来构建一个基本的库存管理系统

【干货分享】基于SSM的体育场管理系统的开题报告(附源码下载地址)

中秋送好礼 中秋佳节将至,祝福大家中秋快乐,阖家幸福。本期免费分享毕业设计作品:《基于SSM的体育场管理系统》。 基于SSM的体育场管理系统的开题报告 一、课题背景与意义 随着全民健身理念的深入人心,体育场已成为广大师生和社区居民进行体育锻炼的重要场所。然而,传统的体育场管理方式存在诸多问题,如资源分配不均、预约流程繁琐、数据统计不准确等,严重影响了体育场的使用效率和用户体验。

华为OD机试真题-学生方阵-2024年OD统一考试(E卷)

题目描述 学校组织活动,将学生排成一个矩形方阵。 请在矩形方阵中找到最大的位置相连的男生数量。这个相连位置在一个直线上,方向可以是水平的,垂直的,成对角线的或者呈反对角线的。 注:学生个数不会超过10000 输入描述 输入的第一行为矩阵的行数和列数, 接下来的 n行为矩阵元素,元素间用""分隔。 输出描述 输出一个整数,表示矩阵中最长的位

基于SSM+Vue+MySQL的可视化高校公寓管理系统

系统展示 管理员界面 宿管界面 学生界面 系统背景   当前社会各行业领域竞争压力非常大,随着当前时代的信息化,科学化发展,让社会各行业领域都争相使用新的信息技术,对行业内的各种相关数据进行科学化,规范化管理。这样的大环境让那些止步不前,不接受信息改革带来的信息技术的企业随时面临被淘汰,被取代的风险。所以当今,各个行业领域,不管是传统的教育行业

图书管理系统系统分享

分享一个图书管理系统,Java、SpringBoot、Vue和MySQL开发的图书馆管理系统 gitee项目地址:https://gitee.com/yuanmomoya/open-source-project/tree/master/books-management-system GitHub项目地址:https://github.com/yuanmomoya/open-source-pro

基于springboot+vue+uniapp的“共享书角”图书借还管理系统小程序

开发语言:Java框架:springboot+uniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9 系统展示 后台登录界面 管理员功能界面 出借者管理 图书信息管理 图书归还管理 出租收入管理