计算机科学与应用系课程设计设计并实现简单的通讯录Word下载.docx

上传人:b****2 文档编号:2949554 上传时间:2023-05-01 格式:DOCX 页数:23 大小:222.65KB
下载 相关 举报
计算机科学与应用系课程设计设计并实现简单的通讯录Word下载.docx_第1页
第1页 / 共23页
计算机科学与应用系课程设计设计并实现简单的通讯录Word下载.docx_第2页
第2页 / 共23页
计算机科学与应用系课程设计设计并实现简单的通讯录Word下载.docx_第3页
第3页 / 共23页
计算机科学与应用系课程设计设计并实现简单的通讯录Word下载.docx_第4页
第4页 / 共23页
计算机科学与应用系课程设计设计并实现简单的通讯录Word下载.docx_第5页
第5页 / 共23页
计算机科学与应用系课程设计设计并实现简单的通讯录Word下载.docx_第6页
第6页 / 共23页
计算机科学与应用系课程设计设计并实现简单的通讯录Word下载.docx_第7页
第7页 / 共23页
计算机科学与应用系课程设计设计并实现简单的通讯录Word下载.docx_第8页
第8页 / 共23页
计算机科学与应用系课程设计设计并实现简单的通讯录Word下载.docx_第9页
第9页 / 共23页
计算机科学与应用系课程设计设计并实现简单的通讯录Word下载.docx_第10页
第10页 / 共23页
计算机科学与应用系课程设计设计并实现简单的通讯录Word下载.docx_第11页
第11页 / 共23页
计算机科学与应用系课程设计设计并实现简单的通讯录Word下载.docx_第12页
第12页 / 共23页
计算机科学与应用系课程设计设计并实现简单的通讯录Word下载.docx_第13页
第13页 / 共23页
计算机科学与应用系课程设计设计并实现简单的通讯录Word下载.docx_第14页
第14页 / 共23页
计算机科学与应用系课程设计设计并实现简单的通讯录Word下载.docx_第15页
第15页 / 共23页
计算机科学与应用系课程设计设计并实现简单的通讯录Word下载.docx_第16页
第16页 / 共23页
计算机科学与应用系课程设计设计并实现简单的通讯录Word下载.docx_第17页
第17页 / 共23页
计算机科学与应用系课程设计设计并实现简单的通讯录Word下载.docx_第18页
第18页 / 共23页
计算机科学与应用系课程设计设计并实现简单的通讯录Word下载.docx_第19页
第19页 / 共23页
计算机科学与应用系课程设计设计并实现简单的通讯录Word下载.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

计算机科学与应用系课程设计设计并实现简单的通讯录Word下载.docx

《计算机科学与应用系课程设计设计并实现简单的通讯录Word下载.docx》由会员分享,可在线阅读,更多相关《计算机科学与应用系课程设计设计并实现简单的通讯录Word下载.docx(23页珍藏版)》请在冰点文库上搜索。

计算机科学与应用系课程设计设计并实现简单的通讯录Word下载.docx

为了设计并实现简单的通讯录,要求使用数组实现,设计了数组元素的类型,数据元素类型即Node,封装了姓名和号码以及对其操作的函数;

数组这个类即array,封装了node即Node[1000],和计算数据

元素个数的计数变量len,以及对其操作的各个函数。

其中的函数都为接口函数,要实现具体的功能,在主函数中还要要点用具体的自定义函数。

1.数据元素类型即Node

程序大概代码如下(附有解释):

classNode

{private:

charname[10],number[20];

//分别存储姓名和号码

public:

Node(char*p="

"

char*q="

)//构造函数

{

strcpy(name,p);

strcpy(number,p);

}

char*getname()//得到姓名

returnname;

char*getnumber()//得到号码

returnnumber;

voidsetname(char*p)//建立姓名

voidsetnumber(char*p)//建立号码

strcpy(number,p);

voiddisplay()//显示信息

cout<

<

setw(6)<

name<

setw(15)<

number<

endl;

friendclassarray;

//友元函数

};

typedefNodenode[1000];

//新定义Node为node[1000]

2保存个人信息的类array

程序关键代码如下(附有解释):

classarray

{

private:

nodeInfo;

public:

intlen;

//标记信息个数

array(intl=0):

len(l){}//初始化

voidadd(char*p="

);

//添加人员

char*getname(inti);

//返回指定人的名字地址

char*getnumber(inti);

//返回指定人的姓名地址

voidsetname(inti,char*p);

//修改成员姓名

voidsetnumber(inti,char*p);

//修改成员号码

intlocatename(char*p);

//按姓名定位

intlocatenumber(char*p);

//按号码定位

voiddelate(inti);

//删除成员

voidshowone(inti);

//显示指定人信息

voidshowall();

//显示所有人信息

要将array类声明成为Node类的友元类,因为在array类中有Node类型的成员,需要声明才能才能调用Node类中的函数。

在初始化时要将len为零,因为那时没有存储数据,len是标记存储数据个数的。

其中intlocatename(char*p);

intlocatenumber(char*p);

这两个定位函数对于信息的查找、修改和删除至关重要,在查找时,需要对存储信息的数组进行遍历,返回要查找信息的编号,来确定信息的位置,然后利用函数voidshowone(inti)显示指定人的姓名和号码的信息;

用函数voiddelate(inti)删除指定的成员;

用voidsetname(inti,char*p)和voidsetnumber(inti,char*p)函数对指定人进行信息的修改。

其中在将输入的信息进行文件保存时,因为个人的名字和号码为私有成员,不能直接访问,就需要接口函数char*getname(inti);

char*getnumber(inti);

得到个人信息,才能进行存储。

voidshowall()函数是将存储的所有信息输出。

以上功能的实现,也离不开类Node中定义的函数,因为在实现类array中的函数功能时,利用了类Node中对应的函数。

如:

char*getname()和char*name(inti),char*getnumber()和char*getnumber(inti);

voidsetname(char*p)和voidsetname(inti,char*p),voidsetnumber(char*p)和voidsetnumber(inti,char*p)等等

5.主要调用函数代码

5.1、选择函数

为了选择方便构造了选择函数。

程序代码如下:

intmenu_select()//选择函数

char*m[9]={"

1.增加记录"

"

2.删除一条记录"

3.显示所有记录"

4.按姓名查找并显示一条记录"

5.按号码查找并显示一条记录"

6.按姓名查找并修改一条记录"

7.从文件中添加数据到库表中"

8.将库表中的数据写入文件"

0.退出系统"

inti;

charc;

do{

system("

cls"

);

//清屏方便操作

\n\n======欢迎使用通讯录管理系统======\n\n"

;

for(i=0;

i<

9;

i++)

m[i]<

\n==================================\n"

请选择(1-8,0):

cin>

>

c;

}while(c<

'

0'

||c>

8'

return(c-'

//因为返回值为int型

}

5.2、增加记录函数

增加记录函数Add有点用了array中的add()接口函数。

具体代码如下:

voidAdd(array&

list)//1.增加记录

{

charp[10],q[20];

intn,m=0;

请输入要添加的人数:

n;

请输入:

\n姓名号码\n"

for(m;

m<

m++)

p>

q;

list.add(p,q);

添加成功!

\n"

5.3、删除一条记录函数

此函数有调用了array类中的delate()接口函数。

具体程序代码如下:

voidDel(array&

list)//2.删除一条记录

charp[10];

请输入要删除人的姓名:

p;

i=list.locatename(p);

if(i!

=-1)

{list.delate(i);

删除成功!

5.4、按姓名查找并显示一条记录函数

此函数又调用了类array中的接口函数locatename()函数和showone()函数。

voidlocnameshow(array&

list)//4.按姓名查找并显示一条记录

{inti;

请输入要查找人的姓名:

list.showone(i);

5.5、按号码查找并显示一条记录函数

此函数又调用了类array中的接口函数locatenumber()函数和showone()函数。

voidlocnumbershow(array&

list)//5.按号码查找并显示一条记录

charp[20];

请输入要查找号码:

i=list.locatenumber(p);

5.6、.按姓名查找并修改一条记录

此函数调用了类array中的接口函数locatename()函数和setname()函数和setnumber()。

voidmodify(array&

list)//6.按姓名查找并修改一条记录

inti,t;

请输入要查修改人的姓名:

cout<

请选择要修改的内容:

1.姓名2.号码\n"

t;

if(t==1)

{cout<

请输入修改后的姓名:

cin>

list.setname(i,p);

修改姓名成功!

}

else

if(t==2)

请输入修改后的号码:

list.setnumber(i,p);

cout<

选择错误!

重新操作\n"

5.7、从文件中添加数据到库表函数

此函数是为了从文件中读取保存的信息。

voidreadfile(array&

list)//7.从文件中添加数据到库表中

charfname[20];

请输入要读取的文件名:

fname;

ifstreaminf(fname,ios:

:

in|ios:

binary);

if(!

inf)

cerr<

openerror"

inti,j,t;

inf>

j;

t=list.len;

inf>

name>

number;

list.setname(t+i,name);

list.setnumber(t+i,number);

list.len=list.len+j;

添加成功!

inf.close();

cin.get();

5.8、库表中的数据写入文件函数

此函数是为了将输入的信息存入文件。

voidwritefile(array&

list)//8.将库表中的数据写入文件

请输入要写入的文件名:

ofstreamoutf(fname,ios:

out|ios:

outf)

{cout<

不能打开"

fname<

文件!

return;

outf<

list.len<

list.len;

outf<

setw(8)<

list.getname(i)<

list.getnumber(i)<

添加成功"

outf.close();

6、系统运行结果样例

头文件:

#include<

iostream>

string>

iomanip>

fstream>

stdlib.h>

usingnamespacestd;

主函数如下:

intmain()

arraybook;

for(;

{

switch(menu_select())

{

case1:

Add(book);

system("

pause"

break;

case2:

Del(book);

case3:

book.showall();

case4:

locnameshow(book);

system("

case5:

locnumbershow(book);

case6:

modify(book);

case7:

readfile(book);

case8:

writefile(book);

case0:

exit

(1);

return1;

程序截屏如下:

又再次运行程序:

7、结语

大一下学的C++,现在无论是自己编写实现些简单函数体,还是参考相关资料上的稍大点的函数结构,都有点模糊了,甚至有时会弄不懂这个函数到底什么作用。

这次课程实践,又让我温习了用起来相当灵活的C++,对c++的封装、继承、多态有了更好地了解,同时也得到了应用,锻炼了自己的动手能力,实际独立处理些问题的能力。

但在具体操作中,有很多的细节问题,需要自己认真把握。

指导老师评语:

成绩:

签名:

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

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2