仔细阅读下列题目,用c语言编写一段代码满足要求:简单的同学通讯录程序设计 [问题描述] 具有数据插入、修改、删除、显示、查询和统计功能的电话簿管理程序。 [程序设计功能及要求] ⑴ 人数不定,。 ⑵ 记录每位同学的学号、姓名、性别、工作单位、电话号码和E-mail地址建立单独的条目,存入数据文件。 ⑶ 可对记录中的姓名和电话号码等进行修改。 ⑷ 可增加或删除记录 ⑸ 可显示所有保存的记录 ⑹ 加入统计功能,可以统计男女同学或总人数。 ⑺ 加入查询功能,通过姓名、学号或电话号码查询到同学的条目。 ⑻ 在开始画面加入简单的菜单便于选择功能。 ⑼ 储存数据格式 学号 姓名 性别 工作单位 电话号码 E-mail 1 李四 …. …. …. 本程序建议采用结构体类型实现。
时间: 2024-04-04 17:31:39 浏览: 160
好的,以下是满足要求的C语言代码,注释中有详细的解释:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义学生结构体
typedef struct {
int id; // 学号
char name[20]; // 姓名
char sex[10]; // 性别
char work[50]; // 工作单位
char phone[20]; // 电话号码
char email[40]; // E-mail
} Student;
// 全局变量,用来存储所有的学生信息
Student students[100];
int count = 0; // 当前学生数量
// 函数声明
void showMenu();
void insert();
void update();
void delete();
void displayAll();
void countAll();
void search();
int main() {
// 主程序循环,直到退出
while (1) {
showMenu(); // 显示菜单
int choice;
printf("请输入选项:");
scanf("%d", &choice);
switch (choice) {
case 1:
insert(); // 插入学生信息
break;
case 2:
update(); // 修改学生信息
break;
case 3:
delete(); // 删除学生信息
break;
case 4:
displayAll(); // 显示所有学生信息
break;
case 5:
countAll(); // 统计学生数量
break;
case 6:
search(); // 查询学生信息
break;
case 7:
printf("感谢使用,再见!\n");
return 0; // 退出程序
default:
printf("错误的选项,请重新输入!\n");
break;
}
}
}
void showMenu() {
printf("欢迎使用同学通讯录程序!\n");
printf("1. 插入学生信息\n");
printf("2. 修改学生信息\n");
printf("3. 删除学生信息\n");
printf("4. 显示所有学生信息\n");
printf("5. 统计学生数量\n");
printf("6. 查询学生信息\n");
printf("7. 退出程序\n");
}
void insert() {
printf("请输入学生学号:");
scanf("%d", &students[count].id);
printf("请输入学生姓名:");
scanf("%s", students[count].name);
printf("请输入学生性别:");
scanf("%s", students[count].sex);
printf("请输入学生工作单位:");
scanf("%s", students[count].work);
printf("请输入学生电话号码:");
scanf("%s", students[count].phone);
printf("请输入学生E-mail:");
scanf("%s", students[count].email);
count++; // 学生数量加1
printf("学生信息插入成功!\n");
}
void update() {
int id;
printf("请输入要修改的学生学号:");
scanf("%d", &id);
// 查找该学号对应的学生信息
int i;
for (i = 0; i < count; i++) {
if (students[i].id == id) {
printf("请输入学生姓名(原姓名:%s):", students[i].name);
scanf("%s", students[i].name);
printf("请输入学生性别(原性别:%s):", students[i].sex);
scanf("%s", students[i].sex);
printf("请输入学生工作单位(原单位:%s):", students[i].work);
scanf("%s", students[i].work);
printf("请输入学生电话号码(原号码:%s):", students[i].phone);
scanf("%s", students[i].phone);
printf("请输入学生E-mail(原E-mail:%s):", students[i].email);
scanf("%s", students[i].email);
printf("学生信息修改成功!\n");
return;
}
}
printf("未找到该学生信息!\n");
}
void delete() {
int id;
printf("请输入要删除的学生学号:");
scanf("%d", &id);
// 查找该学号对应的学生信息
int i;
for (i = 0; i < count; i++) {
if (students[i].id == id) {
// 将后面的学生信息前移,相当于删除该学生信息
int j;
for (j = i; j < count - 1; j++) {
students[j] = students[j + 1];
}
count--; // 学生数量减1
printf("学生信息删除成功!\n");
return;
}
}
printf("未找到该学生信息!\n");
}
void displayAll() {
printf("学号\t姓名\t性别\t工作单位\t电话号码\tE-mail\n");
int i;
for (i = 0; i < count; i++) {
printf("%d\t%s\t%s\t%s\t%s\t%s\n", students[i].id, students[i].name, students[i].sex, students[i].work, students[i].phone, students[i].email);
}
}
void countAll() {
int male = 0, female = 0;
int i;
for (i = 0; i < count; i++) {
if (strcmp(students[i].sex, "男") == 0) {
male++;
} else {
female++;
}
}
printf("总共有%d个学生,其中男生%d个,女生%d个。\n", count, male, female);
}
void search() {
printf("请输入要查询的学生信息(姓名/学号/电话号码):");
char keyword[20];
scanf("%s", keyword);
int i;
for (i = 0; i < count; i++) {
if (strcmp(students[i].name, keyword) == 0 || students[i].id == atoi(keyword) || strcmp(students[i].phone, keyword) == 0) {
printf("学号\t姓名\t性别\t工作单位\t电话号码\tE-mail\n");
printf("%d\t%s\t%s\t%s\t%s\t%s\n", students[i].id, students[i].name, students[i].sex, students[i].work, students[i].phone, students[i].email);
return;
}
}
printf("未找到该学生信息!\n");
}
```
这是一个简单的同学通讯录程序,可以实现插入、修改、删除、显示、查询和统计功能。程序使用结构体类型存储学生信息,每个学生信息包括学号、姓名、性别、工作单位、电话号码和E-mail地址。可以通过菜单选择需要的功能。
阅读全文