电话薄管理系统学生时代小作品源码(C语言版)
/*****************************************************************************/
/*
电话薄管理系统
姓名:danyuan 学校:湖南理工学院信息学院 专业: 信息工程
*/
/*****************************************************************************/
/*电话簿管理程序,具有加入、删除、显示和查询电话号码的功能
要求:1). 除有加入、删除、显示和查询功能外,还允许修改用户姓名、电话。
2). 具有缺省查询方式,即查询时只输入姓名的首字母,所有符合这一条件的电话资料均在屏幕上显示出来
*/
#include <stdio.h>
#include<stdlib.h>
typedef struct tel{
char name[20];
char phone_number1[20]; //家庭电话
char phone_number2[20];//手机电话
int flage; //设置标志量
struct tel *next;
}Tel;
typedef struct node {
Tel *head;
}Vnode;
void init(Vnode *V)
{
//V=(Vnode*)malloc(sizeof(Vnode));
V->head=NULL;
}
void addperson(Vnode *V)
{
Tel *p=(Tel*)malloc(sizeof(Tel));
p->next=V->head;
V->head=p;
printf("请输入该联系人的姓名: ");
scanf("%s",p->name);
printf("请输入该联系人的手机电话: ");
scanf("%s",p->phone_number2);
printf("如果想要输入家庭电话请输入1,否则输入0:");
int a;
scanf("%d",&a);
if(a==1)
{
printf("请输入该联系人的家庭电话: ");
scanf("%s",p->phone_number1);
p->flage=1;
}
else
p->flage=0;
}
int junge(char*a,char*b) //判断姓名是否一致(按名字查找)
{
char *p=a,*q=b;
while(*p!='\0')
{
if(*p==*q)
{
p++;
q++;
continue;
}
else
break;
}
if(*p=='\0'&&*q=='\0')
return 1;
else
return 0;
}
void delet_person(Vnode *V)
{
Tel *p=V->head,*t;
int a;
char s[20];
printf("请输入要删除的联系人名字:");
scanf("%s",s);
if(p)
{
if(!p->next)
{
if(junge(p->name,s))
{
printf("找到该人,确认删除该人请输入1,否则按0:\n");
scanf("%d",&a);
if(a==1)
{
V->head=NULL;
printf("已删除%s的信息\n",p->name);
free(p);
}
}
}
else
while(p)
{
if(junge((p->next)->name,s))
{
t=p->next;
printf("找到该人,确认删除该人请输入1,否则按0\n");
scanf("%d",&a);
if(a==1)
{
printf("已删除%s的信息\n",t->name);
p->next=p->next->next;
free(t);
}
break;
}
p=p->next;
}
}
else
printf("你的电话薄里还没有存储任何联系人!\n");
}
void show_one_person(Vnode *V)
{
Tel *p=V->head;
char s[20];
printf("请输入要查找的联系人名字:");
scanf("%s",s);
if(p)
{
while(p)
{
if(junge(p->name,s))
{
printf("\t\t找到该人!\t\t\n");
if(p->flage==0)
printf("\t姓名:%s\t手机号码:%s\t家庭电话:无\n",p->name,p->phone_number2);
else
printf("\t姓名:%s\t手机号码:%s\t家庭电话:%s\n",p->name,p->phone_number2,p->phone_number1);
break;
}
p=p->next;
}
if(!p)
printf("没有找到该联系人!\n");
}
else
printf("你的电话薄里还没有存储任何联系人!\n");
}
void show_all(Vnode *V)
{
printf("********************************************************************\n");
Tel *p=V->head;
while(p)
{
if(p->flage==0)
printf("\t姓名:%s\t手机号码:%s\t家庭电话:无\n",p->name,p->phone_number2);
else
printf("\t姓名:%s\t手机号码:%s\t家庭电话:%s\n",p->name,p->phone_number2,p->phone_number1);
p=p->next;
}
printf("********************************************************************\n");
}
void change(Vnode *V)
{
Tel *p=V->head;
int a;
char s[20];
printf("请输入要更改的联系人名字:");
scanf("%s",s);
while(p)
{
if(junge(p->name,s))
{
printf("更改姓名请输入1,更改手机号码请输入2,更改家庭电话请输入3!\n");
scanf("%d",&a);
if(a==1)
{
printf("请输入姓名:");
scanf("%s",p->name);
}
else if(a==2)
{
printf("请输入手机号码:");
scanf("%s",p->phone_number2);
}
else if(a==3)
{
printf("请输入家庭电话:");
scanf("%s",p->phone_number1);
}
break;
}
p=p->next;
}
if(!p)
printf("没有找到该联系人!\n");
}
int junge2(char*a,char*b) //判断姓是否一致(按姓查找)
{
char *p=a,*q=b;
while(*p!='\0')
{
if(*p==*q)
{
p++;
q++;
continue;
}
else
break;
}
if(*p=='\0')
return 1;
else
return 0;
}
void in_clear_search(Vnode *V)
{
char a[20];
Tel *p=V->head;
printf("请输入模糊查找的第一个字:");
scanf("%s",a);
while(p)
{
if(junge2(a,p->name))
{
if(p->flage==0)
printf("\t姓名:%s\t手机号码:%s\t家庭电话:无\n",p->name,p->phone_number2);
else
printf("\t姓名:%s\t手机号码:%s\t家庭电话:%s\n",p->name,p->phone_number2,p->phone_number1);
}
p=p->next;
}
}
void main()
{
// FILE *sp;
// sp=freopen("in1.txt","r",stdin);
Vnode V;
int Operate='$';
init(&V);
while(1)
{
printf("\t\t请输入指令\t\t\n\t\t1.添加联系人\t\t\n\t\t2.删除联系人\t\t\n\t\t3.查找并显示一个联系人\t\t\n");
printf("\t\t4.显示所有联系人\t\t\n\t\t5.更改联系人的信息\t\t\n\t\t6.首字母模糊查找联系人信息\t\t\n\t\t0.退出系统\n");
scanf("%d",&Operate);
switch(Operate)
{
case 1: addperson(&V); break;
case 2: delet_person(&V); break;
case 3: show_one_person(&V); break;
case 4: show_all(&V); break;
case 5: change(&V); break;
case 6: in_clear_search(&V); break;
default:;
}
if(Operate==0)
break;
}
//fclose(sp);
}
/**************************************************************2013年6月23日作****************************************************************************/