个人项目 Individual Project

时间:2023-03-10 06:50:34
个人项目 Individual Project

通讯录中的联系人包含以下信息项:姓名、手机、办公电话、家庭电话、电子邮箱、所在省市、工作单位、家庭住址,群组分类(亲属、同事、同学、朋友、其他)。

系统的主要功能包括:

1. 输入联系人的信息,要求:至少输入10个联系人的数据,且注意数据的多样性。

2. 按姓名对联系人信息进行排序,并将排序后信息存放到一个文本文件中。

3. 添加联系人的信息,在已经存在的通讯录文件中添加若干个联系人。要求:添加后仍按联系人的姓名排序,并保存至原文件。

4. 删除联系人的信息,输入一个姓名,若通讯录中有该联系人的信息,则删除该联系人,否则输出提示信息,并提示用户选择是否继续进行删除操作。

5. 修改联系人的信息,输入一个姓名,根据具体需要修改该联系人的某一项信息,将修改后的信息重新保存到通讯录文件中,并提示用户选择是否继续进行修改操作。

6. 按不同条件对通讯录进行查询操作,输出满足条件的联系人的信息。

(1) 按姓名查询,包括精确查询(输入全名),模糊查询(输入姓);

(2) 按手机号码查询,输入全部号码或号码位段(如输入130、133、139等);

(3) 按群组分类查询,输入分类名称,输出该群组的全部联系人信息。

7. 输出联系人的信息,按一定格式输出信息,保证信息排列整齐美观。

三.源程序

#include<iostream>

#include <stdio.h>

#include <fstream>

#include <string.h>

#include <iomanip>

#include <string>

#define N 20

using namespace std;

struct

{

char name[20]; //人名

char post[20]; //工作单位

int tel; //电话号码

char email[20]; //email地址

}TelInfo;

void menu();

void addrecord()

{

char ch;

ofstream ofile("Result.txt",ios_base::out);

do

{

cout<<"请输入通讯录信息"<<endl;

cin>>TelInfo.name>>TelInfo.post>>TelInfo.tel>>TelInfo.email;

ofile<<TelInfo.name<<"  "<<TelInfo.post<<"  "<<TelInfo.tel<<"  "<<TelInfo.email<<endl;

cout<<"have another student record(y/n))?"<<endl;

std::cin>>ch;

}while(ch=='y');

ofile.close();

}

void  changecord()

{

ifstream da("Result.txt", ios_base::in);string str; bool flag = true;

ofstream data("return.txt", ios_base::out);

char a[20];

if (!da)

{

cout<<"找不到文件!!!!"<<endl;

return;

}

cout<<"请输入你要修改人的姓名"<<endl;

cin>>a;

while ( da>>TelInfo.name)

{

getline(da, str);

if (strcmp(TelInfo.name,a)==0)

{

cout<<"你想修改的联系人:" <<endl;

cout<<TelInfo.name<<"  "<<str<<endl;

flag=false;

break;

}

data<<TelInfo.name

<<" "<<str<<endl;

}

if(flag)cout<<"没有该人"<<endl;

else

{

while (getline(da, str))

{

data<<str <<endl;

}

da.close();

data.close();

ifstream in("return.txt", ios::in);

ofstream out("Result.txt", ios::out);

if (!out || !in)

{

cout<<endl<<"对不起不能打开文件!!!"<<endl<<endl;

return;

}

while (getline(in, str))

{

out<<str<<endl;

}

in.close();

ofstream change("Result.txt",ios_base::app);

cout<<"请输入修改的信息"<<endl;

cin>>TelInfo.name>>TelInfo.post>>TelInfo.tel>>TelInfo.email;

out<<TelInfo.name<<"  "<<TelInfo.post<<"  "<<TelInfo.tel<<"  "<<TelInfo.email<<endl;

cout<<"这个人的信息已经从你的通迅录中修改!!!" <<endl;out.close();

}

}

void delrecord()

