当前位置: 首页 > news >正文

c入门第十六篇——学生成绩管理系统

师弟:“师兄,我最近构建了一个学生成绩管理系统,有空试用一下么?”
我:“好啊!”

一个简单的学生成绩管理系统,基本功能包括:添加学生信息、显示所有学生信息、按学号查找学生信息、按姓名查找学生信息、添加学生成绩、修改学生成绩、显示学生的平均成绩、退出系统。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>#define MAX_STUDENTS 100
#define MAX_NAME_LEN 50
#define MAX_SEX_LEN 16typedef struct {int id; // 学号char name[MAX_NAME_LEN]; // 姓名float score; // 成绩
} Student;Student students[MAX_STUDENTS]; // 学生数组
int student_count = 0; // 学生数量void add_student()
{Student s;if(student_count < MAX_STUDENTS) {printf("Enter student ID: ");scanf("%d", &s.id);printf("Enter student name: ");scanf("%s", s.name);s.score = 0.0; // 初始成绩设置为0students[student_count++] = s;printf("Student added successfully, all student: %d!\n", student_count);} else {printf("Database is full!\n");}
}void print_title()
{printf("%-4s %-10s %-5s\n", "ID", "Name", "Score");
}void display_all_students()
{int i;printf("-------- All students info --------\n");if (student_count == 0) {printf("No students!\n");} else {print_title();for(i = 0; i < student_count; i++) {printf("%-4d %-10s %-.2f\n", students[i].id, students[i].name, students[i].score);}}printf("--------      End       -----------\n");
}void find_student_by_id()
{int id, i;printf("Enter student ID to search: ");scanf("%d", &id);for(i = 0; i < student_count; i++) {if(students[i].id == id) {print_title();printf("%-4d %-10s %-.2f\n", students[i].id, students[i].name, students[i].score);return;}}printf("Student with ID %d not found!\n", id);
}void find_student_by_name()
{int i, is_find = 0;char name[MAX_NAME_LEN];printf("Enter student name to search: ");scanf("%s", name);for(i = 0; i < student_count; i++) {if(strcmp(students[i].name, name) == 0) {print_title();printf("%-4d %-10s %-.2f\n", students[i].id, students[i].name, students[i].score);is_find = 1;}}if (is_find == 0) {printf("Student with name %s not found!\n", name);}
}void add_score()
{int id, i;float score;printf("Enter student ID: ");scanf("%d", &id);printf("Enter student score: ");scanf("%f", &score);for(i = 0; i < student_count; i++) {if(students[i].id == id) {students[i].score = score;printf("Score added successfully!\n");return;}}printf("Student with ID %d not found!\n", id);
}void display_average_score()
{float total = 0.0;int i;for(i = 0; i < student_count; i++) {total += students[i].score;}printf("Average score of all students: %.2f\n", total / student_count);
}int main()
{int choice;do {printf("\nStudent Score Management System\n");printf("1. Add Student\n");printf("2. Display All Students\n");printf("3. Find Student by ID\n");printf("4. Find Student by Name\n");printf("5. Add Score\n");printf("6. Display Average Score\n");printf("7. Exit\n");printf("Enter your choice: ");scanf("%d", &choice);switch(choice) {case 1:add_student();break;case 2:display_all_students();break;case 3:find_student_by_id();break;case 4:find_student_by_name();break;case 5:add_score();break;case 6:display_average_score();break;case 7:printf("Exiting...\n");break;default:printf("Invalid choice!\n");}} while(choice != 7);return 0;
}

这个系统涉及到哪些知识呢?
1、c基础库: 头文件包含基本的输入输出,基本的算术运算,字符串操作
2、使用了宏定义类型: 避免无效意义的数字
3、结构体定义: 使用typedef来定义结构体,这样结构体变量声明和定义时,就可以不用struct。如: Student s;
4、全局变量: Student students[MAX_STUDENTS] 记录学生信息;int student_count = 0 记录学生的个数;全局变量所有函数可以直接访问;其对应的是局部变量,只有函数本身可以访问。
5、字符串的比较strcmp
6、do-while循环
7、switch语句

我说:“可以再做两点优化: 一是数据的持久化,二是学生成绩排序。”

http://www.lryc.cn/news/299522.html

相关文章:

  • 大文件上传如何做断点续传?
  • SpringCloud-Eureka原理分析
  • LeetCode周赛——384
  • C#,巴都万数列(Padonve Number)的算法与源代码
  • NSSCTF Round#18 RE GenshinWishSimulator WP
  • 鸿蒙系统对应安卓版本
  • 算法-16-并查集
  • 【C/C++】2024春晚刘谦春晚魔术步骤模拟+暴力破解
  • Java运算符和表达式
  • 波奇学Linux:软硬链接
  • HTTP网络通信协议基础
  • Java实现河南软件客服系统 JAVA+Vue+SpringBoot+MySQL
  • 【小沐学GIS】基于C++QT绘制三维数字地球Earth(OpenGL)
  • 如何生成生成一个修仙世界的狗血短剧剧本
  • 【MIMO】
  • ZooKeeper分布式锁
  • WPF是不是垂垂老矣啦?平替它的框架还有哪些
  • 浅析Linux追踪技术之ftrace:Tracepoint
  • python ftp文件断点续传 并判断ftp文件下载完成
  • SpringBoot+Vue3 完成小红书项目
  • springboot集成Sa-Token及Redis的redisson客户端
  • SQL世界之命令语句Ⅴ
  • Springboot拦截器中跨域失效的问题、同一个接口传入参数不同,一个成功,一个有跨域问题、拦截器和@CrossOrigin和@Controller
  • WordPress如何自建txt文本经典语录并随机显示一句话经典语录?
  • Java中JVM常用参数配置(提供配置示例)
  • 图论与图数据应用综述:从基础概念到知识图谱与图智能
  • 知识碎片-SpringBoot统一返回结果和捕获异常
  • Open-FWI代码解析(1)
  • 移动机器人激光SLAM导航(五):Cartographer SLAM 篇
  • 第四篇【传奇开心果微博系列】Python微项目技术点案例示例:美女颜值判官