📄 linklist.cpp
字号:
#include"LinkList.h"
void Logon(LinkList L)
{
char name[20];
ElemType p;
int i=1;
puts(" \n\t=========================================================\n");
puts(" 〓〓〓 通讯录管理系统 〓〓〓\n ");
puts(" ※ Copyright ☆ XieGang ※ \n ");
puts(" \t=========================================================\n");
puts(" 〓〓〓 通讯录登录界面 〓〓〓\n");
puts(" \t=========================================================\n");
printf(" 用户名(测试用户:admin):");
scanf("%s",name);
fflush(stdin);
printf("\n正在登录...\n");
Load(L);
while(!Search(L,name,p)&&i<=3)
{
printf("\n用户名不存在!请重新输入:");
scanf("%s",name);
fflush(stdin);
i++;
}
if(i>3)
{
printf("\n输入次数过限!系统将退出 ...");
getchar();
exit(1);
}
else
{
printf(" 登录成功!");
printf("\n欢迎你的登录!\n\n你的信息如下:\n",p.name);
puts("=========================");
printf("姓 名 :%s\n",p.name);
printf("\n街 道 :%s\n",p.street);
printf("\n城 市 :%s\n",p.city);
printf("\n邮 编 :%s\n",p.eip);
printf("\n国 家 :%s\n",p.state);
puts("=========================");
printf("\n按 Enter 继续....");
getchar();
}
}
int Load(LinkList &L)
{
LinkList p;
char ch;
L=(LinkList)malloc(LEN);
L->next=NULL;
L->length=0;
FILE *fp;
if((fp=fopen("通讯簿.txt","r"))==NULL)
{
printf("文件打开失败!");
exit(1);
}
ch=fgetc(fp);
while(ch!=10)
{
ch=fgetc(fp);
}
while(!feof(fp))
{
p=(LinkList)malloc(LEN);
fgetc(fp);
fscanf(fp,"%s",p->data.name);
fscanf(fp,"%s",p->data.street);
fscanf(fp,"%s",p->data.city);
fscanf(fp,"%s",p->data.eip);
fscanf(fp,"%s",p->data.state);
p->next=L->next;L->next=p;
L->length++;
}
fclose(fp);
/////////////////////////////////
return OK;
}
//----------------------------------基础操作------------------//////
void Init(LinkList &L,int n){
// LinkList p;
L=(LinkList)malloc(LEN);
L->next=NULL;
L->length=0;
/*
p=(LinkList)malloc(LEN);
p->data.id=1;
printf("请依次输入姓名:");
scanf("%s",p->data.name);
printf("请依次输入街道:");
scanf("%s",p->data.street);
printf("请依次输入城市:");
scanf("%s",p->data.city);
printf("请依次输入邮编:");
scanf("%s",p->data.eip);
printf("请依次输入国家:");
scanf("%s",p->data.state);
p->next=L->next;
L->next=p;
L->length=1;
strcpy(&p->data.name[20],"谢刚");
strcpy(&p->data.street[30],"南京信息工程大学");
strcpy(&p->data.city[20],"南京\0");
strcpy(&p->data.eip[10],"210044");
strcpy(&p->data.state[20], "中华人民共和国\0");
p->next=L->next;L->next=p;
L->length++;*/
//ShowList(L);//////////////////
// Save(p);
}
int Enter(LinkList &L,int i){
LinkList p,s;
int j=0;
s=L;
while(s&&j<i-1)
{
s=s->next;
++j;
}
if(!s||j>i-1)
{
printf("该用户不存在!\n");
exit(1);
}
printf("\n请输入用户信息:\n");
p=(LinkList)malloc(LEN);
puts("=========================");
printf("\n请输入用户姓名:");
scanf("%s",&p->data.name);
printf("\n请输入所在街道:");
scanf("%s",&p->data.street);
printf("\n请输入所在城市:");
scanf("%s",&p->data.city);
printf("\n请输入地区邮编:");
scanf("%s",&p->data.eip);
printf("\n请输入所在国家:");
scanf("%s",&p->data.state);
puts("=========================");
p->next=s->next;s->next=p;
L->length++;
// Save(L);
return OK;
}
int Delete(LinkList &L,int j){
LinkList p,q;
p=L;
int i=1;
while(i<j){
p=p->next;
++i;
}
if(!(p->next)||i>j) return ERROR;
q=p->next;
p->next=q->next;
free(q);
L->length--;
return OK;
}
int Search(LinkList L,char name[20],ElemType &e){
LinkList p;
int j=1;
p=L;
while(p)
{
if(!strcmp(p->data.name,name))
{
e=p->data;
return (j-1);
}
else
{
p=p->next;
++j;
}
}
return 0;
}
void showList(LinkList L){
LinkList p;
int i=1;
printf("\n所有的用户信息如下:\n");
p=L->next;
printf("\n ※ 通讯簿 ※\n");
printf("-----------------------------------------------------------------\n");
puts("编号 姓名 街道 城市 邮编 国家");
printf("-----------------------------------------------------------------\n");
while(p!=NULL)
{
printf(" %-2d ",i);
printf(" %-10s %-15s %-10s %-10s %-10s\n",p->data.name,p->data.street,p->data.city,p->data.eip,p->data.state);
p=p->next;
i++;
}
printf("-----------------------------------------------------------------\n");
}
void userSearch(LinkList L){
char name[20];
int i=1;
ElemType p;
printf("请输入查询的用户名:");
scanf("%s",name);
fflush(stdin);
Load(L);
while(!Search(L,name,p)&&i<=3)
{
printf("\n该用户不存在!请重新输入:");
scanf("%s",name);
fflush(stdin);
i++;
}
if(i>3)
{
printf("\n查询次数过限!系统将退出 ...");
getchar();
exit(1);
}
else
{
printf("\n 用户信息如下:\n",p.name);
puts("=========================");
printf(" 姓 名 :%s\n",p.name);
printf("\n 街 道 :%s\n",p.street);
printf("\n 城 市 :%s\n",p.city);
printf("\n 邮 编 :%s\n",p.eip);
printf("\n 国 家 :%s\n",p.state);
puts("=========================");
}
}
int Save(LinkList L)
{
LinkList p;
FILE *fp;
p=L->next;
if((fp=fopen("通讯簿.txt","w"))==NULL)
{
printf("文件打开失败!\n");
exit(1);
}
fprintf(fp," 姓名 街道 城市 邮编 国家");
while(p!=NULL)
{
fprintf(fp,"\n%10s%15s%10s%10s%10s",p->data.name,p->data.street,p->data.city,p->data.eip,p->data.state);
p=p->next;
}
fclose(fp);
printf("\n文件通讯簿.txt保存成功!\n");
fflush(stdin);
return 0;
}
int userInsert(LinkList &L)
{
int i;
Load(L);
showList(L);
printf("\n请选择插入点编号:");
scanf("%d",&i);
fflush(stdin);
if(Enter(L,i))
{
printf("\n用户插入成功!\n");
showList(L);
fflush(stdin);
printf("\n是否保存文件?(Y/N): ");
char ch=getchar();
if(ch=='Y'||ch=='y')
{
Save(L);
return OK;
}
else
exit(0);
}
else
{
printf("\n用户插入失败!\n");
exit(0);
return ERROR;
}
}
int userDelete(LinkList &L)
{
int i;
Load(L);
showList(L);
printf("\n请选择要删除用户的编号:");
scanf("%d",&i);
fflush(stdin);
if(Delete(L,i))
{
printf("\n用户删除成功!\n");
showList(L);
printf("\n是否保存文件?(Y/N): ");
char ch=getchar();
if(ch=='Y'||ch=='y')
{
Save(L);
return OK;
}
else
exit(0);
}
else
{
printf("用户删除失败!\n");
exit(0);
return ERROR;
}
}
void userShow(LinkList &L){
Load(L);
showList(L);
}
int Menu(){
int choice;
puts(" \n\t=========================================================\n");
puts(" 〓〓〓 通讯录管理系统 〓〓〓\n ");
puts(" ※ Copyright ☆ XieGang ※ \n ");
puts(" \t=========================================================\n");
printf(" \t\t\t0-------------本系统信息\n\n");
printf(" \t\t\t1-------------所有联系人\n\n");
printf(" \t\t\t2-------------查找联系人\n\n");
printf(" \t\t\t3-------------添加联系人\n\n");
printf(" \t\t\t4-------------删除联系人\n\n");
printf(" \t\t\t5-------------退出本系统\n\n");
puts(" \t==========================================================\n");
printf("\t\t\t\t请选择: ");
scanf("%d",&choice);
fflush(stdin);
return choice;
}
void SystemInfo(){
FILE *fp;
if(!(fp=fopen("系统信息.txt","r")))
{
puts("说明文件丢失!");
return ;
}
puts("\n\n\n\n");
puts("--------------------------------------------------------------------------------");
puts(" 〓〓〓 系统信息 〓〓〓\n ");
puts("--------------------------------------------------------------------------------");
while(!feof(fp))
putchar(fgetc(fp));
putchar(10);
puts("--------------------------------------------------------------------------------\n\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -