📄 address.h
字号:
#include<iostream.h>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
#include<iomanip.h>
/*class Record
{
friend ostream &operator<<(ostream &output, const Record &A);
friend istream &operator>>(istream &input, Record &A);
private:
char name[10];//姓名
char number[10];//固定电话
char phonenum[10];//手机
char Email[15];//Email
char address[15];//家庭住址
public:
Record();
char* getname(){return name;}
char* getphonenum(){return phonenum;}
//void Enter();
};
Record::Record()
{
strcpy(name,"");
strcpy(number,"");
strcpy(phonenum,"");
strcpy(Email,"");
strcpy(address,"");
}*/
//姓名,固定电话,手机,Email,家庭住址
struct record
{
char name[10];
char number[10];//固定电话
char phonenum[10];//手机
char Email[15];//Email
char address[15];//家庭住址
};
ostream &operator<<(ostream &output, const record &A)
{
output<<setw(10)<<setiosflags(ios::left)<<A.name
<<setw(10)<<setiosflags(ios::left)<<A.number
<<setw(10)<<setiosflags(ios::left)<<A.phonenum
<<setw(15)<<setiosflags(ios::left)<<A.Email
<<setw(15)<<setiosflags(ios::left)<<A.address;
return output;
}
istream &operator>>(istream &input, record & A)
{
input>>setw(10)>>A.name
>>setw(10)>>A.number
>>setw(10)>>A.phonenum
>>setw(15)>>A.Email
>>setw(15)>>A.address;
return input;
}
//必须建立二进制文件,才能在原来的基础上实现修改功能
void create(char*); //6建立学生成绩录文件
void append(fstream &); //1录入学生信息
void locate(fstream &); //2查询学生成绩信息
void modify(fstream &); //3修改学生成绩信息
void mod_name(fstream &);//3.1
void dis_all(fstream &);//4显示全部学生的记录
void dele(fstream &); //5删除学生成绩信息
void dele_name(fstream &);
void dis_char(char,int); //显示分隔符函数
void dis_table(); //显示一行表头的函数
//0.1显示字符串函数
void dis_char(char ch,int n)
{
int i;
for(i=0;i<n;i++)
cout<<ch;
}
//0.2打印单个结构函数
//0.3显示一行表头的函数
void dis_table()
{
//姓名,固定电话,手机,Email,家庭住址
cout<<setw(10)<<setiosflags(ios::left)<<"姓名"
<<setw(10)<<setiosflags(ios::left)<<"固定电话"
<<setw(10)<<setiosflags(ios::left)<<"手机"
<<setw(15)<<setiosflags(ios::left)<<"Email"
<<setw(15)<<setiosflags(ios::left)<<"家庭住址"<<endl;
}
//1 录入学生信息函数
void append(fstream &inoutfile)
{
record X;
char ask;
inoutfile.seekp(0);//
while(1)
{
cout<<"*************1)输入个人信息*************"<<endl;
dis_table();
cin>>X;
inoutfile.write((const char*)&X, sizeof(record));
cout<<"\n继续输入记录吗(y/n): ";
cin>>ask;
cout<<endl;
if(ask!='y'&& ask!='Y')
break;
}
return;
}
//2 查询学生信息函数
void locate(fstream &inoutfile)
{
record score;
char name[10];
int flag,ask;
/*while( inoutfile.read((char*)&temp,sizeof(Record)) )//读通讯录文件
{
total++;//int total=0;
}*/
//姓名,固定电话,手机,Email,家庭住址
while(1)
{
flag=0;
cout<<"\n\n";
dis_char(' ',10);
cout<<"2)查找学生信息\n";
dis_char('*',40);
cout<<endl;
dis_char(' ',10);
cout<<"1-按姓名查找\n";
dis_char(' ',10);
cout<<"2-按手机查找\n";
dis_char(' ',10);
cout<<"3-返回上一层\n";
dis_char('*',40);
cout<<endl;
dis_char(' ',10);
cout<<"请输入号码选择(1-3): ";
cin>>ask;
cout<<endl;
switch(ask)
{
case 1:
cout<<"请输入要查询的姓名: ";
cin>>name;
inoutfile.seekg(0);
while(inoutfile.read( (char*)&score, sizeof(record)))
{
if(strcmp(name,score.name)==0)
{
flag=1;
dis_table();
cout<<score<<endl;
}
}
inoutfile.clear();
if(!flag)
cout<<"没有找到符合条件的记录!\n";
break;
case 2:
char num[10];//?
cout<<"请输入要查询的手机: ";
cin>>num;
inoutfile.seekg(0);
while( inoutfile.read( (char*)&score, sizeof(record)) )
{
if(strcmp(num,score.phonenum)==0)
{
flag=1;
dis_table();
cout<<score<<endl;
}
}
inoutfile.clear();
if(!flag)
cout<<"没有找到符合条件的记录!\n";
break;
case 3:
return;
default :
cout<<"输入数字不在范围之内,请重试\n";
continue;
}
}
return;
}
//3 修改功能函数
void modify(fstream &inoutfile)
{
char point;
int ask;
inoutfile.clear();
while(1)
{ //姓名,固定电话,手机,Email,家庭住址
cout << "\n";
dis_char(' ',20);
cout << "3)编辑修改信息录" << endl;
dis_char('*',50);
cout << endl;
dis_char(' ',17);
cout << "1.浏览显示信息录\n";
dis_char(' ',17);
cout << "2.按姓名修改信息录\n";
dis_char(' ',17);
cout << "3.返回上一层\n";
dis_char('*',50);
cout << endl;
dis_char(' ',16);
cout << "请输入号码选择(1~3): ";
cin >> ask;
switch(ask)
{
case 1:
dis_all(inoutfile);//调用显示数组函数
break;
case 2:
mod_name(inoutfile);//调用编辑按姓名修改函数
break;
case 3 :
return;
default :
cout<<"输入数字不在范围之内,请重试\n";
continue;
}
cout << "\n继续请按y键,否则按其他键......";
cin >> point;
if(point!='y' && point!= 'Y' )
break;
}
inoutfile.clear();
return;
}
//3.1按姓名编辑修改函数
void mod_name(fstream &inoutfile)
{
int flag;
//record White;
record score;
char name[20];
//while(1)
//{
flag=0; //查找标志,查找成功flag=1
cout << "\n请输入姓名: ";
cin >> name;
inoutfile.clear();
inoutfile.seekg(0);
while( inoutfile.read( (char*)&score, sizeof(record)) )//inoutfile>>score
{
if(strcmp(name,score.name)==0)
{
flag=1;
cout << "\n当前要修改的记录信息:\n";
dis_table();
cout<<score<<endl;//
/*cout<<setw(10)<<setiosflags(ios::left)<<White.name
<<setw(10)<<setiosflags(ios::left)<<White.number
<<setw(10)<<setiosflags(ios::left)<<White.phonenum
<<setw(15)<<setiosflags(ios::left)<<White.Email
<<setw(15)<<setiosflags(ios::left)<<White.address<<endl;*/
cout << "\n请重新输入以下信息:\n";
dis_table();
cin>>score;
//inoutfile<<score;
int i=sizeof(record);//(-1)*sizeof(Record)
inoutfile.seekp(-i,ios::cur);//??inoutfile.seekp(-sizeof(Record),ios::cur );
inoutfile.write((const char*)&score, sizeof(record) );//inoutfile<<score;????
return ;
}
}
inoutfile.clear();
if(!flag)
{
cout<<"\n没有找到符合条件的记录!\n";
}
//break;
//}//循环有意义吗??
return;
}
//4显示全部学生的记录
void dis_all(fstream &inoutfile)
{
record score;
int i=0;
inoutfile.seekg(0);
inoutfile.clear();
cout <<endl<<endl;
dis_table(); //调用显示表头函数显示表头
while( inoutfile.read((char *)&score, sizeof(record)) )
{
/*if(i%20==0 )//每显示20行数据记录后重新显示一下表头
{
cout << endl << endl;
dis_table(); //调用显示表头函数显示表头
}*/
if(strcmp(score.name,"")!=0)
{
cout<<score<<endl;//
i++;
}
}
if(i==0)cout<<"文件无记录!"<<endl;
inoutfile.clear();
dis_char('_',10);
dis_char('@',40);
dis_char('_',10);
cout << endl;
return;
}
//5 删除功能函数实现
void dele(fstream &inoutfile)
{
int ask;
int i=0;//length
while(1)
{
cout<<endl<<endl;
dis_char(' ',18);
cout << "4)记录的删除\n";
dis_char('*',50);
cout << endl;
dis_char(' ',17);
cout << "1按姓名删除\n";
dis_char(' ',17);
cout << "2.返回上一层\n";
dis_char('*',50);
cout << endl;
dis_char(' ',14);
cout << "请输入号码选择(1~2): ";
cin >> ask;
switch(ask)
{
case 1 :
dele_name(inoutfile);//调用按姓名删除函数
break;
case 2 :
return;//退出删除程序
default :
cout<<"输入数字不在范围之内,请重试\n";
continue;
}
}
return;
}
//5.1按姓名删除函数
void dele_name(fstream &inoutfile)
{
record score;
record White={"", "", "", "", ""};
char d_name[20],sure;
int flag=0;
cout << "请输入姓名:";
cin >> d_name;
inoutfile.clear();
inoutfile.seekg(0);
while( inoutfile.read( (char*)&score, sizeof(record)) )//inoutfile>>score
{
if(strcmp(score.name,d_name)==0)
{
cout << "\n要删除的记录如下:\n";
dis_table();
cout<<score<<endl;
cout << "\n确定删除---y,否则按其他键......";
cin >> sure;
flag=1;//
if(sure=='y' ||sure=='Y')
{
int i=sizeof(record);//(-1)*sizeof(Record)
inoutfile.seekp(-i,ios::cur);//??inoutfile.seekp(-sizeof(Record),ios::cur );
inoutfile.write((const char*)&White, sizeof(record) );//inoutfile<<score;????
cout<<"ni hao!"<<endl;
return;
}
return;
}
}
inoutfile.clear();
if(!flag)
cout << "\n要删除的记录没有找到......\n";
return;
}
//6 建立学生信息录文件函数"address.dat"
void create(char *file)
{
fstream inoutfile(file,ios::in|ios::out);
if(!inoutfile)
{
cout << "can't open file!\n";
return;
}
int i=0;
record White={"","","","",""};
for(i=0;i<100;i++)
{
inoutfile.write((const char*)&White,sizeof(record) );
}
inoutfile.close();
cout <<endl<<"文件 "<<file<<" 成功建立,请使用--信息输入功能--输入信息!"<<endl;
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -