资源描述
课程设计(论文)任务书
软件 学 院 软件+桥梁工程 专 业 2 班
一、课程设计(论文)题目 电话薄管理系统
二、课程设计(论文)工作自 年 6 月 4 日起至 年 6 月 10日止。三、课程设计(论文)地点: 软件学院实训中心 四、课程设计(论文)内容规定:
1.本课程设计目
(1)使学生掌握系统各功能模块基本工作原理;
(2)培养学生程序设计基本思路和办法;
(3)使学生掌握程序调试办法;
(4)培养学生分析、解决问题能力;
(5)提高学生科技论文写作能力。
2.课程设计任务及规定
1)基本规定:
设计一种电话簿管理小程序,运用对象数组或构造数组存储电话簿数据,具备添加、删除、显示、和查询联系人电话号码功能(电话簿信息涉及:姓名、性别、工作单位、手机号码、固定电话、存储日期)。重要功能:
(1)新增信息、删除信息、修改信息(姓名以字母开始字符串命名);
(2)按姓名字母顺序输出电话簿所有记录
(3)按姓名查询记录;
(4)增长缺省查询方式,即查询时只输入姓名首字母,所有符合这一条件电话资料均在屏幕上显示
2)创新规定:
在基本规定达到后,可进行创新设计,如提高系统容错能力,响应速度等。
3)课程设计论文编写规定
(1)要按照书稿规格打印誊写课程设计报告
(2)论文涉及目录、绪论、正文、小结、参照文献、谢辞、附录等
(3)毕业论文装订按学校统一规定完毕
4)答辩与评分原则:
(1)完毕原理分析:20分;
(2)完毕设计过程:30分;
(3)完毕调试:30分;
(4)回答问题:20分。
5)参照文献:
(1)谢昕 刘觉夫 王更生《C++程序设计》 北京邮电大学出版社
(2)郑莉 .《C++语言程序设计》 清华大学出版社
(3)钱能. 《C++程序设计教程》 高等教诲出版社
6)课程设计进度安排
内容 天数 地点
构思及程序设计 2 图书馆,教室
程序调试 2 实训中心
撰写论文 1 图书馆、实训中心
学生签名:
年 6 月 4 日
课程设计(论文)评审意见
(1)完毕原理分析(20分):优( )、良( )、中( )、普通( )、差( );
(2)设计分析 (30分):优( )、良( )、中( )、普通( )、差( );
(3)完毕调试 (30分):优( )、良( )、中( )、普通( )、差( );
(4)回答问题 (20分):优( )、良( )、中( )、普通( )、差( );
(5)综合级别:
评阅人:
职称: 副专家
年 6 月 10 日
目 录
一、课程设计任务概述 3
二、各功能模块详细实现 6
三、程序清单 12
四、程序调试与运营成果 24
五、设计心得(小结) 27
六、参照文献 28
一、课程设计任务概述
1 需求分析
1.1功能需求分析:
通讯录重要有一下模块:通讯录界面设计、添加联系人、删除联系人、显示所有联系人、修改信息、查询联系人,其中姓名可以由字符和数字混合编码,电话号码可由字符和数字构成。
1.11通讯录界面设计
重要功能是设计通讯录界面,可以提示顾客实际操作等。我采用是按照序号来实现相应操作,其中:1添加联系人2删除联系人3显示所有联系人4修改信息5查询联系人6 关闭通讯录
1.12通讯录添加联系人模块
重要功能是添加联系人模块,添加操作是依照顾客规定实现。涉及添加联系人姓名、性别、电话号、、邮编、工作单位、储存日期等,最后输入完毕后,将提示新联系人信息已经保存好!!
1.13通讯录删除联系人模块
重要功能是删除不再需要联系人。其中涉及输入你要删除输入电话或电话号码如果没有话,将提示:对不起!!!联系人中没你要找人!!!如果找到,
则提示删除联系人所有信息和这个人信息已经从你通讯录中删除信息!
1.14通讯录显示所有联系人模块
显示所有联系人信息,涉及姓名、性别、电话号、、邮编、工作单位、储存日期并提示所有联系人已经所有显示出来!!
1.15通讯录修改联系人模块
重要是修改联系人信息,界面提示要输入需要修改姓名或者电话号码,如果不对的,显示对不起,联系人中没有你找人。如果对的,则显示出改联系人所有信息,并提示依照下面提示修改信息,姓名、性别、电话号、、邮编、工作单位、储存日期等
1.16通讯录关闭通讯录模块
提示谢谢使用!
1.2 环境需求分析:
操作系统: Windows XP
开发软件: Visual
1.3 办法需求分析
该系统由于数据也许会很大,故采用文献操作,可以打开或修改指定文献及将各种文献构成一种文献。而联系人信息则通过类对象来保存,它完全使用类来实现,充分体现面向对象程序设计特点。
2概要设计
2.1 系统功能模块图
通讯录系统
信息初始化
添加联系人
删除联系人
显示所有联系人
修改信息
查询联系人
关闭通讯录
2.2 设计思想:
通讯录系统是用面向对象办法设计,在类中定义了一下办法:add_person(),del_person(),show_all(),alter(),select(),save_new()等办法和name,sex, work address,
, number, post,属性来实现通讯录各种操作。
二、各功能模块详细实现
3.2重要代码描述
3.21添加联系人实现;
通过输入联系人如下信息:姓名、性别、电话、邮编、工作单位,并把输入信息保存对象属性,创立或者打开文献,并向文献中写入新添加联系人信息
添加联系人详细代码:
void book::add_person()
{
cout <<endl <<"依照下面提示输入新联系人信息" <<endl <<endl
<<"姓名:" ;
cin >>name;
fflush(stdin);
cout <<"性别:";
cin >>sex;
fflush(stdin);
cout <<"电话号:";
cin >>number;
fflush(stdin);
cout <<"邮编:";
cin >>post;
fflush(stdin);
cout <<"工作单位:";
cin >>address;
fflush(stdin);
cout <<"存储日期:";
cin >>date;
fflush(stdin);
save_new();
cout <<endl <<endl <<"新联系人信息已经保存好!!!!!" <<endl <<endl;
system("pause");
}
保存联系人代码:
void book::save_new()
{
ofstream outData("pbook.txt",ios::app);
if (!outData)
{
cout <<endl <<"对不起!!!打开文献失败!!!!" <<endl <<endl;
system("pause");
return;
}
outData << setiosflags(ios::left) << setw(17) << name
<<" " << setw(16) << number <<" "
<< setw(18) << sex<<" "
<< setw(14) << post <<" "
<< setw(20) << address <<endl;
outData.close();
}
3.22删除联系人实现
一方面输入你要删除电话号码,删除操作时采用输入姓名或者电话号码与文献中姓名或者电话号码比较,从头到尾开始遍历,如果没有话,将提示:对不起!!!联系人中没你要找人!!!如果找到,则提示删除联系人所有信息和这个人信息已经从你通讯录中删除信息!
//删除联系人
void book::del_person()
{
ofstream outData("temp.txt",ios::out);
ifstream inData("pbook.txt",ios::in);//
if (!outData || !inData)
{
cout <<endl <<"对不起!!!!找不到文献!!!!" <<endl;
system("pause");
return;
}
string sign;
cout <<endl <<"你要删除输入姓名或电话号:";
cin >>sign;
string str1;
bool flag = true;
string str;
while (inData >>name >>number)
{
getline(inData,str);
if ((sign==name) || (sign==number))
{
cout <<endl <<"你想删除联系人:" <<endl <<endl;
cout <<str1 <<endl;
cout <<setiosflags(ios::left) <<setw(17) <<name
<<" " <<number <<str <<endl;
flag = false;
break;
}
outData <<setiosflags(ios::left) <<setw(17) <<name
<<" " <<number <<str <<endl;
}
if (flag)
{
cout <<endl <<"对不起!!!联系人中没你找人!!!!" <<endl <<endl;
}
else
{
while (getline(inData,str))
{
outData <<str <<endl;
}
outData.close();
inData.close();
ofstream out("pbook.txt",ios::out);
ifstream in("temp.txt",ios::in);
if (!out || !in)
{
cout <<endl <<"对不起不能打开文献!!!" <<endl <<endl;
system("pause");
return;
}
while (getline(in,str))
{
out <<str <<endl;
}
out.close();//
in.close();
cout <<endl <<"这个人信息已经从你通迅录中删除!!!" <<endl <<endl;
}
system("pause");
}
3.23显示所有联系人实现:
把文献中各种信息读取并显示出来,代码如下:
//显示所有联系人
void book::show_all()
{
ifstream inData("pbook.txt",ios::in);
if (!inData)
{
cout <<endl <<"对不起!!!!没有找到文献!!!!!" <<endl;
system("pause");
return;
}
bool flag = true;
string record;
while (getline(inData,record))
{
if (flag)
{
cout <<endl <<"所有联系人信息如下:"<<endl;
}
cout <<record <<endl;
flag = false;
}
if (flag)
{
cout <<endl <<"你通迅录中没有联系人!!!!!" <<endl <<endl;
}
else
{
cout <<endl <<"所有联系人已经所有显示出来!!!!!" <<endl <<endl;
}
system("pause");
}
3.24 修改联系人模块
只要输入来联系人名字或者电话,进行文献爱你遍历查找到联系人信息,而后进行修改。
//修改信息
void book::alter()
{
ofstream outData("temp.txt",ios::out);
ifstream inData("pbook.txt",ios::in);//
if (!outData || !inData)
{
cout <<endl <<"对不起!!!!找不到文献!!!!" <<endl;
system("pause");
return;
}
string sign;
cout <<endl <<"你要修改输入姓名或电话号:";
cin >>sign;
string str1;
bool flag = true;
string str;
while (inData >>name >>number)
{
getline(inData,str);
if ((sign==name) || (sign==number))
{
cout <<endl <<"你想修改联系人:" <<endl <<endl;
cout <<str1 <<endl;
cout <<setiosflags(ios::left) <<setw(17) <<name
<<" " <<number <<str <<endl;
cout <<endl <<"请依照下面提示修改信息:" <<endl;
cout <<"姓名 :" ;
cin >>name;
fflush(stdin);
cout <<"性别 :";
cin >>sex;
fflush(stdin);
cout <<"电话号:";
cin >>number;
fflush(stdin);
cout <<"邮编 :";
cin >>post;
fflush(stdin);
cout <<"工作单位 :";
cin >>address;
fflush(stdin);
cout <<"存储日期 :";
cin >>date;
fflush(stdin);
save_new();
flag = false;
break;
}
outData <<setiosflags(ios::left) <<setw(17) <<name
<<" " <<number <<str <<endl;
}
if (flag)
{
cout <<endl <<"对不起!!!联系人中没你找人!!!!" <<endl <<endl;
}
else
{
while (getline(inData,str))
{
outData <<str <<endl;
}
outData.close();
inData.close();
ofstream out("pbook.txt",ios::out);
ifstream in("temp.txt",ios::in);
if (!out || !in)
{
cout <<endl <<"对不起不能打开文献!!!" <<endl <<endl;
system("pause");
return;
}
while (getline(in,str))
{
out <<str <<endl;
}
out.close();
in.close();
cout <<endl <<"这个人信息已经在你通迅录中修改!!!" <<endl <<endl;
}
system("pause");
}
3.25 查询联系人模块
对文献进行遍历,将联系人所有信息都显示出来。详细代码见3.3中。
//查询联系人
void book::select()
{
ifstream inData("pbook.txt",ios::in);
if (!inData)
{
cout <<endl <<"对不起!!!!文献找不到!!!!" <<endl;
system("pause");
return;
}
string sign;
cout <<endl <<"输入你想查找联系人姓名或电话号码:";
cin >>sign;
fflush(stdin);
string str1;
bool flag = true;
string str;
while (inData >>name >>number)
{
getline(inData,str);
if ((name==sign) || (number==sign))
{
cout <<endl <<"你要查找联系人是:" <<endl <<endl;
cout <<str1 <<endl;
cout <<setiosflags(ios::left) <<setw(17) <<name
<<number <<str <<endl;
flag = false;
system("pause");
break;
}
}
}
3.26关闭通讯录模块
提示谢谢使用!详细代码见3.3中。
三、程序清单
#include <iostream>
#include <string>
#include <iomanip>
#include <fstream>
#include <cstdlib>
using namespace std;
class book
{
public:
book();//默认构造函数
char inter_face();//首页
void add_person();//添加联系人
void del_person();//删除联系人
void show_all();//显示所有联系人
void alter();//修改信息
void select();//查询联系人
void save_new();//保存新增长联系人
private:
string name;//姓名
string address;//工作单位
string date;//存储日期
string number;//电话号码
string post;//邮编
string sex;//性别
};
book::book()
{
name = "\0";
address = "\0";
number = "\0";
post = "\0";
sex = "\0";
}
//首页
char book::inter_face()
{
system("cls");
cout <<endl;
cout<<"\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★" <<endl
<<"\t\t※ ※" <<endl
<<"\t\t※ 电 话 薄 ※" <<endl
<<"\t\t※ ※" <<endl
<<"\t\t※ 1. 添加新联系人. 4. 修改信息. ※" <<endl
<<"\t\t※ ※" <<endl
<<"\t\t※ 2. 删除联系人. 5. 查询联系人. ※" <<endl
<<"\t\t※ ※" <<endl
<<"\t\t※ 3. 显示所有联系人. 6. 关闭通迅录. ※" <<endl
<<"\t\t※ ※" <<endl
<<"\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★" <<endl <<endl ;
cout<<"★注意:输入存储日期时,例如111月1日存储,输入时要输入1111-01-01"<<endl;
cout<<"★请选取你需要功能【数字】:";
char choose;
cin >>choose;
fflush(stdin);
return choose;
}
//添加联系人
void book::add_person()
{
cout <<endl <<"依照下面提示输入新联系人信息" <<endl <<endl
<<"姓名:" ;
cin >>name;
fflush(stdin);
cout <<"性别:";
cin >>sex;
fflush(stdin);
cout <<"电话号:";
cin >>number;
fflush(stdin);
cout <<"邮编:";
cin >>post;
fflush(stdin);
cout <<"工作单位:";
cin >>address;
fflush(stdin);
cout <<"存储日期:";
cin >>date;
fflush(stdin);
save_new();
cout <<endl <<endl <<"新联系人信息已经保存好!!!!!" <<endl <<endl;
system("pause");
}
//删除联系人
void book::del_person()
{
ofstream outData("temp.txt",ios::out);
ifstream inData("pbook.txt",ios::in);//
if (!outData || !inData)
{
cout <<endl <<"对不起!!!!找不到文献!!!!" <<endl;
system("pause");
return;
}
string sign;
cout <<endl <<"你要删除输入姓名或电话号:";
cin >>sign;
string str1;
bool flag = true;
string str;
while (inData >>name >>number)
{
getline(inData,str);
if ((sign==name) || (sign==number))
{
cout <<endl <<"你想删除联系人:" <<endl <<endl;
cout <<str1 <<endl;
cout <<setiosflags(ios::left) <<setw(17) <<name
<<" " <<number <<str <<endl;
flag = false;
break;
}
outData <<setiosflags(ios::left) <<setw(17) <<name
<<" " <<number <<str <<endl;
}
if (flag)
{
cout <<endl <<"对不起!!!联系人中没你找人!!!!" <<endl <<endl;
}
else
{
while (getline(inData,str))
{
outData <<str <<endl;
}
outData.close();
inData.close();
ofstream out("pbook.txt",ios::out);
ifstream in("temp.txt",ios::in);
if (!out || !in)
{
cout <<endl <<"对不起不能打开文献!!!" <<endl <<endl;
system("pause");
return;
}
while (getline(in,str))
{
out <<str <<endl;
}
out.close();//
in.close();
cout <<endl <<"这个人信息已经从你通迅录中删除!!!" <<endl <<endl;
}
system("pause");
}
//显示所有联系人
void book::show_all()
{
ifstream inData("pbook.txt",ios::in);
if (!inData)
{
cout <<endl <<"对不起!!!!没有找到文献!!!!!" <<endl;
system("pause");
return;
}
bool flag = true;
string record;
while (getline(inData,record))
{
if (flag)
{
cout <<endl <<"所有联系人信息如下:"<<endl;
cout <<endl <<"姓名 电话号 性别 邮编 工作单位"<<endl;
}
cout <<record <<endl;
flag = false;
}
if (flag)
{
cout <<endl <<"你通迅录中没有联系人!!!!!" <<endl <<endl;
}
else
{
cout <<endl <<"所有联系人已经所有显示出来!!!!!" <<endl <<endl;
}
system("pause");
}
//修改信息
void book::alter()
{
ofstream outData("temp.txt",ios::out);
ifstream inData("pbook.txt",ios::in);//
if (!outData || !inData)
{
cout <<endl <<"对不起!!!!找不到文献!!!!" <<endl;
system("pause");
return;
}
string sign;
cout <<endl <<"你要修改输入姓名或电话号:";
cin >>sign;
string str1;
bool flag = true;
string str;
while (inData >>name >>number)
{
getline(inData,str);
if ((sign==name) || (sign==number))
{
cout <<endl <<"你想修改联系人:" <<endl <<endl;
cout <<str1 <<endl;
cout <<setiosflags(ios::left) <<setw(17) <<name
<<" " <<number <<str <<endl;
cout <<endl <<"请依照下面提示修改信息:" <<endl;
cout <<"姓名 :" ;
cin >>name;
fflush(stdin);
cout <<"性别 :";
cin >>sex;
fflush(stdin);
cout <<"电话号:";
cin >>number;
fflush(stdin);
cout <<"邮编 :";
cin >>post;
fflush(stdin);
cout <<"工作单位 :";
cin >>address;
fflush(stdin);
cout <<"存储日期 :";
cin >>date;
fflush(stdin);
save_new();
flag = false;
break;
}
outData <<setiosflags(ios::left) <<setw(17) <<name
<<" " <<number <<str <<endl;
}
if (flag)
{
cout <<endl <<"对不起!!!联系人中没你找人!!!!" <<endl <<endl;
}
else
{
while (getline(inData,str))
{
outData <<str <<endl;
}
outData.close();
inData.close();
ofstream out("pbook.txt",ios::out);
ifstream in("temp.txt",ios::in);
if (!out || !in)
{
cout <<endl <<"对不起不能打开文献!!!" <<endl <<endl;
system("pause");
return;
}
while (getline(in,str))
{
out <<str <<endl;
}
out.close();
in.close();
cout <<endl <<"这个人信息已经在你通迅录中修改!!!" <<endl <<endl;
}
system("pause");
}
//查询联系人
void book::select()
{
ifstream inData("pbook.txt",ios::in);
if (!inData)
{
cout <<endl <<"对不起!!!!文献找不到!!!!" <<endl;
system("pause");
return;
}
string sign;
cout <<endl <<"输入你想查找联系人姓名或电话号码:";
cin >>sign;
fflush(stdin);
string str1;
bool flag = true;
string str;
while (inData >>name >>number)
{
getline(inData,str);
if ((name==sign) || (number==sign))
{
cout <<endl <<"你要查找联系人是:" <<endl <<endl;
cout <<str1 <<endl;
cout <<setiosflags(ios::left) <<setw(17) <<name
<<number <<str <<endl;
flag = false;
system("pause");
break;
}
}
}
void book::save_new()
{
ofstream outData("pbook.txt",ios::app);
if (!outData)
{
cout <<endl <<"对不起!!!打开文献失败!!!!" <<endl <<endl;
system("pause");
return;
}
outData << setiosflags(ios::left) << setw(17) << name
<<" " << setw(16) << number <<" "
<< setw(18) << sex <<" "
<< setw(14) << post <<" "
<< setw(20) << address <<" "
<< setw(21) << date <<endl;
outData.close();
}
enum power{ADD = '1',DEL = '2',SHOW = '3',Alter = '4',Select = '5',END = '6'};
int main()
{
char choose;
book abj;
while (choose = abj.inter_face())
{
switch (choose)
{
case ADD:
abj.add_per
展开阅读全文