简单的通讯录管理程序

  • 格式:doc
  • 大小:392.50 KB
  • 文档页数:23

C++面向对象设计作业 实 验 报 告

学院:信息学院 班级:信管11—2 姓名: 学号: 目录 1、课程设计题目及功能分析 ………… 1

2、 UML类图 …………………………… 2 3、主要程序代码及介绍 ……………… 3 4、运行结果展示(截屏贴图) ……… 18 5、心得体会…………………………… 22 题目:简单的通讯录管理程序 一、功能: 这个程序能实现简单的通讯录的储存、添加、显示、读入、查询、修改、排序等功能,并且可以在储存跟添加时根据储存条目的不同,而实现不同的储存功能。而且能够对相同姓名的人员进行识别等。 二、UML活动图:

三、关键代码及分析: 1、功能选择: int main() { bool option_bool = true; int option_num; while (option_bool)

启动程序 选择功能

添 加 记 录

显 示 信 息

读入程序

信息查询

信 息 修 改

排 序

恢复排序前顺序

退 出 { printf_option_list(); cout << "请输入您的选项: "; cin >> option_num; if (0==option_num) //退出程序 { exitProgram(); option_bool = false; } if (1==option_num) //添加一个记录 { addOneData(); } if (2==option_num)//显示所有信息 { showAllInfo(); } if (3==option_num) { saveToFile();//存储到文件夹 } if (4==option_num) //信息读入程序 { readToProgram(); } if (5==option_num) { selectInfo();//查询 } if (6==option_num)//修改 { updateInfo(); } if (7==option_num)//排序 { sort(); } if (8==option_num)//但排序完成后可以恢复排序前 { sortPreFunc(); } cout<} return 0; } 2、输出选项列表: void printf_option_list() { cout << "选项列表如下" << endl; cout << "1: 添加一个记录 2: 显示所有信息" << endl; cout << "3: 存储到文件中 4: 信息读入程序" << endl; cout << "5: 查询某人信息(姓名) 6: 修改一个信息" << endl; if (sortPre) { cout << "7: 排序(姓名、邮政编码) 8: 恢复排序前顺序" << endl; cout << "0: 退出程序" << endl; } else { cout << "7: 排序(姓名、邮政编码) 0: 退出程序" << endl; } }

3、添加功能: void addOneData() //添加 { fstream _file; _file.open(FILEPATH, ios::in); if(!_file) { ofstream outstuf; outstuf.open(FILEPATH); } cout> flag; while (1>flag || flag>3) { cout<<"请输入您想要存储的对象类型: 1 为一般条目, 2是朋友条目, 3是同学条目 "; cin >> flag; } if (1==flag) { char name[50]; char address[50]; char phone[50]; int postal_code; cout << "姓名 "; cin>>name; cout << "地址 "; cin>>address; cout << "电话号码 "; cin>>phone; cout << "邮政编码 "; cin>>postal_code; generalArr[num] = new General(name, address, phone, postal_code); } if (2==flag) { char email[50]; char home_phone[50]; char name[50]; char address[50]; char phone[50]; int postal_code;

cout << "姓名 "; cin>>name; cout << "地址 "; cin>>address; cout << "电话号码 "; cin>>phone; cout << "邮政编码 "; cin>>postal_code; cout << "Email "; cin>>email; cout << "家庭电话 ";cin>>home_phone; generalArr[num] = new Friend(email, home_phone, name, address, phone, postal_code); } if (3==flag) { char my_school[50]; char my_class[50]; char name[50]; char address[50]; char phone[50]; int postal_code;

cout << "姓名 "; cin>>name; cout << "地址 "; cin>>address; cout << "电话号码 "; cin>>phone; cout << "邮政编码 "; cin>>postal_code; cout << "学校 "; cin>>my_school; cout << "班级 "; cin>>my_class; generalArr[num] = new Student(my_school, my_class, name, address, phone, postal_code); } num++; } 4、显示所有信息功能:

void showAllInfo() //显示所有信息 { if (0==num) { cout << "目前还没有任何数据" << endl; return; } cout << "所有信息显示如下:" << endl; int i=0; for (i=0; i{ generalArr[i]->show(); } }

void saveToFile() { int i=0; ofstream writeToExplainFile(FILEEXPLAIN); if (!writeToExplainFile) { writeToExplainFile.open(FILEEXPLAIN); } writeToExplainFile << "存储方式顺序为:" << endl; writeToExplainFile << "General 姓名 地址 电话号码 邮政编码" << endl; writeToExplainFile << "Friend Email 家庭电话 姓名 地址 电话号码 邮政编码" << endl; writeToExplainFile << "Student 学校 班级 姓名 地址 电话号码 邮政编码" << endl; writeToExplainFile.close(); if (0==num) { cout << "目前还没有任何数据,用不着保存!!!" << endl; return; }

ofstream writeToFile(FILEPATH); if(!writeToFile) { writeToFile.open(FILEPATH); }

for (i=0; i{ writeToFile << generalArr[i]->showId() << SERARATOR ; if (2==generalArr[i]->showId()) // Friend { writeToFile << generalArr[i]->getEmail() << SERARATOR; writeToFile << generalArr[i]->getHomePhone() << SERARATOR ; } if (3==generalArr[i]->showId()) // Student { writeToFile << generalArr[i]->getMySchool() << SERARATOR ; writeToFile << generalArr[i]->getMyClass()<< SERARATOR; } writeToFile << generalArr[i]->getName() << SERARATOR ; writeToFile getPhone() << SERARATOR ; writeToFile