1、广东海洋大学C+实习报告doc程序设计基础课程设计报告设计题目学生通讯录管理系统学生姓名周春海学生班级计科1141学生学号201411621136指导教师陈有英完成时间: 2015 年 6 月 2 日一 课程设计题目与要求 1.1题目 通讯录管理系统 1.2系统功能要求: (1)录入通讯录 (2)修改通讯录 (3)查询通讯录(可按姓名、电话、联系人类别查询) (4)删除通讯录 (5)按姓名对通讯录进行排序 二 需求分析 21问题描述 根据需求,该系统所应包含的信息有以下一些: 通讯录的基本信息: 姓名、地址、电话 根据需求, 该系统所应实现的功能有以下一些: 各种基本数据的录入。 如:通讯录基
2、本信息录入。 各种基本数据的修改。 即:允许对已经录入的数据重新进行编辑、修改。 例如修改通讯录中张三的电话信息 各种基本数据的删除。 例如将张三的信息从通讯录中删除 基于各种数据的查询。 例如输入张三姓名,查询张三的电话和地址。 数据导出: 将通讯录中信息导出到指定文件。 数据导入: 从指定文件导入通讯录信息到。 2.2系统环境 采用C+语言实现,开发环境为VC+6.0, 可以运行在操作系统windows98及以上皆可。 2.3运行要求 能不受限制的录入通讯录信息 界面友好,操作方便,例如删除前需要提示用户是否删除 三 概要设计 3.1系统流程设计 根据系统要求,设计如下的系统流程。3.2系
3、统模块设计根据系统功能,可分为如下模块: 1.主界面模块:完成系统菜单的显示 2.功能选择模块:根据用户的选择,完成其相应的功能 (1)通讯录信息录入:完成用户从界面输入通讯录,保存入系统的功能 (2)通讯录信息修改:完成用户从界面输入通讯录,在系统中查询定位,并将录入的数据保存入系统的功能 (3)通讯录信息查询:完成用户从界面输入查询条件,在系统查询符合条件的通讯录信息,并在界面上显示的功能。 (4)通讯录信息导入:完成用户从界面输入需要导入的文件路径名称、 取该文件的内容,保存入系统,并在界面上显示导入内容的功能。 (5)通讯录信息导出:完成用户从界面输入需要导出的文件路径名称,将系统中通
4、讯录信息保存入文件中。 (6)通讯录信息删除:完成用户从界面输入需要的通讯录信息的姓名,并将其从系统中删除。 四 详细设计 4.1数据结构设计 根据系统要求,系统中需要保存的数据有通讯录的信息,其结构如下: 数据项名称 数据项系统表示 数据类型 数据长度 备注 姓名 name 字符串 20 地址 address 字符串 100 电话 tele 字符串 20 4.2界面设计 1.主界面: 根据系统要求,设计一个字符界面,显示系统的菜单,为了体现友好性, 将在每个菜单前显示该菜单项对应的数字用户输入菜单项前面的数字, 主菜单消失,进入该模块的相应界面,进行相应的操作,完成后,回到主界面。 2.输入
5、界面:3.修改界面4.删除界面:5.查询界面:4.3模块实现 1.主界面实现: 调用cout函数,在屏幕上打印需要显示的字符信息, 需要在显示之前调用system(“cls”)函数将前面的界面清空。对应的实现函数menu_show(); 2.功能选择模块实现: 接受从键盘输入的菜单选择,判断并调用相应的功能函数,完成其对应的功能。实现功能选择。 对应的函数:menu_select(); (1)通讯录信息录入模块实现: 模块说明:从键盘接收输入的通讯录信息,在动态存储区中创建通讯录的节点,遍历链表,将其插入到通讯录链表的最后位置。 模块流程: 2)通讯录信息修改模块实现: 模块说明:从键盘接收输
6、入的需要修改通讯录的姓名,遍历链表 ,判断节点的姓名是否输入的姓名相等,如果相等,从键盘输入修改后的信息, 保存在该节点中,改变标识变量,最后判断标识变量判断是否在链表中找到该姓名的通讯录。 模块流程: 六 结论及改进设想 此通讯录管理系统的程序开发,其亮点主要是引用了类来宏观调运程序, 使得程序简单、明了、可读性强,在程序操作上也比较省事、方便。 通讯录程序无节点,这是一个非常大的不足,急需要改进,但由于时间比较紧, 就没有想这部分程序。其实,这部分程序也就是退出,需要一个好的位置来安放此程序。 通讯录程序是我做的第一个比较大的程序,在专业人士看来这不算什么, 但对我来说有很大的意义,他的做
7、出激发着我更好的学好c+,更好的学好专业课。 七 心得体会 对第一次用C应用程序来做这么大课题的我来说,了解C语言的概念是非常重要的, C+语言既保留了C语言的有效性、灵活性、便于移植等全部精华和特点, 又添加了面向对象编程的支持,具有强大的编程功能,可方便地构造出模拟现实问题的实体和操作; 编写出的程序具有结构清晰、易于扩充等优良特性,适合于各种应用软件、系统软件的程序设计。 用C+编写的程序可读性好,生成的代码质量高。所谓C语言:是一种使用非常广泛的计算机编程语言。 任何一个优秀的程序,无非有以下几点:效率高,可读性高,可重用性强,可移植性好。具体到C+程序, 如果做面向对象那块,无非是合
8、理的类的设计,在类中合理安排数据和对数据的处理,信息隐藏的特性等等。 从C应用程序目前的活跃程度,以及应用现状来说是完全能够肯定C仍然是软件工业的基础, 也不会退出历史舞台的。我们也能够看到C的发 展非常活跃,对于新技术新思维非常激进, C仍然广泛受到关注。七源代码:#include #include #include #include #include int n,m; using namespace std;class msg public: msg();/默认构造函数 char inter_face();/首页 void add_person();/添加联系人 void del_pers
9、on();/删除联系人 void show_all();/显示所有联系人 void alter();/修改信息 void select();/查询联系人 void save_new();/保存新增加的联系人 private: string name;/姓名 string sex;/性别 string num;/电话号码 string ad;/地址 string rl;/类型 ; msg:msg() name = 0; ad = 0; num = 0; sex = 0; rl = 0; /首页 char msg:inter_face() cout endl; couttt* endl tt en
10、dl tt 通 迅 录 endl tt endl tt 1. 添加新联系人. 4. 修改信息. endl tt endl tt 2. 删除联系人. 5. 查询联系人. endl tt endl tt 3.显示所有联系人. 0. 关闭通迅录. endl tt endl tt*endl endl choose; return choose; /添加联系人 void msg:add_person() cout endl 根据下面提示输入新联系人信息 endl endl name; cout num; cout rl; cout sex; cout ad; save_new(); cout endl
11、endl 新联系人信息已经保存好! endl ; /删除联系人 void msg:del_person() ofstream outData(temp.txt, ios:out); ifstream inData(pbook.txt, ios:in); / if (!outData | !inData) cout endl 对不起!找不到文件! endl; system(pause); return; string sign; cout endl sign; string str1; bool flag = true; string str; while (inData name num) g
12、etline(inData, str); if (sign=name) | (sign=num) cout endl 你想删除的联系人: endl endl; cout str1 endl; cout setiosflags(ios:left) setw(17) name num str endl; flag = false; break; outData setiosflags(ios:left) setw(17) name num str endl; if (flag) cout endl 对不起!联系人中没你找的人! endl endl; else while (getline(inDa
13、ta, str) outData str endl; outData.close(); inData.close(); ofstream out(pbook.txt, ios:out); ifstream in(temp.txt, ios:in); if (!out | !in) cout endl 对不起不能打开文件! endl endl; return; while (getline(in, str) out str endl; /此处需注意 out.close(); in.close(); cout endl 这个人的信息已经从你的通迅录中删除! endl endl; /显示所有联系人
14、void msg:show_all() ifstream inData(pbook.txt,ios:in); if (!inData) cout endl 对不起!没有找到文件! endl; return; bool flag = true; string record; while (getline(inData, record) if (flag) cout endl 所有联系人信息如下: endl; cout姓名setw(18)电话setw(15)性别setw(21)类型setw(15)地址endl; cout record endl; flag = false; if (flag) c
15、out endl 你的通迅录中没有联系人! endl endl; else cout endl 所有联系人已经全部显示出来! endl endl; /修改信息 void msg:alter() ofstream outData(temp.txt, ios:out); ifstream inData(pbook.txt, ios:in); / if (!outData | !inData) cout endl 对不起!找不到文件! endl; return; string sign; cout endl sign; string str1; bool flag = true; string st
16、r; while (inData name num) getline(inData, str); if (sign=name) | (sign=num) cout endl 你想修改的联系人: endl endl; cout str1 endl; cout setiosflags(ios:left) setw(17) name num str endl; cout endl 请根据下面提示修改信息: endl; cout name; fflush(stdin); cout num; fflush(stdin); cout sex; fflush(stdin); cout rl; fflush(
17、stdin); cout ad; fflush(stdin); save_new(); flag = false; break; outData setiosflags(ios:left) setw(17) name num str endl; if (flag) cout endl 对不起!联系人中没你找的人! endl endl; else while (getline(inData, str) outData str endl; outData.close(); inData.close(); ofstream out(pbook.txt, ios:out); ifstream in(t
18、emp.txt, ios:in); if (!out | !in) cout endl 对不起不能打开文件! endl endl; system(pause); return; while (getline(in, str) out str endl; out.close(); in.close(); cout endl 这个人的信息已经在你的通迅录中修改! endl endl; /查询联系人 void msg:select() ifstream inData(pbook.txt,ios:in); if (!inData) cout endl 对不起!文件找不到! endl; system(p
19、ause); return; string sign; cout endl sign; fflush(stdin); string str1; bool flag = true; string str; while (inData name num) getline(inData, str); if (name=sign) | (num=sign) cout endl 你要查找的联系人是: endl endl; cout str1 endl; cout setiosflags(ios:left) setw(17) name num str endl; flag = false; system(
20、pause); break; void msg:save_new() ofstream outData(pbook.txt, ios:app); if (!outData) cout endl 对不起!打开文件失败! endl endl; system(pause); return; outData setiosflags(ios:left) setw(17) name setw(16) num setw(18) sex setw(14) rl setw(20) ad endl; outData.close(); void main() msg abj; do cout endl; coutt
21、t* endl tt endl tt 通 迅 录 endl tt endl tt 1. 添加新联系人. 4. 修改信息. endl tt endl tt 2. 删除联系人. 5. 查询联系人. endl tt endl tt 3. 显示所有联系人. 0. 退出通迅录. endl tt endl tt*endl endl n; switch(n) case 1: abj.add_person();/添加联系人 break; case 2: abj.del_person();/删除联系人 break; case 3: abj.show_all();/显示所有联系人 break; case 4: abj.alter();/修改信息 break; case 5: abj.select();/查询联系人 break; default: break; coutm; while(m=1);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1