c语言小型的通讯录系统Word下载.docx
- 文档编号:19168683
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:20
- 大小:78.08KB
c语言小型的通讯录系统Word下载.docx
《c语言小型的通讯录系统Word下载.docx》由会员分享,可在线阅读,更多相关《c语言小型的通讯录系统Word下载.docx(20页珍藏版)》请在冰豆网上搜索。
8.dele()函数该函数是对structaddress型结构体数组实现按姓名进行删除的操作。
9.input()函数该函数是入数据的函数,他实现一次输入N条通讯簿数据。
10.save()函数该函数是对经过修改,删除等操作后进行保存的函数。
11.read()函数该函数是将文件中的数据存储到structaddress型结构体数组中
12.display()函数该函数是structaddress型结构体数组中显示全部数据
13.print()函数该函数是显示指定的structaddress型结构体数组中的一条数据
14.modify()函数该函数是对structaddress型结构体数组中的数据按序号进行修改操作
15.add()函数该函数是增加一条通讯簿数据
(4)程序模块间的调用关系:
1.Main()函数直接调用的函数:
read(),menu(),sort(),display(),input();
modify()search(),dele()add(),save()
2.Sort()函数直接调用的函数:
sort_name(),sort_city()
3.Search()函数直接调用的函数:
search_name(),search_city()
4.search_name()函数直接调用的函数:
sort_name()
5.search_city()函数直接调用的函数:
sort_city()
6.Dele()函数直接调用的函数:
print()
7.Input()函数直接调用的函数:
无
8.Save()函数直接调用的函数:
9.Read()函数直接调用的函数:
10.Display()函数直接调用的函数:
11.print()函数直接调用的函数:
12.modify()函数直接调用的函数:
13.Add()函数直接调用的函数:
14.menu()函数直接调用的函数:
③算法改进思想:
可以在程序中采用链表作为数据结构体数组,这样可以降低对内存浪费,提高运算效率。
还可以将read()函数和save()函数进行一些修改使通讯簿可以对不同的檔进行操作.
④使用说明
(1)程序在将文件中的数据读取到数组中等待处理,按任意键进入通讯簿。
(2)通讯簿的主菜单接口,进行选择可以进行不同的操作。
(3)输入1后,进入排序的子菜单操作接口。
(4)输入2后,显示通讯簿中的所有内容。
(5)输入3后,可以输入新的通讯簿内容操作接口。
(6)输入4后,可以进入修改通讯簿内容。
(7)输入5后,进入查找的子菜单操作接口。
(8)输入6后,可以删除的通讯簿内容
(9)输入7后,可以增加一条通讯簿内容。
⑤测试结果
输入结束后的保存到檔中的结果:
3
zhoukunjinlin6258741
wuzhenchangchun6874521
wangyaotianjian3987456
⑥注释源程序代码;
#include"
stdio.h"
//I/O函数
stdlib.h"
//标准库函数
string.h"
//字符串函数
ctype.h"
//字符操作函数
conio.h"
#defineM100//定义常数表示记录数
{charname[20];
FILE*fp;
//以下是函数原型
voidsort(structaddresst[],intn);
//排序主函数
voidsort_name(structaddresst[],intn);
//按姓名排序
voidsort_city(structaddresst[],intn);
voidsearch(structaddresst[],intn);
//查找的主函数
voidsearch_name(structaddresst[],intn);
//按姓名查找记录
voidsearch_city(structaddresst[],intn);
//按城市查找记录
intdele(structaddresst[],intn);
//删除记录
intinput(structaddresst[]);
//输入记录
voidsave(structaddresst[],intn);
//记录保存为文件
intread(structaddresst[]);
//从文件中读记录
voiddisplay(structaddresst[],intn);
//显示记录
voidprint(structaddresstemp);
//显示单条记录
voidmodify(structaddresst[],intn);
//修改记录
intadd(structaddresst[],intn);
//添加记录
//voidcopy();
//檔复制
intmenu();
//主菜单函数
//--主函数
main()
{inti;
structaddressadr[M];
//定义结构体数组
intlength;
gotoxy(1,25);
//将游标定为在第25行,第1列
clrscr();
//清屏
printf("
pressanykeyentermenu......\n"
);
//提示按任意键继续
printf("
****************************************************************\n"
read(adr);
getch();
//读入任意字符
for(;
;
)//无限循环
{switch(menu())//调用主菜单函数,返回值整数作开关语句的条件
{case'
1'
:
sort(adr,length);
break;
//排序
case'
2'
display(adr,length);
3'
length=input(adr);
4'
modify(adr,length);
case'
5'
search(adr,length);
//查找记录
6'
length=dele(adr,length);
//删除记录
7'
length=add(adr,length);
8'
exit(0);
//程序结束
}
save(adr,length);
}
//--显示和选择菜单函数,函数返回值为整数,代表所选的菜单项
menu()
{charc;
gotoxy(1,10);
%%****************MENU*******************%%\n"
$$1.sorttomakenewfile$$\n"
$$2.displayrecord$$\n"
$$3.inputrecord$$\n"
$$4.modifyrecord$$\n"
$$5.Searchrecord$$\n"
$$6.Deletearecord$$\n"
$$7.addnemrecord$$\n"
$$8.Quit$$\n"
$$*******************************************$$\n\n"
\nEnteryouchoice(0~9):
\n"
//提示输入选项
c=getchar();
//输入选择项
returnc;
//返回选择项,主程序根据该数调用相应的函数
//--显示指定的一条记录
voidprint(structaddresstemp)
{clrscr();
//清屏
\n\n********************************************\n"
nameunittelephone\n"
------------------------------------------------\n"
%-20s%-30s%-15s\n"
temp.name,temp.city,temp.tele);
**********************end***********************\n"
//0--读取檔中的,参数为结构体数组,函数值返回值表示记录长度
intread(structaddresst[])
{inti,n;
FILE*fp;
//指向文件的指标
if((fp=fopen("
record.txt"
"
rb"
))==NULL)//打开文件
{printf("
cannotopenfile\n"
//不能打开
return0;
//退出
fscanf(fp,"
%d"
&
n);
//读取记录数
for(i=0;
i<
n;
i++)
%20s%30s%15s"
t[i].name,t[i].city,t[i].tele);
//按格式读取记录数据
fclose(fp);
//关闭文件
returnn;
//返回记录数
//1--用于排序的主函数,参数为结构体数组和记录数
voidsort(structaddresst[],intn)
{charask;
while
(1)//无限循环,完成菜单显示
{gotoxy(1,30);
//将游标移到在第30行,第1列
clrscr();
printf("
%%****************sort*****************%%\n"
%%1---Toname%%\n"
//“按姓名排序”
%%2---TOcity%%\n"
//“按城市排序”
%%3---Quit%%\n"
//”返回上一层菜单“
%%*****************************************%%\n\n"
Pleasetochoice(1--3)\n"
ask=getchar();
switch(ask)
{case'
sort_name(t,n);
//调用按姓名排序的函数
sort_city(t,n);
//调用按城市排序的函数
return;
//返回上一层菜单
}
}
//1--1按姓名排序函数,参数为结构体数组和记录数
voidsort_name(structaddresst[],intn)
{inti,j,flag;
structaddresstemp;
//交换数据
{for(j=0;
j<
n-1;
j++)
if((strcmp(t[j].name,t[j+1].name))>
0)//比较大小
{strcpy(temp.name,t[j].name);
//交换
strcpy(temp.city,t[j].city);
strcpy(temp.tele,t[j].tele);
strcpy(t[j].name,t[j+1].name);
strcpy(t[j].city,t[j+1].city);
strcpy(t[j].tele,t[j+1].tele);
strcpy(t[j+1].name,temp.name);
strcpy(t[j+1].city,temp.city);
strcpy(t[j+1].tele,temp.tele);
sortsucess!
!
\n"
//显示排序成功
//1--2按城市排序函数,参数为结构体数组和记录数
voidsort_city(structaddresst[],intn)
if((strcmp(t[j].city,t[j+1].city))>
Pressanykeycontinue...\n"
//提示信息
//2--显示记录,参数为结构体数组和记录条数
voiddisplay(structaddresst[],intn)
charpress;
\n\n*******************ADDRESS******************\n"
if((i+1)%20==0)//判断输出是否达到20条记录
{printf("
press=getchar();
getch();
//按任意键继续
if(press!
='
\n'
)break;
************************end*******************\n"
//按任意键继续
//3--输入记录,参数为结构体数组,函数值返回值表示记录长度
intinput(structaddresst[])
char*s;
gotoxy(20,25);
\npleaseinputnum:
scanf("
//输入记录数
pleaseinputrecord\n"
//提示"
输入记录"
namecitytelephone\n"
{scanf("
%s%s%s"
//输入记录shuju
\n\n\n"
//返回记录数
//8--添加记录,参数为结构体数组和记录数,函数值返回值表示记录长度
intadd(structaddresst[],intn)
{char*s;
t[n].name,t[n].city,t[n].tele);
n++;
//4--修改记录,参数为记录数组和记录数
voidmodify(structaddresst[],intn)
{intsequence;
//序号
intask;
while
(1)//无限循环
pleasenumber:
"
//提示
scanf("
sequence);
//输入需要修改的序号
getchar();
if(sequence<
1||sequence>
n)//输入序号是否满足要求
default!
\n"
continue;
print(t[sequence-1]);
pleasemodifyaddress:
//重新输入
name:
gets(t[sequence-1].name);
city:
gets(t[sequence-1].city);
tele:
gets(t[sequence-1].tele);
Areyousuremodifyit(y/n)\n"
if(ask='
y'
)//确定是否修改
break;
return;
//5--用于查找的主函数,参数为结构体数组和记录数
voidsearch(structaddresst[],intn)
{charask;
while
(1)//以下的为了显示排序方法的菜单
{clrscr();
gotoxy(1,25);
//将游标移到第25行,第1列
%%****************search***************%%\n\n"
//“按姓名查找”
//“按城市查找”
//“返回上一层菜单”
Pleasetochoice(1--3)\n"
switch(ask)
search_name(t,n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 小型 通讯录 系统