用C语言编写一个可查询、修改、添加信息的程序,要能够存储:学号、姓名、专业、家庭住址、联系电话等信息,要能使用文本文件对学生信息进行存储、查询、添加、删除等操作
时间: 2023-07-04 17:25:40 浏览: 65
c 语言编写的学生信息查询的程序
好的,这是一个很好的问题。基于您的要求,我可以给您提供以下的思路:
1. 定义一个学生结构体,包含学号、姓名、专业、家庭住址和联系电话等信息。
2. 定义一个函数,用于从文件中读取学生信息,并将其存储到一个结构体数组中。
3. 定义一个函数,用于向文件中写入学生信息。
4. 定义一个函数,用于查询学生信息。
5. 定义一个函数,用于修改学生信息。
6. 定义一个函数,用于添加新的学生信息。
7. 定义一个函数,用于删除学生信息。
下面是伪代码示例:
```c
// 学生结构体
struct student {
int id;
char name[20];
char major[20];
char address[50];
char phone[20];
};
// 从文件中读取学生信息
void read_students(struct student students[]) {
// 打开文件
FILE *fp = fopen("students.txt", "r");
// 读取数据
int i = 0;
while (fscanf(fp, "%d %s %s %s %s", &students[i].id, students[i].name, students[i].major, students[i].address, students[i].phone) != EOF) {
i++;
}
// 关闭文件
fclose(fp);
}
// 写入学生信息到文件
void write_students(struct student students[], int count) {
// 打开文件
FILE *fp = fopen("students.txt", "w");
// 写入数据
for (int i = 0; i < count; i++) {
fprintf(fp, "%d %s %s %s %s\n", students[i].id, students[i].name, students[i].major, students[i].address, students[i].phone);
}
// 关闭文件
fclose(fp);
}
// 查询学生信息
void search_student(struct student students[], int count, int id) {
for (int i = 0; i < count; i++) {
if (students[i].id == id) {
printf("Id: %d\nName: %s\nMajor: %s\nAddress: %s\nPhone: %s\n", students[i].id, students[i].name, students[i].major, students[i].address, students[i].phone);
return;
}
}
printf("Not found\n");
}
// 修改学生信息
void modify_student(struct student students[], int count, int id) {
for (int i = 0; i < count; i++) {
if (students[i].id == id) {
printf("Enter new name: ");
scanf("%s", students[i].name);
printf("Enter new major: ");
scanf("%s", students[i].major);
printf("Enter new address: ");
scanf("%s", students[i].address);
printf("Enter new phone: ");
scanf("%s", students[i].phone);
return;
}
}
printf("Not found\n");
}
// 添加新的学生信息
void add_student(struct student students[], int *count) {
printf("Enter id: ");
scanf("%d", &students[*count].id);
printf("Enter name: ");
scanf("%s", students[*count].name);
printf("Enter major: ");
scanf("%s", students[*count].major);
printf("Enter address: ");
scanf("%s", students[*count].address);
printf("Enter phone: ");
scanf("%s", students[*count].phone);
(*count)++;
}
// 删除学生信息
void delete_student(struct student students[], int *count, int id) {
for (int i = 0; i < *count; i++) {
if (students[i].id == id) {
for (int j = i; j < *count - 1; j++) {
students[j] = students[j + 1];
}
(*count)--;
return;
}
}
printf("Not found\n");
}
int main() {
struct student students[100];
int count = 0;
read_students(students);
count = // 读入的学生数量
// TODO: 主程序逻辑
write_students(students, count);
return 0;
}
```
注意,这只是一个简单的示例,您可以根据具体需求进行修改和优化。
阅读全文