c语言代码课程信息包括:课程编号、课程名称、课程性质、学分、开课学期等信息,设计一个课程信息管理系统,提供以下功能: 系统以菜单方式工作。 输入记录:课程信息录入功能。 查询记录:用户可以按课程名或者课程性质进行查询。 更新记录:对课程信息进行修改、删除、插入操作。 统计记录:对学期课程总学分进行统计。 输出记录:实现对记录的存盘操作,实现将存储记录以表格的形式在屏幕上打
时间: 2024-03-12 09:48:15 浏览: 52
开一个结构体来存储课程信息,代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_COURSES 100 // 最大课程数
struct Course {
char id[20]; // 课程编号
char name[50]; // 课程名称
char nature[10]; // 课程性质
float credit; // 学分
int term; // 开课学期
};
struct Course courses[MAX_COURSES];
int num_courses = 0; // 当前课程数
void print_menu() {
printf("\n");
printf("1. 录入课程信息\n");
printf("2. 按课程名查询\n");
printf("3. 按课程性质查询\n");
printf("4. 修改课程信息\n");
printf("5. 删除课程信息\n");
printf("6. 插入课程信息\n");
printf("7. 统计学期总学分\n");
printf("8. 存盘并退出\n");
printf("\n");
}
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("%d", &course.term);
courses[num_courses] = course;
num_courses++;
}
void list_courses() {
printf("编号\t名称\t性质\t学分\t学期\n");
for (int i = 0; i < num_courses; i++) {
printf("%s\t%s\t%s\t%.1f\t%d\n",
courses[i].id, courses[i].name, courses[i].nature, courses[i].credit, courses[i].term);
}
}
void search_by_name() {
char name[50];
printf("请输入课程名称:");
scanf("%s", name);
printf("编号\t名称\t性质\t学分\t学期\n");
for (int i = 0; i < num_courses; i++) {
if (strcmp(name, courses[i].name) == 0) {
printf("%s\t%s\t%s\t%.1f\t%d\n",
courses[i].id, courses[i].name, courses[i].nature, courses[i].credit, courses[i].term);
}
}
}
void search_by_nature() {
char nature[10];
printf("请输入课程性质:");
scanf("%s", nature);
printf("编号\t名称\t性质\t学分\t学期\n");
for (int i = 0; i < num_courses; i++) {
if (strcmp(nature, courses[i].nature) == 0) {
printf("%s\t%s\t%s\t%.1f\t%d\n",
courses[i].id, courses[i].name, courses[i].nature, courses[i].credit, courses[i].term);
}
}
}
void update_course() {
char id[20];
printf("请输入课程编号:");
scanf("%s", id);
for (int i = 0; i < num_courses; i++) {
if (strcmp(id, courses[i].id) == 0) {
printf("请输入新的课程名称:");
scanf("%s", courses[i].name);
printf("请输入新的课程性质:");
scanf("%s", courses[i].nature);
printf("请输入新的学分:");
scanf("%f", &courses[i].credit);
printf("请输入新的开课学期:");
scanf("%d", &courses[i].term);
printf("修改成功!\n");
return;
}
}
printf("没有找到该课程!\n");
}
void delete_course() {
char id[20];
printf("请输入要删除的课程编号:");
scanf("%s", id);
for (int i = 0; i < num_courses; i++) {
if (strcmp(id, courses[i].id) == 0) {
for (int j = i; j < num_courses - 1; j++) {
courses[j] = courses[j + 1];
}
num_courses--;
printf("删除成功!\n");
return;
}
}
printf("没有找到该课程!\n");
}
void insert_course() {
int pos;
printf("请输入要插入的位置(从0开始):");
scanf("%d", &pos);
if (pos < 0 || pos > num_courses) {
printf("无效的位置!\n");
return;
}
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("%d", &course.term);
for (int i = num_courses; i > pos; i--) {
courses[i] = courses[i - 1];
}
courses[pos] = course;
num_courses++;
}
void count_credit() {
int term;
float total_credit = 0;
printf("请输入要统计的学期:");
scanf("%d", &term);
for (int i = 0; i < num_courses; i++) {
if (courses[i].term == term) {
total_credit += courses[i].credit;
}
}
printf("第%d学期总学分为%.1f\n", term, total_credit);
}
void save_data() {
FILE *fp;
fp = fopen("courses.dat", "wb");
if (fp == NULL) {
printf("无法创建文件!\n");
return;
}
fwrite(&num_courses, sizeof(int), 1, fp);
fwrite(courses, sizeof(struct Course), num_courses, fp);
fclose(fp);
printf("数据已保存到courses.dat文件中。\n");
}
void load_data() {
FILE *fp;
fp = fopen("courses.dat", "rb");
if (fp == NULL) {
printf("无法打开文件!\n");
return;
}
fread(&num_courses, sizeof(int), 1, fp);
fread(courses, sizeof(struct Course), MAX_COURSES, fp);
fclose(fp);
printf("数据已从courses.dat文件中读取。\n");
}
int main() {
int choice;
load_data();
do {
print_menu();
printf("请输入菜单选项:");
scanf("%d", &choice);
switch (choice) {
case 1:
add_course();
break;
case 2:
search_by_name();
break;
case 3:
search_by_nature();
break;
case 4:
update_course();
break;
case 5:
delete_course();
break;
case 6:
insert_course();
break;
case 7:
count_credit();
break;
case 8:
save_data();
break;
default:
printf("无效选项!\n");
break;
}
} while (choice != 8);
return 0;
}
```
这个程序可以实现录入课程信息、查询、修改、删除、插入、统计学分和存盘退出等功能。在运行时,它会从文件courses.dat中读取数据,也会在退出时将数据保存到该文件中。
阅读全文