资源描述
河南城建学院
《面向对象程序设计》课程设计报告书
设 计 题 目:同学通讯录系统
目录
第1章 选 题 3
1.1 题目背景 3
1.2系统实现的具体分工 3
1.2.1 标题 3
1.3开发环境 3
第2章 设计内容 4
2.1实现功能 4
2.2 概要设计(涉及类的框图) 4
2.3界面设计 5
第3章 系统实现 6
3.1 涉及知识点 6
3.2 系统运行(主要运行界面抓图) 6
3.3 源程序清单(关键代码) 10
第4章 结束语 25
第1章 选 题
1.1 题目背景
随着信息时代的到来,人与人之间的交流也开始变得多样化,传统的通讯方式逐渐的显示出越来越多的弊端。在这个信息化时代,人们需要的是一种高效率,方便快捷的通讯方式,在这种需要下,我们选择以“同学通讯录管理系统”为设计题目,使人们更加适应于这个信息化的社会。
1.2系统实现的具体分工
这个同学通讯录
1.2.1 标题
同学通讯录管理系统
1.3开发环境
Visual C++ 6.0
机型: 方正电脑
处理器名称:Intel(R)Core(TM)2 Duo CPU E7200 @ 2.53GHz
硬盘驱动器:WDC WD1600AAJS-22WAAO
系统内存: 金士顿内存2GB
显示卡: NVIDIA GeFORCE 9400 GT
显示器: 方正科技FG981-W9
操作系统: Microsoft Windows XP Professional 第2章 设计内容
2.1实现功能
系统主要包括读者服务、借还图书和退出功能。用户只需先进入读者服务中注册一下就可以进行借阅、查询。
2.2 概要设计(涉及类的框图)
通过分析之后,本程序应该有以下功能特点:
一、首先要有一个基本信息类,类中包含有姓名、身份证号码、电话号码及家庭住址的内容。
二、有一个便于操作的菜单,实现添加信息、查找信息、显示信息以及删除信息的功能。
三、有一个能实现文件的存取以及修改功能,以便于真正的达到同学录记录数据的目的。
四、界面美观整洁,能够使人一目了然,操作方便。
添加好友信息
光标移动
界面转换
帮
助
界
面
退出
删除好友信息
显示全部信息
查找好友信息
菜
单
界
面
同
学
通
讯
录
系
统
同
学
信
息
类
保存到文件
构造函数
2.3界面设计
进入程序后首先进入帮助函数。在了解如何测试这个程序后,再进入程序主体的函数。菜单可以利用字母按键的_getch()函数来进行光标移动的控制。同样也可以进入各个主体函数。
在主体函数中,可以通过添加好友函数来进行对姓名、身份证号码、电话号码以及家庭住址的信息录入。在添加好友的函数中,用文件的存储功能对所录入的信息进行保存以便下次读取使用。
查找好友信息的函数和显示好友信息的函数都使用了文件的读取功能。利用文件的读取以及查找进行有选择的显示,从而实现这两个功能。
删除好友信息利用了文件的拷贝、清空、修改、存取功能,从而能够将用户所选择的信息进行删除。
最后点击退出即可退出程序。
第3章 系统实现
3.1 涉及知识点
文件的拷贝、清空、修改、存取功能;类的运用;字符串;系统函数;函数调用;多文件结构等
3.2 系统运行(主要运行界面抓图)
图3-1 开始界面
图3-2 帮助界面
图3-3 菜单界面
图3-4 添加好友信息
图3-5 查找好友信息
图3-6 显示全部信息
图3-7 删除好友信息
图3-8 退出界面
3.3 源程序清单(关键代码)
#include"iostream.h"
#include"fstream.h"
#include"windows.h"
#include"conio.h"
#include<string.h>
//同学信息类
class stu
{
public:
char name[10],card[18],phone[13],address[20];
public:
stu()
{
for(int i=0; i<10; i++)
name[i]=' ';
for(i=0;i<18 ; i++)
card[i]=' ';
for(i=0; i<13; i++)
phone[i]=' ';
for(i=0; i<20; i++)
address[i]=' ';
}
//保存函数
void savenew()
{
ofstream out;
//out.open("list.txt",ios::appios::out);//打开文件
out.open("list.txt",ios::ate);//打开文件
if(!out)
{
cout<<"\n\r\t对不起!打开文件失败!"<<endl;
return;
}
out<<'#';
//读姓名
for(int i=0; i<10; i++)
if(name[i]=='\0')
out<<' ';
else
out<<name[i];
//读身份证号
for(i=0; i<18; i++)
if(card[i]=='\0')
out<<' ';
else
out<<card[i];
//读电话号
for(i=0;i<13;i++)
if(phone[i]=='\0')
out<<' ';
else
out<<phone[i];
//读家庭地址
for(i=0;i<20;i++)
if(address[i]=='\0')
out<<' ';
else
out<<address[i];
out.close();//关闭文件
}
};
//菜单类
class menu
{
public:
int place, flag;
//place: 表示光标的位置在第几行
//flag: 0表示运行程序,1表示退出程序
menu()
{
flag=0;
place=1;
}
//显示菜单函数
void show()
{
system("cls");//清屏
switch(place)
{
case 1:
cout<<"┏━━━━━━━━━━━━━━━━┓\n"
<<"▕ 菜单界面 ▕\n"
<<"▕ ▕\n"
<<"▕ →添加好友信息 ▕\n"
<<"▕ ▕\n"
<<"▕ 查找好友信息 ▕\n"
<<"▕ ▕\n"
<<"▕ 显示全部信息 ▕\n"
<<"▕ ▕\n"
<<"▕ 删除好友信息 ▕\n"
<<"▕ ▕\n"
<<"▕ 退出 ▕\n"
<<"▕ ▕\n"
<<"▕ ▕\n"
<<"▕ W: ↑ S: ↓ E: 进入 H: 帮助 ▕\n"
<<"▕ ▕\n"
<<"┗━━━━━━━━━━━━━━━━┛\n"<<endl;
break;
case 2:
cout<<"┏━━━━━━━━━━━━━━━━┓\n"
<<"▕ 菜单界面 ▕\n"
<<"▕ ▕\n"
<<"▕ 添加好友信息 ▕\n"
<<"▕ ▕\n"
<<"▕ →查找好友信息 ▕\n"
<<"▕ ▕\n"
<<"▕ 显示全部信息 ▕\n"
<<"▕ ▕\n"
<<"▕ 删除好友信息 ▕\n"
<<"▕ ▕\n"
<<"▕ 退出 ▕\n"
<<"▕ ▕\n"
<<"▕ ▕\n"
<<"▕ W: ↑ S: ↓ E: 进入 H: 帮助 ▕\n"
<<"▕ ▕\n"
<<"┗━━━━━━━━━━━━━━━━┛\n"<<endl;
break;
case 3:
cout<<"┏━━━━━━━━━━━━━━━━┓\n"
<<"▕ 菜单界面 ▕\n"
<<"▕ ▕\n"
<<"▕ 添加好友信息 ▕\n"
<<"▕ ▕\n"
<<"▕ 查找好友信息 ▕\n"
<<"▕ ▕\n"
<<"▕ →显示全部信息 ▕\n"
<<"▕ ▕\n"
<<"▕ 删除好友信息 ▕\n"
<<"▕ ▕\n"
<<"▕ 退出 ▕\n"
<<"▕ ▕\n"
<<"▕ ▕\n"
<<"▕ W: ↑ S: ↓ E: 进入 H: 帮助 ▕\n"
<<"▕ ▕\n"
<<"┗━━━━━━━━━━━━━━━━┛\n"<<endl;
break;
case 4:
cout<<"┏━━━━━━━━━━━━━━━━┓\n"
<<"▕ 菜单界面 ▕\n"
<<"▕ ▕\n"
<<"▕ 添加好友信息 ▕\n"
<<"▕ ▕\n"
<<"▕ 查找好友信息 ▕\n"
<<"▕ ▕\n"
<<"▕ 显示全部信息 ▕\n"
<<"▕ ▕\n"
<<"▕ →删除好友信息 ▕\n"
<<"▕ ▕\n"
<<"▕ 退出 ▕\n"
<<"▕ ▕\n"
<<"▕ ▕\n"
<<"▕ W: ↑ S: ↓ E: 进入 H: 帮助 ▕\n"
<<"▕ ▕\n"
<<"┗━━━━━━━━━━━━━━━━┛\n"<<endl;
break;
case 5:
cout<<"┏━━━━━━━━━━━━━━━━┓\n"
<<"▕ 菜单界面 ▕\n"
<<"▕ ▕\n"
<<"▕ 添加好友信息 ▕\n"
<<"▕ ▕\n"
<<"▕ 查找好友信息 ▕\n"
<<"▕ ▕\n"
<<"▕ 显示全部信息 ▕\n"
<<"▕ ▕\n"
<<"▕ 删除好友信息 ▕\n"
<<"▕ ▕\n"
<<"▕ →退出 ▕\n"
<<"▕ ▕\n"
<<"▕ ▕\n"
<<"▕ W: ↑ S: ↓ E: 选中 H: 帮助 ▕\n"
<<"▕ ▕\n"
<<"┗━━━━━━━━━━━━━━━━┛\n"<<endl;
break;
}
}
};
//添加信息
void addmate()
{
char c;
stu mate;
c='y';
do
{
system("cls");
//添加信息
cout<<" 请输入姓名: ";
cin>>mate.name;
cout<<"请输入身份证号码:";
cin>>mate.card;
cout<<" 请输入电话号码: ";
cin>>mate.phone;
cout<<" 请输入家庭住址: ";
cin>>mate.address;
mate.savenew();
//判断是否继续添加
cout<<"信息添加成功,想继续添加吗(y/n)"<<endl;
cin>>c;
int flag=0;
do
{
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
else
flag=1;
}while(flag==0);
}while(c=='y');
}
//查找信息
void search()
{
system("cls");
//获取姓名并处理
cout<<"请输入要查找的姓名:";
char name[10];
for(int i=0; i<10; i++)
name[i]=' ';
cin>>name;
for(i=0; i<10; i++)
if(name[i]=='\0')
name[i]=' ';
int flag;//查找到的信息个数
flag=0;
int k=0;//判断是否符合查找信息
ifstream in;
in.open("list.txt",ios::in);//打开文件
in.unsetf(ios::skipws);//读出信息时不跳过空格
char ch;
stu mate;
//查找信息
while(in>>ch)
{
if(ch=='#')
continue;
for(int i=0; i<10; i++)
{
mate.name[i]=ch;
in>>ch;
}
for(i=0; i<18; i++)
{
mate.card[i]=ch;
in>>ch;
}
for(i=0; i<13; i++)
{
mate.phone[i]=ch;
in>>ch;
}
for(i=0; i<20; i++)
{
mate.address[i]=ch;
in>>ch;
}
for(i=0; i<10; i++)
{
if(mate.name[i]!=name[i])
k=1;
}
if(k==0)
{
cout<<"┏━━━━━━━━━━━━━━┓\n"
<<" | 姓名:";
for(i=0; i<10; i++)
cout<<mate.name[i];
cout<<" |\n"
<<" | 身份证号: ";
for(i=0;i<18;i++)
cout<<mate.card[i];
cout<<" |\n"
<<" | 电话号码: ";
for(i=0;i<13;i++)
cout<<mate.phone[i];
cout<<" |\n"
<<" | 家庭住址: ";
for(i=0;i<20;i++)
cout<<mate.address[i];
cout<<" |\n"
<<"┗━━━━━━━━━━━━━┛"<<endl;
flag++;
}
k=0;
}
cout<<"┏━━━━━━━━━━━━━━┓\n"
<<" | 查找完毕! |\n"
<<" | 共查找到"<<flag<<"个结果 |\n"
<<" | 点击任意键返回! |\n"
<<"┗━━━━━━━━━━━━━━┛"<<endl;
_getch();
}
//显示信息
void show()
{
system("cls");
cout<<"┏━━━━━━━━━━━━━┓\n"
<<" | 以下是显示的所有结果: |\n"
<<" | 点击任意键返回! |\n"
<<"┗━━━━━━━━━━━━━┛"<<endl;
ifstream in;
in.open("list.txt",ios::in); //打开文件
in.unsetf(ios::skipws); //读出信息时不跳过空格
char ch;
stu mate;
//逐个的显示信息
while(in>>ch)
{
if(ch == '#')
continue;
for(int i=0; i<10; i++)
{
mate.name[i]=ch;
in>>ch;
}
for(i=0; i<18; i++)
{
mate.card[i]=ch;
in>>ch;
}
for(i=0; i<13; i++)
{
mate.phone[i]=ch;
in>>ch;
}
for(i=0; i<20; i++)
{
mate.address[i]=ch;
in>>ch;
}
cout<<"┏━━━━━━━━━━━━━┓\n"
<<" | 姓名: ";
for(i=0;i<10;i++)
cout<<mate.name[i];
cout<<" |\n"
<<" | 身份证号码:";
for(i=0;i<18;i++)
cout<<mate.card[i];
cout<<" |\n"
<<" | 电话号码:";
for(i=0; i<13; i++)
cout<<mate.phone[i];
cout<<" |\n"
<<" | 家庭住址:";
for(i=0; i<20; i++)
cout<<mate.address[i];
cout<<" |\n"
<<"┗━━━━━━━━━━━━━┛"<<endl;
}
_getch();
}
//删除信息
void delet()
{
system("cls");
//输入名字并处理
cout<<"请输入要删除的名字:";
char name[10];
for(int i=0; i<10; i++)
name[i]=' ';
cin>>name;
for(i=0; i<10; i++)
if(name[i]=='\0')
name[i]=' ';
int flag;
flag=0;
int k=0;
ifstream in;
in.open("list.txt",ios::in); //打开文件
in.unsetf(ios::skipws); //读出信息时不跳过空格
ofstream out;
out.open("temp.txt",ios::out);//打开临时文件
char ch;
stu mate;
//拷贝信息到临时文件
while(in>>ch)
out<<ch;
//关闭文件
in.close();
out.close();
out.open("list.txt",ios::out);//打开文件
out.close();
in.open("temp.txt",ios::in);//打开文件
in.unsetf(ios::skipws);//读出信息时不跳过空格
//查找并删除信息
while(in>>ch)
{
if(ch=='#')
continue;
for(int i=0;i<10;i++)
{
mate.name[i]=ch;
in>>ch;
}
for(i=0;i<18;i++)
{
mate.card[i]=ch;
in>>ch;
}
for(i=0;i<13;i++)
{
mate.phone[i]=ch;
in>>ch;
}
for(i=0;i<20;i++)
{
mate.address[i]=ch;
in>>ch;
}
for(i=0;i<10;i++)
{
if(mate.name[i]!=name[i])
k=1;
}
if (k==0)
{
cout<<"┏━━━━━━━━━━━━━┓\n"
<<" | 姓名: ";
for(i=0;i<10;i++)
cout<<mate.name[i];
cout<<" |\n"
<<" | 身份证号码:";
for(i=0;i<18;i++)
cout<<mate.card[i];
cout<<" |\n"
<<" | 电话号码:";
for(i=0;i<13;i++)
cout<<mate.phone[i];
cout<<" |\n"
<<" | 家庭住址:";
for(i=0;i<20;i++)
cout<<mate.address[i];
cout<<" |\n"
<<"┗━━━━━━━━━━━━━┛"<<endl;
flag++;
}
else
mate.savenew();
k=0;
}
cout<<"┏━━━━━━━━━━━━━━┓\n"
<<" | 删除完毕! |\n"
<<" | 共删除"<<flag<<"个好友信息 |\n"
<<" | 点击任意键返回! |\n"
<<"┗━━━━━━━━━━━━━━┛"<<endl;
_getch();
}
//开始界面
void begin()
{
cout<<"┏━━━━━━━━━━━━━━━━┓\n"
<<"▕ ▕\n"
<<"▕ ▕\n"
<<"▕ ★★★★★★★★★★★★ ▕\n"
<<"▕ ▕\n"
<<"▕ ▕\n"
<<"▕ 欢迎您使用本系统 ▕\n"
<<"▕ ▕\n"
<<"▕ ~Welcome! ▕\n"
<<"▕ ▕\n"
<<"▕ ▕\n"
<<"▕ ▕\n"
<<"▕ ▕\n"
<<"▕ 信管一班 ▕\n"
<<"▕ ▕\n"
<<"┗━━━━━━━━━━━━━━━━┛"<<endl;
}
//帮助函数
void help()
{
system("cls");
cout<<"\n";
cout<<"输入正确,祝您使用愉快!\n"<<endl;
cout<<"┏━━━━━━━━━━━━━━━━┓\n"
<<"▕ 帮助界面 ▕\n"
<<"▕ ▕\n"
<<"▕在菜单界面中: ▕\n"
<<"▕ ▕\n"
<<"▕ 点击W:光标上移 ▕\n"
<<"▕ ▕\n"
<<"▕ 点击S:光标下移 ▕\n"
<<"▕ ▕\n"
<<"▕ 点击E: 进入该选项 ▕\n"
<<"▕ ▕\n"
<<"▕ ★点击任意键进入程序菜单。 ▕\n"
<<"▕ ▕\n"
<<"▕ ▕\n"
<<"▕ ▕\n"
<<"▕ 信管一班 ▕\n"
<<"▕ ▕\n"
<<"┗━━━━━━━━━━━━━━━━┛"<<endl;
_getch();
}
void end()
{
system("cls");
cout<<"┏━━━━━━━━━━━━━━━━┓\n"
<<"▕ ▕\n"
<<"▕ ▕\n"
<<"▕ 退出界面 ▕\n"
<<"▕ ▕\n"
<<"▕ ▕\n"
<<"▕ ★★★★★★★★★★★★★ ▕\n"
<<"▕ ▕\n"
<<"▕ ▕\n"
<<"▕ 感谢您使用本系统 ▕\n"
<<"▕ ▕\n"
<<"▕ 欢迎您下次使用 ▕\n"
<<"▕ ▕\n"
<<"▕ ★点击任意键退出程序 ▕\n"
<<"▕ ▕\n"
<<"▕ 信管一班 ▕\n"
<<"▕ ▕\n"
<<"┗━━━━━━━━━━━━━━━━┛"<<endl;
_getch();
}
void main()
{
system("color 4f");//设置背景颜色
system("title 同学通讯录系统(制作: 孙梅芝、阴培源、吴豪、侯文涛)");//添加标题
begin();//开始界面
{
char str[20];
cout<<endl<<"登陆密码:\n";
while(1)
{
cin>>str;
if(!strcmp(str,"xinguan"))
{
cout<<"登陆成功!\n"<<endl;
break;
}
cout<<"输入有误!请重新输入!\n";
}
}
help();//帮助菜单
menu point;//菜单类
//以下是函数主题
while(point.flag==0)
{
point.show();//显示菜单
char k;
k=_getch();
switch(k)
{
case 'w':
{
if(point.place!=1)
{
point.place--;
point.show();//光标上移
}
}
break;
case 's':
{
if(point.place!=5)
{
point.place++;
point.show();//光标下移
}
}
break;
case 'h':
help();//帮助函数
break;
case 'e':
{
switch(point.place)
{
case 1:
addmate();//添加信息
break;
case 2:
search();//查找信息
break;
case 3:
show();//显示信息
break;
case 4:
delet();//删除信息
break;
case 5:
end(); //结束界面
point.flag=1;
}
}
break;
}
}
}
展开阅读全文