导航:首页 > 编程知识 > 用什么编程语言能找到别人手机号

用什么编程语言能找到别人手机号

发布时间:2023-05-29 04:12:06

安卓app主要用什么编程语言的

安卓Android系统版本,开发语言是Java;

其他系统开发使用语言:

1、苹果ios系统版本,开发语言是Objective-C;

2、微软Windows phone系统版本,开发语言是C#;

3、塞班symbian系统版本,开发语言是C++。

App开发,是指专注于手机应用软件开发与服务。App是application的缩写,通常专指手机上的应用软件,或称手机客户端。另外目前有很多在线app开发平台。

当然移动互联网时代是全民的移动互联网时代,是每个人的时代,也是每个企业的时代。APP便捷了每个人的生活,APP开发让每个企业都开始了移动信息化进程。

(1)用什么编程语言能找到别人手机号扩展阅读:

APP开发工具

MOTODEV Studio for Android

MOTODEV Studio for Android,这是基于Android的开发环境,为开发者们提供新的MOTODEV App Accelerator Program使他们可以开发出更适合摩托罗拉Android手机的应用程序

J2ME开发插件 Mobile Tools for Java

Mobile Tools for Java (MTJ) 是Nokia公司开发的一款 Eclipse插件,用于支持 Java 手机应用程序开发。其前身就是大名鼎鼎的 EclipseME。

NOKIA手机开发包 gnokii

gnokii 是一个NOKIA手机开发包,可支持大多数NOKIA手机的型号。功能无比强大可以修改LOGO,收发短信,拨打/接听电话,编辑铃声。甚至还可以取到对方手机的蜂窝号(Cell ID),从而起到定位的作用。

apk文件修改工具 Root Tools

RootTools是一个新的工具软件,Android开发者可以在这一工具软件的支持下,对.apk格式的文件进行再次修改,让程序表现更加出色,满足用户的需求。Root Tools里面自带有很多工具,比如BusyBox,它里面集成压缩了很多Linux的工具和命令,这样软件开发者在对....

IDEA的Android开发插件 idea-android

idea-android 是在 IDEA 集成开发环境中开发 Android 应用程序的插件。

Android开发工具 MOTODEV Studio

MOTODEV Studio是摩托罗拉公司开发的 Android 应用开发工具。这是一个 Eclipse 的插件。 该插件同时也提供了 JavaME 应用的开发和 WebUI 的开发功能。

参考资料:网络---app开发

Ⅱ c语言程序设计——编一个通讯录管理程序:序号 姓名 电话 地址

(晚了)这是我以前的一个作业,你可以借鉴一下

