电话号码信息管理系统

《C++语言程序设计课程设计》

一、课程设计要求

(以下内容,全部按:宋体5号,单倍行距格式编辑)

1. 题目:电话号码信息管理系统。

2. 基本要求:设计一个程序,掌握C++设计程序的一些流程,综合的运用C++使用。对流的使用,这个程序运用了一个流类的类库用继承的方法建立起来的。

3. 实验目的:掌握类的设计、类的派生;C++的输入输出流;继承性和派生类;函数应用运用,提高我们对系统应用,让我们更好的运用知识C 和C++知识,

还有一些语句的运用,格式控制符等运用。

4. 程序功能简介

本程序具体功能如下:

(1)用户登录界面设计。

(2)信息维护:包括子模块有:增加电话号码信息、删除电话号码信息、修改电话号码信息。其中电话号码信息包括姓名、电话号码、序号。

(3)信息查询:查询时实现按姓名、序号查询,提供电话号码信息。

5. 程序设计资料调研

本课程的要求是电话号码信息管理,要求完成其基本功能。其信息经过搜索,查得电话号码表。在进行某种电话号码管理操作时,通过是先显示所有的电话号码的信息,再找到符合自己要找的电话号码的操作,本系统遵循了这一习惯。

6. 关键算法

在本程序中使用了struct 数据类型,所用最多的是WHILE 循环结构和IF 语句,然而这也正为了它的特色。循环体的嵌套思路清晰,目的明确,格式规范,易于阅读和理解。

If 语句的逐层运用,正形象化的描述了计算机工作流程,而且与人的一般习惯相吻合,简单明了,易于观察理解它的来龙去脉,思路清晰直观。该程序是在汉化系统下编写完成的,所以它支持在汉化系统下运行,还支持在普通系统下运行,它允许完全用中文操作,包括对信息的添加浏览和查询等功能,它使用的指针是动态分配内存的,允许用户大量的信息录入,对它的长短不加限制,这样就方便了很多。而且中文环境更加方便使用,一目了然。

7. 存在的问题与次略

本课程设计是在汉化环境下操作的,对系统要求相对严格。在输入信息时,每输入一条信息后用ENTER 键结束,然后继续下一条信息的输入。如果不能按照规定方法录入,将导致信息混乱不清,只有重新启动系统开始新的输入。策略是:只有人为的去掌握输入方法,正确操作;还有是对程序改进,使程序对一些非法输入给予忽略,提示重新输入。

二、设计的思路

1. 建立ifstream/ofstream/fstream、输入、输出、输入输出流对象,建立ifndef,define 预编命令,STRUCT 数据。

2. 建立TelephoneBook 类,构建PRIVATE 私有成员和PUBLIC 公有成员

3. 建TelephoneBook 函数,建立输入输出文件,如何打开文件

4. 建立AddData 函数,请输入序号、名字、电话号码构建电话号码本

5. 建立UpdateData 函数,可以更改序号、名字、电话号码本功能项

6. 建立SearchData 函数,制作输入查询电话号码的序号功能项

7. 建立DeleteData 函数,制作输入可以删除的电话号码的序号

8. 建立Pack 函数,写入电话号码二进制文件,写入电话号码本

9. 建立Run 函数,用do. while界面制作界面

10. 建立一个主函数main (),#include"telephone_book .h"

void main(void)

{

TelephoneBook obj;

obj.run();

}

11. 运行主函数main, 程序运行就可以了

三、设计步骤

#include

#include

#include

#include

#include

#include

#include

#include

#ifndef _TELEPHONE_BOOK_H_

#define _TELEPHONE_BOOK_H_

struct TelephoneType

{

bool delfag;

unsigned int seat;

char name[16];

char teleNo[80];

};

class TelephoneBook

{

private:

fstream file;

void AddData();

void UpdateData();

void SearchData();

void DeleteData();

public:

TelephoneBook();

virtual ~TelephoneBook()

{file.close();}

void run();

};

