第一次写课设,在某些方面可能有些bug,望各位指正。
功能为增、删、查、改、预览;
目录:
____________________________________
| |
| 欢迎使用通讯录 |
| 添加基本信息 :1 |
| 删除名单记录 :2 |
| 查询基本信息 :3 |
| 修改基本信息 :4 |
| 全体联系人信息 :5 |
| 退出 :0 |
| 请选择功能: |
|__________________________________|
登录界面:
欢迎登陆通讯录
请输入登录密码
密码:123456
代码:
int login()
{
char key[20],ch;
int flag = 0;
printf("\t\t欢迎登陆通讯录\n\n");
printf("\t\t请输入登录密码\n\n");
printf("密码:");
scanf("%s",key);
printf("\n");
if(strcmp(key,"123456") == 0)
{
flag = 1;
ch = getchar();
printf("\t\t登陆成功\n\n");
system("cls");
ch = getchar();
return 1;
}
else
{
do
{
printf("\t\t密码错误,请重新输入\n\n");
printf("密码:");
scanf("%s",key);
printf("\n");
if(strcmp(key,"xuehao123_") == 0)
{
flag = 1;
ch = getchar();
printf("\t\t登陆成功\n\n");
system("cls");
ch = getchar();
}
}while(flag==0);
}
return 0;
}
总代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int sum=0;
void menu();
void add();
void deletion();
void inquire();
void modification();
void infromation();
void free(void *p);
typedef struct message
{
char name[20];
char num[20];
char city[10];
char postcode[20];
char serialnumber[20];
message *next;
}*mes;
mes head=(mes)malloc(sizeof(message));
void select()
{
char c;
scanf("%s",&c);
while(c<'0'||c>'5')
{
printf("\t无此功能,请重新选择:");
scanf("%s",&c);
}
system("cls");
switch(c)
{
case '1':printf("\n\t添加名单到通讯录中\n");
add();
break;
case '2':printf("\n\t删除通讯录中的名单\n");
deletion();
break;
case '3':printf("\n\t查询通讯录中的名单\n");
inquire();
break;
case '4':printf("\n\t修改通讯录中的信息\n");
modification();
break;
case '5':printf("\n\t全部联系人的信息\n");
infromation();
break;
case '0':printf("\n\t退出成功\n");
break;
}
}
int login()
{
char key[20],ch;
int flag = 0;
printf("\t\t欢迎登陆通讯录\n\n");
printf("\t\t请输入登录密码\n\n");
printf("密码:");
scanf("%s",key);
printf("\n");
if(strcmp(key,"123456") == 0)
{
flag = 1;
ch = getchar();
printf("\t\t登陆成功\n\n");
system("cls");
ch = getchar();
return 1;
}
else
{
do
{
printf("\t\t密码错误,请重新输入\n\n");
printf("密码:");
scanf("%s",key);
printf("\n");
if(strcmp(key,"xuehao123_") == 0)
{
flag = 1;
ch = getchar();
printf("\t\t登陆成功\n\n");
system("cls");
ch = getchar();
}
}while(flag==0);
}
return 0;
}
void menu()
{
system("cls");
printf("\t\t____________________________________\n");
printf("\t\t| |\n");
printf("\t\t| 欢迎使用通讯录 |\n");
printf("\t\t| 添加基本信息 :1 |\n");
printf("\t\t| 删除名单记录 :2 |\n");
printf("\t\t| 查询基本信息 :3 |\n");
printf("\t\t| 修改基本信息 :4 |\n");
printf("\t\t| 全体联系人信息 :5 |\n");
printf("\t\t| 退出 :0 |\n");
printf("\t\t| 请选择功能: |\n");
printf("\t\t|__________________________________|\n");
}
int cala(char *p) //控制位数
{
int i,n=0;
for(i=0;p[i]!='\0';i++)
{
n++;
}
return n;
}
void add()//添加联系人
{
int n;
mes p=head,q;
char flag='y';
while(flag!='n'&&flag!='N')
{
sum=sum+1;
q=(mes)malloc(sizeof(message));
p->next=q;
p=q;
printf("\n\t请输入:\n");
printf("\t学生编号:");
scanf("\t%s",q->serialnumber);
printf("\t姓名:");
scanf("\t%s",q->name);
printf("\t电话号码:");
scanf("\t%s",q->num);
do
{
n=0;
if(cala(q->num)!=11)
{
n=1;
printf("\t您输入的手机号码格式不存在,请重新输入:");
scanf("\t%s",q->num);
}
else
{
for(int t=0;t<11;t++)
{
if(q->num[t]<'0'||q->num[t]>'9'){
n=1;
printf("\t您输入的手机号码格式不合理,请重新输入:");
scanf("\t%s",q->num);
break;
}
}
}
}while(n);
printf("\t城市:");
scanf("\t%s",q->city);
printf("\t邮编号码:");
scanf("\t%s",q->postcode);
do
{
n=0;
if(cala(q->postcode)!=6)
{
n=1;
printf("\t您输入的邮编格式不存在,请重新输入:");
scanf("\t%s",q->postcode);
}
else
{
for(int t=0;t<6;t++)
{
if(q->postcode[t]<'0'||q->postcode[t]>'9'){
n=1;
printf("\t您输入的邮编格式不合理,请重新输入:");
scanf("\t%s",q->postcode);
break;
}
}
}
}while(n);
printf("\n\t是否继续添加?(Y/N)");
scanf("\t%c",&flag);
}
menu();select();
}
void deletion() //删除
{
char number[20];
char flag='y';
mes p=head,a,b;
p=head->next;
int i=1;
if(sum==0)
{
printf("\t该通讯录中暂无联系人\n");
}
else
{
printf("\t编号\t姓名\t电话\t\t城市\t\t邮编\n");
while(p)
{
printf("\t%s\t%s\t%s\t%s\t\t%s\n",p->serialnumber,p->name,p->num,p->city,p->postcode);
i=i+1;
if(i<=sum)
{
p=p->next;
}
else
{
p=NULL;
}
}
while(flag!='n'&&flag!='N')
{
p=head->next;
printf("\t请输入您要删除的联系人编号:");
scanf("\t%s",number);
while(p != NULL && strcmp(p->serialnumber,number) != 0)
{
if(i<=sum)
{
a=p;
p=p->next;
}
else
{
p=NULL;
}
}
if(!p)
{
printf("\t该联系人不存在!\n");
printf("\t是否继续删除?(Y/N)");
scanf("\t%c",&flag);
}
if(p)
{
sum=sum-1;
b=p->next;
if(p==head->next)
{head->next=b;}
else
{a->next=b;}
printf("\t该联系人已删除!\n");
free(p);
printf("\t是否继续删除?(Y/N)");
scanf("\t%c",&flag);
}
}
}
system("pause");
menu();select();
}
void menu1()
{
printf("\t\t************************************\n");
printf("\t\t* 欢迎使用查询系统 *\n");
printf("\t\t* 通过姓名查询:1 *\n");
printf("\t\t* 通过电话查询:2 *\n");
printf("\t\t* 请选择功能: *\n");
printf("\t\t************************************\n");
}
void inquire()//查询联系人
{
if(sum==0)
{
printf("\t通讯录中暂无联系人\n");
system("pause");
}
else
{
menu1();
int a,n;
mes p=head;
char flag='y';
scanf("%d",&a);
while(a<1||a>3)
{
printf("\t无此功能,请重新选择:");
scanf("%d",&a);
}
while(flag!='n'&&flag!='N'){
switch(a){
case 1:{
char nm[20];
p=head->next;
printf("请输入您要查询的联系人的姓名:");
scanf("%s",nm);
int i=1;
while(p!=NULL&&strcmp(p->name,nm)!=0){
i=i+1;
if(i<=sum)
{
p=p->next;
}
else
{
p=NULL;
}
}
if(!p)
{
printf("\n\t您要查询的联系人不存在!\n");
printf("\t是否继续查询?(Y/N)");
scanf("\t%c",&flag);
}
else
{
printf("\t编号:%s\n",p->serialnumber);
printf("\t姓名:%s\n",p->name);
printf("\t手机号码:%s\n",p->num);
printf("\t城市:%s\n",p->city);
printf("\t邮编:%s\n",p->postcode);
printf("\t是否继续查询?(Y/N)");
scanf("\t%c",&flag);
}
break;
}
case 2:
{
char nu[20];
p=head->next;
printf("请输入您要查询的联系人的电话:");
scanf("%s",nu);
int i=1;
while(p!=NULL&&strcmp(p->num,nu)!=0)
{
i=i+1;
if(i<=sum)
{
p=p->next;
}
else
{
p=NULL;
}
}
if(!p)
{
printf("\t您要查询的联系人不存在!\n");
printf("\t是否继续查询?(Y/N)");
scanf("\t%c",&flag);
}
else
{
printf("\t编号:%s\n",p->serialnumber);
printf("\t姓名:%s\n",p->name);
printf("\t号码:%s\n",p->num);
printf("\t城市:%s\n",p->city);
printf("\t邮编:%s\n",p->postcode);
printf("\t是否继续查询?(Y/N)");
scanf("\t%c",&flag);
}
break;
}
}
} system("cls");
} menu();select();
}
void menu2()
{
printf("\t\t************************************\n");
printf("\t\t* 欢迎使用修改系统 *\n");
printf("\t\t* 修改姓名:1 *\n");
printf("\t\t* 修改电话:2 *\n");
printf("\t\t* 修改城市:3 *\n");
printf("\t\t* 修改邮编:4 *\n");
printf("\t\t* 返回 :0 *\n");
printf("\t\t* 请选择功能: *\n");
printf("\t\t************************************\n");
}
void modification() //修改
{
if(sum==0)
{
printf("\t该通讯录暂无联系人\n");
system("pause");
}
else
{
menu2();
int n,a;
mes p=head,q;
char flag='y';
scanf("%d",&a);
while(a<0||a>4)
{
printf("\t无此功能,请重新选择:");
scanf("%d",&a);
}
switch(a)
{
case 1:
{
char nm[20];
p=head->next;
printf("请输入要修改的联系人姓名:");
scanf("%s",nm);
int i=1;
while(p != NULL&&strcmp(p->name,nm)!=0)
{
if(i<=sum)
{
i=i+1;
p=p->next;
}
else
{
p=NULL;
}
}
if(!p)
{
printf("\t您输入的联系人不存在\n");
system("pause");
}
else
{
printf("\t请输入修改后的姓名:");
scanf("\t%s",p->name);
printf("\t修改成功\n");
system("pause");
}
break;
}
case 2:
{
char nu[20];
printf("请输入要修改的联系人电话:");
scanf("%s",nu);
int i=1;
while(p != NULL&&strcmp(p->num,nu)!=0)
{
if(i<=sum)
{
i=i+1;
p=p->next;
}
else
{
p=NULL;
}
}
if(!p)
{
printf("\t您输入的联系人不存在\n");
system("pause");
}
else
{
printf("\t请输入修改后的电话:");
scanf("\t%s",p->num);
printf("\t修改成功\n");
system("pause");
}
break;
}
case 3:
{
char ci[10];
printf("请输入要修改的联系人城市:");
scanf("%s",ci);
int i=1;
while(p != NULL&&strcmp(p->city,ci)!=0)
{
if(i<=sum)
{
i=i+1;
p=p->next;
}
else
{
p=NULL;
}
}
if(!p)
{
printf("\t您输入的联系人不存在\n");
system("pause");
}
else
{
printf("\t请输入修改后的城市:");
scanf("\t%s",p->city);
printf("\t修改成功\n");
system("pause");
}
break;
}
case 4:
{
char post[20];
printf("请输入要修改的联系人邮编:");
scanf("%s",post);
int i=1;
while(p != NULL&&strcmp(p->postcode,post)!=0)
{
if(i<=sum)
{
i=i+1;
p=p->next;
}
else
{
p=NULL;
}
}
if(!p)
{
printf("\t您输入的联系人不存在\n");
system("pause");
}
else
{
printf("\t请输入修改后的邮编:");
scanf("\t%s",p->postcode);
printf("\t修改成功\n");
system("pause");
}
break;
}
case 0:
{
break;
}
}
}
menu();select();
}
void infromation()
{
mes p=head;
p=head->next;
int i=1;
if(sum==0){
printf("\t该通讯录中暂无联系人\n");
}
else{
printf("\t编号\t姓名\t电话\t\t城市\t\t邮编\n");
while(p){
printf("\t%s\t%s\t%s\t%s\t\t%s\n",p->serialnumber,p->name,p->num,p->city,p->postcode);
i=i+1;
if(i<=sum){
p=p->next;
}
else{
p=NULL;
}
}
}
system("pause");
menu();select();
}
int main()
{
login();
menu();
select();
return 0;
}