C语言实现简单学生管理系统攻略
1. 确定需求
在C语言实现简单学生管理系统之前,我们首先需要明确该系统的需求,例如:
- 能够添加学生信息
- 能够删除学生信息
- 能够修改学生信息
- 能够查询学生信息
- 能够显示所有学生信息
2. 设计数据库
在明确了系统的需求后,我们需要设计一个合适的数据库来存储学生信息。在我们的例子中,我们可以使用一个结构体来存储学生信息:
typedef struct {
char name[20];
int age;
char id[20];
float score;
} student_t;
在这个结构体中,我们定义了4个学生信息,分别为姓名、年龄、学号和成绩。
3. 实现系统功能
有了数据库之后,我们就可以开始实现系统的各种功能。下面我们将分别介绍如何实现添加、删除、修改、查询和显示学生信息这几个功能。
3.1 添加学生信息
添加学生信息主要包括以下几个步骤:
- 输入学生信息;
- 将学生信息保存到数据库中。
示例代码:
void add_student(student_t *students, int *count) {
printf("请输入学生姓名:");
scanf("%s", students[*count].name);
printf("请输入学生年龄:");
scanf("%d", &students[*count].age);
printf("请输入学生学号:");
scanf("%s", students[*count].id);
printf("请输入学生成绩:");
scanf("%f", &students[*count].score);
(*count)++;
printf("添加学生信息成功!\n");
}
3.2 删除学生信息
删除学生信息主要包括以下几个步骤:
- 输入要删除的学生学号;
- 在数据库中查找该学生信息;
- 删除该学生信息。
示例代码:
void delete_student(student_t *students, int *count) {
char id[20];
int i, flag = 0;
printf("请输入要删除的学生学号:");
scanf("%s", id);
for (i = 0; i < *count; i++) {
if (strcmp(students[i].id, id) == 0) {
flag = 1;
break;
}
}
if (flag) {
for (; i < (*count)-1; i++) {
students[i] = students[i+1];
}
(*count)--;
printf("删除学生信息成功!\n");
} else {
printf("没有找到指定学生信息!\n");
}
}
3.3 修改学生信息
修改学生信息主要包括以下几个步骤:
- 输入要修改的学生学号;
- 在数据库中查找该学生信息;
- 输入修改后的学生信息;
- 更新数据库中的学生信息。
示例代码:
void edit_student(student_t *students, int count) {
char id[20];
int i, flag = 0;
printf("请输入要修改的学生学号:");
scanf("%s", id);
for (i = 0; i < count; i++) {
if (strcmp(students[i].id, id) == 0) {
flag = 1;
break;
}
}
if (flag) {
printf("请输入学生姓名:");
scanf("%s", students[i].name);
printf("请输入学生年龄:");
scanf("%d", &students[i].age);
printf("请输入学生成绩:");
scanf("%f", &students[i].score);
printf("修改学生信息成功!\n");
} else {
printf("没有找到指定学生信息!\n");
}
}
3.4 查询学生信息
查询学生信息主要包括以下几个步骤:
- 输入要查询的学生学号;
- 在数据库中查找该学生信息;
- 输出该学生的信息。
示例代码:
void search_student(student_t *students, int count) {
char id[20];
int i, flag = 0;
printf("请输入要查询的学生学号:");
scanf("%s", id);
for (i = 0; i < count; i++) {
if (strcmp(students[i].id, id) == 0) {
flag = 1;
printf("姓名:%s\n", students[i].name);
printf("年龄:%d\n", students[i].age);
printf("学号:%s\n", students[i].id);
printf("成绩:%.2f\n", students[i].score);
break;
}
}
if (!flag) {
printf("没有找到指定学生信息!\n");
}
}
3.5 显示所有学生信息
显示所有学生信息主要包括以下几个步骤:
- 遍历数据库中的所有学生信息;
- 输出每个学生的信息。
示例代码:
void display_students(student_t *students, int count) {
int i;
if (count == 0) {
printf("暂无学生信息!\n");
} else {
printf("姓名\t年龄\t学号\t成绩\n");
for (i = 0; i < count; i++) {
printf("%s\t%d\t%s\t%.2f\n", students[i].name, students[i].age, students[i].id, students[i].score);
}
}
}
4. 完整代码
最后,我们将上述功能代码整合起来,得到完整的学生管理系统代码:
#include <stdio.h>
#include <string.h>
typedef struct {
char name[20];
int age;
char id[20];
float score;
} student_t;
void add_student(student_t *students, int *count);
void delete_student(student_t *students, int *count);
void edit_student(student_t *students, int count);
void search_student(student_t *students, int count);
void display_students(student_t *students, int count);
int main() {
student_t students[100];
int count = 0;
int choice;
while (1) {
printf("1. 添加学生信息\n");
printf("2. 删除学生信息\n");
printf("3. 修改学生信息\n");
printf("4. 查询学生信息\n");
printf("5. 显示所有学生信息\n");
printf("0. 退出程序\n");
printf("请输入选项:");
scanf("%d", &choice);
switch (choice) {
case 0:
printf("欢迎下次再来!\n");
return 0;
case 1:
add_student(students, &count);
break;
case 2:
delete_student(students, &count);
break;
case 3:
edit_student(students, count);
break;
case 4:
search_student(students, count);
break;
case 5:
display_students(students, count);
break;
default:
printf("无效的选项,请重新输入!\n");
break;
}
}
return 0;
}
void add_student(student_t *students, int *count) {
printf("请输入学生姓名:");
scanf("%s", students[*count].name);
printf("请输入学生年龄:");
scanf("%d", &students[*count].age);
printf("请输入学生学号:");
scanf("%s", students[*count].id);
printf("请输入学生成绩:");
scanf("%f", &students[*count].score);
(*count)++;
printf("添加学生信息成功!\n");
}
void delete_student(student_t *students, int *count) {
char id[20];
int i, flag = 0;
printf("请输入要删除的学生学号:");
scanf("%s", id);
for (i = 0; i < *count; i++) {
if (strcmp(students[i].id, id) == 0) {
flag = 1;
break;
}
}
if (flag) {
for (; i < (*count)-1; i++) {
students[i] = students[i+1];
}
(*count)--;
printf("删除学生信息成功!\n");
} else {
printf("没有找到指定学生信息!\n");
}
}
void edit_student(student_t *students, int count) {
char id[20];
int i, flag = 0;
printf("请输入要修改的学生学号:");
scanf("%s", id);
for (i = 0; i < count; i++) {
if (strcmp(students[i].id, id) == 0) {
flag = 1;
break;
}
}
if (flag) {
printf("请输入学生姓名:");
scanf("%s", students[i].name);
printf("请输入学生年龄:");
scanf("%d", &students[i].age);
printf("请输入学生成绩:");
scanf("%f", &students[i].score);
printf("修改学生信息成功!\n");
} else {
printf("没有找到指定学生信息!\n");
}
}
void search_student(student_t *students, int count) {
char id[20];
int i, flag = 0;
printf("请输入要查询的学生学号:");
scanf("%s", id);
for (i = 0; i < count; i++) {
if (strcmp(students[i].id, id) == 0) {
flag = 1;
printf("姓名:%s\n", students[i].name);
printf("年龄:%d\n", students[i].age);
printf("学号:%s\n", students[i].id);
printf("成绩:%.2f\n", students[i].score);
break;
}
}
if (!flag) {
printf("没有找到指定学生信息!\n");
}
}
void display_students(student_t *students, int count) {
int i;
if (count == 0) {
printf("暂无学生信息!\n");
} else {
printf("姓名\t年龄\t学号\t成绩\n");
for (i = 0; i < count; i++) {
printf("%s\t%d\t%s\t%.2f\n", students[i].name, students[i].age, students[i].id, students[i].score);
}
}
}
结语
通过上述步骤的介绍,我们可以开发一个简单的学生管理系统。在实际开发过程中,我们还需要注意输入的合法性、重复数据的判断等,以确保系统的稳定性和完整性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言实现简单学生管理系统 - Python技术站