简易电话号码簿程序设计

合集下载

通讯录程序设计

通讯录程序设计

通讯录程序设计设计一个实用的小型通讯录程序,具有添加,查询和删除功能。

由姓名,籍贯,电话号码1,电话号码2,电子邮箱组成,姓名可以由字符和数字混合编码。

电话号码可由字符和数字组成。

实现功能:(1)系统以菜单方式工作(2)信息录入功能(3)信息浏览功能(4)信息查询功能(5)信息修改功能(6)系统退出功能//WREN编取材网路(适用于VC++)本题有细节上的缺陷,请自身予以修改。

#include <stdio.h>#include <conio.h>#include <string.h>#include <stdlib.h>#define PF printf#define SF scanfint n=0,i;struct address_book{char name[20];char place[20];long num1;long num2;char mail[40];}stud[200];void add(){char j;front1:system("cls");//清屏PF("\n请输入要添加的姓名:");SF("%s",stud[n].name);PF("\n请输入要添加的籍贯:");SF("%s",stud[n].place);PF("\n请输入要添加的电话号码一:");SF("%d",&stud[n].num1);PF("\n请输入要添加的电话号码二:");SF("%d",&stud[n].num2);PF("\n请输入要添加的电子邮箱:");SF("%s",stud[n].mail);getchar();n++;PF("是否继续(Y/N)?:");j=getchar();getchar();if(j=='y'||j=='Y') goto front1;//再次输入记录}void del(){int k=0,m,i;char j;front2:system("cls");//清屏PF("\n请输入要删除的联系人:");SF("%d",&m);getchar();for(i=0;i<n;i++)//查找记录if(strcmp(m,stud[i].name)==0){k=1;break;}if(k==1)//删除记录{for(k=i;k<n-1;k++)stud[k]=stud[k+1];n--;PF("已删除\n\n");}else{PF("找不到要删除的记录!\n");PF("按回车键返回:");getchar();}PF("是否继续(Y/N)?:");j=getchar();getchar();if(j=='y'||j=='Y') goto front2;getchar();}void arrange(){int k,i;struct address_book t;system("cls");//清屏PF("姓名籍贯电话号码一电话号码二电子邮箱\n");for(k=0;k<n-1;k++)for(i=0;i<n-k-1;i++)if(strcmp(stud[i].name,stud[i+1].name)<0){t=stud[i];stud[i]=stud[i+1];stud[i+1]=t;}for(i=0;i<=n-1;i++)PF("%-10s%-8s %-15ld %-15ld %-20s",stud[i].name,stud[i].place,stud[i].num1 ,stud[i].num2,stud[i].mail);PF("按回车键返回!");getchar();getchar();}void change(){int k=0;char j,m[20];front5:system("cls");//清屏PF("\n请输入要修改记录的姓名:");SF("%s",m);getchar();for(i=0;i<n;i++)//查找if(strcmp(m,stud[i].name)==0){k=1;break;}if(k==1){PF("\n");PF("\n请输入修改后的姓名:");SF("%s",stud[i].name);PF("\n请输入修改后的籍贯:");SF("%s",stud[i].place);PF("\n请输入修改后的电话号码一:");SF("%d",&stud[i].num1);PF("\n请输入修改后的电话号码二:");SF("%d",&stud[i].num2);PF("\n请输入修改后的电子邮箱:");SF("%s",stud[i].mail);PF("修改成功\n");getchar();}if(k==0){PF("找不到要修改的记录!\n");PF("按回车键返回:");getchar();}getchar();PF("是否继续(Y/N)?:");j=getchar();getchar();if(j=='y'||j=='Y') goto front5;}void find(){int k=0;char j,m[20];front3:system("cls");//清屏PF("\n请输入要修改记录的姓名:");SF("%s",m);getchar();for(i=0;i<n;i++)//查找if(strcmp(m,stud[i].name)==0){k=1;break;}if(k==1){PF("姓名籍贯电话号码一电话号码二电子邮箱\n");PF("%-10s%-8s %-15ld %-15ld %-20s",stud[i].name,stud[i].place,stud[i].num1 ,stud[i].num2,stud[i].mail);}else{PF("找不到该联系人!请重新输入!按回车返回!");getchar();goto front3;}PF("是否继续(Y/N)?:");j=getchar();getchar();if(j=='y'||j=='Y') goto front3;}void main(){char j;PF("\n\n\n\n\n\n\t\t\t 欢迎使用简单通讯录");PF("\n\n\n\t\t\t\t制作人:王靖焱");PF("\n\n\n\t\t\t\t 2012年2月");PF("\n\n\n\n\n\n\n\n\n\n\n\n按回车键进入主菜单:");getchar();loop:system("cls");PF("\n");PF("\t\t\t\t ************\n");PF("\t\t\t\t ***主菜单***\n");PF("\t\t\t\t ************\n\n\n\n\n\n");PF("\t\t 1、录入联系人信息2、删除联系人信息\n\n");PF("\t\t 3、查询联系人信息4、联系人信息游览\n\n");PF("\t\t 5、修改联系人信息6、保存退出系统\n\n");PF("\n\n\n\n\n\n\n\n\n请选择[1/2/3/4/5/6]:");j=getchar();if(j=='\n') goto loop;//返回主菜单switch(j){case '1': add();goto loop;//返回主菜单case '2': del();goto loop;case '3': find();goto loop;case '4': arrange();goto loop;case '5': change();goto loop;case '6':{FILE *fp;fp=fopen("student.dat","w");for(i=0;i<n;i++)fwrite(&stud[i],sizeof(struct address_book),1,fp);fclose(fp);exit(0);}default: goto loop;} }。