TelephoneBook::TelephoneBook()

{

ifstream ifile("telph.dat");//建立输入文件

if(ifile.fail())

{

ofstream ofile("telph.dat");//建立输出文件

if(ofile.fail()) throw(" 打开文件失败 ");

ofile.close();

}

else

{

ifile.close();

}

file.open("telph.dat",ios::out|ios::binary);

if(file.fail()) throw(" 打开文件失败 ");

}

void TelephoneBook::AddData()

{

TelephoneType telph;

telph.delflag=false;

char yesorno;

do

{

cout

cin>>telph.seat;

cout

cin>>telph.name;

cout

cin>>telph.teleNo;

file.write( (char*)&telph,sizeof(TelephoneType));

cout

cin>>yesorno;

}

while(yesorno!='n');//注意相应成趣改变

}

void TelephoneBook::UpdateData()

{

TelephoneType telph;

unsigned int seat;

cout

file.seekg(0);//从0位开始找

while(!file.eof())

{

if(telph.seat==seat&&!telph.delflag)

break;//找到了

file.read((char*)&telph,sizeof(TelephoneType));

}

if(!file.eof())

{

cout

cout

cout

cin>>telph.seat;

cout

cin>>telph.name;

cout

cin>>telph.teleNo;

file.seekg(-sizeof(TelephoneType),ios::cur);

file.write((char*)&telph,sizeof(TelephoneTye));

}

else

{

cout

file.clear();

}

}

void TelephoneBook::SearchData()

{

TelephoneType telph;

unsigned int seat;

cout

cin>>seatl;

file.seekg(0);//从0位开始找。

file.read((char*)&telph,sizeof(TelephoneType));//没有找到就往下找

while(!file.eof())

{

if(telph.seat--seat&&!telph.delflag)

break;//找到了

}

if(!file.eof())

{

cout

cout

cout

cout

}

else

{

cout

file.clear();

}

}

void TelephoneBook::DeleteData()

{

TelephoneType telph;

unsigned int seat;

cout

cin>>seat;

file.seekg(0);//从0位开始找。

file.read((char*)&telph.sizeof(TelephoneType));

while(!file.eof())

{

if(telph.seat==seat && !telph.delflag)

break;//找到了

file.read((char*)&telph,sizeof(TelephoneType));//没找到就往下找。

}

if(!file.eof())

{

cout

cout

file.seekg(-sizeof(TelephoneType),ios::cur);

file.write((char*)&telph,sizeof(TelephoneType))//ikgikgbg

cout

}

else

{

cout

file.clear();

}

}

void TelephoneBook::Pack()

