c语言 通讯录程序代码.docx
c语言 通讯录程序代码#include<iostream.h> #include<fstream.h> #include<stdlib.h> #include<string.h> #include<stdio.h> class student public: char num20; char name20; char address40; char tel_num12; char post_code7; char e_mail40; ; class function:public student public: ; /主函数 int main function a; char select1; cout<<endl; int m=0; void add; void del; void find_num; void find_name; void list_num; void list_name; void correct; void format; void show; do cout<<"-通讯录-"<<endl; cout<<"*"<<endl; cout<<"*1.通讯录编辑 2.查询联系人 3.按序排列 4.格式化 5.显示通讯录 6.清屏 7.退出*"<<endl; cout<<"*"<<endl; cout<<"请选择:" cin>>select1; cout<<"-"<<endl; switch(select1) case'1':cout<<"1.添加 2.删除 3.修改 4.返回主菜单"<<endl; char select2; cout<<"请选择:"<<endl; cin>>select2; switch(select2) case '1':a.add; break; break; break; case'2':a.del; case'3':a.correct; case'4':break; default:cout<<"输入错误!"<<endl; break; case'2':cout<<"1.姓名查找 2.学号查找 3.返回主菜单"<<endl; char select3; cout<<"请选择:" cin>>select3; "<<endl; switch(select3) case'1':a.find_name; break; case'2':a.find_num; break; case'3':break; default:cout<<"输入错误!"<<endl; break; case'3':cout<<"1.按学号排序 2.按姓名排序 3.返回主菜单 cout<<"请选择:" char select4; cin>>select4; switch(select4) case'1':a.list_num; break; case'2':a.list_name; break; case'3':break; default:cout<<"输入错误!"<<endl; break; case'4':cout<<"请确认删除所有资料" char select5; cin>>select5; if(select5='Y'|select5='y') a.format; break; case'5':a.show;break; case'6':system("cls");break;/清屏函数 case'7':m=1;cout<<"谢谢使用!"<<endl;break; default:cout<<"输入错误!"<<endl; while(m!=1); /添加联系人 void function:add int i; cout<<"输入添加个数(10个以内):" cin>>i; student stud140=0; ofstream outfile("学生通讯录.dat",ios:app|ios:binary); if (! outfile) for(int j=0;j<i;j+) cout<<"学号:" cin>>stud1j.num; cout<<"姓名:" cin>>stud1j.name; cout<<"地址:" cin>>stud1j.address; cout<<"电话号码:" cin>>stud1j.tel_num; cout<<"邮编:" cin>>stud1j.post_code; cout<<"电子邮件:" cin>>stud1j.e_mail; outfile.write(char*)&stud1j,sizeof(stud1j); cerr<<"打开错误,程序将退出!" abort; return 0; outfile.close ; /删除联系人 void function:del student stud240=0; char name20="0" cout<<"请输入要删除的学生的姓名:" cin>>name; ifstream infile("学生通讯录.dat",ios:binary); if (!infile) int k=0; while(1) infile.read(char*)&stud2k,sizeof(stud2k); if(infile.eof)break; k+; infile.close; remove("学生通讯录.dat"); ofstream outfile("学生通讯录.dat",ios:binary); if (!outfile) int i=0; while(1) if(i>k-1)break;/每删除一项就会减少一组数据,所以是k-1 if(!strcmp(stud2i.name,name) cerr<<"打开错误,程序将退出!" abort; cerr<<"打开错误,程序将退出!" abort; i=i+1; if(i>k-1)break; outfile.write(char*)&stud2i,sizeof(stud2i); i+; outfile.close; if(k-1=0) remove("学生通讯录.dat"); /修改联系人 void function:correct student stud340=0; ifstream infile("学生通讯录.dat",ios:binary); int k=0; while(1) if(infile.eof)break; infile.read(char*)&stud3k,sizeof(stud3k); k+; infile.close; char name20="0" cout<<"请输入要修改学生的姓名:" cin>>name; int x; for(int i=0;i<k;i+) char select; if(!strcmp(stud3i.name,name) x=i; cout<<"1.修改姓名 2.修改学号 3.修改地址 4.修改邮编 5.修改电话号码 cout<<"请选择:" cin>>select; case'1':cout<<"输入要修改的姓名:" cin>>name1; strcpy(stud3x.name,name1); cout<<"修改成功"<<endl; break; cin>>num1; strcpy(stud3x.num,num1); cout<<"修改成功"<<endl; break; cin>>address1; strcpy(stud3x.address,address1); cout<<"修改成功"<<endl; break; cin>>post_code1; strcpy(stud3x.post_code,post_code1); char name120="0" char num120="0" char address140="0" char post_code17="0" char tel_num120="0" char e_mail140="0" 6.修改E_MAIL"<<endl; switch(select) case'2':cout<<"输入要修改的学号:" case'3':cout<<"输入要修改的地址:" case'4':cout<<"输入要修改的邮编:" cout<<"修改成功"<<endl; break; case'5':cout<<"输入要修改的电话号码:" cin>>tel_num1; strcpy(stud3x.tel_num,tel_num1); break; case'6':cout<<"输入要修改的E_MAIL" cin>>e_mail1; strcpy(stud3x.e_mail,e_mail1); cout<<"修改成功"<<endl; break; default:cout<<"输入错误!"break; remove("学生通讯录.dat"); ofstream outfile("学生通讯录.dat",ios:binary); int l=0; while(1) if(l>k-2)break; outfile.write(char*)&stud3l,sizeof(stud3l); l+; outfile.close; /按学号查询 void function:find_num student stud440=0; ifstream infile("学生通讯录.dat",ios:binary); if(infile.peek=EOF) 文件是否为空,本程序格式化过后查找出现未知数据。 cout<<"文件为空"<<endl; /发现如果不判断 dl; return; cout<<"请输入学号:" char num20="0" cin>>num; cout<<"-"<<enint i=0; while(1) if(!infile.eof) cout<<"学号:"<<stud4i.num<<endl; infile.read(char*)&stud4i,sizeof(stud4i); if(!strcmp(stud4i.num,num)|infile.eof) i+; break; cout<<"姓名:"<<stud4i.name<<endl; cout<<"地址:"<<stud4i.address<<endl; else cout<<"输入的学号查不到"<<endl; infile.close; cout<<"电话号码:"<<stud4i.tel_num<<endl; cout<<"邮编:"<<stud4i.post_code<<endl; cout<<"E-MAIL:"<<stud4i.e_mail<<endl; /按姓名查找 void function:find_name student stud540=0; ifstream infile("学生通讯录.dat",ios:binary); if(infile.peek=EOF) dl; cout<<"请输入姓名:" char name20="0" cin>>name; cout<<"-"<<enfor(int i=0;i<40;i+) infile.read(char*)&stud5i,sizeof(stud5i); if(!strcmp(stud5i.name,name)|infile.eof) break; if(!infile.eof) cout<<"学号:"<<stud5i.num<<endl; cout<<"文件为空"<<endl; return; cout<<"姓名:"<<stud5i.name<<endl; cout<<"地址:"<<stud5i.address<<endl; cout<<"电话号码:"<<stud5i.tel_num<<endl; cout<<"邮编:"<<stud5i.post_code<<endl; cout<<"E-MAIL:"<<stud5i.e_mail<<endl; else cout<<"输入的姓名查不到"<<endl; infile.close; /按学号排序 void function:list_num student stud640=0; ifstream infile("学生通讯录.dat",ios:binary); int k=0; while(1) if(infile.eof)break; infile.read(char*)&stud6k,sizeof(stud6k); k+; for(int j=0;j<k-i;j+) if(strcmp(stud6j.num,stud6j+1.num)>0) strcpy(num,stud6j.num); strcpy(stud6j.num,stud6j+1.num); strcpy(stud6j+1.num,num); strcpy(name,stud6j.name); strcpy(stud6j.name,stud6j+1.name); strcpy(stud6j+1.name,name); strcpy(address,stud6j.address); strcpy(stud6j.address,stud6j+1.address); strcpy(stud6j+1.address,address); strcpy(tel_num,stud6j.tel_num); strcpy(stud6j.tel_num,stud6j+1.tel_num); strcpy(stud6j+1.tel_num,tel_num); char num20="0" char name20="0" char address40="0" char tel_num12="0" char post_code7="0" char e_mail40="0" for(int i=0;i<k-1;i+) strcpy(post_code,stud6j.post_code); strcpy(stud6j.post_code,stud6j+1.post_code); strcpy(stud6j+1.post_code,post_code); strcpy(e_mail,stud6j.e_mail); strcpy(stud6j.e_mail,stud6j+1.e_mail); strcpy(stud6j+1.e_mail,e_mail); infile.close; remove("学生通讯录.dat"); ofstream outfile("学生通讯录.dat",ios:binary); int l=0; while(1) if(l>k-2)break; outfile.write(char*)&stud6l+2,sizeof(stud6l+2); l+; outfile.close; /按姓名排序 void function:list_name student stud740=0; char num20="0" char name20="0" char address40="0" char tel_num20="0" char post_code7="0" char e_mail40="0" ifstream infile("学生通讯录.dat",ios:binary); int k=0; while(1) if(infile.eof)break; else infile.read(char*)&stud7k,sizeof(stud7k); k+; infile.close; for(int i=0;i<k-1;i+) for(int j=0;j<k-i;j+) strcpy(stud7j+1.post_code,post_code); strcpy(e_mail,stud7j.e_mail); strcpy(stud7j.e_mail,stud7j+1.e_mail); strcpy(stud7j+1.e_mail,e_mail); if(strcmp(stud7j.name,stud7j+1.name)>0) strcpy(num,stud7j.num); strcpy(stud7j.num,stud7j+1.num); strcpy(stud7j+1.num,num); strcpy(name,stud7j.name); strcpy(stud7j.name,stud7j+1.name); strcpy(stud7j+1.name,name); strcpy(address,stud7j.address); strcpy(stud7j.address,stud7j+1.address); strcpy(stud7j+1.address,address); strcpy(tel_num,stud7j.tel_num); strcpy(stud7j.tel_num,stud7j+1.tel_num); strcpy(stud7j+1.tel_num,tel_num); strcpy(post_code,stud7j.post_code); strcpy(stud7j.post_code,stud7j+1.post_code); /格式化 void function:format /显示通讯录 void function:show student stud840=0; ifstream infile("学生通讯录.dat",ios:in|ios:binary); infile.seekg(0,ios:beg); if(infile.peek=EOF) int i=0; while(1) cout<<"文件为空"<<endl; return; remove("学生通讯录.dat"); remove("学生通讯录.dat"); ofstream outfile("学生通讯录.dat",ios:binary); int l=0; while(1) if(l>k-2) break; outfile.write(char*)&stud7l+2,sizeof(stud7l+2); l+; outfile.close; infile.read(char*)&stud8i,sizeof(stud8i); if(infile.eof) else cout<<"学号:"<<stud8i.num<<endl; cout<<"姓名:"<<stud8i.name<<endl; cout<<"地址:"<<stud8i.address<<endl; cout<<"电话号码:"<<stud8i.tel_num<<endl; cout<<"邮编:"<<stud8i.post_code<<endl; cout<<"E-MAIL:"<<stud8i.e_mail<<endl; i+; break; infile.close;