C++课程设计通讯录.docx

上传人:b****5 文档编号:6745757 上传时间:2023-01-09 格式:DOCX 页数:29 大小:452.16KB
下载 相关 举报
C++课程设计通讯录.docx_第1页
第1页 / 共29页
C++课程设计通讯录.docx_第2页
第2页 / 共29页
C++课程设计通讯录.docx_第3页
第3页 / 共29页
C++课程设计通讯录.docx_第4页
第4页 / 共29页
C++课程设计通讯录.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

C++课程设计通讯录.docx

《C++课程设计通讯录.docx》由会员分享,可在线阅读,更多相关《C++课程设计通讯录.docx(29页珍藏版)》请在冰豆网上搜索。

C++课程设计通讯录.docx

C++课程设计通讯录

C++语言课程设计

 

学生姓名:

学号:

121404121

系(院):

信息工程学院

专业:

计算机科学与技术

设计(论文)题目:

通讯录   

完成日期:

2014年1月10日

指导教师:

课程设计评估

程序

设计报告

回答问题

等级

功能完善,规范,代码量大,有难度

符合规范,内容与程序一致

完全正确

功能较完善,较规范,代码量较大,有一定难度

规范性较好,内容与程序一致度较好

较正确

功能基本完善,较规范,代码量中等,难度中等

基本符合规范,内容与程序一致度一般

基本正确

功能一般,不够规范,代码量小,难度小

规范性不够,内容与程序一致度不好

部分正确

及格

功能一般,不规范,代码量小,难度小

不符合规范,内容与程序不一致

错误

不及格

注:

“程序”部分和“设计报告”部分的评分是在“回答问题”评分的基础上进行的。

1.课程设计目的........................................1

2.课程设计内容........................................1

3.总体设计............................................1

4.详细设计............................................2

5.运行结果............................................6

6.程序调试............................................9

7.编程体会............................................10

一、课程设计目的

(1)通过课程设计,加深对结构化程序设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。

(2)通过课程设计,进一步掌握C++及类和对象。

掌握类的特点并熟练类的封装、继承和多态。

(3)通过课程设计,提高程序开发能力,能运用合理的控制流编写清晰高效的程序。

(4)通过课程设计,培养C++语言知识运用和自学能力,真正的把课堂上获得的知识运用起来,培养自己对程序编写的兴趣,并能独立设计和实现一个中小型系统。

(5)通过课程设计,加强了自己的程序分析能力,同时让自己对C++有了更深刻的了解。

二、课程设计内容

此系统提供对通讯录信息的录入、编辑、查找、统计等功能。

具体功能实现如下:

(1)信息录入、添加:

实现人员通讯录信息的录入、添加功能。

(2)信息存储:

能将录入的信息以文件形式加以保存。

(3)编辑功能:

对指定人员的通讯录信息进行删除或修改等功能,也可对所有录入的信息进行一次性删除。

(4)信息浏览功能:

实现对全部人员的通讯录信息浏览及详细查看。

(5)查询功能:

实现按学号查询、按姓名查询通讯录信息的功能。

(6)统计功能:

实现对男生、女生人数及总人数的统计功能。

(7)系统以菜单方式工作,界面清晰易于操作。

三、总体设计

本系统的功能模块如下图

(1)所示,主要有以下模块:

(1)课程名称界面:

在主函数intmain()中,实现课程设计名称以及作者的显示。

(2)主菜单界面:

在主函数intmain()中,实现系统主菜单的显示。

(3)通讯录信息录入:

构造函数voidAdd(),实现学生通讯录信息的录入及显示。

并通过调用函数voidCount(),实现对学生简历信息的添加录入以及对学生总数的统计。

(4)通讯录信息修改:

构造函数voidModify(stringID),实现对需要修改通讯录信息的学生的查找,并实现通讯录信息修改界面的显示并对其简历信息进行修改。

(5)通讯录信息查询:

构造函数voidSearch(),实现查询界面的显示。

并通过对按学号查询函数voidFind(stringID)、按姓名查询函数voidFind(charName[20])的调用,实现相应的通讯录信息的查询。

(6)通讯录信息删除:

构造函数voidDelete(),实现对指定学生的通讯录信息的删除。

(7)通讯录信息浏览:

构造函数voidLook(),实现通讯录信息粗略浏览界面的显示。

并通通讯录查询函数voidsearch()的调用,实现相应的通讯录详细信息的浏览。

(8)统计男女人数:

构造函数voidCount(),实现对不同性别的人数及总人数统计。

(9)通讯录保存:

构造函数voidSave(),实现将信息保存到文件。

 

 

(1)

四、详细设计

(1)数据结构设计

本程序用到的数据结构主要有:

指针、链表、类、文件等。

先创建一个类型为Person的基类,其成员为人员的通讯录信息,再创建一个继承类Manage实现各种功能。

然后通过对指针、链表、文件等数据结构的操作,实现对通讯录信息的录入,插入,存盘,查询,浏览,删除,修改等一系列操作。

(2)模块接口声明

1.所有函数模块声明如下

voidFind(charName[20]);//按姓名查找

voidFind(stringID);//按编号查找

voidAdd();//添加加信息

voidDelete();//删除信息

voidModify(stringID);//修改信息

voidSearch();//查询信息

voidCount();//统计信息

voidSave();//保存数据

voidLoad();//读入数据

voidLook();//预览

voidDeAll();//删除通讯录

voidOutput(Person*p)//输出信息

2.并定义了一个全局变量

stringID;//(全局变量)具有唯一性

3.主要模块的实现

系统以主函数intmain()为入口,首先·1通过system("colorf0");将文本颜色置为黑色,背景颜色置为白色。

在主函数intmain()中,显示课程设计名称,显示系统欢迎界面,进入主菜单界面。

系统接收用户输入的选择,调用相应的函数,进入到下一级菜单进行相关工作。

1 以下是主菜单的流程图:

(2)

2 以下为录入信息的实现:

 

N

Y

N

Y

N

 

Y

 

N

Y

 

Y

N

 

图(3)

 

3 以下为按学号查询的实现

图(4)

4 以下为统计模块的实现

图(5)

五、运行结果

(1)主菜单界面:

图(6)

输入功能选择,系统自动进入相应功能界面。

(2)信息录入界面:

图(7)

录入各种信息。

(3)信息浏览界面:

图(8)

可预览部分信息,也可查询详细信息。

(4)信息修改界面:

图(9)

可分别修改各类信息。

(5)信息清除界面:

图(10)

清除全部信息时会有警告。

七、编程体会

经过对通讯录的分析与编写,我得到了很大的收获。

自主学习的必要性更是解决问题的基础。

这次设计使我重温了以前学过的各科知识,让我对C++编程有了更深刻的认识。

这次我所做的通讯录系统中包含了输入、输出、保存、删除、查询、修改等多种功能,系统操作灵活性较强,功能较强大;可以随意地选择不同的指令进行操作;排版效果清晰明了,美观;由于该系统对数据采用文本保存方式,所以安全性不可靠;采用链表结构操作,不能支持超大量的数据,否则运行缓慢。

通过这次课程设计,我了解到学习c++需要有活跃的思维,灵活运用已有的知识,对于程序更是要有相当的耐心去调试,要有探索的精神,不断钻研,不断思考。

这次C++系统设计作业,提升了我分析问题的能力和思考问题的逻辑能力,更明白实际调研的重要性。

从这次设计学到的东西,相信会对我们日后的学习工作起到很大的指导作用。

八、源程序

/////////////////////////////////////////////////

//////通讯录///////////////////

/////计科120121殷学梅///////////////////////

/////////////////////////////////////////////////

#include

#include

#include

#include

#include//#include

usingnamespacestd;

stringID;//(全局变量)具有唯一性

classPerson

