⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 address.h

📁 本系统为一段简单的用C++开发的通讯录管理系统
💻 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 + -