设计实现简单的通讯录C++课程设计Word格式文档下载.docx

上传人:b****6 文档编号:18669579 上传时间:2022-12-31 格式:DOCX 页数:20 大小:89.39KB
下载 相关 举报
设计实现简单的通讯录C++课程设计Word格式文档下载.docx_第1页
第1页 / 共20页
设计实现简单的通讯录C++课程设计Word格式文档下载.docx_第2页
第2页 / 共20页
设计实现简单的通讯录C++课程设计Word格式文档下载.docx_第3页
第3页 / 共20页
设计实现简单的通讯录C++课程设计Word格式文档下载.docx_第4页
第4页 / 共20页
设计实现简单的通讯录C++课程设计Word格式文档下载.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

设计实现简单的通讯录C++课程设计Word格式文档下载.docx

《设计实现简单的通讯录C++课程设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《设计实现简单的通讯录C++课程设计Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。

设计实现简单的通讯录C++课程设计Word格式文档下载.docx

Windows7

开发软件:

VC6.0

●方法需求分析

该系统由于数据可能会很大,故采用文件操作,能够打开或修改指定文件及将多个文件组成一个文件。

而联系人的信息则通过类的对象来保存,它完全使用类来实现,充分体现面向对象的程序设计特点。

二、系统主要功能

●?

建立文件?

?

○?

存储文件可以使用默认文件名或指定文件名。

可以不保存输入记录,但需要确认是否保存输入记录。

如果已经有文件,只能在其后追加?

新增的记录可以不存入原文件中,也可以用原来的文件覆盖内存的内容。

可以将指定文件的内容追加到目前内存的链表后面。

文件的存取和显示?

可以单独存取文件。

可以随时显示内存中记录的全部内容。

可以直接存取默认文件或指定文件。

删除记录?

可以按“姓名”方式删除记录并更新。

能给出被删除记录的信息。

如果已经是空表,删除时应该给出提示信息并返回主菜单。

如果没有要删除的信息,输出“没有找到”的信息。

查询记录?

可以按“姓名”或“班级“方式查询记录。

能给出查询记录的信息。

如果查询的信息不存在,输出“没有找到“的信息。

整体性能?

应可以随时检索、删除或增加新记录,也可以保存或取消新的记录。

姓名可由字符和数字混合编码。

电话号码可由字符和数字组成。

三、流程图

四、数据结构设计

软件中使用的结构体和结构体数组,如:

strcpy(st[i].name,name);

strcpy(st[i].sex,sex);

strcpy(st[i].birth,birth);

strcpy(st[i].school,school);

st[i].Class=Class;

strcpy(st[i].tel,tel);

strcpy(st[i].box,box);

strcpy(st[i].qq,qq);

strcpy(st[i].address,address);

};

对用户的信息进行保存,他们都以二进制的形式读写。

其中:

cout<

<

"

请输入要修改的学生的姓名:

\t"

;

charpName[20];

cin>

>

pName;

for(i=0;

i<

num;

i++)

分别对姓名、地址、邮编、电话号码等进行储存

在子函数中运用了结构体数组

还运用了头文件:

student.h

其中还使用大量的子函数,例如:

voidinput();

//增加一条通讯录信息

voidsearch();

//查询指定同学的信息

voidmodify();

//修改某一个同学的信息

voiddisplay();

//输出全部信息

voiddeletes();

//删除指定记录

voidqingkong();

//清空所有记录

voidmenu();

//菜单选择

voidbiaotou();

//表头

五、类设计

本程序有八个公有成员函数,九个私有成员。

公有:

voidinput();

用于增加通讯录的成员。

voidsearch();

用于查询通讯录中已经存入的成员。

用于对已存入通讯录的成员进行修改。

用于将保存的通讯录进行输出。

用于删除通讯录中已有的成员。

用于将通讯录中的所有成员清空。

主菜单,用于用户对功能的选择。

链表的标头。

私有:

charname[20];

存放姓名。

charsex[4];

存放性别

charbirth[10];

存放生日

charschool[20];

存放学校

intClass;

存放班级

chartel[15];

存放电话号码

charbox[10];

存放邮政编码

charqq[15];

存放QQ号

charaddress[20];

存放家庭地址

下面贴上类的代码:

classstudent