电话本制作方案

电话本制作方案

电话本制作方案1. 简介电话本是一种常见的联系人管理工具,它可以帮助人们记录、存储和管理联系人的信息。

本文档旨在提供一个电话本制作方案,方便用户自己制作一个简单而实用的电话本。

2. 功能需求电话本的基本功能包括:•添加联系人:用户可以添加新的联系人信息,包括姓名、电话号码等。

•删除联系人:用户可以删除已有的联系人信息。

•编辑联系人:用户可以编辑已有的联系人信息。

•查找联系人:用户可以根据姓名或电话号码查找已有的联系人信息。

•显示联系人列表:用户可以查看现有的联系人列表。

3. 技术选型3.1 后端技术选型为了实现电话本的功能需求,我们建议使用以下后端技术:•语言:选择一种易于开发的语言,如Python或Java。

这些语言拥有丰富的库和框架支持,可以快速开发出高效稳定的电话本应用。

•框架:对于Python语言,可以选择使用Django或Flask等Web框架,它们提供了快速搭建Web应用的能力。

对于Java语言,可以选择使用Spring Boot等框架。

这些框架具有简单易用、功能完善的特点。

•数据库:选择一种可靠性强且性能优秀的关系数据库,如MySQL或PostgreSQL。

这些数据库可以提供稳定的数据存储和高效的数据访问能力。

3.2 前端技术选型为了提供良好的用户界面和交互体验,建议使用以下前端技术:•HTML/CSS:使用HTML和CSS构建页面结构和样式。

•JavaScript:使用JavaScript实现页面的交互逻辑和动态效果。

•前端框架:可以选择使用Vue.js、React或Angular等流行的前端框架。

这些框架提供了组件化开发的能力,可以极大地提升开发效率。

•AJAX:使用AJAX技术实现与后端的数据交互,实现无刷新更新数据的功能。

4. 系统设计4.1 数据库设计设计一个名为contacts的数据库表,包括以下字段:•id:联系人ID,作为唯一标识符。

•name:联系人姓名。

•phone:联系人电话号码。

JAVA课程设计 通讯录 通讯簿

JAVA课程设计 通讯录 通讯簿

目录一、设计任务与要求 (2)1.1 设计任务与要求 (2)1.2 选题目的与意义 (2)二、需求分析 (2)2.1 用户需求分析 (2)2.2 开发环境分析 (3)三、系统设计 (4)3.1 系统总体设计 (4)3.2 功能模块设计 (4)3.3 类的设计 (5)3.4 数据库设计 (11)四、程序实现 (14)4.1 程序流程图 (14)4.2 关键算法与技术实现 (18)4.3 类与数据结构实现 (30)五、测试运行 (35)5.1 系统测试方案 (35)5.2 运行结果分析 (36)六、设计体会 (44)主要参考文献 (45)一、设计任务与要求1.1 设计任务与要求制作一个简单的通讯簿,要求可对朋友的姓名、性别、出生日期、工作单位、手机号码、联系电话、职称、职务、联系地址、邮编、Email和QQ号等信息保存、查询、修改和删除等功能。

