👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉公众号👈:测试开发自动化【获取源码+商业合作】
👉荣__誉👈:阿里云博客专家博主、51CTO技术博主
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。
系列文章目录
目录
- 系列文章目录
- 一、设计要求
- 二、设计思路
- 三、可视化分析
一、设计要求
课程信息录入功能
功能描述: 系统允许管理员录入新的课程信息,包括课程编号、课程名称、课程性质、总学时、授课学时、实验或上机学时、学分和开课学期等。
输入要求: 用户通过控制台输入各项课程信息。
输出结果: 新录入的课程信息保存到文件中,以确保数据的持久性。
2.2 课程信息浏览功能
功能描述: 系统允许用户浏览所有已录入的课程信息。
输入要求: 用户通过选择菜单项触发浏览功能。
输出结果: 控制台显示所有课程的详细信息。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 选修 ” 获取。👈👈👈
2.3 按学分查询功能
功能描述: 系统允许用户根据学分查询符合条件的课程。
输入要求: 用户输入要查询的学分值。
输出结果: 控制台显示符合条件的课程列表。
2.4 按课程性质查询功能
功能描述: 系统允许用户根据课程性质查询符合条件的课程。
输入要求: 用户输入要查询的课程性质。
输出结果: 控制台显示符合条件的课程列表。
2.5 学生选修课程功能
功能描述: 系统允许学生选择想要选修的课程,并检查选课后的总学分是否达到最低要求(60学分)。
输入要求: 用户输入要选修的课程编号列表。
输出结果: 控制台显示选修课程的详细信息及总学分情况。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 选修 ” 获取。👈👈👈
二、设计思路
-
系统总体结构
该学生选修课程系统的总体结构分为以下几个模块:
数据存储模块:用于课程信息的持久化存储和读取。
输入处理模块:用于课程信息的录入。
输出展示模块:用于课程信息的浏览和显示。
查询模块:用于按学分和课程性质进行课程查询。
选课模块:用于学生选修课程和计算总学分。
用户交互模块:基于控制台菜单,提供用户与系统交互的接口。 -
数据结构设计
系统使用一个Course
结构体来表示课程信息,包含以下字段:
int courseID`: 课程编号
char courseName[MAX_NAME_LENGTH]`: 课程名称
char courseType[MAX_NAME_LENGTH]`: 课程性质
int totalHours`: 总学时
int lectureHours`: 授课学时
int labHours`: 实验或上机学时
float credits`: 学分
int semester`: 开课学期
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 选修 ” 获取。👈👈👈
课程信息存储在一个Course
数组courses
中,courseCount
记录当前课程数量。
- 数据存储模块
3.1 课程信息保存
函数saveCoursesToFile
负责将课程信息保存到文件courses.txt
中。具体实现如下:
void saveCoursesToFile() {
FILE *file = fopen("courses.txt", "w");
if (!file) {
printf("无法打开文件!\n");
return;
}
// 此处多行代码 略...略...略...
fclose(file);
}
3.2 课程信息读取
函数loadCoursesFromFile
负责从文件courses.txt
中读取课程信息,初始化系统运行时的数据。具体实现如下:
void loadCoursesFromFile() {
FILE *file = fopen("courses.txt", "r");
if (!file) {
printf("无法打开文件!\n");
return;
}
// 此处多行代码 略...略...略...
fclose(file);
}
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 选修 ” 获取。👈👈👈
- 输入处理模块
4.1 课程信息录入
函数inputCourse
用于录入新课程信息,并保存到文件中。具体实现如下:
void inputCourse() {
if (courseCount >= MAX_COURSES) {
printf("课程数量已达上限!\n");
return;
}
printf("请输入课程编号: ");
scanf("%d", &courses[courseCount].courseID);
printf("请输入课程名称: ");
scanf("%s", courses[courseCount].courseName);
printf("请输入课程性质: ");
scanf("%s", courses[courseCount].courseType);
printf("请输入总学时: ");
scanf("%d", &courses[courseCount].totalHours);
printf("请输入授课学时: ");
scanf("%d", &courses[courseCount].lectureHours);
printf("请输入实验或上机学时: ");
scanf("%d", &courses[courseCount].labHours);
printf("请输入学分: ");
scanf("%f", &courses[courseCount].credits);
printf("请输入开课学期: ");
scanf("%d", &courses[courseCount].semester);
courseCount++;
saveCoursesToFile();
printf("课程信息已保存!\n");
}
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 选修 ” 获取。👈👈👈
- 输出展示模块
5.1 课程信息浏览
函数displayCourses
用于浏览所有课程信息,具体实现如下:
void displayCourses() {
// 此处多行代码 略...略...略...
}
- 查询模块
6.1 按学分查询
函数queryByCredits
根据学分查询课程,具体实现如下:
void queryByCredits() {
float credits;
printf("请输入查询的学分: ");
scanf("%f", &credits);
// 此处多行代码 略...略...略...
}
}
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 选修 ” 获取。👈👈👈
6.2 按课程性质查询
函数queryByType
根据课程性质查询课程,具体实现如下:
void queryByType() {
char type[MAX_NAME_LENGTH];
printf("请输入查询的课程性质: ");
scanf("%s", type);
// 此处多行代码 略...略...略...
}
}
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 选修 ” 获取。👈👈👈
- 选课模块
7.1 学生选修课程
函数studentSelectCourse
用于学生选修课程并计算总学分,具体实现如下:
void studentSelectCourse() {
int selectedCourses[MAX_COURSES];
int selectedCount = 0;
float totalCredits = 0;
int courseID;
printf("请输入选修的课程编号 (输入0结束):\n");
while (1) {
scanf("%d", &courseID);
if (courseID == 0) break;
// 此处多行代码 略...略...略...
// 此处多行代码 略...略...略...
}
}
if (totalCredits < 60) {
printf("总学分不足60分,选课失败!\n");
} else {
printf("选课成功! 选修课程如下:\n");
// 此处多行代码 略...略...略...
}
}
}
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 选修 ” 获取。👈👈👈
- 用户交互模块
8.1 控制台菜单
系统通过控制台菜单与用户交互,主函数main
实现如下:
int main() {
int choice;
loadCoursesFromFile();
while (1) {
printf("学生选修课程系统\n");
printf("1. 课程信息录入\n");
printf("2. 课程信息浏览\n");
printf("3. 按学分查询\n");
printf("4. 按课程性质查询\n");
printf("5.学生选修课程\n");
printf("6. 退出\n");
printf("请选择: ");
scanf("%d", &choice);
// 此处多行代码 略...略...略...
return 0;
}
该系统通过模块化设计和清晰的功能划分,实现了学生选修课程的管理和查询功能,并确保数据的持久化和用户操作的简便性。每个功能模块独立且易于维护,用户通过控制台菜单即可方便地进行各种操作。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 选修 ” 获取。👈👈👈
三、可视化分析
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 选修 ” 获取。👈👈👈
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 选修 ” 获取。👈👈👈