永发信息网

设计一个程序完成通讯录的以下操作:1.添加记录2.显示3.修改4.按姓名查找 5.删除,代码如下:

答案:1  悬赏:30  手机版
解决时间 2021-03-18 10:35
#include
#include
#include
#include
#include
#include
using namespace std;
struct Info{
char name[21];
int age;
char address[21];
char phone[14];
char email[51];
};

//函数原型
void addFile(fstream &);//增加记录
void showFile(fstream &);//显示记录
void editFile(fstream &);//修改记录
void researchFile(fstream &);//查找记录
void deleteFile(fstream &);//删除记录
void main()
{
int choice;
fstream classmate("c:\\Info.dat",ios::out|ios::in|ios::binary);
if(classmate.fail())
{
cout<<"Error!";
exit(0);
}
while(true){
cout<<"\n\t1.增加记录 2.显示所有记录 3.修改记录 4.查找记录 5.删除记录 6.退出\n";
cin>>choice;
cin.ignore();
switch(choice){
case 1:
addFile(classmate);
break;
case 2:
showFile(classmate);
break;
case 3:
editFile(classmate);
break;
case 4:
researchFile(classmate);
break;
case 5:
deleteFile(classmate);
break;
case 6:
exit(0);
}
}
classmate.close();
}

//增加记录函数
void addFile(fstream &file)
{
Info person;
file.clear();
char again='Y';
do{
cout<<"请输入要增加的记录的内容:\n";
cout<<"姓名:";
cin.getline(person.name,21);
cout<<"年龄:";
cin>>person.age;
cin.ignore();//略过后面的换行符
while((person.age>200)|(person.age<0)){
cout<<"你输入的年龄不符合要求,请重新输入.";
cout<<"年龄:";
cin>>person.age;
cin.ignore();
};
cout<<"联系地址:";
cin.getline(person.address,51);
cout<<"联系电话:";
cin.getline(person.phone,14);
cout<<"E-mail:";
cin.getline(person.email,51);
file.seekp(0L,ios::end);
file.write((char *)&person,sizeof(person));
cout<<"你还想继续输入吗?(Y\\N)\n";
cin>>again;
cin.ignore();
}while(toupper(again)=='Y');
file.flush();
}

//显示所有记录
void showFile(fstream &file)
{
Info person;
int num=1;
file.clear();
file.seekg(0L,ios::beg);//调整读指针
file.read((char *)&person,sizeof(person));//读取并显示记录
while(!file.eof()){
cout<<"记录 "< cout<<"姓名:";
cout< cout< cout< cout< cout< cout< cout< cout< cout< file.read((char *)&person,sizeof(person));
num++;
}
}

这是前2个功能的代码,其中有一个问题,为什么会创建文件失败呢?如果先手动创建好文件,在运行程序就不会失败了。功能3和4我也会写,但是我不会实现删除,求高手指导下怎么写删除部分的代码,最好在我的代码基础上写。
最佳答案
通讯录管理 c语言的可以参考用给我邮箱
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
联通,移动,电信,哪个信号好?
大智副食店我想知道这个在什么地方
海信led50k20jd是什么操作系统?是安卓吗
太阳能板块多少钱一块
韭菜陷的饺子和羊肉串一起吃会有反应吗?
女友生日不能陪她…因为我工作走不开!怎样能
弥足珍贵的曾经,最终还是抵不过时间的消磨 这
成语x步xx 提示:曹丕 曹植 相煎 何急 豆萁
杭州孪生文化艺术有限公司我想知道这个在什么
某校文艺汇演中,共有7个节目,其中有2个舞蹈节
谷景生是副国级吗
请问三亚的"天涯海角"附近有便宜而又安全干净
六十多岁的老人脾气大易怒烦躁吃什么药
喝多了喝葡萄糖能行吗
安妍礼物真实吗?是不是真的?好想知
推荐资讯
我全境封锁本体是uplay版本的,DLC能不能用ST
王者荣耀韩信是不是又削了没以前顺手了。(注
展示柜温控器怎么换,需不需要把柜壳拆掉
君悦尚品地址有知道的么?有点事想过去
除了啪啪和小鸡,iphone上面还有其他模拟器吗
我和她是大学同学兼朋友用英语
交友带劫之命是什么意思
玩LOL时FPS只有03,配置感觉还可以,是哪处了
爱着爱着你你就是唯一一生一世不分离是什么歌
欧品·汇地址有知道的么?有点事想过去
去过影楼做助理学徒的告诉我,能学到东西吗?
这两个是什么植物,花市买的,上水石的摊位上
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?