{

ofstream outfile("tem.dat",ios::app|ios::binary);

TelephoneType telph;

file.seekg(0);

file.read((char*)&telph,sizeof(TelephoneType));

while(!file.eof())

{

if(!telph.delflag)

{

outfile.write((char*)&telph,sizeof(TelephoneType));

}

file.close();

outfile.close();

remove("telph.dat");

rename("tem.dat","telph.dat");

file.open("telph.dat",ios::in|ios::out|ios::binary);

}

void TelephoneBook::run()

{

int sel;

do

{

cout

cout

cout

cout

cout

cout

cout

cin>>sel;

while(cin.get()!='\n');//;dkf;IdfkI;df

switch(sel)

{

case 1:

AddData();

break;

case 2:

UpdateData();

break;

case 3:

SearchData();

break;

case 4:

DeleteData();

break;

case 5:

Pack();

break;

}

}

while(sel!=6);

}

#endif

四、设计心得

经过一个学期的学习和上机实践,使我对C++语言有了更认识和和了解,要想学好它要重在实践,要通过不断的上机操作才能更好的学习它,通过实践,我也发现我的好多不足之处,对各种控制结构及语句、数组的基本与高级应用、指针数组、字符数组、动态数组、函数的定义、调用方式;函数在编程中的具体应用;以及变量存储特征与标识符的作用域,通过实践,使我在这些方面有了认识和提高。课程设计它是一项任务,更是一种挑战和历练。在课程设计中,为了使用时方便,着重对不足方面的知识进行了分析与理解,在这一过程中对文件的操作有了很大的提高。通过实际的演练,可以增强对知识的理解和运用能力。

五、参考文献

[1]吴乃陵, 况迎辉.C++课程设计. 北京:高等教育出版社,2006

[2]谢昕,刘觉夫,王更生.C++程序设计. 北京:北京邮电大学出版社,2008

《C++语言程序设计课程设计》

一、课程设计要求

(以下内容,全部按:宋体5号,单倍行距格式编辑)

1. 题目:电话号码信息管理系统。

2. 基本要求:设计一个程序,掌握C++设计程序的一些流程,综合的运用C++使用。对流的使用,这个程序运用了一个流类的类库用继承的方法建立起来的。

3. 实验目的:掌握类的设计、类的派生;C++的输入输出流;继承性和派生类;函数应用运用,提高我们对系统应用,让我们更好的运用知识C 和C++知识,

还有一些语句的运用,格式控制符等运用。

4. 程序功能简介

本程序具体功能如下:

(1)用户登录界面设计。

(2)信息维护:包括子模块有:增加电话号码信息、删除电话号码信息、修改电话号码信息。其中电话号码信息包括姓名、电话号码、序号。

(3)信息查询:查询时实现按姓名、序号查询,提供电话号码信息。

5. 程序设计资料调研

本课程的要求是电话号码信息管理,要求完成其基本功能。其信息经过搜索,查得电话号码表。在进行某种电话号码管理操作时,通过是先显示所有的电话号码的信息,再找到符合自己要找的电话号码的操作,本系统遵循了这一习惯。

6. 关键算法

在本程序中使用了struct 数据类型,所用最多的是WHILE 循环结构和IF 语句,然而这也正为了它的特色。循环体的嵌套思路清晰,目的明确,格式规范,易于阅读和理解。

If 语句的逐层运用,正形象化的描述了计算机工作流程,而且与人的一般习惯相吻合,简单明了,易于观察理解它的来龙去脉,思路清晰直观。该程序是在汉化系统下编写完成的,所以它支持在汉化系统下运行,还支持在普通系统下运行,它允许完全用中文操作,包括对信息的添加浏览和查询等功能,它使用的指针是动态分配内存的,允许用户大量的信息录入,对它的长短不加限制,这样就方便了很多。而且中文环境更加方便使用,一目了然。

7. 存在的问题与次略

本课程设计是在汉化环境下操作的,对系统要求相对严格。在输入信息时,每输入一条信息后用ENTER 键结束,然后继续下一条信息的输入。如果不能按照规定方法录入,将导致信息混乱不清,只有重新启动系统开始新的输入。策略是:只有人为的去掌握输入方法,正确操作;还有是对程序改进,使程序对一些非法输入给予忽略,提示重新输入。

二、设计的思路

1. 建立ifstream/ofstream/fstream、输入、输出、输入输出流对象,建立ifndef,define 预编命令,STRUCT 数据。

2. 建立TelephoneBook 类,构建PRIVATE 私有成员和PUBLIC 公有成员

3. 建TelephoneBook 函数,建立输入输出文件,如何打开文件

4. 建立AddData 函数,请输入序号、名字、电话号码构建电话号码本

5. 建立UpdateData 函数,可以更改序号、名字、电话号码本功能项

6. 建立SearchData 函数,制作输入查询电话号码的序号功能项

7. 建立DeleteData 函数,制作输入可以删除的电话号码的序号

8. 建立Pack 函数,写入电话号码二进制文件,写入电话号码本

9. 建立Run 函数,用do. while界面制作界面

10. 建立一个主函数main (),#include"telephone_book .h"

void main(void)

{

TelephoneBook obj;

obj.run();

}

11. 运行主函数main, 程序运行就可以了

三、设计步骤

#include

#include

#include

#include

#include

#include

#include

#include

#ifndef _TELEPHONE_BOOK_H_

#define _TELEPHONE_BOOK_H_

struct TelephoneType

{

bool delfag;

unsigned int seat;

char name[16];

char teleNo[80];

};

class TelephoneBook

{

private:

fstream file;

void AddData();

void UpdateData();

void SearchData();

void DeleteData();

public:

TelephoneBook();

virtual ~TelephoneBook()

{file.close();}

void run();

};

TelephoneBook::TelephoneBook()

{

ifstream ifile("telph.dat");//建立输入文件

if(ifile.fail())

{

ofstream ofile("telph.dat");//建立输出文件

if(ofile.fail()) throw(" 打开文件失败 ");

ofile.close();

}

else

{

ifile.close();

}

file.open("telph.dat",ios::out|ios::binary);

if(file.fail()) throw(" 打开文件失败 ");

}

void TelephoneBook::AddData()

{

TelephoneType telph;

telph.delflag=false;

char yesorno;

do

{

cout

cin>>telph.seat;

cout

cin>>telph.name;

cout

cin>>telph.teleNo;

file.write( (char*)&telph,sizeof(TelephoneType));

cout

cin>>yesorno;

}

while(yesorno!='n');//注意相应成趣改变

}

void TelephoneBook::UpdateData()

{

TelephoneType telph;

unsigned int seat;

cout

file.seekg(0);//从0位开始找

while(!file.eof())

{

if(telph.seat==seat&&!telph.delflag)

break;//找到了

file.read((char*)&telph,sizeof(TelephoneType));

}

if(!file.eof())

{

cout

cout

cout

cin>>telph.seat;

cout

cin>>telph.name;

cout

cin>>telph.teleNo;

file.seekg(-sizeof(TelephoneType),ios::cur);

file.write((char*)&telph,sizeof(TelephoneTye));

}

else

{

cout

file.clear();

}

}

void TelephoneBook::SearchData()

{

TelephoneType telph;

unsigned int seat;

cout

cin>>seatl;

file.seekg(0);//从0位开始找。

file.read((char*)&telph,sizeof(TelephoneType));//没有找到就往下找

while(!file.eof())

{

if(telph.seat--seat&&!telph.delflag)

break;//找到了

}

if(!file.eof())

{

cout

cout

cout

cout

}

else

{

cout

file.clear();

}

}

void TelephoneBook::DeleteData()

{

TelephoneType telph;

unsigned int seat;

cout

cin>>seat;

file.seekg(0);//从0位开始找。

file.read((char*)&telph.sizeof(TelephoneType));

while(!file.eof())

{

if(telph.seat==seat && !telph.delflag)

break;//找到了

file.read((char*)&telph,sizeof(TelephoneType));//没找到就往下找。

}

if(!file.eof())

{

cout

cout

file.seekg(-sizeof(TelephoneType),ios::cur);

file.write((char*)&telph,sizeof(TelephoneType))//ikgikgbg

cout

}

else

{

cout

file.clear();

}

}

void TelephoneBook::Pack()

{

ofstream outfile("tem.dat",ios::app|ios::binary);

TelephoneType telph;

file.seekg(0);

file.read((char*)&telph,sizeof(TelephoneType));

while(!file.eof())

{

if(!telph.delflag)

{

outfile.write((char*)&telph,sizeof(TelephoneType));

}

file.close();

outfile.close();

remove("telph.dat");

rename("tem.dat","telph.dat");

file.open("telph.dat",ios::in|ios::out|ios::binary);

}

void TelephoneBook::run()

{

int sel;

do

{

cout

cout

cout

cout

cout

cout

cout

cin>>sel;

while(cin.get()!='\n');//;dkf;IdfkI;df

switch(sel)

{

case 1:

AddData();

break;

case 2:

UpdateData();

break;

case 3:

SearchData();

break;

case 4:

DeleteData();

break;

case 5:

Pack();

break;

}

}

while(sel!=6);

}

#endif

四、设计心得

经过一个学期的学习和上机实践,使我对C++语言有了更认识和和了解,要想学好它要重在实践,要通过不断的上机操作才能更好的学习它,通过实践,我也发现我的好多不足之处,对各种控制结构及语句、数组的基本与高级应用、指针数组、字符数组、动态数组、函数的定义、调用方式;函数在编程中的具体应用;以及变量存储特征与标识符的作用域,通过实践,使我在这些方面有了认识和提高。课程设计它是一项任务,更是一种挑战和历练。在课程设计中,为了使用时方便,着重对不足方面的知识进行了分析与理解,在这一过程中对文件的操作有了很大的提高。通过实际的演练,可以增强对知识的理解和运用能力。

五、参考文献

[1]吴乃陵, 况迎辉.C++课程设计. 北京:高等教育出版社,2006

[2]谢昕,刘觉夫,王更生.C++程序设计. 北京:北京邮电大学出版社,2008


相关文章

  • 郑州房地产开发商名单
  • 北京圣昊纪元房地产开发有限公司新郑分公司 房地产开发及商品房销售,对自有房产进行物业管理(凭资质证). 地址:中华南路勤奋胡同1号 邮编:451100 电话号码:2666627 河南爱地房地产开发有限公司 房地产开发经营建材五金交电装饰材料 ...查看


  • 小区管理系统数据库开发报告
  • <数据库开发实践> 报告 班级:_____________ 学号:_____________ 姓名:_____________ 指导老师:_____________ 信息与计算机学院 二○一三年元月 1 需求分析 1.1开发小区 ...查看


  • 12309检察院举报电话受理系统
  • 12309检察院举报电话受理系统介绍 联合亚讯电子有限公司 一. 概述 1.背景概述 举报中心是检察机关履行法律监督职能的一个专门业务机构,举报中心设置的原则是从实际出发,方便群众,利于工作.12309(全国检查机关统一举报电话)统一的举报 ...查看


  • XX有限公司办公楼综合布线及机房建设实施方案
  • 目 录 第一章 方案概述 ........................................................................................................... ...查看


  • 员工档案管理中如何充分利用身份证号码
  • 员工档案管理中如何充分利用身份证号码 员工的身份证号码信息是HR部门最重要的信息之一,在很多 HR 管理的表中都可以看到它(见图表1).由于身份证号码中可以提取出很多HR所需的有用的信息,所以利用Excel对身份证号码的管理和运算是HR管理 ...查看


  • 毕业设计呼叫中心方案标准版本
  • 目录 1. 引言 ............................................................. 2 1.1目的和背景 ...................................... ...查看


  • 创业项目商业计划书参考提纲
  • 创业项目商业计划书参考提纲 一. 项目概述 1:项目介绍 博信资讯是美国百鹰科技的项目立项,准备在厦门投资建立国内第一家为固定电话提供的语音视频增值资讯服务的公司.将是新传媒时代的革命性的变革,作为全新的语音文字视频媒体平台,以通讯终端.移 ...查看


  • 司法部.信息产业部关于在各地开设法律服务专用电话的通知
  • [时效性]:现行有效[发文字号]:司发[1998]016号[颁布日期]:1998-11-16[生效日期]:1998-11-16[效力级别]:部门规章[颁布机构]:司法部 司法部.信息产业部关于在各地开设法律服务专用电话的通知 (1998年1 ...查看


  • 新市场开发部规章制度(2011)
  • 市场开发部规章制度 一.市场开发部机能组织表 备注说明: A .市场开发专员为储备销售人员,岗位职责与考核办法基本与电话销售员类同,在达到销售员要求后转入事业部. B .营销策划专员暂挂市场开发部,目前承担展会策划.样本策划及事业部经理安排 ...查看


热门内容