具有友好界面,且需要用户名和密码登陆进入系统。

使用数据库作为后台连接。

1.2 选题目的与意义如今生活节奏日益加快,各种联系人也不短增多,但是很多人还是单纯的使用手机或纸质电话本来记录联系人的信息,这些记录的方式存在很多缺点,如:信息量少,查找不方便;容易丢失;存储照片不方便;安全性不高,隐私性不高……这个通讯簿,可以帮助用户更好的存储朋友的相关信息,易于添加、修改,存储和使用都很方便。

同时这个系统需要登陆才能进入,提高了通讯簿的安全性和隐私性。

通过实现通讯薄功能的实际编程了解基于Swing的图形用户界面开发和数据库操作原理,提高Swing和JDBC技术结合的综合运用能力。

二、需求分析2.1 用户需求分析通讯簿的目的在于帮助用户实现轻松管理联系人的需求。

为了用户通讯录的隐私性和安全性,通讯簿进入前需要进行系统登录,对用户的帐号和密码进行合法性验证,登录成功则进入系统功能界面。

个人通讯簿登陆系统包括四项功能:登陆、注册、修改密码、删除账号。

如果是第一次使用通讯簿,需要进行注册,注册成功后即可登陆通讯簿主界面。

c语言简易电话簿实践报告

c语言简易电话簿实践报告

简易电话薄管理系统设计实践报告1摘要简易电话薄管理系统是以C语言为编程基础,用TC去实现的软件。

它一共有四个记录模块,为输入记录模块;查询记录模块;更新记录模块;输出记录模块,和13个函数体,可以存储100条电话记录,每条电话记录可以输入序号;姓名;电话号码;住址四个项目。

它可以显示;删除;查询;修改;排序;原有的电话记录,可以插入新的电话记录。

2系统设计一设计目的1.进一步熟悉TC2.0的开发环境(也可以用VC6.0),掌握基本的编程方法,熟悉用C语言完成一个应用程序的设计过程,掌握有关编辑和调试程序的方法和技巧。

2.主要掌握C语言中的结构体,指针及文件操作等内容。

3.了解开发简单应用程序的全过程,包括:分析,设计,编程,调试和编写实验报告。

二设计任务系统名称:简易电话簿管理系统的设计与实现。

背景:随着科技的进步和信息产业的飞快发展,电话簿成为了现代生活中一个重要的工具。

本电话簿管理系统利用计算机对通讯录进行统一的管理,包括添加,修改,查询记录等功能,实现通讯录管理工作的系统化,规范化和自动化,为人们的工作和生活提供便利。

训练内容:本开发任务旨在训练学生的基本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件和结构数组的各种基本操作。

本设计中设计结构体,数组,文件等方面的知识。

通过本程序的训练,是读者能对C语言的文件操作有一个更深刻的了解,掌握利用数组存储结构实现电话簿的管理,为进一步开发出高质量的信息管理系统打下坚实的基础。

需求分析:如系统功能模块框图所示,电话簿管理系统主要利用数组来实现,其数组元素是结构体的类型,整个系统由如下几大功能模块组成。

(1)输入记录模块输入记录模块主要完成将数据存入数组中的工作。

在此电话簿管理系统中,记录可以从以文件形式存储的数据文件中读入,也可以从键盘逐个输入记录。

记录由与联系人有关的基本信息字段构成。

当从数据文件总读入记录时,它就是以记录为单位存储的数据文件中,将记录逐条复制到结构体类型的数组元素中。

手机电话薄的设计与实现

手机电话薄的设计与实现

手机电话薄的设计与实现宜春学院数学与计算机科学学院信息与计算科学专业聂智仁指导老师:张连福摘要中文摘要:系统主要功能包括:实现添加、删除、显示、查询和修改联系人的姓名、手机号码、家庭电话号码、邮箱、地址和邮编,并且连接进sqlite数据库,将信息储存进数据库文件中去,操作成功弹出添加成功的对话框,对话框中的信息可以重置。

消息对话框负责显示消息,调用其将显示显示警告信息或者错误信息。

