C语言基于单链表的班级通讯录(VS2019)

注意

本程序由VS2019编写,属于记录学习过程,仍有许多问题尚未解决。

文字描述

问题描述

将文件中的通讯信息存入一个单链表。元素中的通讯信息包括每一位同学的:学号、姓名、性别、宿舍、联系电话等。要求能够利用姓名和序号进行有关查找、插入、删除等操作。

基本要求

(1)将本班的通讯信息输入文本文件“XXX_info.txt”中,读取该文件,将其中的通讯录信息存入一个单链表中;

(2)给定一个姓名,返回其信息;

(3)给定一个序号,返回其信息;

(4)在最后一条记录后增加一条信息;

(5)将一条新的记录插入在第i条记录之前;

(6)将一条新的记录插入在姓名为“XXX”的学生记录之前;

(7)删除第i条记录;

(8)删除姓名为“XXX”的学生记录;

(9)退出程序时,将单链表中内容再写入文本文件“XXX.txt”中,然后销毁该线性表。

代码部分

头文件

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<malloc.h>
#define filepath "D:/Microsoft Visual Studio/Code/CCB.txt"//定义文件绝对地址(相对地址也可以)

typedef struct {
   
	char id[8];
	char name[20];
	char sex[5];
	char dorm[5];
	char phn[12];
}TelBook;
typedef struct LNode{
   
	TelBook data;
	struct LNode* next;
}LNode, *LinkList;

void main();//主程序
void Face1();//显示菜单
Status Traverse1(LinkList L);//展示链表
Status InputFile(LinkList L);//读取文件
Status OutputFile(LinkList L);//输出文件
Status LinkListInit(LinkList* L);//创建链表
Status DestroyList(LinkList* L);//销毁链表
Status KeySearch(LinkList L);//序号搜索
Status NameSearch(LinkList L);//姓名搜索
Status ListEmpty(LinkList L);//判断链表是否为空
Status AddInfo(LinkList* L);//顺序添加
Status NameInsert(LinkList* L);//姓名前插入
Status KeyInsert(LinkList* L);//序号前插入
Status KeyDelete(LinkList* L);//序号删除
Status NameDelete(LinkList* L);//姓名删除

主程序

#include"CCB.h"

//主程序
void main() {
   
	LinkList L;
	LinkListInit(&L);
	while (1) {
   
		system("cls");
		Face1();
		printf("请选择要使用的功能编号:");
		switch (Input()) {
   
			case 1: 
				system("cls");
				if (InputFile(L) == -1) {
   
					printf("读取失败!\n");
					system("pause");
					break;
				}
				printf("读取成功!\n");
				system("pause");
				break;
			case 2:
				system("cls");
				Traverse1(L);
				system("pause");
				break;
			case 3:
				system("cls");
				NameSearch(L);
				system("pause");
				break;
			case 4:
				system("cls");
				KeySearch(L);
				system("pause");
				break;
			case 5:
				system("cls");
				AddInfo(&L);
				system("pause");
				break;
			case 6:
				system("cls");
				KeyInsert(&L);
				system("pause");
				break;
			case 7:
				system("cls");
				Na
  • 12
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
将全班同学的通讯信息存入一个单链表。元素中的通讯信息包括每一位同学的:学号、姓名、性别、宿舍、联系电话等。要求能够利用姓名和序号进行有关查找、插入、删除、更新等操作。 (1)以单链表作为存储班级通讯录的存储结构,首先需要定义一个单链表数据结构,其中每个元素是一条同学通讯信息,包括学号、姓名、性别、宿舍、联系电话等字段。 (2)将本班的通讯信息输入文本文件“通讯录.txt”中,需要实现文件读写功能。当程序启动时,需要将文件中的信息读入单链表中,当程序结束时,需要将内存中的通讯录单链表中的信息重新写入文件。 (3)需要实现向单链表中追加一条通讯录记录的功能,即单链表的插入功能。通过提示信息,让用户将一条通讯录记录的各个字段信息输入内存,构成一个单链表元素,然后将其作为一个整体插入单链表最后一条记录之后,该功能在读取文件信息,创建单链表是也需要用到。 (4)需要实现查询功能,包括通过姓名查询:给定一个姓名,返回其通讯信息和在表中的位置;通过序号查询:给定一个姓名,返回其通讯信息和在表中的位置。 (5)需要实现在给定位置增加一条记录的功能,该位置可以直接设定,也可以通过查询得到,比如先查到姓名为“XXX”的学生的通讯信息在表中的位置,然后在该记录的后面插入一条新的记录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值