班级通讯录----C语言课设

班级通讯录要求:
学生信息:姓名,电话号码,住址
实现功能:添加,修改,查询和删除

在这里插入图片描述

首先定义一个结构体,用来存放学生数据:

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;
}

猜你喜欢

转载自blog.csdn.net/weixin_49324123/article/details/114382667