1、 C+C+语言程序设计课程设计语言程序设计课程设计 实验报告实验报告 题目:简单的通讯录管理题目:简单的通讯录管理 班级:班级: 01103010110301 班班 学号:学号: 姓名:姓名: 成绩:成绩: 指导教师:指导教师: 日期:日期: 年年 月月 日日 报告内容报告内容 一、程序功能 二、课题分析 三、设计中的问题与解决方法 四、感想和心得 五、源程序代码(含注释) 六、典型测试数据组(含输入数据和输出结果) (一)程序功能(一)程序功能 1. 增加记录,可选择增加数目 2. 删除记录,可选择删除多个或单个或全部 3. 显示所有记录,十个一屏 4. 按姓名查找一个记录 5. 按姓名查找
2、并更改记录 6. 从一个正文文件读取记录 7. 把目前的记录存入一个正文文本 8. 更改排序关键字并排序 (二)课题分析(二)课题分析 此课程设计的数据里面包含每个人的姓名, 电话号码以及E-mail 地址等信息,并且每个人的数据默认以姓名为关键字,按照升序 排放,排序方式可修改,同时为了减少执行“添加” “删除”等 过,与复杂和繁琐的操作,采用单向链表来进行数据的存储与操 作。同时需要一个文本文件来存储联系人信息,数据可从该文本 文件中导出。 (三)设计中遇到的问题及解决办法(三)设计中遇到的问题及解决办法 1.从文本文件中载入数据时,出现不能读的情况,解决办法是分 情况,写程序分别进行处理
3、。 2.从文本文件中载入数据时,出现不同类数据合并现象,原因是 数据之间无空格,解决方法是增大字段占用宽度。 3.修改排序关键字时出现错误,解决办法:依次从原链表中摘除 结点,按要求的顺序添加到新链表中,最后将首尾结点指针指向 新链表。 (四)感想和心得(四)感想和心得 通过这次的课程设计我明白了学习程序设计语言必须要勤做 实验,通过实验总结经验。我发现编写一个大一点的程序多么复 杂,要掌握好 C+就必须向老师说的那样,多操作,不然说平就 提不高。有很多东西你了解了,但当你去编写时,就会不断暴露 出我们自己的问题,所以平时遇到的一些小问题一定要重视,越 是基础的知识越要理解透彻,比如指针与数组
4、方面的知识,一旦 没有弄清楚,在设计程序时就会吃亏。这次的课设中,我遇到了 很多的问题,有的通过思考或查看书本解决了,有的还留在脑子 里,只有通过孜孜不倦的求索我们才会有进步,不懂的思考就不 能真正的掌握一门知识。这次的试验给予了我警示,他让我明白 我掌握的知识还欠缺,对于继承与派生这一章的知识,我以为自 己勉强掌握了,这次试验后我发现我掌握的还不够。基类的保护 成员公有继承到派生类,类外是否可以通过对象来访问呢,原先 我以为是可以的,经过这次程序设计我知道我错了。总之,我觉 得做学问不应该马虎,对于所学一定要有深入的理解,这也是我 这次课设得到的启示。 (五)源程序代码(含注释)(五)源程序
5、代码(含注释) #include #include #include #include #include #include #define len sizeof(class node)/定义一个宏 len 大小为 node 的字节长度 class node/定义一个面向对象的类 char name10; int officephone; int homephone; char mobilephone15; char email20; node *next;/指向下一个类的指针 public: node(char *n=“dd“,int o=0,int h=0,char *m=“0“,char *e=“0“)/缺省构造函数 strcpy(name,n); strcpy(mobilephone,m); strcpy(email,e); officephone=o; homephone=h; void show()/定义一个打印的接口函数 coutnext=NULL;/再使尾指针指向 p void addsort(node *p)/将 p 按照关键字的顺序插入 if(!headptr) /如果链表为空 headptr=tailptr=p;/使头尾指针指向 p p-next=NULL;/再使 p 的下个指针为空 else