要求在文本框中动态显示姓名,手机号码,家庭电话,邮箱和地址等用户信息。

添加联系人姓名,手机号码,家庭电话,邮箱和地址等信息到数据库中,同样需要连接sqlite 数据库,并且在用户的图形界面的文本框中显示姓名,手机号码,家庭电话,邮箱和地址等用户信息。

修改姓名,手机号码,家庭电话,邮箱和地址等信息到数据库中,同样需要连接sqlite数据库,并且在用户的图形界面的文本框中显示姓名,手机号码,家庭电话,邮箱和地址等用户信息。

对已经存储的信息进行查询,而客户的具体需求多样,为了给客户营造更多的便利,将软件设计为模糊查询,模糊查询允许用户用较为模糊的查询条件,比如信息的姓来进行查询,实现了满足用户需求的简单易操作的这个要求,模糊查询结果将动态显示在用户的图形界面的文本框中。

删除已有的联系人也需要链接进数据库,根据用户所选择的联系人然后点击删除来链接数据库并删除该记录,删除如有误将弹出错误提示框并显示错误信息,删除后将再在用户的图形界面的文本框中进行显示一遍以体现数据已更新。

修改已有的联系人的手机号码、家庭电话号码、邮编和地址等信息,也需要链接sqlite数据库,为满足用户的多样化和简单易用的需求,可以随意修改联系人信息中的某一项或者多项,修改后将在用户的图形界面的文本框中显示一遍以体现数据的更新。

本论文内容主要是运用软件工程的知识,先进行系统需求分析,之后是系统概要设计,详细设计,并且详细介绍了各个功能模块的具体实现和数据库的设计。

移动应用程序开发--综合实例—电话号码本

移动应用程序开发--综合实例—电话号码本