{

protected:

stringNo;//学号

stringAge;//年龄

charName[20];//姓名

charSex[10];//性别

stringTel;//联系方式

Person*next;

public:

Person(stringID,char*Name,char*Sex,stringAge,stringTel)//构造函数

{

strcpy(this->Name,Name);

strcpy(this->Sex,Sex);

this->Tel=Tel;

this->No=ID;

this->Age=Age;

}

friendclassManage;//类Manage是类Person的一个友元类,类Manage中的所有成员函数为类Person的友元函数

};

classManage

{

private:

Person*person;

public:

Manage()//构造函数

{

person=0;

Load();//数据读入

}

~Manage()

{

Person*p;

p=person;

while(p)

{

p=p->next;

deleteperson;

person=p;

}

person=0;

}

voidFind(charName[20]);//按姓名查找

voidFind(stringID);//按编号查找

voidAdd();//添加加信息

voidDelete();//删除信息

voidModify(stringID);//修改信息

voidSearch();//查询信息

voidCount();//统计信息

voidSave();//保存数据

voidLoad();//读入数据

voidLook();//预览

voidDeAll();//删除通讯录

voidOutput(Person*p);//预览信息

};

voidManage:

:

Output(Person*p)

{

cout<<"\t\t学号:

"<No<

cout<<"\t\t姓名:

"<Name<

cout<<"\t\t性别:

"<Sex<

cout<<"\t\t年龄:

"<Age<

cout<<"\t\t联系电话:

"<Tel<

cout<

}

voidManage:

:

Add()

{

system("cls");

Person*p2;//新结点指针

Person*p;//新结点指针

stringNo,Age,Tel;

charName[20],Sex[10];

charc;

cout<<"\n**新增学生通讯录**\n";//输入学生信息

cout<<"输入学号:

\t";

cin>>No;

cout<

Person*p1;//指向头结点

p1=person;

while(p1)

{

if(p1->No==No)

{

break;

}

else

{

p1=p1->next;

}

}

if(p1!

=NULL)

{

cout<<"该学号已存在,是否修改该学生信息(Y/N)"<

cin>>c;

if(toupper(c)=='Y')

{

cout<<"该学生信息为:

"<

Find(No);

cout<

Modify(No);//调用修改函数

return;

}

else

return;

}

cout<<"输入姓名:

\t";

cin>>Name;

cout<

cout<<"输入性别:

\t";

cin>>Sex;

cout<

cout<<"输入年龄:

\t";

cin>>Age;

cout<

cout<<"输入联系方式:

\t";

cin>>Tel;

cout<

p=newPerson(No,Name,Sex,Age,Tel);

p->next=0;//学生结点加入链表

if(person)//若已经存在结点

{

p2=person;

while(p2->next)//查找尾结点

{

p2=p2->next;

}

p2->next=p;//连接

}

else//若不存在结点(表空)

{

person=p;//连接

}

system("cls");

cout<<"\t\t\t***添加成功***\n"<

cout<<"是否继续添加(Y/N)"<

cin>>c;

if(toupper(c)=='Y')

{

Add();

return;

}

else

return;

}

voidManage:

:

Delete()//删除人员

{

system("cls");

charc;

stringNo;

cout<<"\n**删除信息**\n";

cout<<"输入要删除的学生ID:

\t";

cin>>No;

cout<

Person*p1,*p2;

p1=person;

while(p1)

{

if(p1->No==No)

break;

else

{

p2=p1;

p1=p1->next;

}

}//删除结点

if(p1!

=NULL)//若找到结点,则删除

{

cout<<"所要删除的学生的信息如下:

\n"<

Output(p1);

cout<<"确定是否删除(Y/N):

";

cin>>c;

if(toupper(c)!

='Y')

return;

if(p1==person)//若要删除的结点是第一个结点

{

person=p1->next;

deletep1;

}

else//若要删除的结点是后续结点

{

p2->next=p1->next;

deletep1;

}

cout<<"\t\t***删除成功***\n";

cout<<"是否继续删除(Y/N)"<

cin>>c;

if(toupper(c)=='Y')

{

Delete();

return;

}

else

{

return;

}

}

else//未找到结点

{

cout<<"未找到该学生!

\n";

}

getch();

}

