C++面向对象程序设计
课程设计报告
设计题目:通讯录系统
学生学号:P P
学生姓名: 王元波次仁多布杰
专业班级:2009级计算机科学与技术(3)班学生成绩:
指导教师:蔡正琦
计算机科学与信息工程学院
2010-6-26
一、设计任务分析
实现以下功能:
1) 通讯录编辑(添加、删除);
2) 按不同的项进行查找;
3) 对已存在的通讯录按不同的项排序;
4) 将通讯录写入文件;
5) 从文件读入通讯录。
二、模块设计
本次程序设计主要设计了六个模块(主要是:(),(),(),(),(),(),())()函数用于通讯录中的信息进行添加,主要流程如下:
()函数用于通讯录中的信息进行删除,主要流程如下:
()函数用于通讯录中的信息进行修改,主要流程如下:
()函数用于通讯录中的信息进行查找,主要流程如下:
()函数用于通讯录中的信息进行排序,主要流程如下:
()函数用于从文本文件中读取信息,主要流程如下:
()函数用于将信息写入文本文件,主要流程如下:
三、主要数据结构
结构数组:
struct student
o< cout<<"姓名:"< cout<<"地址:"< cout<<"电话号码:"< cout<<"邮编:"< cout<<"E_MAIL:"< } }; 通讯录编辑. 4. 按序排列. ※" < <<"\t\t※※" < <<"\t\t※2. 查询联系人. 5. 将文件读入程序. ※" < <<"\t\t※※" < <<"\t\t※3. 将资料写入文件. 6. 格式化(慎用). ※" < <<"\t\t※※" < <<"\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★" < <<"\t\t "< <<"\t\t\t选择:" ; cin>>select1; switch(select1) { case '1':cout<<" (1)添加:"< cout<<" (2)删除:"< cout<<" (3)修改:"< char select2; cout<<" 请选择:"< cin>>select2; switch(select2) { case '1':cout<<" 输入添加的资料:"< char no[13]; char name[20]; char address[100]; char tel_no[12]; char post_code[7]; char e_mail[40]; cout<<" 输入学号:"< cin>>no; cout<<" 输入姓名:"< cin>>name; cout<<" 输入地址:"< cin>>address; cout<<" 输入电话号码:"< cin>>tel_no; cout<<" 输入邮编:"< cin>>post_code; cout<<" 输入E_mail:"< cin>>e_mail; (no,name,address,tel_no,post_code,e_mail); cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): "; char back_add; cin>>back_add; if(back_add=='R'||back_add=='r') goto top; else goto bottom; break; case '2':cout<<" 输入要删除人的姓名:"< char name2[20]; cin>>name2; (name2); cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): "; char back_del; cin>>back_del; if(back_del=='R'||back_del=='r') goto top; else goto bottom; break; case '3':cout<<" 输入需要修改人的姓名:"< char name3[20]; cin>>name3; if(name3)) goto top; else goto bottom; break; } break; case '2':cout<<" (1)根据姓名查找"< cout<<" (2)根据学号查找"< char select3; cout<<" 请选择: "; cin>>select3; switch(select3) { case '1':char name4[20]; cout<<" 输入姓名: "; cin>>name4; (name4); cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): "; char back_f1; cin>>back_f1; if(back_f1=='R'||back_f1=='r') goto top; else goto bottom; break; case '2':char no4[13]; cout<<" 输入学号: "; cin>>no4; (no4); cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): "; char back_f2; cin>>back_f2; if(back_f2=='R'||back_f2=='r') goto top; else goto bottom; break; } break; case '3':(); cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): "; char back_w; cin>>back_w; if(back_w=='R'||back_w=='r') goto top; else goto bottom; break; case '4':cout<<" (1)按学号排序:"< cout<<" (2)按姓名排序:"< cout<<" 请选择:"; char select4; cin>>select4; switch(select4) { case '1':(); cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): "; char back; cin>>back; if(back=='R'||back=='r') goto top; else goto bottom; break; case '2':(); cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): "; char back1; cin>>back1; if(back1=='R'||back1=='r') goto top; else goto bottom; break; } break; case '5':(); cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): "; char back_r; cin>>back_r; if(back_r=='R'||back_r=='r') goto top; else goto bottom; break; case '6':cout<<" 请确认删除所有资料!(Y/N) "; char select5; cin>>select5; if(select5=='Y'||select5=='y') (); cout<<" 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): "; char back_f; cin>>back_f; if(back_f=='R'||back_f=='r') goto top; else goto bottom; break; } bottom:cout<<" ★★★★★★★★★★★★欢迎使用本软件!★★★★★★★★★★★"< return 0; } o,"0")) { strcpy(st[i].address,address); strcpy(st[i].e_mail,e_mail); strcpy(st[i].name,name); strcpy(st[i].no,no); strcpy(st[i].post_code,post_code); strcpy(st[i].tel_no,tel_no); x=0; } if(x==0) break; } } ame,name)) { strcpy(st[i].address,"0"); strcpy(st[i].e_mail,"0"); strcpy(st[i].name,"0"); strcpy(st[i].no,"0"); strcpy(st[i].post_code,"0"); strcpy(st[i].tel_no,"0"); } else x=0; } if(x==0) cout<<" error:输入姓名错误!"< ame,name)) x=i; } char select; cout<<" (1)修改姓名:"< cout<<" (2)修改学号:"< cout<<" (3)修改地址:"< cout<<" (4)修改邮编:"< cout<<" (5)修改电话号码:"< cout<<" (6)修改E_MAIL:"< cout<<" 请选择:"; cin>>select; switch(select) { case '1':cout<<" 输入要修改的姓名:"; char name1[30]; cin>>name1; strcpy(st[x].name,name1); cout<<" 修改成功!"< return back(); break; case '2':cout<<" 输入要修改的学号:"; char no1[13]; cin>>no1; strcpy(st[i].no,no1); cout<<" 修改成功!"< return back(); break; case '3':cout<<" 输入要修改的地址:"; char address1[100]; cin>>address1; strcpy(st[x].address,address1); cout<<" 修改成功!"< return back(); break; case '4':cout<<" 输入要修改的邮编:"; char post_code1[7]; cin>>post_code1; strcpy(st[x].post_code,post_code1); cout<<" 修改成功!"< return back(); break; case '5':cout<<" 输入要修改的电话号码:"; char tel_no1[12]; cin>>tel_no1; strcpy(st[x].tel_no,tel_no1); cout<<" 修改成功!"< return back(); break; case '6':cout<<" 输入要修改的E_MAIL:"; char e_mail1[40]; cin>>e_mail1; strcpy(st[x].e_mail,e_mail1); cout<<" 修改成功!"< return back(); break; } } o,no)) { x=i; z=0; } else y=0; if(z==0) break; } if(y==0) cout<<" 输入的学号查找不到!!!"< print(x); } ame,name)) { x=i; z=0; } else y=0; if(z==0) break; } if(y==0) cout<<" 输入的姓名查找不到!!!"< print(x); } xt"); ifstream file(name1); char line[120]; char no[120]; char name[120]; char address[120]; char post_code[120]; char tel_no[120]; char e_mail[120]; int time=0; (line,120); while(!()) { for(int k=0;k<35;k++) { if(time==0) { strcpy(no,line); time=1; for(int i=0;i<120;i++) { if(no[i]==':') { i++; for(int j=0;j<13;j++) { st[k].no[j]=no[i]; i++; } } } (line,120,'\n'); } if(time==1) { strcpy(name,line); time=2; for(int i=0;i<120;i++) { if(name[i]==':') { i++; for(int j=0;j<20;j++) { st[k].name[j]=name[i]; i++; } } } (line,120,'\n'); } if(time== 2) { strcpy(address,line); time=3; for(int i=0;i<120;i++) { if(address[i]==':') { i++; for(int j=0;j<100;j++) { st[k].address[j]=address[i]; i++; } } } (line,120,'\n'); } if(time==3) { strcpy(tel_no,line); time=4; for(int i=0;i<120;i++) { if(tel_no[i]==':') { i++; for(int j=0;j<12;j++) { st[k].tel_no[j]=tel_no[i]; i++; } } } (line,120,'\n'); }