PhoneList
public class PhoneList extends List implements CommandListener { private Command cmdBack = new Command("返回",Command.BACK,1); private Command cmdAdd = new Command("添加电话",Command.SCREEN,1); private Command cmdDel = new Command("删除电话",Command.SCREEN,1); private PhoneMidlet pm; public PhoneList(PhoneMidlet pm){ super("电话本",List.IMPLICIT); this.pm = pm; this.addCommand(cmdBack); this.addCommand(cmdAdd); this.addCommand(cmdDel); this.setCommandListener(this); }
添加电话设计
z
AddForm
z z
z
显示两个文本输入框:姓名,电话号码 按确定添加按钮:返回到PhoneList界面,列出所 有电话号码 按返回按钮:返回到PhoneList界面
数据库设计
z
RMSOpe
z z z z
记录仓储创建、关闭 记录添加 记录删除 记录遍历
整体结构
WelcomeCanvas
PhoneList
public void loadPhones(){ RMSOpe rmsope = new RMSOpe("PhoneStore"); rmsope.openRecordStore(); Vector v = rmsope.getAllPhone(); for(int i=0;i<v.size();i++){ this.append((String)v.elementAt(i), null); } rmsope.closeRecordStore(); } public void delete(){ RMSOpe rmsope = new RMSOpe("PhoneStore"); rmsope.openRecordStore(); rmsope.deletePhone(this.getString(this.getSelectedIndex())); rmsope.closeRecordStore(); }

设计一个利用文件处理方式实现电话号码薄的C++程序课程设计及代码

设计一个利用文件处理方式实现电话号码薄的C++程序课程设计及代码

C++课程设计设计一个利用文件处理方式实现电话号码薄的C++程序系别电子信息系专业计算机科学与技术学号4080522姓名龚敏指导教师党群2010年6月22日设计一个利用文件处理方式实现电话号码薄的C++程序!一.课程设计基本要求1功能选择可以用菜单实现请您选择1增加数据2修改数据3查询数据4删除数据0推出用户通过不同的数字进入不同的菜单2电话号码薄结构:序号、姓名、电话号码二、设计的思路1.建立ifstream/ofstream/fstream、输入、输出、输入输出流对象,建立ifndef,define预编命令,STRUCT 数据。

2.建立TelephoneBook类,构建PRIVATE私有成员和PUBLIC公有成员3.建TelephoneBook函数,建立输入输出文件,如何打开文件4.建立AddData函数,请输入序号、名字、电话号码构建电话号码本5.建立UpdateData函数,可以更改序号、名字、电话号码本功能项6.建立SearchData函数,制作输入查询电话号码的序号功能项7.建立DeleteData函数,制作输入可以删除的电话号码的序号8.建立Pack函数,写入电话号码二进制文件,写入电话号码本9.建立Run函数,用do. while界面制作界面10.建立一个主函数main(),#include"telephone_book .h"void main(void){TelephoneBook obj;obj.run();}11.运行主函数main,程序运行就可以了三、设计步骤1源代码#include <iostream>#include <string>#include <iomanip>#include <fstream>#include <cstdlib>using namespace std;class book{public:book();//默认构造函数char inter_face();//首页void add_person();//添加数据void del_person();//删除数据void show_all();//显示所有联系人void alter();//修改数据void select();//查询数据void save_new();//保存新增加的联系人private:string name;//姓名string number;//电话号码string stunum;//学号};book::book(){stunum = "\0";name = "\0";number = "\0";}//首页char book::inter_face(){system("cls");cout <<endl;cout<<"\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★" <<endl<<"\t\t※※" <<endl<<"\t\t※电话号码簿※" <<endl<<"\t\t※※" <<endl<<"\t\t※ 1. 添加数据. 4. 修改数据. ※" <<endl<<"\t\t※※" <<endl<<"\t\t※ 2. 删除数据. 5. 查询数据. ※" <<endl<<"\t\t※※" <<endl<<"\t\t※ 3. 显示所有联系人. 6. 退出. ※" <<endl<<"\t\t※※" <<endl<<"\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★" <<endl <<endl<<"\t\t\t选择:" ;char choose;cin >>choose;fflush(stdin);return choose;}void book::add_person(){cout <<endl <<"根据下面提示输入新联系人信息" <<endl <<endl <<"学号:" ;cin >>stunum;fflush(stdin);cout <<"姓名: ";cin >>name;fflush(stdin);cout <<"电话: ";cin >>number;fflush(stdin);save_new();cout <<endl <<endl <<"新联系人信息已经保存好!!!!!" <<endl <<endl;system("pause");}//删除联系人void book::del_person(){ofstream outData("temp.txt", ios::out);ifstream inData("pbook.txt", ios::in); //if (!outData || !inData){cout <<endl <<"对不起!!!!找不到文件!!!!" <<endl;system("pause");return;}string sign;cout <<endl <<"你要删除输入姓名或学号:";cin >>sign;string str1;bool flag = true;string str;while (inData >>name >>stunum){getline(inData, str);if ((sign==name) || (sign==stunum)){cout <<endl <<"你想删除的联系人:" <<endl <<endl;cout <<str1 <<endl;cout <<setiosflags(ios::left) <<setw(17) <<name<<" " <<stunum <<str <<endl;flag = false;break;}outData <<setiosflags(ios::left) <<setw(17) <<name<<" " <<stunum <<str <<endl;}if (flag){cout <<endl <<"对不起!!!联系人中没你找的人!!!!" <<endl <<endl; }else{while (getline(inData, str)){outData <<str <<endl;}outData.close();inData.close();ofstream out("pbook.txt", ios::out);ifstream in("temp.txt", ios::in);if (!out || !in){cout <<endl <<"对不起不能打开文件!!!" <<endl <<endl;system("pause");return;}while (getline(in, str)){out <<str <<endl;}out.close();//in.close();cout <<endl <<"这个人的信息已经从你的通迅录中删除!!!" <<endl <<endl;}system("pause");}//显示所有联系人void book::show_all(){ifstream inData("pbook.txt",ios::in);if (!inData){cout <<endl <<"对不起!!!!没有找到文件!!!!!" <<endl;system("pause");return;}bool flag = true;string record;while (getline(inData, record)){if (flag){cout <<endl <<"所有联系人信息如下: "<<endl;}cout <<record <<endl;flag = false;}if (flag){cout <<endl <<"你的通迅录中没有联系人!!!!!" <<endl <<endl;}else{cout <<endl <<"所有联系人已经全部显示出来!!!!!" <<endl <<endl;}system("pause");}//修改信息void book::alter(){ofstream outData("temp.txt", ios::out);ifstream inData("pbook.txt", ios::in); //if (!outData || !inData){cout <<endl <<"对不起!!!!找不到文件!!!!" <<endl;system("pause");return;}string sign;cout <<endl <<"你要修改输入姓名或电话号:";cin >>sign;string str1;bool flag = true;string str;while (inData >>name >>stunum){getline(inData, str);if ((sign==name) || (sign==stunum)){cout <<endl <<"你想修改的联系人:" <<endl <<endl;cout <<str1 <<endl;cout <<setiosflags(ios::left) <<setw(17) <<name<<" " <<stunum <<str <<endl;cout <<endl <<"请根据下面提示修改信息: " <<endl;cout <<"学号:" ;cin >>stunum;fflush(stdin);cout <<"姓名:";cin >>name;fflush(stdin);cout <<"电话号:";cin >>number;fflush(stdin);save_new();flag = false;break;}outData <<setiosflags(ios::left) <<setw(17) <<name<<" " <<number <<str <<endl;}if (flag){cout <<endl <<"对不起!!!联系人中没你找的人!!!!" <<endl <<endl;}else{while (getline(inData, str)){outData <<str <<endl;}outData.close();inData.close();ofstream out("pbook.txt", ios::out);ifstream in("temp.txt", ios::in);if (!out || !in){cout <<endl <<"对不起不能打开文件!!!" <<endl <<endl;system("pause");return;}while (getline(in, str)){out <<str <<endl;}out.close();in.close();cout <<endl <<"这个人的信息已经在你的通迅录中修改!!!" <<endl <<endl;}system("pause");}//查询联系人void book::select(){ifstream inData("pbook.txt",ios::in);if (!inData){cout <<endl <<"对不起!!!!文件找不到!!!!" <<endl;system("pause");return;}string sign;cout <<endl <<"输入你想查找的联系人的姓名或电话号码: ";cin >>sign;fflush(stdin);string str1;bool flag = true;string str;while (inData >>name >>stunum){getline(inData, str);if ((name==sign) || (stunum==sign)){cout <<endl <<"你要查找的联系人是: " <<endl <<endl;cout <<str1 <<endl;cout <<setiosflags(ios::left) <<setw(17) <<name<<stunum <<str <<endl;flag = false;system("pause");break;}}}void book::save_new(){ofstream outData("pbook.txt", ios::app);if (!outData){cout <<endl <<"对不起!!!打开文件失败!!!!" <<endl <<endl;system("pause");return;}outData << setiosflags(ios::left) << setw(17) << stunum<<" " << setw(16) << name <<" "<< setw(18) << number <<" "<<endl;outData.close();}enum power{ADD = '1', DEL = '2', SHOW = '3', Alter = '4', Select = '5', END = '6'};int main(){char choose;book abj;while (choose = abj.inter_face()){switch (choose){case ADD:abj.add_person();////添加联系人break;case DEL:abj.del_person();////删除联系人break;case SHOW:abj.show_all();////显示所有联系人break;case Alter:abj.alter();////修改信息break;case Select:abj.select();////查询联系人break;case END:cout <<endl <<"谢谢使用!!!!!" <<endl <<endl;exit(0);break;default:break;}}return 0;2运行结果展示(1)首页(2)添加模块(3)显示所有人(4)删除模块(5)修改模块(6)查找模块(7)退出模块四、设计心得经过一个学期的学习和上机实践,使我对C++语言有了更认识和和了解,要想学好它要重在实践,要通过不断的上机操作才能更好的学习它,通过实践,我也发现我的好多不足之处,对各种控制结构及语句、数组的基本与高级应用、指针数组、字符数组、动态数组、函数的定义、调用方式;函数在编程中的具体应用;以及变量存储特征与标识符的作用域,通过实践,使我在这些方面有了认识和提高。

含用户界面简单电话簿(java)

含用户界面简单电话簿(java)

哈希表的设计与实现届学院专业学号学生姓名指导教师完成日期年月日摘要该系统的功能是以按钮方式工作,用户通过打开exe文件来打开该系统:通讯录的增加功能——输入通讯录基本信息并保存到文件中;通讯录浏览功能——输出通讯录的基本信息;通讯录查询功能——按编号查询通讯录信息,按姓名查询通讯录信息;通讯录删除功能——按编号删除通讯录信息,按姓名删除通讯录信息;通讯录修改功能——根据编号修改通讯录信息。

从而实现用户的想法。

在各项基本功能之下我们可以看到各种小的模块来满足用户的各种需求,达到快速方便的效果。

程序在设计的过程中遇到的问题已及时更正,但由于编者的能力和水平有限,通讯录系统和文档不免出现一些不期待的错误,望文档读者谅解,并欢迎及时提醒和改正,在此表示谢意。

关键词:数据结构; 通讯录系统; 哈希表目录目录.................................................................................................................................... 第一章引言 (1)第二章系统功能需求分析 (1)2.1 问题描述 (1)2.2 需求分析 (1)第三章概要设计 (2)3.1 抽象数据类型(ADT) (2)3.2 系统流程图 (3)第四章详细设计 (4)4.1 姓名哈希表设计程序段 (4)4.2 号码哈希表设计程序段 (14)4.3 联系人类程序段 (24)4.4 联系人显示模式程序段 (28)4.5 联系人主界面设计程序段 (31)第五章调试分析 (53)第六章运行结果 (54)第1章引言数据结构是计算机存储、组织数据的方式。

数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。

通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率的算法。

数据结构往往同高效的检索算法和索引技术有关。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

简易电话号码簿程序设计一、设计目标编写一个管理电话号码的程序。

二、设计要求1. 实现人名、电话号码的录入(假定一个人只有一个电话号码)。

2. 人名、电话号码的删除、修改。

3. 根据人名查询该人的电话号码。

4. 用文件保存电话簿。

5. 根据电话号码查询该人的名字。

6. 根据人名进行电话号码的模糊查询(如输入某人的姓,则同姓的其他人的电话号码也可以显示出来)。

三、设计提示文件操作、键盘操作和屏幕操作可利用DOS和BIOS系统中断完成。

相关核心提示见“单词记忆测试器程序设计”一题。

DATAS SEGMENTcount db 4buf db'li ','54698765 ', ;存储人名和电话号码的数据单元区'liu ','69856456 ','hu ','565664789 ','zhang ','569874123 ',20 dup(10 dup (0),10 dup (0)) ;为再存入数据开辟空间_name db 10, ?,10 dup(?) ;缓冲区——键盘输入name字符串num db 10, ?,10 dup(?) ;缓冲区——键盘输入num字符串temp db 20 dup(?),0dh,0ah,'$'; 缓冲区——存入人名和电话簿信息menuitem db' (people phonenumber management system)',0ah,0dh db' @************************&&&**************************@',0ah,0dhdb' # { this is main menu } #',0ah,0dhdb' # 1. query (q) #',0ah,0dhdb' # 2. insert (i) #',0ah,0dhdb' # 3. modify (m) #',0ah,0dhdb' # 4. delete (d) #',0ah,0dhdb' # 5. exit (e) #',0ah,0dhdb' @************************&&&**************************@',0ah,0dhdb'please select(q,i,m,d or e):',0ah,0dh,'$';显示主菜单相关信息mess1 db'name',10 dup(' '),'tel',0ah,0dh,'$'mess2 db'please Input the name:$'mess3 db'please Input the telephone number:$'mess4 db 0ah,0dh,'$';专门定义一个MESS4,以便在代码中用9号功能调用实现换行mess5 db'Insert succed!$'mess6 db'delete succed!$'mess7 db'the information!$'mess8 db'modify succed!$'mess9 db'please Input the new name:$'mess10 db'please Input the new number:$'err1 db'there is not exsit the people!',0ah,0dh,'$';错误提示信息DATAS ENDSSTACKS SEGMENTdb 2000 dup(?)STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSmain proc farmov ax,datasmov ds,axmov es,axn1: lea dx,menuitemmov ah,9int 21h ;显示主菜单选择界面mov ah,1int 21h ;从键盘输入字符cmp al,'q'jnz n2call query ;若所输字符是‘q‘,则调用子程序queryjmp n1n2: cmp al,'i'jnz n3call insert ; 若所输字符是‘i‘,则调用子程序insert jmp n1n3: cmp al,'m'jnz n4call modifyn4: cmp al,'d'jnz n5call deleten5: cmp al,'e'jz exitjmp n1exit:mov ah,7int 21hmov ah,4chint 21hret ;退出query proc near ;查找的主程序push dsxor ax,axpush axmov ax,datasmov ds,axmov es,axcld ;清除方向标志lea dx,mess4mov ah,9int 21h ;换行lea dx,mess2mov ah,9int 21hcall ipname ;调用子程序ipname,从键盘上输入人名lea dx,mess4mov ah,9int 21hcall search ;具体查找的子程序mov ah,7int 21hretquery endpipname proc near ;从键盘输入名字lea dx,_name ;存放待查找的人名地址mov ah,10int 21hmov bh,0mov bl,_name+1 ;bl 存放从键盘输入的字符串长度mov cx,10sub cx,bx ;计算剩下的长度r:mov _name[bx+2],20h ;剩下的地方补空格inc bxloop rretipname endpsearch proc nearlea di,buf ;di 中存放表首地址push dimov bl,countl:lea si,_name+2mov cx,10repe cmpsb ;比较si 和di的前10个字节jz n6 ;不相等时不跳转pop diadd di,20 ;di 偏移地址加20push didec bxjnz llea dx,err1 ;提示‘找不到。

‘信息mov ah,9int 21hjmp n1n6:pop dimov si,dilea di,tempmov cx,20rep movsb ; 将人名和号码信息传入temp lea dx,mess1mov ah,9int 21hlea dx,tempmov ah,9int 21h ;输出temp中的人名和号码retsearch endpinsert proc nearlea dx,mess4mov ah,9int 21hlea dx,mess2mov ah,9int 21hlea dx,mess4mov ah,9int 21hcall ipname ;调用输入人名的子程序lea dx,mess4mov ah,9int 21hlea dx,mess3int 21hcall ipnumber ;调用输入号码的子程序cldmov al,20mov cl,countmul cl ;ax 存放buf里已有数据的字节数lea di,bufadd di,ax ;将di移动指向数据单元中的已经存入的最后人的电话后lea si,_name+2mov cx,10rep movsb ;将si 中数据(人名)传di中lea si,num+2mov cx,10rep movsb ;再传数据(号码)到di中inc count ;count 加一条记录lea dx,mess5mov ah,9int 21hlea dx,mess4mov ah,9int 21hmov ah,7int 21hretinsert endpipnumber proc near ;从键盘输入号码lea dx,num ;存放待存入的电话号码mov ah,10int 21hlea dx,mess4mov ah,9int 21hmov bh,0mov bl,num+1 ;存放从键盘输入的字符串长度mov cx,10sub cx,bxc1: mov num[bx+2],20h ;补空格inc bxloop c1retipnumber endpdelete proc nearlea dx,mess4int 21hlea dx,mess2mov ah,9int 21hlea dx,mess4mov ah,9int 21hcall ipnamelea dx,mess4mov ah,9int 21hcall delete1retdelete endpdelete1 proc nearlea di,buf ;di 中存放表首地址push dimov bl,countmov bh,0p:lea si,_name+2mov cx,10repe cmpsb ;比较si 和di的前10个字节jz a ;不相等时不跳转pop diadd di,20 ;di 偏移地址加20push didec bxjnz plea dx,err1 ;提示‘找不到。

‘信息mov ah,9int 21hjmp n1a:pop dilea dx,mess4mov ah,9int 21hlea dx,mess7mov ah,9int 21hlea dx,mess4mov ah,9mov al,20 ;计算最后一个数据的偏移量dx mov cl,countdec clmul clmov dx,axlea si,bufadd si,dxmov cx,20cldrep movsbdec countlea dx,mess6mov ah,9int 21hlea dx,mess4mov ah,9int 21hmov ah,7int 21hretdelete1 endpmodify proc nearlea dx,mess4mov ah,9int 21hlea dx,mess2mov ah,9int 21hcall ipnamelea dx,mess4mov ah,9int 21hcall modify1lea dx,mess4mov ah,9int 21hlea dx,mess8mov ah,9int 21hlea dx,mess4mov ah,9int 21hint 21hretmodify endpmodify1 proc nearlea di,buf ;di 中存放表首地址push dimov bl,countmov bh,0m:lea si,_name+2mov cx,10repe cmpsb ;比较si 和di的前10个字节jz n ;不相等时不跳转pop diadd di,20 ;di 偏移地址加20push didec bxjnz mlea dx,err1 ;提示‘找不到。

相关文档
最新文档