voidManage:

:

Modify(stringID)

{

Person*p1;

charc;

p1=person;

while(p1)

{

if(p1->No==ID)

break;

else

{

p1=p1->next;

}

}

if(p1!

=NULL)//若找到结点

{

system("cls");

cout<<"所要修改的学生的信息如下:

\n"<

Output(p1);

do

{

cout<<"1.修改姓名2.修改性别3.修改年龄4.修改联系方式5.退出修改\n"<

cout<<"请选择(1-5)要修改的信息\n"<

cin>>c;

if(c!

='5')

cout<<"请输入新的信息:

";

switch(c)

{

case'1':

cin>>p1->Name;

break;

case'2':

cin>>p1->Sex;

break;

case'3':

cin>>p1->Age;

break;

case'4':

cin>>p1->Tel;

break;

default:

break;

}

}

while(c!

='5');

system("cls");

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

cout<<"是否继续修改(Y/N):

"<

cin>>c;

if(toupper(c)=='Y')

{

cout<<"请输入要修改人员的ID:

";

cin>>ID;

cout<

Modify(ID);

return;

}

else

return;

}

else//未找到结点

cout<<"未找到该学生!

\n";

getch();//暂停

}

voidManage:

:

Save()//数据写入到文件

{

ofstreamfPerson("Person.txt",ios:

:

out);//文件以输出方式打开(内存数据输出到文件)

charc;

cout<<"\n保存数据,是否继续?

[Y/N]:

";

cin>>c;

if(toupper(c)!

='Y')

return;

Person*p=person;

while(p)

{

fPerson<No<<""<Name<<""<Sex<<""<Age<<""<Tel<

p=p->next;

}

fPerson.close();

cout<<"\n保存成功...\n";

system("pause");//暂停程序的退出

}

voidManage:

:

Load()//数据读入

{

ifstreamfPerson;

Person*p=person;

stringNo,Age,Tel;

charName[20],Sex[10];

fPerson.open("person.txt",ios:

:

in);//文件以输入方式打开(文件数据输入到内存)

fPerson>>No>>Name>>Sex>>Age>>Tel;

while(fPerson.good())

{

p=newPerson(No,Name,Sex,Age,Tel);

p->next=0;//员工结点加入链表

if(person)//若已经存在结点

{

Person*p2;

p2=person;

while(p2->next)//查找尾结点

{

p2=p2->next;

}

p2->next=p;//连接

}

else//若不存在结点(表空)

{

person=p;//连接

}

fPerson>>No>>Name>>Sex>>Age>>Tel;

}

fPerson.close();

}

voidManage:

:

Find(stringID)

{

Person*p1;

p1=person;

while(p1)

{

if(p1->No==ID)

break;

else

{

p1=p1->next;

}

}

if(p1!

=NULL)

{

Output(p1);

}

else

cout<<"未找到该学生"<

}

voidManage:

:

Find(charName[20])

{

Person*p1;

intcount=0;

p1=person;

while(p1)

{

if(strcmp(p1->Name,Name)==0)

{

count++;

Output(p1);

}

p1=p1->next;

}

if(count)

{

cout<<"\t查询成功!

!

!

"<

cout<<"\n共找到"<

}

else

cout<<"\n\t\t未找到该学生!

!

!

\n"<

}

voidManage:

:

Search()

{

charc;

stringID,Tel;

charName[20];

do{

cout<<"1.按学号查找2.按名字查找3.退出查找"<

cin>>c;

cout<

switch(c)

{

case'1':

{

cout<<"输入学号ID:

";

cin>>ID;

Find(ID);

};

break;

case'2':

{

cout<<"输入姓名Name:

";

cin>>Name;

Find(Name);

};

break;

case'3':

{

break;

}

default:

{

cout<<"输入有误请重新输入!

!

!

\n"<

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

当前位置:首页 > 医药卫生 > 基础医学

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

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