注意
本程序由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