个人通讯管理系统Word下载.docx

上传人:b****6 文档编号:21289787 上传时间:2023-01-29 格式:DOCX 页数:20 大小:209.58KB
下载 相关 举报
个人通讯管理系统Word下载.docx_第1页
第1页 / 共20页
个人通讯管理系统Word下载.docx_第2页
第2页 / 共20页
个人通讯管理系统Word下载.docx_第3页
第3页 / 共20页
个人通讯管理系统Word下载.docx_第4页
第4页 / 共20页
个人通讯管理系统Word下载.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

个人通讯管理系统Word下载.docx

《个人通讯管理系统Word下载.docx》由会员分享,可在线阅读,更多相关《个人通讯管理系统Word下载.docx(20页珍藏版)》请在冰豆网上搜索。

个人通讯管理系统Word下载.docx

查询:

查询通讯录记录

修改:

修改通讯录记录

保存:

将信息保存到文件

个人任务:

常杰:

负责程序的总体设计、编写程序,以及在vc6.0中运行程序,达到目标是:

程序能够能正常地运行。

李鑫:

负责检查运行中程序出错的位置,以及提出专业的解释和专业的解决办法。

达到目标是:

程序出错后,能够专业的解决问题。

二.总体设计

系统功能模块图:

可以添加通讯录记录,依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱后,会提示是否继续添加。

可以以表格形式输出所有通讯录里的记录

输入欲删除的那个人的名字后,会自动删除他(她)的记录内容

可以选择用姓名、电话、地址三种方式查询

输入欲修改的那个人的名字后,再依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱即可完成修改

,输入文件名(带后缀名)后,即可将通讯录信息保存到文件

运行所需环境:

win7及以下各版本windows,visual 

C++6.0。

三.详细设计

(1).通讯录:

typedefstruct

{

charscore;

/*编号*/

charname[10];

/*姓名*/

charnum[15];

/*号码*/

charemail[20];

/*邮箱*/

charage[8];

/*年龄*/

charadds[20];

/*住址*/

}Person;

voidmain()/*主函数*/

{

intn=0;

for(;

;

switch(menu_select())

{

case1:

printf("

\n\t添加记录到通讯录\n"

);

/*添加记录*/

n=Input(pe,n);

break;

case2:

\n\t\t\t通讯录记录表\n"

/*显示记录*/

Display(pe,n);

case3:

\n\t从通讯录中删除记录\n"

n=Delete_a_record(pe,n);

/*删除记录*/

\t"

system("

pause"

case4:

\n\t在通讯录中查找记录\n"

Query_a_record(pe,n);

/*查找记录*/

case5:

\n\t修改通讯录中的记录\n"

Change(pe,n);

/*修改数据*/

case6:

\n\t保存功能\n"

WritetoText(pe,n);

/*保存数据*/

case0:

\n\t\t谢谢使用,再见!

\n"

/*结束程序*/

\n\t\t"

exit(0);

}

}

四、程序运行结果与分析

1.进入系统后,出现子菜单,用户可根据需要进行操作。

2.在管理系统中选择“1”,回车运行即可执行“添加记录”操作,进入界面输入联系人的“编号、姓名、年龄、电话号码、通讯地址、电子邮箱”等信息。

如果继续添加,输入“Y”回车运行,停止添加,输入“N”回车运行。

3.完成添加联系人,返回主界面,输入“2”回车运行即可执行查看所有联系人的操作,操作执行后界面显示如下:

4.在主界面选择“3”,回车运行即可执行“删除联系人”的操作,在执行此操作中,需输入要删除的联系人的姓名,回车运行后即可完成删除联系人的操作。

如图所示

5.在主界面选择“4”,回车运行即可进入执行“查询联系人”的操作,查询方式有三种:

姓名查询、电话号码查询、地址查询。

任选一种即可查询该联系人的信息,如图所示:

6.若想修改联系人的信息,在主界面选择“5”,回车运行即可进入执行“修改联系人的信息”的操作。

执行该操作时需输入该联系人的“姓名”,回车运行后即可修改该联系人的个人信息。

如图所示:

7.完成以上联系人的建立,需要对联系人进行保存,在主界面选择“6”,回车运行即可进入执行“保存联系人”的操作,在执行中需要输入“所保存的文件名”,输入后回车运行即可完成联系人的保存。

8.完成以上的所有操作后,只有正确的退出程序,才能把本次所有操作保存下来,在主界面输入“0”后,回车运行即可退出程序,退出后会弹出“谢谢使用,再见!

”。

源程序分析:

#include<

stdio.h>

stdlib.h>

string.h>

Personpe[80];

intmenu_select()

charc;

do{

cls"

\t\t*****通讯录*****\n"

\t\t┌───────┐\n"

\t\t│1.添加记录│\n"

\t\t│2.显示记录│\n"

\t\t│3.删除记录│\n"

\t\t│4.查询记录│\n"

\t\t│5.修改记录│\n"

\t\t│6.保存记录│\n"

\t\t│0.退出程序│\n"

\t\t└───────┘\n"

\t\t请您选择(0-6):

"

c=getchar();

}while(c<

'

0'

||c>

6'

return(c-'

intInput(Personper[],intn)

{

inti=0;

charsign,x[10];

while(sign!

='

n'

&

sign!

N'

\t编号:

scanf("

\t%d"

&

per[n+i].score);

\t姓名:

\t%s"

per[n+i].name);

\t年龄:

per[n+i].age);

\t电话号码:

per[n+i].num);

\t通讯住址:

per[n+i].adds);

\t电子邮箱:

per[n+i].email);

gets(x);

\n\t是否继续添加?

(Y/N)"

\t%c"

sign);

i++;

return(n+i);

}

voidDisplay(Personper[],intn)

inti;

printf("

----------------------------------------------------------------------\n"

/*格式*/

编号姓名年龄电话号码通讯地址电子邮箱\n"

for(i=1;

i<

n+1;

i++)

%-5d%-8s%-6s%-13s%-15s%-15s\n"

per[i-1].score,per[i-1].name,per[i-1].age,per[i-1].num,per[i-1].adds,per[i-1].email);

if(i>

1&

i%10==0)

{

printf("

\t-----------------------------------\n"

system("

system("

intDelete_a_record(Personper[],intn)

chars[20];

inti=0,j;

\t请输入想删除记录中的名字:

scanf("

%s"

s);

while(strcmp(per[i].name,s)!

=0&

n)i++;

if(i==n)

{

\t通讯录中没有此人!

return(n);

for(j=i;

j<

n-1;

j++)

strcpy(per[j].num,per[j+1].num);

strcpy(per[j].name,per[j+1].name);

strcpy(per[j].age,per[j+1].age);

strcpy(per[j].adds,per[j+1].adds);

strcpy(per[j].email,per[j+1].email);

per[j].score=per[j+1].score;

\t\t\t已经成功删除!

return(n-1);

voidQuery_a_record(Personper[],intn)

intm;

\t\n请选择查询方式:

\t┌──────┐\n"

\t│1------姓名│\n"

\t│2------电话│\n"

\t│3------地址│\n"

\t│4------返回│\n"

\t└──────┘\n"

请选择:

%d"

m);

while(m!

=1&

m!

=2&

=3&

=4)

输入错误,请重新选择:

}

if(m==1)

chars[20];

inti=0;

\t请输入想查询的姓名:

while(strcmp(per[i].name,s)!

if(i==n)

return;

\t此人编号:

%d\n"

per[i].score);

\t此人年龄:

%s\n"

per[i].age);

per[i].num);

\t通讯地址:

per[i].adds);

per[i].email);

};

if(m==2)

\t请输入想查询的电话:

while(strcmp(per[i].num,s)!

\t此人姓名:

per[i].name);

if(m==3)

\t请输入想查询的地址:

while(strcmp(per[i].adds,s)!

}

voidChange(Personper[],intn)

\t请输入想修改的记录中的名字:

return;

per[i].score);

\t修改成功!

voidWritetoText(Personper[],intn)

FILE*fp;

/*定义文件指针*/

charfilename[20];

/*定义文件名*/

\t保存到文件\n"

/*输入文件名*/

\t请输入所保存的文件名:

filename);

if((fp=fopen(filename,"

w"

))==NULL)

\t无法打开文件\n"

fprintf(fp,"

******************************************通讯录******************************************\n"

------------------------------------------------------------------------------------------\n"

while(i<

n)

fprintf(fp,"

%-3d\t%-6s\t%-3s\t%-13s\t%-20s\t%-20s\n"

per[i].score,per[i].name,per[i].age,per[i].num,per[i].adds,per[i].email);

***************************************共有%d条记录****************************************\n"

n);

fclose(fp);

/*关闭文件*/

保存成功!

/*添加记录*/

/*显示记录*/

/*删除记录*/

/*查找记录*/

/*保存数据*/

/*结束程序*/

五、结论与心得

关键问题:

1、输入数据时,输错了数据的类型会造成错误提示,因此输入时需要注意。

2、一开始主界面输入非正确数字时,没有错误提示。

容易造成用户误解,陷入死循环。

如下图所示:

解决方案:

1.使用继承减少重复代码;

使用多态性统一通讯协议,使程序易于维护;

体现数据抽象和封装;

体现数据访问属性和继承属性。

2.实现说明。

能够使用构造的类层次创建和使用对象,并能实现以上各基本要求。

3.主要是运用到类和对象,还有带参数的构造函数以及析构函数以及数组来实现本程序,并在主函数对各个功能模块就行调用。

4.在输入关键词时,要注意不能输入错误信息,避免造成系统的不必要的错误。

本次程序设计由我和李鑫两人完成,具体分工如下:

我担当本次程序的总体设计、程序运行测试和分析,在设计程序的时候,遇到很多字符输入错误,以及函数调用不当,造成程序无法继续运行,通过这次的课程设计,让我们充分的感觉到了要自己设计一个程序是多么的困难,以及学好程序设计对我们计算机专业的学生来说是多么的重要。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 生产经营管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1