班级通讯录要求:
学生信息:姓名,电话号码,住址
实现功能:添加,修改,查询和删除
首先定义一个结构体,用来存放学生数据:
typedef struct s {
char name[12]; //存储姓名
char tel[12]; //存储电话号码
char addr[20]; //存储 地址
}student;
主函数:
首先定义一个存放学生的数据,打印有什么操作,再让用户输入,根据用户输入选择相应的函数进行操作
int main(){
student students[100];//用来存放数据
char old_student[20];//存放要查询学生的姓名
while (1) {
system("cls");
printf(" -----班级通讯录------\n");
printf(" 1.添加新同学信息\n");
printf(" 2.修改旧同学信息\n");
printf(" 3.查询同学信息\n");
printf(" 4.删除同学信息\n");
printf(" 5.查看所有信息\n");
printf(" 6.退出程序\n");
char rub[10]; //接受缓冲区的换行符
int choose;
printf("请选择操作:\n");
scanf("%d",&choose);
gets(rub);
switch (choose) {
case 1:
add_student(students);
printf("添加成功!\n");
break;
case 2:
printf("请输入要修改同学的姓名:");
gets(old_student);
re_student(students, old_student);
break;
case 3:
printf("请输入要查询同学的姓名:");
gets(old_student);
find_student(students, old_student);
break;
case 4:
printf("请输入要删除同学的姓名:");
gets(old_student);
find_student(students, old_student);
break;
case 5:
show(students);
break;
case 6:
exit(0);
default:
exit(0);
}
system("pause");
}
system("pause");
return 0;
}
1.添加新同学信息函数
bool add_student(student* students) {
printf("请输入姓名:");
gets(students[count].name);
printf("请输入电话:");
gets(students[count].tel);
printf("请输入地址:");
gets(students[count].addr);
count++;
return true;
}
2.修改旧同学信息:
先让用户输入要修改同学的信息,程序判断是否有该同学,有的话,就修改。
bool re_student(student* students, char* name1) {
int flag = 0;
int find;
for (find = 0;find < count;find++) {
if (!strcmp(name1, students[find].name)) {
flag = 1;
break;
}
}
if (flag == 1) {
printf("请输入修改后姓名:");
gets(students[find].name);
printf("请输入修改后电话:");
gets(students[find].tel);
printf("请输入修改后地址:");
gets(students[find].addr);
}else {
printf("没有找到要修改的同学!\n");
return false;
}
}
3.查询同学信息:
与2同理,先判断是否有,有的话输出该同学信息
bool find_student(student* students,char* name1){
int flag = 0;
int find;
for (find = 0;find < count;find++) {
if (!strcmp(name1, students[find].name)) {
flag = 1;
break;
}
}
if (flag == 1) {
printf("查询的同学信息:\n");
printf("同学的姓名:%s\n",students[find].name);
printf("同学的电话:%s\n",students[find].tel);
printf("同学的地址:%s\n",students[find].addr);
}else {
printf("没有找到要查询的同学!\n");
return false;
}
}
4.删除同学
先查找是否有该同学,之后如果有,将信息进行向前覆盖
bool del_student(student* students,char* name1){
int flag = 0;
int find;
for (find = 0;find < count;find++) {
if (!strcmp(name1, students[find].name)) {
flag = 1;
break;
}
}
if (flag == 1) {
for(int i = find;i<count-1;i++){
strcpy(students[i].name,students[i+1].name);
strcpy(students[i].tel,students[i+1].tel);
strcpy(students[i].addr,students[i+1].addr);
}
count--;
printf("删除成功!\n");
}else {
printf("没有找到要删除同学的信息!\n");
return false;
}
return true;
}
5.查询同学信息:
bool show(student* students){
printf("姓名\t\t电话\t\t地址\t\t\n");
for(int i=0;i<count;i++){
printf("%s\t\t",students[i].name);
printf("%s\t\t",students[i].tel);
printf("%s\t\t\n",students[i].addr);
}
return true;
}
全部代码:
//班级通讯录
//学生信息:姓名,电话号码,住址
//实现功能:添加,修改,查询和删除
#include<stdio.h>
#include<Windows.h>
#include<string.h>
#include<stdlib.h>
typedef struct s {
char name[12]; //存储姓名
char tel[12]; //存储电话号码
char addr[20]; //存储 地址
}student;
static int count = 0; //用来统计人数
bool add_student(student* students);//用来添加同学信息
bool re_student(student* students,char* name1);//用来修改同学信息
bool find_student(student* students,char* name1);//用来查看同学信息
bool del_student(student* students,char* name1);//用来删除同学信息
bool show(student* students);//显示所有信息
int main(){
student students[100];
char old_student[20];
while (1) {
system("cls");
printf(" -----班级通讯录------\n");
printf(" 1.添加新同学信息\n");
printf(" 2.修改旧同学信息\n");
printf(" 3.查询同学信息\n");
printf(" 4.删除同学信息\n");
printf(" 5.查看所有信息\n");
printf(" 6.退出程序\n");
char rub[10];
int choose;
printf("请选择操作:\n");
scanf("%d",&choose);
gets(rub);
switch (choose) {
case 1:
add_student(students);
printf("添加成功!\n");
break;
case 2:
printf("请输入要修改同学的姓名:");
gets(old_student);
re_student(students, old_student);
break;
case 3:
printf("请输入要查询同学的姓名:");
gets(old_student);
find_student(students, old_student);
break;
case 4:
printf("请输入要删除同学的姓名:");
gets(old_student);
find_student(students, old_student);
break;
case 5:
show(students);
break;
case 6:
exit(0);
default:
exit(0);
}
system("pause");
}
system("pause");
return 0;
}
bool add_student(student* students) {
printf("请输入姓名:");
gets(students[count].name);
printf("请输入电话:");
gets(students[count].tel);
printf("请输入地址:");
gets(students[count].addr);
count++;
return true;
}
bool re_student(student* students, char* name1) {
int flag = 0;
int find;
for (find = 0;find < count;find++) {
if (!strcmp(name1, students[find].name)) {
flag = 1;
break;
}
}
if (flag == 1) {
printf("请输入修改后姓名:");
gets(students[find].name);
printf("请输入修改后电话:");
gets(students[find].tel);
printf("请输入修改后地址:");
gets(students[find].addr);
}else {
printf("没有找到要修改的同学!\n");
return false;
}
}
bool find_student(student* students,char* name1){
int flag = 0;
int find;
for (find = 0;find < count;find++) {
if (!strcmp(name1, students[find].name)) {
flag = 1;
break;
}
}
if (flag == 1) {
printf("查询的同学信息:\n");
printf("同学的姓名:%s\n",students[find].name);
printf("同学的电话:%s\n",students[find].tel);
printf("同学的地址:%s\n",students[find].addr);
}else {
printf("没有找到要查询的同学!\n");
return false;
}
}
bool del_student(student* students,char* name1){
int flag = 0;
int find;
for (find = 0;find < count;find++) {
if (!strcmp(name1, students[find].name)) {
flag = 1;
break;
}
}
if (flag == 1) {
for(int i = find;i<count-1;i++){
strcpy(students[i].name,students[i+1].name);
strcpy(students[i].tel,students[i+1].tel);
strcpy(students[i].addr,students[i+1].addr);
}
count--;
printf("删除成功!\n");
}else {
printf("没有找到要删除同学的信息!\n");
return false;
}
return true;
}
bool show(student* students){
printf("姓名\t\t电话\t\t地址\t\t\n");
for(int i=0;i<count;i++){
printf("%s\t\t",students[i].name);
printf("%s\t\t",students[i].tel);
printf("%s\t\t\n",students[i].addr);
}
return true;
}