学生成绩管理系统课程设计

时间: 2023-12-22 07:28:38 浏览: 38
学生成绩管理系统是一种常见的课程设计,其主要功能是对学生的基本信息和成绩信息进行管理。下面是该系统的主要功能和实现方法: 1. 学生信息管理 可以通过文件的方式存储学生的基本信息,包括学号、姓名、性别、年龄等。可以实现增加、删除、修改和查询学生信息的功能。 2. 学生成绩管理 可以通过文件的方式存储学生成绩信息,包括学号、姓名、课程名称、成绩等。可以实现增加、删除、修改和查询学生成绩的功能。同时,可以按照学生或课程进行成绩的统计和排名。 3. 查询功能 可以实现按照学号、姓名、课程名称等条件进行查询,同时可以按照成绩进行排序和排名。 4. 不及格学生查询 可以实现查询有两门及以上不及格课程的学生信息和成绩。 下面是一个简单的C语言实现示例: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_STUDENT_NUM 100 #define MAX_COURSE_NUM 5 typedef struct { char id[20]; char name[20]; char sex[10]; int age; } Student; typedef struct { char name[20]; float score[MAX_STUDENT_NUM]; } Course; typedef struct { Student student[MAX_STUDENT_NUM]; Course course[MAX_COURSE_NUM]; float score[MAX_STUDENT_NUM][MAX_COURSE_NUM]; int student_num; int course_num; } ScoreManagementSystem; void init(ScoreManagementSystem *sms) { sms->student_num = 0; sms->course_num = 0; memset(sms->score, 0, sizeof(sms->score)); } void add_student(ScoreManagementSystem *sms, Student student) { if (sms->student_num >= MAX_STUDENT_NUM) { printf("The number of students has reached the maximum!\n"); return; } sms->student[sms->student_num++] = student; } void delete_student(ScoreManagementSystem *sms, char *id) { int i, j; for (i = 0; i < sms->student_num; i++) { if (strcmp(sms->student[i].id, id) == 0) { for (j = i; j < sms->student_num - 1; j++) { sms->student[j] = sms->student[j + 1]; } sms->student_num--; break; } } } void modify_student(ScoreManagementSystem *sms, char *id, Student student) { int i; for (i = 0; i < sms->student_num; i++) { if (strcmp(sms->student[i].id, id) == 0) { sms->student[i] = student; break; } } } void query_student(ScoreManagementSystem *sms, char *id) { int i; for (i = 0; i < sms->student_num; i++) { if (strcmp(sms->student[i].id, id) == 0) { printf("id: %s, name: %s, sex: %s, age: %d\n", sms->student[i].id, sms->student[i].name, sms->student[i].sex, sms->student[i].age); break; } } } void add_course(ScoreManagementSystem *sms, Course course) { if (sms->course_num >= MAX_COURSE_NUM) { printf("The number of courses has reached the maximum!\n"); return; } sms->course[sms->course_num++] = course; } void delete_course(ScoreManagementSystem *sms, char *name) { int i, j; for (i = 0; i < sms->course_num; i++) { if (strcmp(sms->course[i].name, name) == 0) { for (j = i; j < sms->course_num - 1; j++) { sms->course[j] = sms->course[j + 1]; } sms->course_num--; break; } } } void modify_course(ScoreManagementSystem *sms, char *name, Course course) { int i; for (i = 0; i < sms->course_num; i++) { if (strcmp(sms->course[i].name, name) == 0) { sms->course[i] = course; break; } } } void query_course(ScoreManagementSystem *sms, char *name) { int i; for (i = 0; i < sms->course_num; i++) { if (strcmp(sms->course[i].name, name) == 0) { printf("name: %s\n", sms->course[i].name); int j; for (j = 0; j < sms->student_num; j++) { printf("id: %s, name: %s, score: %f\n", sms->student[j].id, sms->student[j].name, sms->score[j][i]); } break; } } } void add_score(ScoreManagementSystem *sms, char *id, char *name, float score) { int i, j; for (i = 0; i < sms->student_num; i++) { if (strcmp(sms->student[i].id, id) == 0) { for (j = 0; j < sms->course_num; j++) { if (strcmp(sms->course[j].name, name) == 0) { sms->score[i][j] = score; break; } } break; } } } void delete_score(ScoreManagementSystem *sms, char *id, char *name) { int i, j; for (i = 0; i < sms->student_num; i++) { if (strcmp(sms->student[i].id, id) == 0) { for (j = 0; j < sms->course_num; j++) { if (strcmp(sms->course[j].name, name) == 0) { sms->score[i][j] = 0; break; } } break; } } } void modify_score(ScoreManagementSystem *sms, char *id, char *name, float score) { int i, j; for (i = 0; i < sms->student_num; i++) { if (strcmp(sms->student[i].id, id) == 0) { for (j = 0; j < sms->course_num; j++) { if (strcmp(sms->course[j].name, name) == 0) { sms->score[i][j] = score; break; } } break; } } } void query_score(ScoreManagementSystem *sms, char *id, char *name) { int i, j; for (i = 0; i < sms->student_num; i++) { if (strcmp(sms->student[i].id, id) == 0) { for (j = 0; j < sms->course_num; j++) { if (strcmp(sms->course[j].name, name) == 0) { printf("id: %s, name: %s, score: %f\n", sms->student[i].id, sms->student[i].name, sms->score[i][j]); break; } } break; } } } void average_score_by_student(ScoreManagementSystem *sms, char *id) { int i, j; float sum = 0; int count = 0; for (i = 0; i < sms->student_num; i++) { if (strcmp(sms->student[i].id, id) == 0) { for (j = 0; j < sms->course_num; j++) { sum += sms->score[i][j]; count++; } break; } } printf("average score of student %s is %f\n", id, sum / count); } void average_score_by_course(ScoreManagementSystem *sms, char *name) { int i, j; float sum = 0; int count = 0; for (i = 0; i < sms->course_num; i++) { if (strcmp(sms->course[i].name, name) == 0) { for (j = 0; j < sms->student_num; j++) { sum += sms->score[j][i]; count++; } break; } } printf("average score of course %s is %f\n", name, sum / count); } void query_failed_student(ScoreManagementSystem *sms) { int i, j; for (i = 0; i < sms->student_num; i++) { int count = 0; for (j = 0; j < sms->course_num; j++) { if (sms->score[i][j] < 60) { count++; } } if (count >= 2) { printf("id: %s, name: %s\n", sms->student[i].id, sms->student[i].name); for (j = 0; j < sms->course_num; j++) { printf("%s: %f\n", sms->course[j].name, sms->score[i][j]); } } } } int main() { ScoreManagementSystem sms; init(&sms); Student student1 = {"001", "Tom", "male", 18}; Student student2 = {"002", "Jerry", "male", 19}; add_student(&sms, student1); add_student(&sms, student2); Course course1 = {"Math", {0}}; Course course2 = {"English", {0}}; add_course(&sms, course1); add_course(&sms, course2); add_score(&sms, "001", "Math", 80); add_score(&sms, "001", "English", 90); add_score(&sms, "002", "Math", 70); add_score(&sms, "002", "English", 60); query_student(&sms, "001"); query_course(&sms, "Math"); query_score(&sms, "001", "Math"); average_score_by_student(&sms, "001"); average_score_by_course(&sms, "Math"); query_failed_student(&sms); return 0; } ```

