通讯录的设计Word格式文档下载.docx
《通讯录的设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《通讯录的设计Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。
完成按姓名删除通讯信息应提供一个界面来调用各个功能调用界面和各个功能的操作界面应尽可能清晰美观!
四.问题分析:
此程序主要运用到了文本文件的打开和读取,文件中存取信息的格式为结构体数组,一个主函数下面分为六个子函数,用户可在汉语的提醒下进行有关操作,此程序运行的前提是必须首先在编译器的子文件中建立一个文本文件,则可以在运行程序的过程中对这个文本文件进行相关读取。
读取文件是通过(fp=fopen(filename”w”))==NULL等语句来完成,文件内数据的位置是有主函数中定义的指针fp来找的,在此函数中还用到了循环语句while在加上(!
feof(fp))语句用于查找文件中的数据。
此程序没用到链表,故语言简单,但用文件的方法来创建一个通讯录有其不足之处,在总结中将一一说明。
1,段定义(segment)
1)代码段(datasegment)
变量的定义和预置:
datasegment
〈学生通讯录界面信息变量〉
〈出错信息变量〉
〈变量
结构体定义(studentstruc)
studentstruc
numdb00
namedb15dup(?
)
addressdb50dup(?
studentends
宏定义(名字macro
.......
endm)
showmacroaddress;
界面显示
light_m1macroa;
光标位置
light_m2macro
light_m3macro
clearmacro;
当前显示页面上滚
clear1macro
clear2macro
again_1macro;
空格
newlinemacro;
换行
show_itemmacroaddress;
显示信息
localnext1next2
getinmacroaddresscount;
读入信息
locallp1lp2input_endexit
2)数据段定义
codesegment
mainprocfar
assumecs:
codeds:
dataes:
data
3)start
start:
movaxdata
movdsax
movah0
moval3
int10h
通讯录界面(show)
选择操作:
添加(i)
删除(d)
查询(q)
列表(排序)(l)
退出(e)
具体操作:
insertprocnear;
插入
queryprocnear;
查询
deleteprocnear;
删除
listprocnear;
游览列表
4)codeends;
程序结束
endstart
五.总体设计:
⑴数据结构
依据给定的通讯录信息和数据格式,链表结点必须用结构实现。
结构类型的层次结构:
typedefstruct/*定义数据结构*/
);
charname[20];
/*姓名*/
charsex[20];
/*性别*/
charage[20];
/*年龄*/
charnumber;
/*学号*/
charunits[20];
/*单位*/
chartele[12];
/*电话*/
charqq[10];
/*qq号码*
charE_Mail;
/*邮箱*/
}
⑵模块划分
主函数
main()
输入记录
enter(ADDRESSt[]);
显示记录
voidlist(ADDRESSt[]intn);
按姓名查找显示记录
voidsearch(ADDRESSt[]intn);
删除记录
intdelete(ADDRESSt[]intn);
插入记录
intadd(ADDRESSt[]intn);
记录保存为文件
voidsave(ADDRESSt[]intn);
/
从文件中读记录
intload(ADDRESSt[]);
按序号查找显示记录
voiddisplay(ADDRESSt[]);
按姓名排序
voidsort(ADDRESSt[]intn);
快速查找记录
voidqseek(ADDRESSt[]intn);
文件复制
voidcopy();
显示单条记录
voidprint(ADDRESStemp);
查找函数
intfind(ADDRESSt[]intnchar*s);
主菜单函数
intmenu_select();
⑶程序总体框架
六.编写源代码:
源程序代码:
#include"
conio.h"
stdio.h"
stdlib.h"
string.h"
ctype.h"
#defineM50
typedefstruct
{
charname[15];
charsex[4];
charage[4];
charnumber[20];
charunits[15];
chartele[20];
charqq[15];
charE_Mail[10];
ADDRESS;
intenter(ADDRESSt[]);
intfind(ADDRESSt[],intn,char*s);
inti;
ADDRESSadr[M];
intlength;
clrscr();
while
(1)
switch(menu_select())
case0:
length=enter(adr);
break;
case1:
list(adrlength);
case2:
search(adrlength);
case3:
length=delete(adrlength);
case4:
length=add(adrlength);
break;
case5:
save(adrlength);
case6:
length=load(adr);
case7:
display(adr);
case8:
sort(adrlength);
case9:
qseek(adrlength);
case10:
copy();
case11:
exit(0);
menu_select()
chars[80];
intc;
textbackground(15);
textcolor
(2);
gotoxy(2612);
cprintf("
DZ0503Names"
gotoxy(2514);
YichengZhang"
textcolor(4);
gotoxy(125);
pressanykeyentermenu......\n"
getch();
gotoxy(11);
****************DZ0503Names*******************\n\n"
printf("
"
0.Enterrecord\n"
1.Listthefile\n"
2.Searchrecordonname\n"
3.Deletearecord\n"
4.addrecord\n"
5.Savethefile\n"
6.Loadthefile\n"
7.displayrecordonorder\n"
8.sorttomakenewfile\n"
9.Quickseekrecord\n"
10.copythefiletonewfile\n"
11.Exit\n"
**********************************************\n"
do{
\nEnteryouchoice(0~11):
"
scanf("
%s"
s);
c=atoi(s);
}while(c11);
returnc;
intenter(ADDRESSt[])
intin;
char*s;
\npleaseinputnum\n"
%d"
&
n);
pleaseinputrecord\n"
\n\n*******************DZ0503NamesAddress******************\n"
\n\t\name:
\n\tex:
\n\t\age:
\n\t\number:
\n\t\units:
\n\t\tele:
\n\t\qq:
\n\t\E_Mail:
------------------------------------------------\n"
voidlist(ADDRESSt[]intn)
name\n"
sex\n"
age\n"
number\n"
units\n"
tele\n"
qq\n"
E_Mail\n"
returnn;
Pressanykeycontinue...\n"
************************end*******************\n"
voidsearch(ADDRESSt[]intn)
chars[20];
pleasesearchname\n"
i=find(tns);
if(i>
n-1)
notfound\n"
else
print(t[i]);
voidprint(ADDRESStemp)
\n\n********************************************\n"
%-20s%-30s%-10s\n"
temp.name);