#include <string.h>
#include<iostream>
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <conio.h>
using namespace std;
#define LEN sizeof(struct friends)
#define CODE_SIZE 10
struct friends
{

char num[20];//编塌坦滚号
char name[100];//用户姓名
char phone[20];//电话号码
char home[100];//通讯地址
char email[100]; //email
char occupation[100];//工作
char birthday[20];//出生日期
struct friends *next;
};
int password()
{
FILE *fp;
char s1[CODE_SIZE], s2[CODE_SIZE], s3[CODE_SIZE], fun;
while (1)
{
fp = fopen("password.txt", "r");
if (fp == NULL)
{
printf("第一次运行,请输入初始密码(最多8位):\n");
scanf("%s", s1);
printf("请再次输入初始密码:\n");
scanf("%s", s2);
if (strcmp(s1, s2) == 0)
{
fp = fopen("password.txt", "w+");
if (fp == NULL)
{
printf("创建文件失败退出\n");
getch();
exit(1);
}
else
{
//对s1加密
for (int i = 0; i<CODE_SIZE&&s1[i] != ' '; i++)
{
s1[i] = s1[i] + i;
}

fputs(s1, fp);
printf("初始信塌密码创建完成.\团余n");
}
}
else
{
printf("两次输入的密码不一致!\n");
}
fclose(fp);
}
else
{
fgets(s1, CODE_SIZE, fp);
fclose(fp);

printf("输入密码:\n");
scanf("%s", s2);
//对s1解密
for (int i = 0; i<CODE_SIZE&&s1[i] != ' '; i++)
{
s1[i] = s1[i] - i;
}
loop:
if (strcmp(s1, s2) == 0)
{

printf("-----密码正确-----\n");
printf("-----请选择功能-----\n");
printf("-----1:修改密码-----\n");
printf("-----2:进入通讯录-----\n");
scanf("%d", &fun);
switch (fun)
{
case 1: printf("请输入新密码\n");
scanf("%s", s1);
printf("请再次输入新密码\n");
scanf("%s", s2);
if (strcmp(s1, s2) == 0)
{
fp = fopen("password.txt", "w+");
if (fp == NULL)
{
printf("文件错误!\n");
}
else
{ //对s1加密
for (int i = 0; i<CODE_SIZE&&s1[i] != ' '; i++)
{
s1[i] = s1[i] + i;
}
fputs(s1, fp);
fclose(fp);
printf("密码修改成功\n");
}
}
else
{
printf("两次输入的密码不一致,修改失败\n");
}

break;
case 2: return 1;
default: printf("无效指令\n");
}

}
else
{
printf("密码错误\n请重新输入\n");
scanf("%s", s2);
goto loop;

}
}
printf("------------------\n\n\n\n");
}
}
void face(void)//功能选择面板
{
cout << "********************************************************************" << endl;
cout << "\t\t\t☆★欢迎使用***通讯录☆★" << endl;
cout << "\n\n\t☆★选择你需要操作的功能:★☆" << endl;
cout << "\t\t\t1.增加通讯录信息" << endl;
cout << "\t\t\t2.显示通讯录中所有记录" << endl;
cout << "\t\t\t3.删除需要删除的信息" << endl;
cout << "\t\t\t4.以名字查询所需的信息" << endl;
cout << "\t\t\t5.保存并退出" << endl;
cout << "\t\t\t6.退出不保存!!" << endl;

cout << "********************************************************************" << endl;
}
void print(struct friends *head)
{
struct friends *p;
p = head;
system("CLS");
cout << "*************************************************************" << endl;
cout << "==================== → 用户信息记录表 ← ===================" << endl;
cout << "*************************************************************" << endl;
if (head != NULL)
do
{
cout << "联系人编号:" << p->num << endl;
cout << "联系人姓名:" << p->name << endl;
cout << "联系人电话号码:" << p->phone << endl;
cout << "联系人地址:" << p->home << endl;
cout << "联系人电子邮箱:" << p->email << endl;
cout << "联系人职业" << p->occupation << endl;
cout << "联系人出生日期:" << p->birthday << endl;
cout << "********************************************************" << endl;
p = p->next;
} while (p != NULL);
else
{
cout << "对不起!!没有任何联系人记录!!" << endl;
cout << "=============================================================\n" << endl;
}
}
//增添电子通讯录中的内容,即创建连表过程
struct friends *append(struct friends *head)
{
struct friends *p0 = NULL, *p1, *p2;
p1 = head;
p2 = head;
system("CLS");
cout << "********************************************************************" << endl;
cout << "\t\t你能在此目录下创建并添加联系人信息" << endl;
cout << "********************************************************************" << endl;
p0 = (struct friends *)malloc(LEN);
cout << "请输入联系人编号:" << endl;
gets(p0->num);
cout << "请输入联系人姓名:" << endl;
gets(p0->name);
cout << "请输入联系人电话号码:" << endl;
gets(p0->phone);

cout << "请输入联系人地址:" << endl;
gets(p0->home);
cout << "请输入联系人Email:" << endl;
gets(p0->email);
cout << "请输入联系人职位:" << endl;
gets(p0->occupation);
cout << "请输入联系人出生日期:" << endl;
gets(p0->birthday);
//对插入的节点排序,按姓名的拼音顺序
if (head == NULL)
{
head = p0; p0->next = NULL;
}
else
{
while ((strcmp(p0->name, p1->name)>0) && (p1->next != NULL))
{
p2 = p1; p1 = p1->next;
}
if ((strcmp(p0->name, p1->name)) <= 0)
{
if (head == p1)
head = p0;
else
p2->next = p0;
p0->next = p1;
}
else
{
p1->next = p0; p0->next = NULL;
}

cout << "恭喜你!!成功添加了联系人信息!!" << endl;
cout << "********************************************************************" << endl;
}
return(head);

}

//电子通讯录的维护(删除),通过输入联系人ID号码删除联系人数据
struct friends *del(struct friends *head)
{
struct friends *p1, *p2;
char num[12];
system("CLS");
cout << "********************************************************************" << endl;
cout << "================= → 用户信息记录删除功能 ← ===============" << endl;
cout << "********************************************************************" << endl;
printf("输入要删除的联系人编号:");
gets(num);
p1 = head;
if (head == NULL)
{
cout << "很抱歉!!没有任何联系人纪录!!" << endl;
cout << "*******************************************************" << endl;
return(head);
}
while (p1 != NULL)
{
if (strcmp(p1->num, num) == 0)
{
if (p1 == head)
head = p1->next;
else p2->next = p1->next;
free(p1);
cout << "删除记录成功!!" << endl;
return(head);
}
p2 = p1;
p1 = p1->next;
}
cout << "对不起!!没有要删除的联系人纪录!!\n" << endl;
return(head);
}