相关推荐

最新推荐

recommend-type

学生成绩管理系统——数据库课程设计2.doc

本数据库设计是为简单的课程设计探讨 | 对数据库系统的设计初学者 简单 | 容易模仿 | 能提供作业思路 不需积分即可下载
recommend-type

学生成绩管理系统课程设计报告c++

前言 一、系统的设计需求 ...2、利用指针、链表来实现学生成绩的数据结构设计; 3、系统具有输入、显示、删除、排序、退出基本功能; 4、系统的各个功能模块都用函数的形式来实现; 5、可以将学生信息全部显示出来。
recommend-type

C++ 学生成绩管理系统设计报告书

个人课程设计报告书(内含源码) 内含4个类,各自具有其属性和行为。 基本实现了: (1)学生基本信息、考试科目及成绩的信息录入。 (2)已有学生信息的显示。 (3)学生基本信息的读取和保存输入数据等功能 (4)学生基本...
recommend-type

数据库学生管理系统课程设计报告.doc

使用Visual Basic6.0语言和数据库建立连接,开发学生成绩管理系统,并且能成功运行,完成任务设计书中要求的功能。 2. 课程设计内容和要求 内容: 学生成绩管理系统 主要功能 1.用户登录窗口。 2.系统总控菜单窗口...
recommend-type

JavaWeb设计成绩管理系统(报告书)

2.2.1学生信息处理 2.2.1.1.增加学生记录 业务流程描述: 1:要求用户从键盘输入一个或多个学生信息; 2:学生记录不允许重复,判断的关键字为学号。 业务规则说明: 1:从菜单选择添加学生信息; 2:性别限制男女...
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

HSV转为RGB的计算公式

HSV (Hue, Saturation, Value) 和 RGB (Red, Green, Blue) 是两种表示颜色的方式。下面是将 HSV 转换为 RGB 的计算公式: 1. 将 HSV 中的 S 和 V 值除以 100,得到范围在 0~1 之间的值。 2. 计算色相 H 在 RGB 中的值。如果 H 的范围在 0~60 或者 300~360 之间,则 R = V,G = (H/60)×V,B = 0。如果 H 的范围在 60~120 之间,则 R = ((120-H)/60)×V,G = V,B = 0。如果 H 的范围在 120~180 之间,则 R = 0,G = V,B =
recommend-type

JSBSim Reference Manual

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