有没有比较厉害的人能给我写出满足以下要求的代码,想要带着简要解释的,并能给出符合数据文件和结果示意图,想要一个完整的函数
8条回答 默认 最新
关注 以下是一个使用C语言实现的学生-课程数据库应用程序,包括添加、查找、删除和修改功能。程序使用文件来保存学生信息,并在控制台上显示结果。
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_STUDENTS 100 #define FILE_NAME "students.dat" typedef struct { char id[10]; char name[20]; char gender[5]; int age; char department[20]; } Student; // Function prototypes void add(Student students[], int *count); void searchById(Student students[], int count, const char *id); void modify(Student students[], int count); void deleteById(Student students[], int *count, const char *id); void saveToFile(Student students[], int count); void display(Student students[], int count); void displayFile(); int main() { Student students[MAX_STUDENTS]; int count = 0; char choice; FILE *file = fopen(FILE_NAME, "rb"); if (file != NULL) { fread(students, sizeof(Student), MAX_STUDENTS, file); fclose(file); count = MAX_STUDENTS; } do { printf(" 1. Add student "); printf("2. Search by ID "); printf("3. Modify "); printf("4. Delete by ID "); printf("5. Display all "); printf("6. Display file content "); printf("7. Exit "); printf("Enter your choice: "); scanf(" %c", &choice); switch(choice) { case '1': add(students, &count); break; case '2': { char id[10]; printf("Enter ID to search: "); scanf("%s", id); searchById(students, count, id); break; } case '3': modify(students, count); break; case '4': { char id[10]; printf("Enter ID to delete: "); scanf("%s", id); deleteById(students, &count, id); break; } case '5': display(students, count); break; case '6': displayFile(); break; case '7': saveToFile(students, count); printf("Exiting program. "); break; default: printf("Invalid choice. Please try again. "); } } while (choice != '7'); return 0; } void add(Student students[], int *count) { if (*count >= MAX_STUDENTS) { printf("Database full. Cannot add more students. "); return; } printf("Enter student details: "); printf("ID: "); scanf("%s", students[*count].id); printf("Name: "); scanf("%s", students[*count].name); printf("Gender: "); scanf("%s", students[*count].gender); printf("Age: "); scanf("%d", &students[*count].age); printf("Department: "); scanf("%s", students[*count].department); (*count)++; } void searchById(Student students[], int count, const char *id) { int found = 0; for (int i = 0; i < count; i++) { if (strcmp(students[i].id, id) == 0) { printf("Student found: "); printf("ID: %s ", students[i].id); printf("Name: %s ", students[i].name); printf("Gender: %s ", students[i].gender); printf("Age: %d ", students[i].age); printf("Department: %s ", students[i].department); found = 1; break; } } if (!found) { printf("Student with ID %s not found. ", id); } } void modify(Student students[], int count) { for (int i = 0; i < count; i++) { students[i].age++; } printf("All students ages have been incremented by 1. "); } void deleteById(Student students[], int *count, const char *id) { int found = 0; for (int i = 0; i < *count; i++) { if (strcmp(students[i].id, id) == 0) { for (int j = i; j < *count - 1; j++) { students[j] = students[j + 1]; } (*count)--; printf("Student with ID %s deleted. ", id); found = 1; break; } } if (!found) { printf("Student with ID %s not found. ", id); } } void saveToFile(Student students[], int count) { FILE *file = fopen(FILE_NAME, "wb"); if (file != NULL) { fwrite(students, sizeof(Student), count, file); fclose(file); } else { printf("Error saving to file. "); } } void display(Student students[], int count) { printf("Student details: "); for (int i = 0; i < count; i++) { printf("ID: %s, Name: %s, Gender: %s, Age: %d, Department: %s ", students[i].id, students[i].name, students[i].gender, students[i].age, students[i].department); } } void displayFile() { FILE *file = fopen(FILE_NAME, "rb"); if (file != NULL) { Student student; printf("Student details from file: "); while (fread(&student, sizeof(Student), 1, file)) { printf("ID: %s, Name: %s, Gender: %s, Age: %d, Department: %s ", student.id, student.name, student.gender, student.age, student.department); } fclose(file); } else { printf("Error displaying file content. "); } }
这个程序可以添加、查找、修改和删除学生记录,并在控制台上显示结果。学生信息保存在名为 "students.dat" 的二进制文件中。
以下是程序的工作示意图:
1. Add student 2. Search by ID 3. Modify 4. Delete by ID 5. Display all 6. Display file content 7. Exit Enter your choice: 1 Enter student details: ID: 950011 Name: 李勇日 Gender: 男 Age: 20 Department: CS 1. Add student 2. Search by ID 3. Modify 4. Delete by ID 5. Display all 6. Display file content 7. Exit Enter your choice: 5 Student details: ID: 950011, Name: 李勇日, Gender: 男, Age
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥60 ESP32怎么烧录自启动程序
- ¥50 html2canvas超出滚动条不显示
- ¥15 java业务性能问题求解(sql,业务设计相关)
- ¥15 52810 尾椎c三个a 写蓝牙地址
- ¥15 elmos524.33 eeprom的读写问题
- ¥15 使用Java milo连接Kepserver服务端报错?
- ¥15 用ADS设计一款的射频功率放大器
- ¥15 怎么求交点连线的理论解?
- ¥20 软件开发方法学习来了
- ¥15 微信小程序商城如何实现多商户收款 平台分润抽成