{

ifstream da("Result.txt", ios_base::in);string str; bool flag = true;

ofstream data("return.txt", ios_base::out);

char a[20];

if (!da)

{

cout<<"找不到文件!!!!"<<endl;

return;

}

cout<<"请输入你要删除人的姓名"<<endl;

cin>>a;

while ( da>>TelInfo.name)

{

getline(da, str);

if (strcmp(TelInfo.name,a)==0)

{

cout <<endl <<"你想删除的联系人:" <<endl;

cout<<TelInfo.name<<"  "<<str<<endl;

flag=false;

break;

}

data<<TelInfo.name

<<" "<<str<<endl;

}

if(flag)cout<<"没有该人"<<endl;

else

{

while (getline(da, str))

{

data<<str <<endl;

}

da.close();

data.close();

ifstream in("return.txt", ios::in);

ofstream out("Result.txt", ios::out);

if (!out || !in)

{

cout<<endl<<"对不起不能打开文件!!!"<<endl<<endl;

return;

}

while (getline(in, str))

{

out<<str<<endl;

}

out.close();

in.close();

cout <<endl <<"这个人的信息已经从你的通迅录中删除!!!" <<endl <<endl;

}

}

void printcord()

{

char ch;

ifstream da("Result.txt");

cout<<"人名 "<<"工作单位 "<<"电话"<<" 地址"<<endl;

while (da.get(ch))

cout << ch;

da.close();

}

void searchcord()

{

char a[20],b[20];int n,m;  ifstream da("Result.txt");

cout<<"请输入要查找方式:";

cout<<"1.姓名:";

cout<<"2.电话号码:";

cin>>n;

if(n==1)

{

cout<<"请输入要查询的姓名"<<endl;

cin>>a;

while(da.eof()==0)

{

da>>TelInfo.name>>TelInfo.post>>TelInfo.tel>>TelInfo.email;

if(strcmp(TelInfo.name,a)==0)

{

cout<<"人名 "<<"工作单位 "<<"电话"<<" 地址"<<endl;

cout<<TelInfo.name<<"  "<<TelInfo.post<<"  "<<TelInfo.tel<<"  "<<TelInfo.email<<endl;

}

}

da.close();

}

if(n==2)

{

cout<<"请输入要查询的电话"<<endl;

cin>>m;

while(da.eof()==0)

{

da>>TelInfo.name>>TelInfo.post>>TelInfo.tel>>TelInfo.email;

if(TelInfo.tel==m)

{

cout<<"人名 "<<"工作单位 "<<"电话"<<" 地址"<<endl;

cout<<TelInfo.name<<"  "<<TelInfo.post<<"  "<<TelInfo.tel<<"  "<<TelInfo.email<<endl;

}

}

da.close();

}

}

void main()

{

menu();

}

void menu()

{

int i;

for(;;){

std::cout<<"通讯录管理系统字符界面版"<<std::endl;

std::cout<<"##################################"<<std::endl;

std::cout<<"请选择操作:"<<std::endl;

std::cout<<"\t1.添加记录"<<std::endl;

std::cout<<"\t2.修改记录"<<std::endl;

std::cout<<"\t3.删除记录"<<std::endl;

std::cout<<"\t4.数据显示"<<std::endl;

std::cout<<"\t5.查询记录"<<std::endl;

std::cout<<"\t6.退出"<<std::endl;

std::cin>>i;

if(!std::cin.good()){

std::cout<<"非法输入!"<<std::endl;

std::cin.clear();

}

switch(i){

case 1:

addrecord();break;

case 2:

changecord();

break;

case 3:

delrecord();

break;

case 4:

printcord();

break;

case 5:

searchcord();

break;

case 6:

return;

default:

std::cout<<"错误的选项!"<<std::endl;

}

}

个人项目 Individual Project个人项目 Individual Project个人项目 Individual Project

通过这次通讯录的设计,我对很多的函数有了新的认识,也学会了运用多种函数,明白了写软件的基本过程和基本方法。 
 在设计的过程中遇到了很多的困难,有程序上的也有实验报告上的,尤其是软件在一次一次的调试失败后,对我们打击很大。但最后我们还是咬牙让自己坚持了下来,通过小组的不断试验和讨论以及同学们的帮助,我们总算顺利的完成了程序设计。虽然在调试过程中遇到了许多困难,但当调试成功时那种喜悦的感觉,没有什么东西可以代替。在编写过程中我们都发现我们有许多的知识漏洞和缺陷,需要进一步努力来不断完善自己。 
 总之,此次过程不仅给我很多好的经验,同时加深了同学间的关系,增强了团队解决问题的能力。