班级通讯录----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;
}
  • 9
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
将全班同学的通讯信息存入一个单链表。元素中的通讯信息包括每一位同学的:学号、姓名、性别、宿舍、联系电话等。要求能够利用姓名和序号进行有关查找、插入、删除、更新等操作。 (1)以单链表作为存储班级通讯录的存储结构,首先需要定义一个单链表数据结构,其中每个元素是一条同学通讯信息,包括学号、姓名、性别、宿舍、联系电话等字段。 (2)将本班的通讯信息输入文本文件“通讯录.txt”中,需要实现文件读写功能。当程序启动时,需要将文件中的信息读入单链表中,当程序结束时,需要将内存中的通讯录单链表中的信息重新写入文件。 (3)需要实现向单链表中追加一条通讯录记录的功能,即单链表的插入功能。通过提示信息,让用户将一条通讯录记录的各个字段信息输入内存,构成一个单链表元素,然后将其作为一个整体插入单链表最后一条记录之后,该功能在读取文件信息,创建单链表是也需要用到。 (4)需要实现查询功能,包括通过姓名查询:给定一个姓名,返回其通讯信息和在表中的位置;通过序号查询:给定一个姓名,返回其通讯信息和在表中的位置。 (5)需要实现在给定位置增加一条记录的功能,该位置可以直接定,也可以通过查询得到,比如先查到姓名为“XXX”的学生的通讯信息在表中的位置,然后在该记录的后面插入一条新的记录。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值