联系人信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。
(1)能建立、修改和增删学生通讯录
(2)能够按多种方式进行查询
代码如下:
#include <fstream>
#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
struct TEL
{
int Num; //学号
string Name; //姓名
int Age; //年龄
string Sex; //性别
string Time; //出生日期
string Address; //地址
string Phone; //电话号码
string Email; //电子邮件
};
TEL Tel[500]; //通讯录总容量
void Menu(); //菜单
void Establish(); //建立
void Modification(); //修改
void Delete(); //删除
void Query(); //查询
void Savedata(int); //保存修改
int loading1(); //读取
int main()
{
int n;
cout<<"欢迎使用本通讯录系统."<<endl;;
do
{
system("cls");
Menu();
cout<<"请输入操作指令:";
cin>>n;
if (n==0)
break;
switch (n)
{
case 1:
Establish();
continue;
case 2:
Modification();
continue;
case 3:
Delete();
continue;
case 4:
Query();
continue;
}
}
while (1);
cout<<"祝您羊年大吉!!!"<<endl;
return 0;
}
void Menu()
{
cout<<"选项:"<<endl;
cout<<"1.添加新的联系人"<<endl;
cout<<"2.修改联系人信息"<<endl;
cout<<"3.删除联系人 "<<endl;
cout<<"4.查询联系人信息"<<endl;
cout<<"0.退出"<<endl;
}
void Establish()
{
int count=loading1();
int num,age,n,i;
string name,sex,address,time,phone,email;
do
{
n=0;
cout<<"请输入学号:";
cin>>num;
for (i=1; i<=num-10000; i++)
{
if (num==Tel[i].Num)
{
n=1;
cout<<"该学号已存在,请重新输入:";
break;
}
}
if (n==1)
continue;
else
break;
}
while (1);
cout<<"请输入姓名:";
cin>>name;
cout<<"请输入性别(M为男,W为女):";
cin>>sex;
cout<<"请输入年龄:";
cin>>age;
cout<<"请输入出生日期: ";
cin>>time;
cout<<"请输入地址:";
cin>>address;
cout<<"请输入电话号码:";
cin>>phone;
cout<<"请输入电子邮箱:";
cin>>email;
Tel[i].Num=num;
Tel[i].Name=name;
Tel[i].Sex=sex;
Tel[i].Age=age;
Tel[i].Time=time;
Tel[i].Address=address;
Tel[i].Phone=phone;
Tel[i].Email=email;
Savedata(count);
}
void Modification()
{
int count=loading1();
int num,age,i,k,m;
string name,sex,address,time,phone,email;
do
{
k=-1;
cout<<"请输入你想要修改对象的学号(输入0退出):";
cin>>num;
if (num==0)
break;
for (i=1; i<count; i++)
{
if (Tel[i].Num==num)
{
k=i;
break;
}
}
if (k==-1)
{
cout<<"你输入的对象不存在,请重新输入:";
continue;
}
do
{
cout<<"请选择你需要修改的内容:"<<endl;
cout<<"1.学号 2.姓名 3.年龄"<<endl;
cout<<"4.性别 5.出生日期 6.地址"<<endl;
cout<<"7.电话号码 8.电子邮箱 0.退出"<<endl;
cout<<"请输入操作指令:";
cin>>m;
if (m==0)
break;
switch (m)
{
case 1:
cout<<"请输入新的学号:";
cin>>num;
Tel[k].Num=num;
continue;
case 2:
cout<<"请输入新的姓名:";
cin>>name;
Tel[k].Name=name;
continue;
case 3:
cout<<"请输入新的年龄:";
cin>>age;
Tel[k].Age=age;
continue;
case 4:
cout<<"请输入新的性别:";
cin>>sex;
Tel[k].Sex=sex;
continue;
case 5:
cout<<"请输入新的出生日期:";
cin>>time;
Tel[k].Time=time;
continue;
case 6:
cout<<"请输入新的地址:";
cin>>address;
Tel[k].Address=address;
continue;
case 7:
cout<<"请输入新的电话号码:";
cin>>phone;
Tel[k].Phone=phone;
continue;
case 8:
cout<<"请输入新的电子邮箱:";
cin>>email;
Tel[k].Email=email;
continue;
}
}
while (1);
}
while (1);
Savedata(count);
}
void Delete()
{
int count=loading1();
int num,i,k;
do
{
k=-1;
cout<<"请输入你想要删除对象的学号(输入0退出):";
cin>>num;
if (num==0)
break;
for (i=1; i<count; i++)
{
if (Tel[i].Num==num)
{
k=i;
break;
}
}
if (k==-1)
{
cout<<"你输入的对象不存在,请重新输入:";
continue;
}
Tel[k].Num=1;
Tel[k].Name="1";
Tel[k].Sex="1";
Tel[k].Age=1;
Tel[k].Time="1";
Tel[k].Address="1";
Tel[k].Phone="1";
Tel[k].Email="1";
}
while (1);
Savedata(count);
}
void Query()
{
int count=loading1();
int num,i,k;
do
{
k=-1;
cout<<"请输入你想要查询对象的学号(输入0退出):";
cin>>num;
if (num==0)
break;
for (i=1; i<count; i++)
{
if (Tel[i].Num==num)
{
k=i;
break;
}
}
if (k==-1)
{
cout<<"你输入的对象不存在,请重新输入:";
continue;
}
cout<<Tel[k].Num<<" "<<Tel[k].Name<<" "<<Tel[k].Sex<<" "<<Tel[k].Age<<" ";
cout<<Tel[k].Time<<" "<<Tel[k].Address<<" "<<Tel[k].Phone<<" "<<Tel[k].Email<<endl;
}
while (1);
}
int loading1()
{
int num=1;
ifstream infile("TELData.txt",ios::in);
if (!infile)
{
cout<<"open error!";
exit(1);
}
while (infile>>Tel[num].Num)
{
infile>>Tel[num].Name;
infile>>Tel[num].Sex;
infile>>Tel[num].Age;
infile>>Tel[num].Time;
infile>>Tel[num].Address;
infile>>Tel[num].Phone;
infile>>Tel[num].Email;
num++;
}
infile.close();//读入完毕要关闭文件
return num;
}
void Savedata(int num)
{
ofstream outfile("TELData.txt",ios::out);
if (!outfile)
{
cout<<"open error!";
exit(1);
}
int i;
for (i=1; i<=num; i++)
{
outfile<<Tel[i].Num<<" "<<Tel[i].Name<<" "<<Tel[i].Sex<<" "<<Tel[i].Age<<" "<<Tel[i].Time<<" "<<Tel[i].Address<<" "<<Tel[i].Phone<<" "<<Tel[i].Email<<endl;
}
outfile.close();//用完了必须关闭
}
运行结果:
一上午加中午的成果,翻过来覆过去的修改,但还有许多不足,比如修改后退出要输入两次0,可能是保存时的问题,这两个0也跑到文件中来了等等。还有第二组要求没达到
有些累了,以后有空再升级吧。