编写一个可以查询,修改,删除,添加信息的c语言程序,同时可以储存学号,姓名,专业,家庭住址,联系电话等信息。查询时要能够实现数据全部显示,相关信息按行输出,能够显示信息总数;能够通过 学号、姓名、专业等关键词查找,找到相关信息后,显示出该同学的完整信息
时间: 2024-04-02 12:31:40 浏览: 75
好的,我可以为您提供一个简单的代码示例,但是需要您自己按照需求进行修改和完善。以下是代码:
```c
#include <stdio.h>
#include <string.h>
typedef struct {
int id;
char name[20];
char major[20];
char address[50];
char phone[20];
} Student;
void printStudent(Student s) {
printf("学号:%d\n", s.id);
printf("姓名:%s\n", s.name);
printf("专业:%s\n", s.major);
printf("家庭住址:%s\n", s.address);
printf("联系电话:%s\n", s.phone);
}
void printAll(Student s[], int n) {
printf("共有%d名学生\n", n);
for (int i = 0; i < n; i++) {
printf("===================\n");
printStudent(s[i]);
}
}
int searchById(Student s[], int n, int id) {
for (int i = 0; i < n; i++) {
if (s[i].id == id) {
return i;
}
}
return -1;
}
int searchByName(Student s[], int n, char name[]) {
for (int i = 0; i < n; i++) {
if (strcmp(s[i].name, name) == 0) {
return i;
}
}
return -1;
}
int searchByMajor(Student s[], int n, char major[]) {
for (int i = 0; i < n; i++) {
if (strcmp(s[i].major, major) == 0) {
return i;
}
}
return -1;
}
void addStudent(Student s[], int *n) {
printf("请输入学生信息:\n");
printf("学号:");
scanf("%d", &s[*n].id);
printf("姓名:");
scanf("%s", s[*n].name);
printf("专业:");
scanf("%s", s[*n].major);
printf("家庭住址:");
scanf("%s", s[*n].address);
printf("联系电话:");
scanf("%s", s[*n].phone);
(*n)++;
}
void modifyStudent(Student s[], int n) {
printf("请输入要修改的学生的学号:");
int id;
scanf("%d", &id);
int index = searchById(s, n, id);
if (index == -1) {
printf("未找到该学生!\n");
} else {
printf("该学生原信息为:\n");
printStudent(s[index]);
printf("请输入新的学生信息:\n");
printf("学号:");
scanf("%d", &s[index].id);
printf("姓名:");
scanf("%s", s[index].name);
printf("专业:");
scanf("%s", s[index].major);
printf("家庭住址:");
scanf("%s", s[index].address);
printf("联系电话:");
scanf("%s", s[index].phone);
printf("修改成功!\n");
}
}
void deleteStudent(Student s[], int *n) {
printf("请输入要删除的学生的学号:");
int id;
scanf("%d", &id);
int index = searchById(s, *n, id);
if (index == -1) {
printf("未找到该学生!\n");
} else {
for (int i = index; i < *n - 1; i++) {
s[i] = s[i + 1];
}
(*n)--;
printf("删除成功!\n");
}
}
int main() {
Student students[100];
int n = 0;
int choice;
do {
printf("\n学生信息管理系统\n");
printf("1、显示所有学生信息\n");
printf("2、添加学生信息\n");
printf("3、修改学生信息\n");
printf("4、删除学生信息\n");
printf("5、通过学号查询学生信息\n");
printf("6、通过姓名查询学生信息\n");
printf("7、通过专业查询学生信息\n");
printf("0、退出系统\n");
printf("请输入选项:");
scanf("%d", &choice);
switch (choice) {
case 1:
printAll(students, n);
break;
case 2:
addStudent(students, &n);
break;
case 3:
modifyStudent(students, n);
break;
case 4:
deleteStudent(students, &n);
break;
case 5:
printf("请输入要查询的学生的学号:");
int id;
scanf("%d", &id);
int index = searchById(students, n, id);
if (index == -1) {
printf("未找到该学生!\n");
} else {
printStudent(students[index]);
}
break;
case 6:
printf("请输入要查询的学生的姓名:");
char name[20];
scanf("%s", name);
index = searchByName(students, n, name);
if (index == -1) {
printf("未找到该学生!\n");
} else {
printStudent(students[index]);
}
break;
case 7:
printf("请输入要查询的学生的专业:");
char major[20];
scanf("%s", major);
index = searchByMajor(students, n, major);
if (index == -1) {
printf("未找到该学生!\n");
} else {
printStudent(students[index]);
}
break;
case 0:
printf("谢谢使用!\n");
break;
default:
printf("输入有误,请重新输入!\n");
break;
}
} while (choice != 0);
return 0;
}
```
需要注意的是,该程序仅提供了基本的增删改查功能,您可以根据自己的需要进行扩展和改进。同时,该程序的数据是存储在内存中的,如果需要长期储存数据,可以考虑将数据储存在文件中。
阅读全文