该系统实现了对学生信息的存储和管理。学生信息包括学号、姓名、生日等信息。系统可以对学生信息进行查询、添加、删除和备份。
学生信息管理系统包含以下功能:
(1) 输入部分:通过键盘输入多位学生的学生信息。学生信息包含有:学生学号、姓名、性别、出生年月日、年龄、成绩;
(2) 输出部分:输出显示已存储学生信息;
(在运行后通过键盘输入多个学生信息 然后停止输入 自动保存到文档里 然后再输出显示到屏幕上 )可以帮忙完成输出和输入部分的功能吗
void increase() //增加学生信息
{
int m, flag, i = n, j;
printf("请输入待添加的学生人数:\n");
scanf("%d", &m);
if (m > 0)
{
do
{
flag = 1;
while (flag != 0)
{
flag = 0;
printf("请输入第%d位学生的学号:\n", i + 1);
getchar();
gets(stu[i].num);
for (j = 0; j < i; j++)
{
if (strcmp(stu[i].num, stu[j].num) == 0)
{
printf("该学号已存在,请重新输入!\n");
flag = 1;
break;
}
}
}
printf("请输入第%d位学生姓名:\n", i + 1);
gets(stu[i].name);
printf("请输入第%d位学生性别:\n", i + 1);
gets(stu[i].sex);
printf("请输入第%d位学生年龄:\n", i + 1);
scanf("%d", &stu[i].age);
printf("请输入第%d位学生C语言成绩:\n", i + 1);
scanf("%f", &stu[i].score[0]);
printf("请输入第%d位学生高等数学成绩:\n", i + 1);
scanf("%f", &stu[i].score[1]);
printf("请输入第%d位学生大学英语成绩:\n", i + 1);
scanf("%f", &stu[i].score[2]);
i++;
} while (i < m + n);
n += m;
printf("添加完成!");
system("pause");
}
}
网上有些现成的,没搜一搜么
不知这个是否满足你的要求,提供实例参考【数据结构实验-学生信息表】,链接:https://blog.csdn.net/weixin_54678689/article/details/120711287
实现了对学生信息的存储、查询、添加、删除和备份的功能:
#include <stdio.h>
#include <string.h>
#define MAX_STUDENT_COUNT 100 // 最大学生数
// 学生信息结构体
struct Student {
char id[20]; // 学号
char name[20]; // 姓名
char gender[20]; // 性别
char birthday[20]; // 生日
int age; // 年龄
int score; // 成绩
};
// 学生信息数组
struct Student students[MAX_STUDENT_COUNT];
int student_count = 0; // 当前学生数
// 加载学生信息
void load_students() {
// 打开文件
FILE* file = fopen("test.txt", "r");
if (file == NULL) {
printf("无法打开文件。\n");
return;
}
// 读取学生信息
student_count = 0;
while (fscanf(file, "%s %s %s %s %d %d", students[student_count].id,
students[student_count].name, students[student_count].gender,
students[student_count].birthday, &students[student_count].age,
&students[student_count].score) == 6) {
student_count++;
}
// 关闭文件
fclose(file);
}
// 保存学生信息
void save_students() {
// 打开文件
FILE* file = fopen("test.txt", "w");
if (file == NULL) {
printf("无法打开文件。\n");
return;
}
// 保存学生信息
for (int i = 0; i < student_count; i++) {
fprintf(file, "%s %s %s %s %d %d\n", students[i].id, students[i].name,
students[i].gender, students[i].birthday, students[i].age,
students[i].score);
}
// 关闭文件
fclose(file);
}
// 添加学生信息
void add_student() {
if (student_count >= MAX_STUDENT_COUNT) {
printf("无法添加新学生,学生数已达到上限。\n");
return;
}
printf("输入学号:");
scanf("%s", students[student_count].id);
printf("输入姓名:");
scanf("%s", students[student_count].name);
printf("输入性别:");
scanf("%s", students[student_count].gender);
printf("输入生日(格式:YYYY-MM-DD):");
scanf("%s", students[student_count].birthday);
printf("输入年龄:");
scanf("%d", &students[student_count].age);
printf("输入成绩:");
scanf("%d", &students[student_count].score);
student_count++;
}
// 删除学生信息
void delete_student() {
char id[20];
printf("输入要删除的学生学号:");
scanf("%s", id);
// 查找学生信息
int index = -1;
for (int i = 0; i < student_count; i++) {
if (strcmp(students[i].id, id) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("没有找到学号为 '%s' 的学生。\n", id);
return;
}
// 删除学生信息
student_count--;
for (int i = index; i < student_count; i++) {
students[i] = students[i + 1];
}
printf("成功删除学号为 '%s' 的学生。\n", id);
}
// 备份学生信息
void backup_students() {
// 打开文件
FILE* file = fopen("test_backup.txt", "w");
if (file == NULL) {
printf("无法打开文件。\n");
return;
}
// 保存学生信息
for (int i = 0; i < student_count; i++) {
fprintf(file, "%s %s %s %s %d %d\n", students[i].id, students[i].name,
students[i].gender, students[i].birthday, students[i].age,
students[i].score);
}
// 关闭文件
fclose(file);
}
int main() {
// 加载学生信息
load_students();
// 输出学生信息
printf("学号\t姓名\t性别\t生日\t年龄\t成绩\n");
for (int i = 0; i < student_count; i++) {
printf("%s\t%s\t%s\t%s\t%d\t%d\n", students[i].id, students[i].name,
students[i].gender, students[i].birthday, students[i].age,
students[i].score);
}
// 循环处理命令
while (1) {
printf("\n请输入命令(a: 添加学生信息,d: 删除学生信息,b: 备份学生信息,q: 退出系统):");
char command;
scanf(" %c", &command); // 空格用于忽略回车
switch (command) {
case 'a':
add_student();
break;
case 'd':
delete_student();
break;
case 'b':
backup_students();
break;
case 'q':
// 保存学生信息
save_students();
return 0;
default:
printf("无效的命令。\n");
break;
}
}
return 0;
}
上述代码是假设当前位置存在一个名为 test.txt 的文件的
可以,等下发你