{

public:

//增加

//查询

//修改

//输出

//删除

//清空

private:

charname[20];

//姓名

//性别

//出生年月

//学校

//班级

//电话号码

//邮政编码

//QQ号

//家庭住址

六、主要算法设计

采用模块化设计思想,定义了一个学生类,然后分别在类中定义实现各个功能的函数。

在个人类中定义了九个私有变量,分别是姓名,性别,出生年月,学校,班级,电话号码,邮政编码,QQ号,家庭住址。

由主菜单选择进入通讯录,进行功能的实现。

尽量使用简单明了的文字提示,让界面更加友好。

七、主要代码

#if!

defined_STUDENT_H_

#define_STUDENT_H_

#include<

iostream>

iomanip>

fstream>

string>

usingnamespacestd;

#endif

/*******************************************************************/

student.cpp

#include"

student.h"

intnum=0;

inti=0;

studentst[100];

//学生个数

/*****************************

*学生通讯录信息的输入*

*****************************/

voidstudent:

:

input()

{

fstreamfile;

charch='

y'

//以输出方式打开文件,如果已经有此名字的文件,则其原有内容全部删除。

while(ch=='

||ch=='

Y'

{

cout<

pleaseinputstudent'

smessage!

endl;

\t请输入姓名:

cin>

st[i].name;

\t请输入性别:

st[i].sex;

\t请输入出生年月(如199109):

st[i].birth;

\t请输入学校:

st[i].school;

\t请输入班级(数字):

st[i].Class;

\t请输入电话号码:

st[i].tel;

\t请输入邮政编码:

st[i].box;

\t请输入QQ号:

st[i].qq;

\t请输入家庭住址:

st[i].address;

file<

st[i].name<

"

st[i].sex<

st[i].birth<

<

st[i].school<

st[i].Class<

st[i].tel<

st[i].box<

st[i].qq<

st[i].address<

\t☆继续输入?

(Y/N):

ch;

num+=1;

i++;

}

cout<

\t您一共输入了"

num<

个人学生的记录。

\n"

file.close();

menu();

}

*学生通讯录的修改*

modify()

修改需密码,请输入

(1):

intp;

p;

if(p!

=1)

\t***密码错误!

***"

return;

else

{

if(strcmp(st[i].name,pName)==0)

break;

else

{

cout<

\t要修改的学生不存在!

return;

}

}

请输入修改后的姓名:

cin>

name;

请输入修改后的性别:

sex;

请输入修改后的出生年月:

birth;

请输入修改后的学校:

school;

请输入修改后的班级(数字):

Class;

请输入修改后的电话号码:

tel;

请输入修改后的邮政编码:

box;

请输入修改后的QQ号:

qq;

请输入修改后的家庭住址:

address;

strcpy(st[i].name,name);

for(i=0;

file<

\t***修改成功***\n"

*学生通讯录的查询*

search()

char*inputname=newchar[20];

file.open("

d:

\\student.txt"

ios:

in|ios:

out);

//以读的方式打开文件

\t1.按姓名查询"

☆2.按班级查询"

inta;

a;

if(a==1)

\t请输入您要查询的学生的姓名:

inputname;

intflag=0;

=num;

if(strcmp(st[i].name,inputname)==0)

\t姓名为"

inputname<

的学生的信息如下:

biaotou();

<

flag=1;

if(flag!

\t对不起,您要查找的数据不存在!

return;

elseif(a==2)

{

intflag2=0;

\t请输入您要查询的学生的班级:

intinputClass;

inputClass;

if(st[i].Class==inputClass)

\t班级为"

inputClass<

flag2=1;

if(flag2!

cout<

*学生通讯录的输出*

display()

\t学生通讯录信息统计如下:

//以输入输出方式打开文件,文件可读可写

file>

st[i].name>

st[i].sex>

st[i].birth>

st[i].school>

st[i].Class>

st[i].tel>

st[i].box>

st[i].qq>

*学生通讯录的删除*

deletes()

\t需删除的学生的姓名是:

charpName[20];

for(inti=0;

if(strcmp(st[i].name,pName)==0)

break;

}

for(intj=i;

j<

j++)//将要删除的学生调至数组最后一位

{

studenttemp=st[j];

if(j<

num-1)

st[j]=st[j+1];

st[j+1]=temp;

if(i<

num)

num-=1;

\t\t姓名为"

pName<

的学生已删除!

\t要删除的学生不存在!

qingkong()

num=0;

\t**通讯录已清空!

**\n"

//********表头**********

biaotou()

姓名"

性别"

出生年月"

<

学校"

班级"

<

电话号码"

邮政编码"

QQ号"

家庭住址"

*菜单选择函数*

menu()

while

(1)

\t=zzia=zzia=zzia=zzia=zzia=zzia=\n"

\t||制作者:

黄逸雪||\n"

\t||◇录入纪录(I/i)||\n"

\t||◇查询纪录(S/s)||\n"

\t||◇修改纪录(M/m)||\n"

\t||◇显示纪录(D/d)||\n"

\t||◇删除纪录(X/x)||\n"

\t||◇清空纪录(Q/q)||\n"

\t||◇退出操作(E/e)||\n"

李瑞晗||\n"

\t||欢迎您的使用||\n"

☆请输入您的选择(I/i,S/s,M/m,D/d,X/x,Q/q,E/e,不区分大小写):

charch;

switch(ch)

case'

i'

case'

I'

input();

break;

s'

S'

search();

m'

M'

modify();

d'

D'

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

当前位置:首页 > 高等教育 > 艺术

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

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