//电子通讯录的查找,关键字为用户姓名;
void search(struct friends *head)
{
struct friends *p1, *p2;
char name[20];
p1 = head;
p2 = p1;
system("CLS");
cout << "***************************************************************" << endl;
cout << "================ → 用户信息记录查询功能 ← ==================\n" << endl;
cout << "***************************************************************" << endl;
cout << "输入要查找联系人的姓名:" << endl;
gets(name);
while (p1 != NULL)
{
if (strcmp(p1->name, name) == 0)
{
cout << "联系人编号:" << endl;
puts(p1->num);
cout << "联系人姓名:" << endl;
puts(p1->name);
cout << "联系人电话号码:" << endl;
puts(p1->phone);
cout << "联系人地址:" << endl;
puts(p1->home);
cout << "联系人电子邮箱:" << p1->email << endl;
puts(p1->email);
cout << "联系人职业" << p1->occupation << endl;
puts(p1 ->occupation);
cout << "联系人出生日期:" << endl;
puts(p1->birthday);
cout << "=============================================================" << endl;
break;
}
p2 = p1;
p1 = p1->next;
}
if (p1 == NULL)
cout << "对不起!!没有该联系人的纪录!!" << endl;

}
void save(struct friends *head)
{
FILE *fp, *fp1;
struct friends *p;
p = head;
fp = fopen("record.txt", "w");
fp1 = fopen("record.txt", "w");
fprintf(fp1, "=============== → 用户信息记录表 ← =================\n");

while (p != NULL)
{

fprintf(fp1, "====================================================\n");
fprintf(fp1, "联系人编号:%s\n", p->num);
fprintf(fp1, "联系人姓名:%s\n", p->name);
fprintf(fp1, "联系人电话:%s\n", p->phone);
fprintf(fp1, "联系人家庭地址:%s\n", p->home);
fprintf(fp1, "联系人电子邮箱:%s\n", p->email);
fprintf(fp1, "联系人职业:%s\n", p->occupation);
fprintf(fp1, "联系人出生日期:%s\n", p->birthday);
p = p->next;
}
fprintf(fp1, "*************************************************************\n");
fclose(fp1);
fclose(fp);
cout << "成功储存,你能在record.txt找到相应纪录" << endl;
cout << "**************************************************************" << endl;
cout << "PRESS ANY KEY TO EXIT." << endl;
getchar();
exit(1);
}
//电子通讯录的记录读盘操作,使用文件指针;
struct friends *load(void)
{
FILE *fp;
struct friends *head = NULL, *p1 = NULL, *p2 = NULL;
char c;
int i;
fp = fopen("record.txt", "r");
for (i = 1; (c = fgetc(fp)) != -1; i++)
{
p1 = (struct friends *)malloc(LEN);
//fscanf(fp,"%s %s %s %s %s %s",p1->num,p1->name,p1->phone,p1->email,p1->home,p1->birthday);
if (i == 1)
{
head = p1; p2 = p1;
}
else
{
p2->next = p1; p2 = p1;
}
}
if (p1 == NULL)
{
fclose(fp); return(head);
}
p2->next = NULL;
fclose(fp);
return(head);
}

int main()
{
FILE *fp1, *fp2;
int a;//功能选择需要的号码
system("cls");
system("cls");
struct friends *head = NULL;
if ((fp1 = fopen("record.txt", "r")) == NULL)
{
fp2 = fopen("record.txt", "w");//如果不存在record.txt就创建一个
fclose(fp2);
}
head = load();

password();
system("cls");
while (1)
{
face();
printf("选择你需要操作的功能号码:");
cin >> a;
getchar();
switch (a)
{
case 1:head = append(head); break;
case 2:print(head); break;
case 3:head = del(head); break;
case 4:search(head); break;
case 5:save(head); break;
case 6:exit(0); break;
default:cout << "Enter error!!" << endl;
}

cout << "◇◆请按ENTER返回功能操作菜单◇◆" << endl;

getchar();
system("cls");

}

}

Ⅲ 编写建立同学通讯录包括姓名和电话号码的c 语言程序

#include<stdio.h>
#include<string.h>
#include<windows.h>

#defineM500

structMan//定义信友碰结构体
{
charName[8];//名字
charDepart[20];//工作单位
charqq[10];//QQ号码
charEmail[30];//邮箱
};

voidtext();//相当于主函数
void告册text1();//菜单输出
chartext2();//开始的版权信息输出
intDelete(ManMan[],intSize);//删除信息
voidDisplay(Manman[]);//显示所有记录
voidgetch();
intInsert(ManMan[],intSize);//插入模块
voidModify(ManMan[],intSize);//修改模块
intS_asname(ManMan[],intSize,intn);//查找信息
voidS_asqq(ManMan[],intSize);//按QQ查找模块
intSave(ManMan[],intSize);//把数据写入文件
intScan(ManMan[]);//从文本中读取数据

voidmain()//主函数
{
text();//(这边纯属蛋疼,最多加长系统运行时间)
}

