简单个人电话号码查询系统汇编
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
湖南工业大学
课程设计
资料袋
计算机与通信学院学院(系、部)2013 ~ 2014 学年第二学期
课程名称数据结构指导教师朱文球职称副院长
学生姓名洪智全专业班级计算机科学与技术1201 学号12408100103
题目简单个人电话号码查询系统
成绩 B 起止日期2013 年 6 月20 日~2013 年6 月27 日
目录清单
数据结构课程设计
设计说明书
简单个人电话号码查询系统
课程设计时间: 2013.6.24-2013.6.27
学生姓名洪智全
班级计算机科学与技术1201 学号12408100103
成绩 B
指导教师(签字)
一课题任务
人们在日常生活中经常要查找某个人或某个单位的电话号码,本实验将实现一个简单的个人电话号码查询系统,根据用户输入的信息(例如姓名等)进行快速查询。
二、设计要求
(1)在外存上,用文件保存电话号码信息;
(2)在内存中,设计数据结构存储电话号码信息;
(3)提供查询功能:根据姓名实现快速查询;
(4)提供其他维护功能,例如插人、删除、修改等。
三、程序的节点设置
现假设链表节点仅含有一个数据域和一个指针域。
数据域是为了描述通讯者的相关信息,定义通讯者的节点类型:
typedef struct node
{
char name[20];//客户名字
long int tel;//电话号码、
struct node *next;
}node,*lnode;
四、程序的功能设计
创建:创建通讯录文件
插入:插入通讯录记录
输出:显示通讯录记录
删除:删除通讯录记录
查找:查询通讯录记录
修改:修改通讯录记录
保存:将信息保存到文件中
五、程序的数据设计
模块一:头文件,变量定义,函数的声明对系统所使用的变量进行定义,对函数进行声明
模块二:结构体的建立,定义客户的姓名,电话号码。
模块三:个人电话号码查询系统使用菜单声明函数void welcome(),对整个系统进行声明
模块四:用户信息的输入用lnode
模块五:显示学生信息,用void show()控制显示用户的信息
模块六:用户信息的查找用void search()查找函数,通过输入姓名查找电话号码。
模块七:插入用户信息,通过void insert()为插入函数,每次插入都从最后面插入。
模块八:删除用户信息通过void delete()实现用户信息的删除,
模块九:保存用户信息到外存,用void save实现用户信息的存储。
模块十:修改用户信息,用void revise()实现对用户信息进行修改。
模块十一:结束输入模块,exit(0)结束输入。
六、程序的函数设计
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<process.h>
typedef struct node
{
char name[20];
long int tel;
struct node *next;
}node,*lnode;
node *head=NULL;
int lengh;
lnode enter() //输入客户信息
{
node *p1,*p2;
int n=0;
long int x;
char y[20];
lengh=0;
int i=0;
do
{
if(head==NULL)
{
p1=(node*)malloc(sizeof(node));
head=p1;
}
printf("\t 请输入姓名");
scanf("%s",y);
printf("\t 请输入电话号码");
scanf("%ld",&x);
p2=(node*)malloc(sizeof(node));
p2->tel=x;
strcpy(p2->name,y);
p1->next=p2;
p2->next=NULL;
p1=p1->next;
lengh++;
n++;
printf("有%d条客户信息\n",lengh);
printf("\n\t继续输入请按,结束输入请按返回主界面:");
scanf("%d",&i);
system("cls");
}while(i==1);
return head;
}
void show()
{
node *p=head->next;
printf("客户信息如下:\n");
while(p!=NULL)
{
printf("\n\t姓名\t\t电话号码:\n");
printf("\t%s\t\t%d\n\n",p->name,p->tel);
p=p->next;
}
return;
}
void search()
{
char ma[20];
node *p=head->next;
printf("\t请输入要查找的客户名字:\n");
scanf("%s",ma);
while(p!=NULL)
{
if(!(strcmp(p->name,ma)))
{
printf("客户%s的号码如下:\n",ma);
printf("\t%ld\n",p->tel);
return;
}
p=p->next;
}
if(p==NULL)
{
printf("无此客户号码:\n");
return;
}
}
void insert()
{
node *p,*q;
p=head;
q=(node*)malloc(sizeof(node));
printf("\t\n请输入要插入客户的姓名\n");
scanf("%s",q->name);
printf("\t\n请输入客户号码\n");
scanf("%ld",&q->tel);
while(p!=NULL)
{
if(q->tel==p->tel)
{
if(q->name==p->name)
{
printf("\t\n该用户已存在,不需要插入\n");
}
return;
}
p=p->next;
}
p=head;
p=p->next;
q->next=p->next;
p->next=q;
lengh++;
printf("\t\n插入成功\n");
return;
}
void Delete()
{
char n[20];
node *p,*q;
q=head,p=head->next;
printf("请输入要删除的客户姓名:");
scanf("%s",n);
while(p!=NULL)
{
if(!(strcmp(p->name,n)))
{
q->next=p->next;
free(p);
lengh--;
printf("\n\t删除成功\n");
return;
}
p=p->next;
q=q->next;
}
if(p==NULL)
{
printf("找不到该客户信息\n");
return;
}
}
void revise()
{
char ma[20];
node *p,*q;
int mun;
p=head,q=head->next;
printf("\n\t请输入需要修改的客户的名字:");
scanf("%s",ma);
while(q!=NULL)
{
if(!(strcmp(q->name,ma)))
{
printf("\n\t请输入需要修改客户的电话号码:");
scanf("%d",&mun);
q->tel=mun;
return;
}
p=p->next;
q=q->next;
}
if(q==NULL)
{
printf("\t找不到该客户信息\n");
return;
}
}
void save() //保存
{
FILE *p;
if(lengh==0)
{
printf("没有客户信息可保存\n");
return;
}
p=fopen("a.txt","w");//只写方式打开a.txt
printf("\n存文件。
\n");
fwrite(head,sizeof(node)*lengh,1,p);//写入文件
fclose(p);
printf("\n%d记录已经存入文件,请继续操作\n",lengh);
}
void welcome()
{
printf("\t\t\t---------------------------\n");
printf("\t\t\t\t请输入选择|\n");
printf("\t\t\t0|\t结束输入信息\t|\n");
printf("\t\t\t1|\t输入客户信息\t|\n");
printf("\t\t\t2|\t显示客户信息\t|\n");
printf("\t\t\t3|\t查找客户信息\t|\n");
printf("\t\t\t4|\t插入客户信息\t|\n");
printf("\t\t\t5|\t删除客户信息\t|\n");
printf("\t\t\t6|\t保存客户信息\t|\n");
printf("\t\t\t7|\t修改客户信息\t|\n");
printf("\t\t\t---------------------------\n"); }
int main()
{
lnode p=NULL;
int a;//输入选择
char str[10];//输入字母
welcome();
for( ; ; )
{
printf("\t\n\t您的选择是:");
scanf("%d",&a);
system("cls");
if(a<0||a>7)
{
printf("输入错误");
return 0;
}
switch(a)
{
case 0:exit(0);
case 1:
enter();
system("cls");
welcome();break;
case 2:
if(head)
{
show();//显示。
printf("\n\n\t按任意字母返回主界面");
scanf("%s",&str);
system("cls");
welcome();
}
else
{
system("cls");
printf("\n\t没有客户信息\n\n");
printf("\n\n\t按任意字母返回主界面\n");
scanf("%s",&str);
system("cls");
welcome();
}
break;
case 3:
if(head)
{
search();//查找
printf("\n\n\t按任意字母返回主界面\n");
scanf("%s",&str);
system("cls");
welcome();
}
else
{
printf("\n无客户信息\n");
printf("\n\n\t按任意字母返回主界面");
scanf("%s",&str);
system("cls");
welcome();
}break;
case 4:
if(head)
{
insert();//插入。
printf("\n\n\t按任意字母返回主界面");
scanf("%s",&str);
system("cls");
welcome();
}
else
{
system("cls");
printf("\n\t无客户信息,请到选项输入客户信息。
\n");
printf("\n\n\t按任意字母返回主界面\n");
scanf("%s",&str);
system("cls");
welcome();
}
break;
case 5:
if(head)
{
Delete();//删除
printf("\n\n\t按任意字母返回主界面\n");
scanf("%s",&str);
system("cls");
welcome();
}
else
{
printf("无客户信息");
printf("\n\n\t按任意字母返回主界面");
scanf("%s",&str);
system("cls");
welcome();
}break;
case 6:
save();//保存
printf("\n\n\t按任意字母返回主界面");
scanf("%s",&str);
system("cls");
welcome();
break;
case 7:
if(head)
{
revise();//修改
printf("\n\n\t按任意字母返回主界面");
scanf("%s",&str);
system("cls");
welcome();
}
else
{
printf("无客户信息");
printf("\n\n\t按任意字母返回主界面");
scanf("%s",&str);
system("cls");
welcome();
}
break;
}
}。