程序描述
在计算机本地建立一个txt文件设计C语言程序:
按键盘1 ,实现学生信息的显示
按键盘2,添加学生信息
按键盘3,修改学生信息
按键盘4,删除某个学生信息
退出程序
源代码
下面是一个示例的C语言程序,实现了按键盘输入不同选项来操作学生信息的显示、添加、修改和删除,并将学生信息保存在本地的txt文件中。
#include <stdio.h>
#include <stdlib.h>
// 定义学生结构体
struct Student {
char name[50];
int age;
int grade;
};
int main() {
FILE *file;
struct Student students[100];
int numStudents = 0;
// 循环显示菜单,直到选择退出程序
while (1) {
int option;
printf("\n请选择操作:\n");
printf("1. 显示学生信息\n");
printf("2. 添加学生信息\n");
printf("3. 修改学生信息\n");
printf("4. 删除学生信息\n");
printf("5. 退出程序\n");
printf("请选择:");
scanf("%d", &option);
switch (option) {
case 1:
// 显示学生信息
if (numStudents == 0) {
printf("暂无学生信息。\n");
} else {
printf("学生信息如下:\n");
for (int i = 0; i < numStudents; i++) {
printf("姓名:%s,年龄:%d,年级:%d\n", students[i].name, students[i].age, students[i].grade);
}
}
break;
case 2:
// 添加学生信息
if (numStudents == 100) {
printf("学生数量已达上限,无法添加更多学生。\n");
} else {
printf("请输入学生姓名:");
scanf("%s", students[numStudents].name);
printf("请输入学生年龄:");
scanf("%d", &students[numStudents].age);
printf("请输入学生年级:");
scanf("%d", &students[numStudents].grade);
// 将学生信息写入文件
file = fopen("student_info.txt", "a");
fprintf(file, "%s %d %d\n", students[numStudents].name, students[numStudents].age, students[numStudents].grade);
fclose(file);
numStudents++;
printf("学生信息添加成功。\n");
}
break;
case 3:
// 修改学生信息
if (numStudents == 0) {
printf("暂无学生信息,无法进行修改。\n");
} else {
int index;
printf("请输入要修改的学生索引(从1开始):");
scanf("%d", &index);
if (index < 1 || index > numStudents) {
printf("无效的学生索引。\n");
} else {
printf("请输入学生姓名:");
scanf("%s", students[index - 1].name);
printf("请输入学生年龄:");
scanf("%d", &students[index - 1].age);
printf("请输入学生年级:");
scanf("%d", &students[index - 1].grade);
// 更新文件中的学生信息
file = fopen("student_info.txt", "w");
for (int i = 0; i < numStudents; i++) {
fprintf(file, "%s %d %d\n", students[i].name, students[i].age, students[i].grade);
}
fclose(file);
printf("学生信息修改成功。\n");
}
}
break;
case 4:
// 删除学生信息
if (numStudents == 0) {
printf("暂无学生信息,无法进行删除。\n");
} else {
int index;
printf("请输入要删除的学生索引(从1开始):");
scanf("%d", &index);
if (index < 1 || index > numStudents) {
printf("无效的学生索引。\n");
} else {
for (int i = index - 1; i < numStudents - 1; i++) {
students[i] = students[i + 1];
}
numStudents--;
// 更新文件中的学生信息
file = fopen("student_info.txt", "w");
for (int i = 0; i < numStudents; i++) {
fprintf(file, "%s %d %d\n", students[i].name, students[i].age, students[i].grade);
}
fclose(file);
printf("学生信息删除成功。\n");
}
}
break;
case 5:
// 退出程序
printf("感谢使用,再见!\n");
exit(0);
default:
printf("无效的选项,请重新选择。\n");
}
}
return 0;
}
上述代码中,通过使用结构体Student
来表示学生信息,并使用数组students
存储多个学生的信息。在main函数中,利用一个循环显示菜单供用户选择操作,根据用户的选择执行相应的操作。具体的每个操作的实现如下:
- 显示学生信息:遍历
students
数组,逐个输出学生的姓名、年龄和年级。 - 添加学生信息:判断学生数量是否已达上限(这里假设最多可以添加100个学生),如果未达到上限,则通过键盘输入学生的姓名、年龄和年级,并将学生信息写入本地的txt文件。
- 修改学生信息:首先判断是否有学生信息可供修改,然后通过键盘输入要修改的学生索引和新的学生信息,更新对应位置的学生信息,并将更新后的学生信息写入txt文件。
- 删除学生信息:首先判断是否有学生信息可供删除,然后通过键盘输入要删除的学生索引,将后面的学生信息依次向前移动一个位置,然后更新学生数量,并将更新后的学生信息写入txt文件。
- 退出程序:通过调用
exit(0)
函数退出程序。
请确保在编译和运行程序之前,确保当前目录下有一个名为student_info.txt
的文本文件,用于存储学生信息。
© 版权声明
本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
THE END