voidtext()//相当于主函数
{
Manman[M];//500人的结构体数组
charcontrol=0;//菜单选择控制变量
intsize=0;//保存当前已有的记录
if(text2())//这边可不要if,直接调用text2,显示版权信息。
{
size=Scan(man);滑谈//判断文件是否存在
while(1)//菜单生成
{
text1();//菜单显示
scanf(

Ⅳ 如何提邮箱中的手机号码

提取邮箱中的手机号码的方法是在邮箱的所有邮件中进行搜索查找。因为有些人用邮箱来注册各种账号,同时账号中也会需要填写手机号码。所以,邮箱里面锋告可能会有一些关于手机号码的注册验证邮件或者账号注册成功的邮件,这些邮件中就会银毁明包含手机号码。具体做法是,在邮箱中余好搜索包含“手机”、“手机号”、“注册”、“验证”等关键词的邮件,这样可以筛选出可能包含手机号码的邮件。另外,有些邮件中会对手机号码进行脱敏处理,比如用星号代替一部分手机号码,但是仍然可以通过邮件中的其他信息来推断出手机号码。最后,为了保护个人隐私,对于找到的手机号码,我们需要经过对方同意之后再使用或者转发。

Ⅳ 用c语言用对方qq查对方电话号码违法吗

结论:用c语言通过对方qq查对方知渣电话号码是违法的。

原因:通过对方qq查找对方电话号码,涉及到个人隐私的泄露,这是非法的行为。
另外,任何未经授权、未经同意的信息查找都是不合法的。

内容延伸:虚正在进行任何信息查询时,需要尊重个人隐私权,不得擅自获取他人的差猛悔个人信息。
如果需要获取他人的个人信息,则必须经过对方的同意并按照相关法规操作。
如果发现了任何侵犯个人隐私权的行为,可以向有关部门举报。

Ⅵ c语言手机通讯录程序啊~小弟初来,分数不高,望各位高手给指点指点吧!!!

这也要求貌似太多了
我这刚做了个简单的一点的通讯录
希望对LZ又点帮助
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
typedef struct//表示数据类型,可类比int
{
char name[15];
char city[15];
char telenub[15];//固定电话号码
char email[20];
char qq[13];
char youbian[10];//表示邮编
}DataType;

FILE *fp;
typedef struct node{//结类型定义
DataType data;//节点数据域
struct node * next;//节点指针域
}ListNode;
typedef ListNode * LinkList;
LinkList head;
ListNode *p;
//函数说明
void myprint();
LinkList CreateList();
void InsertNode(LinkList head,ListNode *p);
ListNode * ListFind(LinkList head);
void DelNode(LinkList head);
void PrintList(LinkList head);

//用尾插法建立通讯录链表函数
LinkList CreateList()
{
LinkList head=(ListNode *)malloc(sizeof(ListNode));//申请头结点 分配存储空间
ListNode *p,*rear;
int flag=0;//结束标志置0
rear=head;//尾指针初始指向头结点
if((fp=fopen("record.txt","w+"))==NULL) //打开文件,并判断打开是否正常
{
printf("打开文件失败!!\n");//没打开
exit(0); //退出
}
fprintf(fp,"%-15s%-20s%-15s%-20s%-10s%-12s\n","姓名","城市","电话","邮箱","QQ","邮编" );
while(flag==0)
{
p=(ListNode *)malloc(sizeof(ListNode));//申请新结点
printf(" 姓名 地址(城市) 电话 邮箱 QQ 邮编 \n");
scanf("%s%s%s%s%s%s",p->data.name ,p->data.city ,p->data.telenub ,p->data.email,p->data.qq,p->data.youbian );
fprintf(fp,"%-15s%-20s%-15s%-20s%-10s%-12s\n",p->data.name ,p->data.city ,p->data.telenub ,p->data.email,p->data.qq,p->data.youbian );
// fclose(fp);
rear->next=p;//新结点连接到尾结点之后
rear=p;//尾指针指向新结点

printf("是否结束建表?(1/0):");
scanf("%d",&flag);//读入一个标志数据

}
rear->next=NULL;//终端结点指针域置空
return head;//返回链表头指针
}

//在通讯录链表head中插入节点
void InsertNode(LinkList head,ListNode *p)
{
ListNode *p1,*p2;
p1=head;
p2=p1->next;

while(p2!=NULL&&strcmp(p2->data.name,p->data.name)<0)
{
p1=p2;//p1指向刚访问过的结点
p2=p2->next;//p2指向表的下一个结点
}
p1->next=p;//插入p所指向的的结点
p->next=p2;//连接表中剩余部分
}

//有序通讯录链上的查找

ListNode *ListFind(LinkList head)
{
ListNode *p;
char telenub[13];
char name[15];
int temp;
printf("请选择按姓名或电话查询(1/2):\n");
p=head->next;//假定通讯录表带头结点
scanf("%d",&temp);
if(temp==1)
{
printf("请输入要查找者的姓名");
scanf("%s",name);
while(p&&strcmp(p->data.name,name)!=0)
p=p->next;
if(p==NULL||strcmp(p->data.name,name)>0)
p=NULL;//没有查到要查找的姓名
}
else
if(temp==2){
printf("请输入要查找的电话号码:\n");
scanf("%s",telenub);
while(p&&strcmp(p->data.telenub,telenub)<0)
p=p->next;
if(p==NULL||strcmp(p->data.telenub,telenub)>0)
p=NULL;
}
return p;
}

//通讯录链表上结点的删除
//先调用查询函数,查询到要删除的结点,删除结点即可。
void DelNode(LinkList head)
{
char temp;
ListNode *p,*q;
p=ListFind(head);//调用查找函数
if(p==NULL)
{
printf("没有查到要删除的通讯者!\n");
return;
}
printf("真的要删除改结点吗?(y/n):\n");
scanf("%s",&temp);
if(temp=='y'||temp=='Y')
{
q=head;
while(q!=NULL && q->next!=p)//此循环的含义是将q的指针域赋给p
q=q->next;
q->next=p->next;//删除结点 这里为什么不能用p=p->next
free(p);//释放被删除的节点空间
printf("通讯者已被删除!\n");
}
}
//通讯录链表的输出函数
void PrintList(LinkList head)
{
ListNode *p;
p=head->next;//因为链表带头结点,使p指向链表开始结点

printf(" 姓名 地址 电话 邮 箱 QQ 邮编 \n");
printf("-------------------------------------------------------------------------\n");
/*if((fp=fopen("d://record.txt","r+"))==NULL) //打开文件,并判断打开是否正常
{
printf("打开文件失败!!\n");//没打开
exit(0); //退出
}
while(feof(fp)==0)
{
fscanf(fp,"%15s%20s%15s%30s%10s%10s",p->data.telenub, p->data.name ,p->data.city ,p->data.email,p->data.qq,p->data.youbian);
printf("%15s,%20s,%15s,%30s,%10s,%10s",p->data.telenub, p->data.name ,p->data.city ,p->data.email,p->data.qq,p->data.youbian);
}
fclose(fp);*/
while(p!=NULL)
{
printf("%10s%10s%13s%15s%13s%12s\n",p->data.name,p->data.city,p->data.telenub,p->data.email,p->data.qq,p->data.youbian);
printf("-------------------------------------------------------------------------\n");
p=p->next;//后移一个结点
}
}
void myprint() /* 显示菜单界面 */
{
printf("\n\n");
printf(" |--------------------------------|\n");
printf(" |★☆欢迎进入通讯录管路系统☆★ |\n");
printf(" |--------------------------------|\n");
printf(" | 请输入选项编号(0-5): |\n");
printf(" |--------------------------------|\n");
printf(" | 1--创建通讯录链表 |\n");
printf(" | 2--好友结点的添加 |\n");
printf(" | 3--好友结点的查询 |\n");
printf(" | 4--好友结点的删除 |——————\n");
printf(" | 5--输出通讯录链表 |08信工一班 |\n");
printf(" | 0--退出 | 谭鹏 |\n");
printf(" |--------------------------------|——————\n");
printf("\n\n\n");
}
void main()
{
char choose,yes_no;

do
{
myprint(); /* 显示主菜单 */
printf("\t");
choose=getch();
switch(choose)
{
case '1':printf("********************************************************************\n");
printf("\t\t* 通 讯 录 链 表 的 建 立 *\n ");
printf("\t********************************************************************\n");
head=CreateList(); break; /* 创建 */
case '2':
printf("****************************************************************\n");
printf("\t\t* 通 讯 录 链 表 的 添 加 *\n ");
printf("\t ****************************************************************\n");
printf("\t姓名 地址 电话 邮 箱 QQ 邮编 \n");
printf("\t*******************************************************************\n");
p=(ListNode *)malloc(sizeof(ListNode));//申请新结点
scanf("%s%s%s%s%s%s",p->data.name ,p->data.city ,p->data.telenub ,p->data.email,p->data.qq,p->data.youbian );
if((fp=fopen("tianjia.txt","w+"))==NULL) //打开文件,并判断打开是否正常
{
printf("打开文件失败!!\n");//没打开
exit(0); //退出
}
fprintf(fp,"%-15s%-20s%-15s%-20s%-10s%-12s\n","姓名","城市","电话","邮箱","QQ","邮编" );
InsertNode(head,p);
fprintf(fp,"%-15s%-20s%-15s%-20s%-10s%-12s\n",p->data.name ,p->data.city ,p->data.telenub ,p->data.email,p->data.qq,p->data.youbian );
fclose(fp);

printf("\t\t\t结点添加完毕!");
break; /* 添加 */
case '3':
printf("************************************************************\n");
printf("\t* 好 友 信 息 的 查 询 *\n ");

p=ListFind(head);
if(p!=NULL){
printf(" 姓名 地址 电话 邮 箱 QQ 邮编 \n");
printf("*************************************************************************\n");
printf("%10s%10s%13s%15s%13s%10s\n",p->data.name,p->data.city,p->data.telenub,p->data.email,p->data.qq,p->data.youbian);
printf("*************************************************************************\n");
}
else
printf("没有查到要查询的好友!");
break; /* 查询 */
case '4':
printf("************************************************************\n");
printf("* 好 友 信 息 的 删 除 *\n ");
printf("************************************************************\n");

DelNode(head);//删除结点
break; /* 删除 */
case '5':
printf("************************************************************\n");
printf("\t\t* 显 示 所 有 好 友 信 息 *\n ");
printf("\t ************************************************************\n");
PrintList(head); break; /* 显示 */
case '0': break;
default:printf("\n %c为非法选项!\n",choose);
}
if(choose=='0')
break;
printf("\n 按Y键回主目录:\n\n\n");
do
{
yes_no=getch();
}while(yes_no!='Y'&&yes_no!='y');

}while(yes_no!='Y'||yes_no!='y');

}

Ⅶ 怎样用汇编实现简单电话簿程序设计

没人帮我出点子,不过我的课程设计已枣李经做纯岩哗玩了。我自己把答案附上来,给需要的朋友一点帮助。
stack segment stack
dw 512 p(?)
stack ends

data segment
titlestr db 'Welcome to telephone directory!',0dh,0ah,'Enter your choice please!',0dh,0ah,'$'
menustr db '1:Select',0dh,0ah,'2:Insert',0dh,0ah,'3:Modify',0dh,0ah,'4:Delete',0dh,0ah,'5:Show all record',0dh,0ah,'8:Esc',0dh,0ah,'$'

namelist db 20 p(20 p(0))
telelist db 20 p(20 p(0))
newname db 20 p(0)
newtele db 20 p(0)
cnt db 1 p(0)
cntselect db 1 p(0)
choice db 1 p(0)

enter db 0dh,0ah,'$'

disname db 'Name:$'
distele db 'Tele:$'

backstr db 'Key 6 to main menu!'做行,0dh,0ah,'$'

disstr db 'All record!',0dh,0ah,'$'

selstr1 db '1:Select by name',0dh,0ah,'2:Select by telephone',0dh,0ah,'$'
selstr2 db 'The imformation!',0dh,0ah,'$'
selstr3 db 'Name is not exist!',0dh,0ah,'$'
selstr4 db 'Telephone is not exist!',0dh,0ah,'$'
selstr5 db 'Telephone directory is empty!',0dh,0ah,'$'

addstr1 db 'Input the newname and newtele!',0dh,0ah,'$'
addstr2 db 'Telephone directory is full!',0dh,0ah,'$'
addstr3 db 'Add successfully!',0dh,0ah,'$'

modstr1 db 'Newname:$'
modstr2 db 'Newtele:$'
modstr3 db 'Input new record!',0dh,0ah,'$'
modstr4 db 'Modified successfully!',0dh,0ah,'$'

delstr1 db 'Telephone directory is empty!',0d,0ah,'$'
delstr2 db 'Deleted successfully!',0dh,0ah,'$'

name1 db 'aaaaaaaaa$'
name2 db 'bbbbbbbbb$'
name3 db 'ccccccccc$'
name4 db 'ddddddddd$'
name5 db 'eeeeeeeee$'

telephone1 db '11111111111$'
telephone2 db '22222222222$'
telephone3 db '33333333333$'
telephone4 db '44444444444$'
telephone5 db '55555555555$'

data ends
code segment
main proc far
assume cs:code,ds:data

displaytitle proc near
lea dx,titlestr
mov ah,9
int 21h
lea dx,menustr
int 21h
ret
displaytitle endp

cshdata proc near
mov bx,0

lea si,name1
lea di,namelist
add di,bx
mov cx,20
cshname11:
mov al,[si]
mov [di],al
inc si
inc di
cmp al,'$'
jz cshname12
loop cshname11
cshname12:
add bx,20

lea si,name2
lea di,namelist
add di,bx
mov cx,20
cshname21:
mov al,[si]
mov [di],al
inc si
inc di
cmp al,'$'
jz cshname22
loop cshname21
cshname22:
add bx,20

lea si,name3
lea di,namelist
add di,bx
mov cx,20
cshname31:
mov al,[si]
mov [di],al
inc si
inc di
cmp al,'$'
jz cshname32
loop cshname31
cshname32:
add bx,20

lea si,name4
lea di,namelist
add di,bx
mov cx,20
cshname41:
mov al,[si]
mov [di],al
inc si
inc di
cmp al,'$'
jz cshname42
loop cshname41
cshname42:
add bx,20

lea si,name5
lea di,namelist
add di,bx
mov cx,20
cshname51:
mov al,[si]
mov [di],al
inc si
inc di
cmp al,'$'
jz cshname52
loop cshname51
cshname52:
add bx,20

mov ax,bx ;初始化计数器cnt
mov bl,20
div bl
lea si,cnt
mov [si],al

mov bx,0

lea si,telephone1
lea di,telelist
add di,bx
mov cx,20
cshtele11:
mov al,[si]
mov [di],al
inc si
inc di
cmp al,'$'
jz cshtele12
loop cshtele11
cshtele12:
add bx,20

lea si,telephone2
lea di,telelist
add di,bx
mov cx,20
cshtele21:
mov al,[si]
mov [di],al
inc si
inc di
cmp al,'$'
jz cshtele22
loop cshtele21
cshtele22:
add bx,20

lea si,telephone3
lea di,telelist
add di,bx
mov cx,20
cshtele31:
mov al,[si]
mov [di],al
inc si
inc di
cmp al,'$'
jz cshtele32
loop cshtele31
cshtele32:
add bx,20

lea si,telephone4
lea di,telelist
add di,bx
mov cx,20
cshtele41:
mov al,[si]
mov [di],al
inc si
inc di
cmp al,'$'
jz cshtele42
loop cshtele41
cshtele42:
add bx,20

lea si,telephone5
lea di,telelist
add di,bx
mov cx,20
cshtele51:
mov al,[si]
mov [di],al
inc si
inc di
cmp al,'$'
jz cshtele52
loop cshtele51
cshtele52:
add bx,20
ret
cshdata endp

disdata proc near

lea dx,disstr
mov ah,09h
int 21h

lea si,cnt
mov cl,[si]
mov bx,0

disdata1:
lea dx,disname
mov ah,09h
int 21h

lea dx,namelist
add dx,bx
mov ah,09h
int 21h

lea dx,enter
mov ah,09h
int 21h

lea dx,distele
mov ah,09h
int 21h

lea dx,telelist
add dx,bx
mov ah,09h
int 21h

lea dx,enter
mov ah,09h
int 21h

add bx,20
loop disdata1

ret
disdata endp

adder proc near

lea si,cnt ;判断电话簿是否已满
mov al,[si]
cmp al,20
jb adder5

lea dx,addstr2
mov ah,09h
int 21h
jmp adder6

adder5: lea dx,addstr1
mov ah,09h
int 21h

lea dx,disname
mov ah,09h
int 21h

mov cl,19
lea si,newname
adder1: mov ah,01h
int 21h

cmp al,0dh
je adder2

mov [si],al
inc si
loop adder1

adder2: mov al,24h
mov [si],al

lea si,cnt ;计算目的地址的偏移量
mov bl,[si]
xor ax,ax
mov al,20
mul bl

lea si,newname
lea di,namelist
add di,ax
mov cx,20
cld
rep movsb

lea dx,enter
mov ah,09h
int 21h

lea dx,distele
mov ah,09h
int 21h

mov cl,19
lea si,newtele
adder3: mov ah,01h
int 21h

cmp al,0dh
je adder4

mov [si],al
inc si
loop adder3

adder4: mov al,24h
mov [si],al

lea si,cnt
mov bl,[si]
xor ax,ax
mov al,20
mul bl

lea si,newtele
lea di,telelist
add di,ax
mov cx,20
cld
rep movsb

lea dx,enter
mov ah,09h
int 21h

lea si,cnt ;计数器加1
mov al,[si]
inc al
mov [si],al

lea dx,addstr3
mov ah,09h
int 21h

lea si,newname
mov cx,20
adder7:
mov al,0
mov [si],al
inc si
loop adder7

lea si,newtele
mov cx,20
adder8:
mov al,0
mov [si],al
inc si
loop adder8

adder6: ret
adder endp

selbyname proc near

lea si,cnt
mov al,[si]
cmp al,0
ja selname6

lea dx,selstr5
mov ah,09h
int 21h
jmp selname5

selname6:
lea dx,disname
mov ah,09h
int 21h

lea si,newname
mov cx,19
selname1:
mov ah,01h
int 21h

cmp al,0dh
je selname2
mov [si],al
inc si
loop selname1

selname2:
mov al,24h
mov [si],al

lea dx,enter
mov ah,09h
int 21h

lea si,cnt ;设置循环次数
mov dx,[si]

mov bx,0

selname3:
lea si,newname
lea di,namelist
add di,bx
mov cx,20
cld
repe cmpsb
jz selname4

add bx,20
dec dx
cmp dx,0
jnz selname3

lea dx,selstr3 ;记录不存在
mov ah,09h
int 21h

jmp selname5

selname4:
lea dx,selstr2 ;存在
mov ah,09h
int 21h

lea dx,disname
mov ah,09h
int 21h

lea dx,namelist
add dx,bx
mov ah,09h
int 21h

lea dx,enter
mov ah,09h
int 21h

lea dx,distele
mov ah,09h
int 21h

lea dx,telelist
add dx,bx
mov ah,09h
int 21h

lea dx,enter
mov ah,09h
int 21h

mov ax,bx ;计算器记录查询到的是第几个
mov bl,20
div bl
inc al
lea si,cntselect
mov [si],al

selname5:

lea si,newname
mov cx,20
selname7:
mov al,0
mov [si],al
inc si
loop selname7
ret
selbyname endp

selbytele proc near

lea si,cnt
mov al,[si]
cmp al,0
ja seltele6

lea dx,selstr5
mov ah,09h
int 21h
jmp seltele5

seltele6:

lea dx,distele
mov ah,09h
int 21h

lea si,newtele
mov cx,19
seltele1:
mov ah,01h
int 21h

cmp al,0dh
je seltele2
mov [si],al
inc si
loop seltele1

seltele2:
mov al,24h
mov [si],al

lea dx,enter
mov ah,09h
int 21h

lea si,cnt ;设置循环次数
mov dx,[si]

mov bx,0

seltele3:
lea si,newtele
lea di,telelist
add di,bx
mov cx,20
cld
repe cmpsb
jz seltele4

add bx,20
dec dx
cmp dx,0
jnz seltele3

lea dx,selstr4 ;记录不存在
mov ah,09h
int 21h

jmp seltele5

seltele4:
lea dx,selstr2 ;存在
mov ah,09h
int 21h

lea dx,disname
mov ah,09h
int 21h

lea dx,namelist
add dx,bx
mov ah,09h
int 21h

lea dx,enter
mov ah,09h
int 21h

lea dx,distele
mov ah,09h
int 21h

lea dx,telelist
add dx,bx
mov ah,09h
int 21h

lea dx,enter
mov ah,09h
int 21h

seltele5:

lea si,newname
mov cx,20
seltele7:
mov al,0
mov [si],al
inc si
loop seltele7
ret
selbytele endp

select proc near
select1:
lea dx,selstr1
mov ah,09h
int 21h

mov ah,01h
int 21h
cmp al,'1'
jz select2
cmp al,'2'
jz select3
jmp select1

select2:
call clear
call selbyname
jmp select4

select3:
call clear
call selbytele
select4: ret
select endp

modify proc near

call selbyname

lea si,cntselect
mov al,[si]
cmp al,0
jz modify5

lea dx,modstr3
mov ah,09h
int 21h

lea dx,modstr1
mov ah,09h
int 21h

lea si,newname
mov cx,20

modify1:
mov ah,01h
int 21h

cmp al,0dh
jz modify2
mov [si],al
inc si
loop modify1

modify2:
mov al,24h
mov [si],al

lea dx,enter
mov ah,09h
int 21h
jmp modify6
modify5:
jmp modify7
modify6:
lea dx,modstr2
mov ah,09h
int 21h

lea si,newtele
mov cx,20

modify3:
mov ah,01h
int 21h

cmp al,0dh
jz modify4
mov [si],al
inc si
loop modify3

modify4:
mov al,24h
mov [si],al

lea dx,enter
mov ah,09h
int 21h

lea si,cntselect ;计算被修改数据的偏移量ax
mov al,[si]
dec al
mov bl,20
mul bl

lea si,newname ;把新名字拷入
lea di,namelist
add di,ax
mov cx,20
cld
rep movsb

lea si,newtele ;把新号码拷入
lea di,telelist
add di,ax
mov cx,20
cld
rep movsb

lea si,cntselect ;计数器清0
mov ax,0
mov [si],ax

lea dx,modstr4
mov ah,09h
int 21h

modify7:
lea si,newname
mov cx,20
modify8:
mov al,0
mov [si],al
inc si
loop modify8

lea si,newname
mov cx,20
modify9:
mov al,0
mov [si],al
inc si
loop modify9
ret
modify endp

delete proc near

lea si,cnt
mov al,[si]
cmp al,0
ja delete1

lea dx,delstr1
mov ah,09h
int 21h
jmp delete2

delete1:
call selbyname
lea si,cntselect
mov al,[si]
cmp al,0
jz delete1

lea si,cntselect ;计算要删除数据的偏移量bx
mov cl,[si]
dec cl
mov al,20
mul cl
mov bx,ax

lea si,cnt ;计算最后一个数据的偏移量dx
mov cl,[si]
dec cl
mov al,20
mul cl
mov dx,ax

lea si,namelist
lea di,namelist
add si,dx
add di,bx
mov cx,20
cld
rep movsb

lea si,telelist
lea di,telelist
add si,dx
add di,bx
mov cx,20
cld
rep movsb

lea si,cnt ;计数器减1
mov al,[si]
dec al
mov [si],al

lea si,cntselect ;cntselect清零
mov al,0
mov [si],al

lea dx,delstr2
mov ah,09h
int 21h

delete2: ret
delete endp

clear proc near
mov ah,0fh
int 10h
mov ah,0
int 10h
ret
clear endp

start:
mov ax,data
mov ds,ax
mov es,ax
call cshdata
menu1:
call clear
call displaytitle

mov ah,01h
int 21h

cmp al,'1'
jz sel
cmp al,'2'
jz adde
cmp al,'3'
jz modi
cmp al,'4'
jz del
cmp al,'5'
jz dis
cmp al,'8'
jz out1
jmp menu1
sel:
call clear
call select
jmp back
adde:
call clear
call adder
jmp back
modi:
call clear
call modify
jmp back
del:
call clear
call delete
jmp back
dis:
call clear
call disdata
back:
lea dx,backstr ;返回主菜单提示语“Please enter 6 to bace main menu!”
mov ah,09h
int 21h

mov ah,01h
int 21h

lea si,choice
mov [si],al

cmp al,'6'
jz menu1 ;输入6,返回主菜单
call clear
jmp back
out1:
main endp ;主函数结束
code ends
end start

阅读全文

与用什么编程语言能找到别人手机号相关的资料

热点内容
java类类型 浏览:971
拼多多关键词数据怎么下载 浏览:867
哪个app可以买火影忍者号 浏览:524
2012r2添加数据库引擎 浏览:549
贷款app如何注销 浏览:966
懒人版本lol 浏览:195
ipad怎么新建文件夹 浏览:697
wps文字密码暴力破解软件 浏览:68
51单片机ds1302程序 浏览:973
学编程方面需要哪些优势 浏览:675
电脑太大的文件怎么上传微信 浏览:514
索尼lt26ixperias刷机教程 浏览:246
win10uefi文件下载 浏览:713
显示文件大小的软件 浏览:194
最早的soul聊天app是怎么样的 浏览:489
网络云盘大小 浏览:420
去美国准备什么app 浏览:461
米8如何复制u盘文件 浏览:523
导航的o文件是什么 浏览:435
Re旧版本下载 浏览:416

友情链接