主要内容:该系统实现对学生成绩的批量录入、修改、查询、浏览等功能。具体要求如下: 学生信息包括:学号、姓名、入学年月、4门课的成绩等8个成员,试设计学生成绩管理系统,使之能提供以下功能: 1、信息录入:录入每一位学生信息(包括学号、姓名、入学年月和4门课的成绩); 2、信息浏览:输出系统内所有学生的信息; 3、成绩修改:输入学号,修改该生某一门课的成绩; 4、分类查询:按学号或姓名查找学生,输出学生的成绩单; 5、统计学生总成绩:计算每个学生的总分及平均分,并根据学生的平均成绩进行排序;6、统计每门课程的成绩:计算每一门课程学生的及格率、优秀率等。的c语言代码

时间: 2023-12-16 15:27:19 浏览: 37
以下是一个简单的C语言代码示例,实现了上述要求: ```c #include <stdio.h> #include <string.h> #define MAX_STUDENTS 100 #define MAX_NAME_LEN 50 typedef struct { int id; char name[MAX_NAME_LEN]; char enroll_date[20]; int scores[4]; int total_score; float avg_score; } Student; Student students[MAX_STUDENTS]; int num_students = 0; void add_student() { if (num_students >= MAX_STUDENTS) { printf("Too many students\n"); return; } Student *s = &students[num_students]; printf("Enter student ID: "); scanf("%d", &s->id); printf("Enter student name: "); scanf("%s", s->name); printf("Enter enrollment date: "); scanf("%s", s->enroll_date); printf("Enter scores for 4 courses: "); for (int i = 0; i < 4; i++) { scanf("%d", &s->scores[i]); s->total_score += s->scores[i]; } s->avg_score = (float)s->total_score / 4.0; num_students++; } void view_students() { printf("ID\tName\tEnroll Date\tCourse 1\tCourse 2\tCourse 3\tCourse 4\tTotal Score\tAvg Score\n"); for (int i = 0; i < num_students; i++) { Student *s = &students[i]; printf("%d\t%s\t%s\t", s->id, s->name, s->enroll_date); for (int j = 0; j < 4; j++) { printf("%d\t\t", s->scores[j]); } printf("%d\t\t%.2f\n", s->total_score, s->avg_score); } } void update_score() { int id, course, score; printf("Enter student ID: "); scanf("%d", &id); printf("Enter course number (1-4): "); scanf("%d", &course); printf("Enter new score: "); scanf("%d", &score); for (int i = 0; i < num_students; i++) { if (students[i].id == id) { students[i].scores[course-1] = score; students[i].total_score = 0; for (int j = 0; j < 4; j++) { students[i].total_score += students[i].scores[j]; } students[i].avg_score = (float)students[i].total_score / 4.0; printf("Score updated\n"); return; } } printf("Student not found\n"); } void search_students() { int choice; printf("Search by:\n1. ID\n2. Name\n"); scanf("%d", &choice); if (choice == 1) { int id; printf("Enter student ID: "); scanf("%d", &id); for (int i = 0; i < num_students; i++) { if (students[i].id == id) { Student *s = &students[i]; printf("Name: %s\nEnroll Date: %s\nCourse 1: %d\nCourse 2: %d\nCourse 3: %d\nCourse 4: %d\nTotal Score: %d\nAvg Score: %.2f\n", s->name, s->enroll_date, s->scores[0], s->scores[1], s->scores[2], s->scores[3], s->total_score, s->avg_score); return; } } printf("Student not found\n"); } else if (choice == 2) { char name[MAX_NAME_LEN]; printf("Enter student name: "); scanf("%s", name); for (int i = 0; i < num_students; i++) { if (strcmp(students[i].name, name) == 0) { Student *s = &students[i]; printf("ID: %d\nEnroll Date: %s\nCourse 1: %d\nCourse 2: %d\nCourse 3: %d\nCourse 4: %d\nTotal Score: %d\nAvg Score: %.2f\n", s->id, s->enroll_date, s->scores[0], s->scores[1], s->scores[2], s->scores[3], s->total_score, s->avg_score); return; } } printf("Student not found\n"); } } void sort_students() { for (int i = 0; i < num_students; i++) { int max_idx = i; for (int j = i+1; j < num_students; j++) { if (students[j].avg_score > students[max_idx].avg_score) { max_idx = j; } } if (max_idx != i) { Student temp = students[max_idx]; students[max_idx] = students[i]; students[i] = temp; } } printf("Students sorted by average score:\n"); view_students(); } void stats_by_course() { for (int i = 0; i < 4; i++) { int pass_count = 0; int excellent_count = 0; for (int j = 0; j < num_students; j++) { if (students[j].scores[i] >= 60) { pass_count++; } if (students[j].scores[i] >= 90) { excellent_count++; } } printf("Course %d:\nPass Rate: %.2f%%\nExcellent Rate: %.2f%%\n", i+1, (float)pass_count / num_students * 100.0, (float)excellent_count / num_students * 100.0); } } int main() { int choice; while (1) { printf("Select an option:\n1. Add student\n2. View students\n3. Update score\n4. Search students\n5. Sort students by average score\n6. View stats by course\n7. Exit\n"); scanf("%d", &choice); switch (choice) { case 1: add_student(); break; case 2: view_students(); break; case 3: update_score(); break; case 4: search_students(); break; case 5: sort_students(); break; case 6: stats_by_course(); break; case 7: return 0; default: printf("Invalid choice\n"); break; } } return 0; } ``` 请注意,这只是一个基本的实现,可能需要根据具体需求进行修改和改进。

相关推荐

最新推荐

recommend-type

java实现学生成绩录入系统

主要为大家详细介绍了java实现学生成绩录入系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

python学生信息管理系统实现代码

主要介绍了python学生信息管理系统的实现代码,代码简单,复制即可使用,需要的朋友可以参考下
recommend-type

ASP.NET课程-学生信息管理系统实验报告.doc

2. 学生成绩管理:对已经录入的学生信息进行添加、删除、修改学习成绩,并可以通过关键字进行查询。 3. 课程信息管理:支持对授课教师、课程编号及授课老师所授课的年级进行添加、删除、修改等操作。 4. 课程管理...
recommend-type

学生信息管理学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。设计“学生信息管理系统”

学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。设计“学生信息管理系统”,使之能提供以下功能: 1)系统以菜单方式工作; 2)学生信息录入功能; 3)学生信息浏览功能; 4)查询、...
recommend-type

基于jsp+servlet+mysql的javaweb健身房俱乐部系统

包括系统管理后台和前端动态网页的设计搭建。系统管理后台提供给俱乐部员工使用,可以对俱乐部的课程、器材、房间等进行管理维护;前端网页主要提供给消费者使用,可以在线浏览课程、预约上课等。 技术栈:JavaScript,Mysql 数据库,JSP、tomcat、HTML、CSS。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

从键盘输入一段英文字符串,其中包含多个字母‘h',请编写程序利用正则表达式,将英文字符串中的’h'全部改为‘H’

好的,我可以帮您解决这个问题。 您可以使用 Python 编写一个程序来实现这个功能。具体步骤如下: 1. 首先导入 re 模块,这个模块是 Python 中用于处理正则表达式的模块。 2. 然后定义一个包含英文字符串的变量,例如: text = "This is a string containing multiple h's." 3. 接下来,使用 re.sub() 方法来进行替换操作。re.sub() 方法的第一个参数是正则表达式,第二个参数是替换的字符或字符串,第三个参数是被替换的字符串。在这个例子里,我们需要将所有的小写字母 h 替换成大写字母 H,所以正则表达式可以写成
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。