您的当前位置:首页正文

c++通讯录程序设计

2020-04-18 来源:爱go旅游网
阅读使人充实,会谈使人敏捷,写作使人精确。——培根

C++程序设计课程设计报告

——通讯录管理系统

班级:1120551 学号:03 姓名:

学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹

阅读使人充实,会谈使人敏捷,写作使人精确。——培根

一 课程设计题目与要求

1.1题目

通讯录管理系统 1.2系统功能要求: (1)录入通讯录 (2)修改通讯录

(3)查询通讯录(可按姓名、电话、联系人类别查询) (4)删除通讯录

(5)按姓名对通讯录进行排序

学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹

阅读使人充实,会谈使人敏捷,写作使人精确。——培根

一 课程设计题目与要求

1.1题目

通讯录管理系统 1.2系统功能要求: (1)录入通讯录 (2)修改通讯录

(3)查询通讯录(可按姓名、电话、联系人类别查询) (4)删除通讯录

(5)按姓名对通讯录进行排序

学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹

阅读使人充实,会谈使人敏捷,写作使人精确。——培根

二 需求分析

2.1问题描述

根据需求,该系统所应包含的信息有以下一些:

通讯录的基本信息: 姓名、地址、电话

根据需求,该系统所应实现的功能有以下一些: 各种基本数据的录入。如:通讯录基本信息录入。

各种基本数据的修改。即:允许对已经录入的数据重新进行编辑、修改。例

如修改通讯录中张三的电话信息

各种基本数据的删除。例如将张三的信息从通讯录中删除

基于各种数据的查询。例如输入张三姓名,查询张三的电话和地址。

数据导出:将通讯录中信息导出到指定文件。 数据导入:从指定文件导入通讯录信息到。

2.2系统环境

采用C++语言实现,开发环境为VC++6.0,可以运行在操作系统windows98

及以上皆可。 2.3运行要求

能不受限制的录入通讯录信息

界面友好,操作方便,例如删除前需要提示用户是否删除

学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹

阅读使人充实,会谈使人敏捷,写作使人精确。——培根

三 概要设计

3.1系统流程设计

根据系统要求,设计如下的系统流程。

菜单显示用户输入操作退出判断用户选择的操作执行相应的操作退出 3.2系统模块设计

根据系统的功能设计,如下模块

学生通讯录主界面显示功能选择通讯录信息录入通讯录信息修改通讯录信息查询通讯录信息导入通讯录信息导出通讯录信息删除 1.主界面模块:完成系统菜单的显示

2.功能选择模块:根据用户的选择,完成其相应的功能

(1)通讯录信息录入:完成用户从界面输入通讯录,保存入系统的功能 (2)通讯录信息修改:完成用户从界面输入通讯录,在系统中查询定位,

并将录入的数据保存入系统的功能

(3)通讯录信息查询:完成用户从界面输入查询条件,在系统查询符合条

件的通讯录信息,并在界面上显示的功能。

(4)通讯录信息导入:完成用户从界面输入需要导入的文件路径名称,读

学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹

阅读使人充实,会谈使人敏捷,写作使人精确。——培根

取该文件的内容,保存入系统,并在界面上显示导入内容的功能。 (5)通讯录信息导出:完成用户从界面输入需要导出的文件路径名称,将

系统中通讯录信息保存入文件中。

(6)通讯录信息删除:完成用户从界面输入需要的通讯录信息的姓名,并

将其从系统中删除。

学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹

阅读使人充实,会谈使人敏捷,写作使人精确。——培根

四 详细设计

4.1数据结构设计

根据系统要求,系统中需要保存的数据有通讯录的信息,其结构如下: 数据项名称 数据项系统表示 数据类型 数据长度 备注 姓名 name 字符串 20 地址 address 字符串 100 电话 tele 字符串 20 4.2界面设计 1.主界面:

根据系统要求,设计一个字符界面,显示系统的菜单,为了体现友好性,将在每个菜单前显示该菜单项对应的数字用户输入菜单项前面的数字,主菜单消失,进入该模块的相应界面,进行相应的操作,完成后,回到主界面。

2.输入界面:

在光标下输入通讯录的信息,用空格将信息隔开

3.修改界面:

首先输入通讯录的姓名,显示该通讯录的详细信息,输入修改后的信息,将

原来信息修改。

学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹

阅读使人充实,会谈使人敏捷,写作使人精确。——培根

4.删除界面:

输入需要删除的姓名,将其从通讯录中删除

5.导出界面:

输入需要导出的文件路径,将通讯录信息导出到文件。

6.列表显示页面:

将通讯录中所有记录显示,每页显示10条

7.导入页面: 相关功能的整合 8.查询界面: 相关功能的整合 4.3模块实现 1.主界面实现:

调用cout函数,在屏幕上打印需要显示的字符信息,需要在显示之前调用

system(“cls”)函数将前面的界面清空。

学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹

阅读使人充实,会谈使人敏捷,写作使人精确。——培根

对应的实现函数menu_show(); 2.功能选择模块实现:

接受从键盘输入的菜单选择,判断并调用相应的功能函数,完成其对应的功

能。实现功能选择。

对应的函数:menu_select(); (1)通讯录信息录入模块实现:

模块说明:从键盘接收输入的通讯录信息,在动态存储区中创建通讯录的节

点,遍历链表,将其插入到通讯录链表的最后位置。

模块流程:

清屏遍历链表找到最后一个节点创建一个新节点从键盘给新节点赋值将新节点连接到链表的最后一个节点上 对应函数:add(struct phone * head) (2)通讯录信息修改模块实现:

模块说明:从键盘接收输入的需要修改通讯录的姓名,遍历链表,判断节点的姓名是否输入的姓名相等,如果相等,从键盘输入修改后的信息,保存在该节点中,改变标识变量,最后判断标识变量判断是否在链表中找到该姓名的通讯录。

模块流程:

对应函数:update(struct phone * head)

(3)通讯录信息删除模块实现:

学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹

阅读使人充实,会谈使人敏捷,写作使人精确。——培根

模块说明:从键盘接收输入的需要删除通讯录的姓名,遍历链表,判断节点的姓名是否输入的姓名相等,如果相等,从键盘输入删除后的信息,保存在该节点中,改变标识变量,最后判断标识变量判断是否在链表中找到该姓名的通讯录。

模块流程:

对应函数:delete(struct phone * head) (4)通讯录信息导入模块实现:

模块说明:从键盘接收输入的需要删除通讯录的姓名,遍历链表,判断节点的姓名是否输入的姓名相等,如果相等,从键盘输入删除后的信息,保存在该节点中,改变标识变量,最后判断标识变量判断是否在链表中找到该姓名的通讯录。

模块流程:

对应函数:load(struct phone * head)

学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹

阅读使人充实,会谈使人敏捷,写作使人精确。——培根

(5)通讯录信息导出模块实现:

模块说明:从键盘接收输入的需要删除通讯录的姓名,遍历链表,判断节点的姓名是否输入的姓名相等,如果相等,从键盘输入删除后的信息,保存在该节点中,改变标识变量,最后判断标识变量判断是否在链表中找到该姓名的通讯

录。

模块流程:

对应函数:save(struct phone * head) (6)通讯录信息查询模块实现:

模块说明:从键盘接收输入的需要删除通讯录的姓名,遍历链表,判断节点的姓名是否输入的姓名相等,如果相等,从键盘输入删除后的信息,保存在该节点中,改变标识变量,最后判断标识变量判断是否在链表中找到该姓名的通讯录。

模块流程:

学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹

阅读使人充实,会谈使人敏捷,写作使人精确。——培根

对应函数:search(struct phone * head) (7)通讯录信息显示模块实现:

模块说明:从键盘接收输入的需要删除通讯录的姓名,遍历链表,判断节点的姓名是否输入的姓名相等,如果相等,从键盘输入删除后的信息,保存在该节点中,改变标识变量,最后判断标识变量判断是否在链表中找到该姓名的通讯录。

模块流程:

对应函数:list(struct phone * head)

学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹

阅读使人充实,会谈使人敏捷,写作使人精确。——培根

五 测试

5.1录入通讯录测试

测试结果:程序运行出现错误,如下

原因 电话输入的长度超过了电话表示的长度

测试结果:程序运行正常,正确的插入到链表的最后位置 3.测试数据:输入:张吴波 湖北汽车工业学院 8241470 425

测试结果:程序运行不正常,可以将张吴波 湖北汽车工业学院, 8241470

插入到链表的最后位置,但是425不能保存 原因:使用了scanf(“%s”),将空格作为截止符

5.2 修改通讯录测试

测试数据:在系统中存在4个名称为li的通讯录

测试数据:在系统中不存在名称为张三的通讯录,输入后,提示姓名不存在,如

下图

学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹

阅读使人充实,会谈使人敏捷,写作使人精确。——培根

5.3导入通讯录测试

测试数据:输入C:\\dd.tst路径(系统中不存在该文件)

测试结果:提示不能打开文件,不能导入

回车后程序结束

原因:不能打开文件文件使用了exit函数

测试数据:输入C:\\data.txt路径(系统中该文件,格式符合程序要求)

测试结果:提示能将文件中的数据正确导入

查询模块测试:

测试数据:输入C:\\data.txt路

测试结果:提示能将文件中的数据正确查询

学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹

阅读使人充实,会谈使人敏捷,写作使人精确。——培根

删除模块测试

测试数据:输入C:\\data.txt路径 测试结果:提示能将文件中的数据正确删除

学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹

阅读使人充实,会谈使人敏捷,写作使人精确。——培根

六 结论及改进设想

此通讯录管理系统的程序开发,其亮点主要是引用了类来宏观调运程序,使得程序简单、明了、可读性强,在程序操作上也比较省事、方便。

通讯录程序无节点,这是一个非常大的不足,急需要改进,但由于时间比较紧,就没有想这部分程序。其实,这部分程序也就是退出,需要一个好的位置来

安放此程序。

通讯录程序是我做的第一个比较大的程序,在专业人士看来这不算什么,但对我来说有很大的意义,他的做出激发着我更好的学好c++,更好的学好专业课。

七 心得体会

对第一次用C++应用程序来做这么大课题的我来说,了解C++语言的概念是非常重要的, C++语言既保留了C语言的有效性、灵活性、便于移植等全部精华和特点,又添加了面向对象编程的支持,具有强大的编程功能,可方便地构造出模拟现实问题的实体和操作;编写出的程序具有结构清晰、易于扩充等优良特性,适合于各种应用软件、系统软件的程序设计。用C++编写的程序可读性好,生成的代码质量高。所谓C++语言:是一种使用非常广泛的计算机编程语

言。

任何一个优秀的程序,无非有以下几点:效率高,可读性高,可重用性强,可移植性好。具体到C++程序,如果做面向对象那块,无非是合理的类的设计,

在类中合理安排数据和对数据的处理,信息隐藏的特性等等。

从C++应用程序目前的活跃程度,以及应用现状来说是完全能够肯定C++仍然是软件工业的基础,也不会退出历史舞台的。我们也能够看到C++的发

展非常活跃,对于新技术新思维非常激进,C++仍然广泛受到关注。

学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹

阅读使人充实,会谈使人敏捷,写作使人精确。——培根

八.参考文献 九 附录

程序源代码: #include #include #include #include #include

int n,m;

using namespace std;

class msg

{ public:

msg();//默认构造函数 char inter_face();//首页 void add_person();//添加联系人 void del_person();//删除联系人 void show_all();//显示所有联系人

void alter();//修改信息 void select();//查询联系人

void save_new();//保存新增加的联系人

private:

string name;//姓名 string sex;//性别 string num;//电话号码 string ad;//地址 string rl;//类型

};

msg::msg()

{

name = \"\\0\"; ad = \"\\0\"; num = \"\\0\"; sex = \"\\0\"; rl = \"\\0\";

} //首页

char msg::inter_face()

{

cout <cout<<\"\\***********************************************\" <学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹

阅读使人充实,会谈使人敏捷,写作使人精确。——培根

<<\"\\※ 通 迅 录 ※\" <<<\"\\\选择:\" ;

char choose; cin >>choose; return choose;

}

//添加联系人

void msg::add_person()

{

cout <<<\"姓名:\" ; cin >>name; cout <<\"电话: \"; cin >>num; cout <<\"类型 : \";

cin >>rl; cout <<\"性别: \"; cin >>sex; cout <<\"地址: \";

cin >>ad;

save_new();

cout <}

//删除联系人

void msg::del_person()

