简单个人电话号码查询系统汇编

发布时间:2018-12-02 04:41:28   来源:文档文库   
字号:

湖南工业大学

计算机与通信学院 学院(系、部) 2013 ~ 2014 学年第 学期

课程名称 数据结构 指导教师 朱文球 职称 副院长

学生姓名 洪智全 专业班级 计算机科学与技术1201 学号 12408100103

简单个人电话号码查询系统

B 起止日期 2013 6 20 日~ 2013 6 27


数据结构课程设计

设计说明书

课程设计时间: 2013.6.24-2013.6.27

一课题任务

人们在日常生活中经常要查找某个人或某个单位的电话号码,本实验将实现一个简单的个人电话号码查询系统,根据用户输入的信息(例如姓名等)进行快速查询。

二、设计要求

(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

#include

#include

#include

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;

}

}

本文来源:https://www.2haoxitong.net/k/doc/609d4d4759fb770bf78a6529647d27284a733766.html

《简单个人电话号码查询系统汇编.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式