新手的作业!求指导
时间:2011-12-14
来源:互联网
#include<iostream>
#include<string>
#include<fstream>
#include<iomanip>
using namespace std;
struct Person
{
string name;
string identity;
int telephone;
string email;
string address;
};
struct Person array[200];
void txt()//新建通讯录文件
{
ofstream output;
output.open("contactPerson.txt");
output.close();
}
void newBuild()//新建联系人
{
fstream output;
output.open("contactPerson.txt",ios::out |ios::app);
for(int i=0;i<200;++i){
if(array[i].name.empty()){
cout<<"姓名"<<endl;
cin>>array[i].name;
output<<setw(10)<<array[i].name;
cout<<"身份"<<endl;
cin>>array[i].identity;
output<<setw(15)<<array[i].identity;
cout<<"电话"<<endl;
cin>>array[i].telephone;
output<<setw(15)<<array[i].telephone;
cout<<"电子邮箱"<<endl;
cin>>array[i].email;
output<<setw(20)<<array[i].email;
cout<<"地址"<<endl;
cin>>array[i].address;
output<<setw(20)<<array[i].address;
cout<<"新建成功"<<endl;
output.close();
return;
}
}
output.close();
cout<<"通讯录存储空间已满";
}
void Delete1()//删除联系人
{
cout<<"输入删除人的姓名";
string nameToDelete;
cin>>nameToDelete;
ifstream input;
input.open("contactPerson.txt");
for(int i=0;i<200;++i){
if(array[i].name==nameToDelete){
array[i].name.clear();
array[i].identity.clear();
array[i].telephone=-1;
array[i].email.clear();
array[i].address.clear();
input.close();
return;
}
}
input.close();
cout<<"该联系人不存在";
}
void Delete2()//删除联系人的某一信息类型
{
cout<<"输入删除人的姓名";
string nameToDelete;
cin>>nameToDelete;
ifstream fin("contactPerson.txt");
for(int i=0;i<200;++i){
if(array[i].name==nameToDelete){
cout<<"要删除的信息类型:0:姓名;1:身份;2:电话;3:电子邮件;4:地址";
int type;
cin>>type;
switch(type)
{
case 0: array[i].name.clear();
break;
case 1: array[i].identity.clear();
break;
case 2: array[i].telephone=-1;
break;
case 3:array[i].email.clear();
break;
case 4:array[i].address.clear();
break;
}
fin.close();
return;
}
}
fin.close();
cout<<"该联系人不存在";
}
void display1()//显示全部联系人信息
{
ifstream fin("contactPerson.txt");
for(int i=0;i<200;++i)
{
if(array[i].name.empty())
continue;
fin>>array[i].name>>array[i].identity>>array[i].telephone>>array[i].email>>array[i].address;
cout<<"姓名:"<<array[i].name<<endl<<"身份:"<<array[i].identity<<endl<<"电话:";
if(array[i].telephone==-1)
cout<<endl;
else
cout<<array[i].telephone<<endl;
cout<<"电子邮件:"<<array[i].email<<endl<<"地址:"<<array[i].address;
}
fin.close();
}
void display2()//显示指定联系人的全部信息
{
cout<<"要显示的联系人姓名";
string nameToDisplay;
cin>>nameToDisplay;
ifstream fin("contactPerson.txt");
for(int i=0;i<200;++i){
if((array[i].name==nameToDisplay)&&!(array[i].name.empty())){
fin>>array[i].name>>array[i].identity>>array[i].telephone>>array[i].email>>array[i].address;
cout<<array[i].name<<endl;
cout<<array[i].identity<<endl;
if(array[i].telephone==-1)
cout<<" "<<endl;
else
cout<<array[i].telephone<<endl;
cout<<array[i].email<<endl;
cout<<array[i].address;
fin.close();
return;
}
}
fin.close();
cout<<"该联系人不存在";
}
void display3()//显示所有联系人的给定信息
{
cout<<"需要显示的信息类型 0:姓名;1:身份;2:电话;3:邮箱;4:地址"<<endl;
int type;
cin>>type;
ifstream fin("contactPerson.txt");
switch(type)
{
case 0:{
for(int i=0;i<200;i++){
if(array[i].name.empty())
continue;
fin>>array[i].name;
cout<<array[i].name<<endl;
}
break;
}
case 1:{
for(int i=0;i<200;i++){
if(array[i].name.empty())
continue;
fin>>array[i].identity;
cout<<array[i].identity<<endl;
}
break;
}
case 2:{
for(int i=0;i<200;i++){
if(array[i].name.empty())
continue;
fin>>array[i].telephone;
if(array[i].telephone==-1)
cout<<" ";
else
cout<<array[i].telephone<<endl;
}
break;
}
case 3:{
for(int i=0;i<200;i++){
if(array[i].name.empty())
continue;
fin>>array[i].email;
cout<<array[i].email<<endl;
}
break;
}
case 4:{
for(int i=0;i<200;i++){
if(array[i].name.empty())
continue;
fin>>array[i].address;
cout<<array[i].address<<endl;
}
break;
}
}
fin.close();
}
void revise()//修改联系人或联系人信息
{
cout<<"输入需要修改的联系人姓名";
string nameToRevise;
cin>>nameToRevise;
ifstream fin("contactPerson.txt");
for(int i =0;i<200;++i){
if(array[i].name==nameToRevise){
cout<<"修改的类型 0:姓名;1:身份;2:电话;3:邮箱;4:地址"<<endl;
int type;
cin>>type;
while(type!=-1){
switch(type)
{
case 0:{
string newName;
cin>>newName;
array[i].name=newName;
break;
}
case 1: {
string newIdentity;
cin>>newIdentity;
array[i].identity=newIdentity;
break;
}
case 2: {
int newTelephone;
cin>>newTelephone;
array[i].telephone=newTelephone;
break;
}
case 3: {
string newEmail;
cin>>newEmail;
array[i].email=newEmail;
break;
}
case 4: {
string newAddress;
cin>>newAddress;
array[i].address=newAddress;
break;
}
}
cin>>type;
}
fin.close();
return;
}
}
fin.close();
cout<<"该联系人不存在"<<endl;
}
int main(){
cout<<"0:新建"<<endl<<"1:删除"<<endl<<"2:显示"<<endl<<"3:修改"<<endl;
int status;
cin>>status;
while(status!=-1){
switch(status)
{
case 0:newBuild();
break;
case 1:{
cout<<"0:删除联系人"<<endl<<"1:删除联系人的信息"<<endl;
int style;
cin>>style;
switch(style)
{
case 0: Delete1();
break;
case 1: Delete2();
break;
}
break;
}
case 2:{
cout<<"0:显示全部联系人信息; 1:显示指定联系人的全部信息;2:显示所有联系人的给定信息";
int style;
cin>>style;
switch(style)
{
case 0: display1();
break;
case 1: display2();
break;
case 3: display3();
break;
}
break;
}
case 3:revise();
break;
}
cin>>status;
}
return 0;
}
没学面向对象要做的大作业啊!
不懂显示功能为什么有错!
各位大神路过帮我看一下吧!
#include<string>
#include<fstream>
#include<iomanip>
using namespace std;
struct Person
{
string name;
string identity;
int telephone;
string email;
string address;
};
struct Person array[200];
void txt()//新建通讯录文件
{
ofstream output;
output.open("contactPerson.txt");
output.close();
}
void newBuild()//新建联系人
{
fstream output;
output.open("contactPerson.txt",ios::out |ios::app);
for(int i=0;i<200;++i){
if(array[i].name.empty()){
cout<<"姓名"<<endl;
cin>>array[i].name;
output<<setw(10)<<array[i].name;
cout<<"身份"<<endl;
cin>>array[i].identity;
output<<setw(15)<<array[i].identity;
cout<<"电话"<<endl;
cin>>array[i].telephone;
output<<setw(15)<<array[i].telephone;
cout<<"电子邮箱"<<endl;
cin>>array[i].email;
output<<setw(20)<<array[i].email;
cout<<"地址"<<endl;
cin>>array[i].address;
output<<setw(20)<<array[i].address;
cout<<"新建成功"<<endl;
output.close();
return;
}
}
output.close();
cout<<"通讯录存储空间已满";
}
void Delete1()//删除联系人
{
cout<<"输入删除人的姓名";
string nameToDelete;
cin>>nameToDelete;
ifstream input;
input.open("contactPerson.txt");
for(int i=0;i<200;++i){
if(array[i].name==nameToDelete){
array[i].name.clear();
array[i].identity.clear();
array[i].telephone=-1;
array[i].email.clear();
array[i].address.clear();
input.close();
return;
}
}
input.close();
cout<<"该联系人不存在";
}
void Delete2()//删除联系人的某一信息类型
{
cout<<"输入删除人的姓名";
string nameToDelete;
cin>>nameToDelete;
ifstream fin("contactPerson.txt");
for(int i=0;i<200;++i){
if(array[i].name==nameToDelete){
cout<<"要删除的信息类型:0:姓名;1:身份;2:电话;3:电子邮件;4:地址";
int type;
cin>>type;
switch(type)
{
case 0: array[i].name.clear();
break;
case 1: array[i].identity.clear();
break;
case 2: array[i].telephone=-1;
break;
case 3:array[i].email.clear();
break;
case 4:array[i].address.clear();
break;
}
fin.close();
return;
}
}
fin.close();
cout<<"该联系人不存在";
}
void display1()//显示全部联系人信息
{
ifstream fin("contactPerson.txt");
for(int i=0;i<200;++i)
{
if(array[i].name.empty())
continue;
fin>>array[i].name>>array[i].identity>>array[i].telephone>>array[i].email>>array[i].address;
cout<<"姓名:"<<array[i].name<<endl<<"身份:"<<array[i].identity<<endl<<"电话:";
if(array[i].telephone==-1)
cout<<endl;
else
cout<<array[i].telephone<<endl;
cout<<"电子邮件:"<<array[i].email<<endl<<"地址:"<<array[i].address;
}
fin.close();
}
void display2()//显示指定联系人的全部信息
{
cout<<"要显示的联系人姓名";
string nameToDisplay;
cin>>nameToDisplay;
ifstream fin("contactPerson.txt");
for(int i=0;i<200;++i){
if((array[i].name==nameToDisplay)&&!(array[i].name.empty())){
fin>>array[i].name>>array[i].identity>>array[i].telephone>>array[i].email>>array[i].address;
cout<<array[i].name<<endl;
cout<<array[i].identity<<endl;
if(array[i].telephone==-1)
cout<<" "<<endl;
else
cout<<array[i].telephone<<endl;
cout<<array[i].email<<endl;
cout<<array[i].address;
fin.close();
return;
}
}
fin.close();
cout<<"该联系人不存在";
}
void display3()//显示所有联系人的给定信息
{
cout<<"需要显示的信息类型 0:姓名;1:身份;2:电话;3:邮箱;4:地址"<<endl;
int type;
cin>>type;
ifstream fin("contactPerson.txt");
switch(type)
{
case 0:{
for(int i=0;i<200;i++){
if(array[i].name.empty())
continue;
fin>>array[i].name;
cout<<array[i].name<<endl;
}
break;
}
case 1:{
for(int i=0;i<200;i++){
if(array[i].name.empty())
continue;
fin>>array[i].identity;
cout<<array[i].identity<<endl;
}
break;
}
case 2:{
for(int i=0;i<200;i++){
if(array[i].name.empty())
continue;
fin>>array[i].telephone;
if(array[i].telephone==-1)
cout<<" ";
else
cout<<array[i].telephone<<endl;
}
break;
}
case 3:{
for(int i=0;i<200;i++){
if(array[i].name.empty())
continue;
fin>>array[i].email;
cout<<array[i].email<<endl;
}
break;
}
case 4:{
for(int i=0;i<200;i++){
if(array[i].name.empty())
continue;
fin>>array[i].address;
cout<<array[i].address<<endl;
}
break;
}
}
fin.close();
}
void revise()//修改联系人或联系人信息
{
cout<<"输入需要修改的联系人姓名";
string nameToRevise;
cin>>nameToRevise;
ifstream fin("contactPerson.txt");
for(int i =0;i<200;++i){
if(array[i].name==nameToRevise){
cout<<"修改的类型 0:姓名;1:身份;2:电话;3:邮箱;4:地址"<<endl;
int type;
cin>>type;
while(type!=-1){
switch(type)
{
case 0:{
string newName;
cin>>newName;
array[i].name=newName;
break;
}
case 1: {
string newIdentity;
cin>>newIdentity;
array[i].identity=newIdentity;
break;
}
case 2: {
int newTelephone;
cin>>newTelephone;
array[i].telephone=newTelephone;
break;
}
case 3: {
string newEmail;
cin>>newEmail;
array[i].email=newEmail;
break;
}
case 4: {
string newAddress;
cin>>newAddress;
array[i].address=newAddress;
break;
}
}
cin>>type;
}
fin.close();
return;
}
}
fin.close();
cout<<"该联系人不存在"<<endl;
}
int main(){
cout<<"0:新建"<<endl<<"1:删除"<<endl<<"2:显示"<<endl<<"3:修改"<<endl;
int status;
cin>>status;
while(status!=-1){
switch(status)
{
case 0:newBuild();
break;
case 1:{
cout<<"0:删除联系人"<<endl<<"1:删除联系人的信息"<<endl;
int style;
cin>>style;
switch(style)
{
case 0: Delete1();
break;
case 1: Delete2();
break;
}
break;
}
case 2:{
cout<<"0:显示全部联系人信息; 1:显示指定联系人的全部信息;2:显示所有联系人的给定信息";
int style;
cin>>style;
switch(style)
{
case 0: display1();
break;
case 1: display2();
break;
case 3: display3();
break;
}
break;
}
case 3:revise();
break;
}
cin>>status;
}
return 0;
}
没学面向对象要做的大作业啊!
不懂显示功能为什么有错!
各位大神路过帮我看一下吧!
作者: T_Tbread 发布时间: 2011-12-14
这么长的代码,看死人了。
作者: wjl19890711 发布时间: 2011-12-14
我的理解,结构体好像不是用来进行对象操作的吧?把结构体改成类吧,C++中用类比较多,把结构体定义的人的属性设为类的私有属性,把对结构体对象的操作变成类的成员函数。至于显示,你说的显示是哪个显示,建议看看教科书上得I/O输入输入流那一块,在文件读入时用cout,干什么?
作者: qwe670330320 发布时间: 2011-12-14
单步调试和设断点调试是程序员必须掌握的技能之一。
作者: zhao4zhong1 发布时间: 2011-12-14
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28