{

ofstream outData(\"temp.txt\ ifstream inData(\"pbook.txt\

if (!outData || !inData)

{

cout <system(\"pause\");

学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹

阅读使人充实,会谈使人敏捷,写作使人精确。——培根

return; }

string sign;

cout <cin >>sign; string str1; bool flag = true; string str;

while (inData >>name >>num)

{

getline(inData, str);

if ((sign==name) || (sign==num))

{

cout <cout <cout <<<\" \" <flag = false;

break;

}

outData <<<\" \" <}

if (flag)

{

cout <} else {

while (getline(inData, str))

{

outData <}

outData.close(); inData.close();

ofstream out(\"pbook.txt\ ifstream in(\"temp.txt\

if (!out || !in)

{

cout <return;

}

while (getline(in, str))

学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹

阅读使人充实,会谈使人敏捷,写作使人精确。——培根

{

out <}

out.close();// in.close();

cout <<//显示所有联系人 void msg::show_all()

{

ifstream inData(\"pbook.txt\

if (!inData)

{

cout <return;

}

bool flag = true; string record;

while (getline(inData, record))

{

if (flag)

{

cout <\"<}

cout <flag = false;

}

if (flag)

{

cout <} else {

cout <} }

//修改信息 void msg::alter()

学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹

阅读使人充实,会谈使人敏捷,写作使人精确。——培根

{

ofstream outData(\"temp.txt\ ifstream inData(\"pbook.txt\

if (!outData || !inData)

{

cout <return;

}

string sign;

cout <cin >>sign; string str1; bool flag = true; string str;

while (inData >>name >>num)

{

getline(inData, str);

if ((sign==name) || (sign==num))

{

cout <cout <cout <<<\" \" <cout <cout <<\"姓名 :\" ; cin >>name; fflush(stdin); cout <<\"电话号:\";

cin >>num; fflush(stdin); cout <<\"性别 :\"; cin >>sex; fflush(stdin); cout <<\"类型 :\";

cin >>rl; fflush(stdin); cout <<\"地址 :\";

cin >>ad; fflush(stdin); save_new(); flag = false;

break;

}

outData <学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹

阅读使人充实,会谈使人敏捷,写作使人精确。——培根

<<\" \" <}

if (flag)

{

cout <} else {

while (getline(inData, str))

{

outData <}

outData.close(); inData.close();

ofstream out(\"pbook.txt\ ifstream in(\"temp.txt\

if (!out || !in)

{

cout <system(\"pause\");

return;

}

while (getline(in, str))

{

out <}

out.close(); in.close();

cout <<//查询联系人 void msg::select()

{

ifstream inData(\"pbook.txt\

if (!inData)

{

cout <system(\"pause\");

return;

}

string sign;

学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹

阅读使人充实,会谈使人敏捷,写作使人精确。——培根

cout <cin >>sign; fflush(stdin); string str1; bool flag = true; string str;

while (inData >>name >>num)

{

getline(inData, str);

if ((name==sign) || (num==sign))

{

cout <cout <cout <<flag = false; system(\"pause\");

break;

} } }

void msg::save_new()

{

ofstream outData(\"pbook.txt\

if (!outData)

{

cout <system(\"pause\");

return;

}

outData << setiosflags(ios::left) << setw(17) << name

<<\" \" << setw(16) << num <<\" \"

<< setw(18) << sex <<\" \" << setw(14) <outData.close();

}

void main()

{

msg abj; do{

cout <学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹

阅读使人充实,会谈使人敏捷,写作使人精确。——培根

cout<<\"\\***********************************************\" <<<\"\\\选择你需要的功能:\" ;

cin>>n;

switch(n)

{ case 1:

abj.add_person();////添加联系人

break; case 2:

abj.del_person();////删除联系人

break; case 3:

abj.show_all();////显示所有联系人

break; case 4:

abj.alter();////修改信息

break; case 5:

abj.select();////查询联系人

break; default: break;

}

cout<<\"\\n 输入1: 继续; 输入0: 退出\\n\";

cin>>m; }

while(m==1);

}

学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹

阅读使人充实,会谈使人敏捷,写作使人精确。——培根

卖炭翁 白居易(唐) 字乐天 号香山居士

卖炭翁,伐薪烧炭南山中。满面尘灰烟火色,两鬓苍苍十指黑。卖炭得钱何所营?身上衣裳口中食。可怜身上衣正单,心忧炭贱愿天寒。夜来城外一尺雪,晓驾炭车碾冰辙。牛困人饥日以高,市南门外泥中歇。 翩翩两骑(jì)来是谁?黄衣使者白衫儿。手把文书口称敕,回车叱牛牵向北。一车炭,千余斤,宫使驱将(jiāng)惜不得。半匹红绡一丈绫,系(jì)向牛头充炭直(值)。

学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹

因篇幅问题不能全部显示,请点此查看更多更全内容