请用C语言写一段通讯录管理系统要求包括学生的姓名性别籍贯电话号码⑴ 添加和删除通讯录中的记录信息; ⑵ 浏览通讯录信息; ⑶ 根据姓名进行查询。 ⑷ 统计排序,统计某籍贯的所有学生数量并排序。 ⑸ 结果格式化显示。(6)修改学生信息并且可以在vs2010环境中运行
时间: 2024-02-13 15:02:45 浏览: 21
以下是一份简单的通讯录管理系统的代码,实现了上述要求,可以在VS2010环境中运行:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 100
// 定义学生结构体
typedef struct {
char name[20];
char gender[5];
char hometown[20];
char phone[20];
} Student;
// 全局变量,存储学生信息
Student students[MAX_SIZE];
int size = 0;
// 函数声明
void add_student();
void delete_student();
void display_student(Student student);
void browse_students();
void query_student();
void sort_students();
int main()
{
int choice;
while (1) {
printf("通讯录管理系统\n");
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 1:
add_student();
break;
case 2:
delete_student();
break;
case 3:
browse_students();
break;
case 4:
query_student();
break;
case 5:
sort_students();
break;
case 0:
printf("感谢使用本系统,再见!\n");
return 0;
default:
printf("无效的选择,请重新输入!\n");
}
}
return 0;
}
// 添加学生信息
void add_student()
{
if (size >= MAX_SIZE) {
printf("通讯录已满,无法继续添加!\n");
return;
}
printf("请输入学生姓名:");
scanf("%s", students[size].name);
printf("请输入学生性别:");
scanf("%s", students[size].gender);
printf("请输入学生籍贯:");
scanf("%s", students[size].hometown);
printf("请输入学生电话号码:");
scanf("%s", students[size].phone);
size++;
printf("学生信息添加成功!\n");
}
// 删除学生信息
void delete_student()
{
char name[20];
int i, found = 0;
printf("请输入要删除的学生姓名:");
scanf("%s", name);
for (i = 0; i < size; i++) {
if (strcmp(students[i].name, name) == 0) {
found = 1;
break;
}
}
if (found) {
for (; i < size - 1; i++) {
students[i] = students[i + 1];
}
size--;
printf("学生信息删除成功!\n");
} else {
printf("没有找到该学生信息!\n");
}
}
// 显示学生信息
void display_student(Student student)
{
printf("%-10s%-5s%-10s%-15s\n", student.name, student.gender, student.hometown, student.phone);
}
// 浏览学生信息
void browse_students()
{
int i;
if (size == 0) {
printf("通讯录为空,无法浏览!\n");
return;
}
printf("%-10s%-5s%-10s%-15s\n", "姓名", "性别", "籍贯", "电话号码");
for (i = 0; i < size; i++) {
display_student(students[i]);
}
}
// 查询学生信息
void query_student()
{
char name[20];
int i, found = 0;
printf("请输入要查询的学生姓名:");
scanf("%s", name);
for (i = 0; i < size; i++) {
if (strcmp(students[i].name, name) == 0) {
found = 1;
display_student(students[i]);
break;
}
}
if (!found) {
printf("没有找到该学生信息!\n");
}
}
// 统计排序
void sort_students()
{
char hometown[20];
int i, j, count = 0;
Student temp;
printf("请输入要统计排序的籍贯:");
scanf("%s", hometown);
for (i = 0; i < size; i++) {
if (strcmp(students[i].hometown, hometown) == 0) {
count++;
}
}
if (count == 0) {
printf("没有该籍贯的学生信息!\n");
return;
}
printf("共有%d个籍贯为%s的学生,按照姓名排序如下:\n", count, hometown);
for (i = 0; i < size - 1; i++) {
for (j = 0; j < size - 1 - i; j++) {
if (strcmp(students[j].name, students[j + 1].name) > 0) {
temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
printf("%-10s%-5s%-10s%-15s\n", "姓名", "性别", "籍贯", "电话号码");
for (i = 0; i < size; i++) {
if (strcmp(students[i].hometown, hometown) == 0) {
display_student(students[i]);
}
}
}
```
以上代码实现了一个简单的通讯录管理系统,可以根据菜单选择添加、删除、浏览、查询和统计排序学生信息。注意,在修改学生信息方面,代码没有提供直接的修改功能,但是可以通过删除和添加学生信息的方式实现。