c语言c语言代码课程信息包括:课程编号、课程名称、课程性质、学分、开课学期等信息,设计一个课程信息管理系统,提供以下功能: 系统以菜单方式工作。 输入记录:课程信息录入功能。 查询记录:用户可以按课程名或者课程性质进行查询。 更新记录:对课程信息进行修改、删除、插入操作。 统计记录:对学期课程总学分进行统计。 输出记录:实现对记录的存盘操作,实现将存储记录以表格的形式在屏幕上打
时间: 2024-03-12 07:47:47 浏览: 64
一个使用C语言设计的课程信息管理系统完全可以用于期末作业实现
开发一个课程信息管理系统,可以使用 C 语言和结构体来实现。以下是一个简单的实现示例:
```c
#include <stdio.h>
#include <string.h>
#define MAX_COURSES 100
struct Course {
char id[10]; // 课程编号
char name[50]; // 课程名称
char nature[20]; // 课程性质
float credit; // 学分
char term[20]; // 开课学期
};
struct Course courses[MAX_COURSES];
int num_courses = 0;
void add_course() {
struct Course course;
printf("请输入课程编号:");
scanf("%s", course.id);
printf("请输入课程名称:");
scanf("%s", course.name);
printf("请输入课程性质:");
scanf("%s", course.nature);
printf("请输入学分:");
scanf("%f", &course.credit);
printf("请输入开课学期:");
scanf("%s", course.term);
courses[num_courses++] = course;
}
void search_course() {
char keyword[50];
printf("请输入要查询的课程名或者课程性质:");
scanf("%s", keyword);
printf("查询结果如下:\n");
printf("%-10s %-20s %-20s %-10s %-20s\n", "编号", "名称", "性质", "学分", "学期");
for (int i = 0; i < num_courses; i++) {
if (strstr(courses[i].name, keyword) != NULL || strstr(courses[i].nature, keyword) != NULL) {
printf("%-10s %-20s %-20s %-10.1f %-20s\n", courses[i].id, courses[i].name, courses[i].nature, courses[i].credit, courses[i].term);
}
}
}
void update_course() {
char id[10];
printf("请输入要修改的课程编号:");
scanf("%s", id);
int index = -1;
for (int i = 0; i < num_courses; i++) {
if (strcmp(courses[i].id, id) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("没有找到对应的课程!\n");
return;
}
printf("请选择要执行的操作:\n");
printf("1. 修改\n2. 删除\n3. 插入\n");
int choice;
scanf("%d", &choice);
if (choice == 1) {
printf("请输入新的课程名称:");
scanf("%s", courses[index].name);
printf("请输入新的课程性质:");
scanf("%s", courses[index].nature);
printf("请输入新的学分:");
scanf("%f", &courses[index].credit);
printf("请输入新的开课学期:");
scanf("%s", courses[index].term);
printf("修改成功!\n");
} else if (choice == 2) {
for (int i = index; i < num_courses - 1; i++) {
courses[i] = courses[i + 1];
}
num_courses--;
printf("删除成功!\n");
} else if (choice == 3) {
struct Course course;
printf("请输入课程编号:");
scanf("%s", course.id);
printf("请输入课程名称:");
scanf("%s", course.name);
printf("请输入课程性质:");
scanf("%s", course.nature);
printf("请输入学分:");
scanf("%f", &course.credit);
printf("请输入开课学期:");
scanf("%s", course.term);
for (int i = num_courses; i > index; i--) {
courses[i] = courses[i - 1];
}
courses[index + 1] = course;
num_courses++;
printf("插入成功!\n");
} else {
printf("无效的选项!\n");
}
}
void count_credit() {
char term[20];
printf("请输入学期名称:");
scanf("%s", term);
float total_credit = 0;
for (int i = 0; i < num_courses; i++) {
if (strcmp(courses[i].term, term) == 0) {
total_credit += courses[i].credit;
}
}
printf("%s 学期的总学分为 %.1f\n", term, total_credit);
}
void save_courses() {
FILE* fp = fopen("courses.txt", "w");
if (fp == NULL) {
printf("无法打开文件!\n");
return;
}
for (int i = 0; i < num_courses; i++) {
fprintf(fp, "%s %s %s %.1f %s\n", courses[i].id, courses[i].name, courses[i].nature, courses[i].credit, courses[i].term);
}
fclose(fp);
printf("保存成功!\n");
}
void load_courses() {
FILE* fp = fopen("courses.txt", "r");
if (fp == NULL) {
printf("无法打开文件!\n");
return;
}
num_courses = 0;
while (fscanf(fp, "%s %s %s %f %s\n", courses[num_courses].id, courses[num_courses].name, courses[num_courses].nature, &courses[num_courses].credit, courses[num_courses].term) != EOF) {
num_courses++;
}
fclose(fp);
printf("加载成功!\n");
}
void show_menu() {
printf("课程信息管理系统\n");
printf("1. 输入记录\n");
printf("2. 查询记录\n");
printf("3. 更新记录\n");
printf("4. 统计记录\n");
printf("5. 输出记录\n");
printf("6. 退出程序\n");
}
int main() {
load_courses();
while (1) {
show_menu();
int choice;
scanf("%d", &choice);
switch (choice) {
case 1:
add_course();
break;
case 2:
search_course();
break;
case 3:
update_course();
break;
case 4:
count_credit();
break;
case 5:
save_courses();
break;
case 6:
return 0;
default:
printf("无效的选项!\n");
}
}
return 0;
}
```
该程序使用结构体来存储每个课程的信息,并提供了添加、查询、更新、统计和存储等操作。可以将课程信息保存到文件中,以便下次使用时可以加载。
阅读全文