《C++程序设计课程设计学生通讯录的设计与实现.doc》由会员分享,可在线阅读,更多相关《C++程序设计课程设计学生通讯录的设计与实现.doc(30页珍藏版)》请在三一办公上搜索。
1、 C/C+程序设计课程设计设计说明书学生通讯录的设计与实现学生姓名学号班级成绩指导教师计算机科学与技术系2010年7月12日C/C+程序设计课程设计评阅书题 目学生通讯录的设计与实现学生姓名学号指导教师评语及成绩成绩: 教师签名: 年 月 日答辩教师评语及成绩成绩: 教师签名: 年 月 日教研室意见总成绩: 室主任签名: 年 月 日注:指导教师成绩60%,答辩成绩40%,总成绩合成后按五级制记入。课程设计任务书2009 2010 学年第 二 学期专业: 学号: 姓名: 课程设计名称: c/c+课程设计 设计题目: 学生通讯录的设计与实现 完成期限:自 2010 年 7 月 5 日至 2010
2、年 7 月 16 日共 2 周设计依据、要求及主要内容(可另加附页):要求用C或C+语言编写一个程序实现学生通讯录管理,数据的基本存储结构采用结构体数组。程序要实现的要求及功能如下:1. 阐述设计思想,画出流程图2. 记录的添加功能。该功能是能向记录表中添加和追加一个学生通讯记录。3. 记录的修改功能。该功能是能将某学生的记录进行修改,并存入记录表中。4. 数据查询功能,该功能要求能实现按姓名、学号查询某个学生的联系方式;按电话查询某个学生的通讯方式。5. 能够按班级查询全班学生的通讯方式的详细信息。最终设计成果形式为:1、设计好的软件一套;2、撰写一份课程设计说明书一份,打印并装订成册。指导
3、教师(签字): 教研室主任(签字): 批准日期: 年 月 日摘 要本课程设计主要借助Visual C+6.0工具实现学生通讯录的设计与实现的功能。开设的课程设计为了进一步筑固VC+基础知识, 熟悉VC+开发的硬件及软件环境,掌握应用程序的开发过程,通过面向对象课程设计的学习,使学生能够更进一步地熟练掌握与运用VC+开发环境,以及增加培养创新型就业人才的理论知识与实际实践相合的技能。 纸质的通讯录已经不能满足我们的要求,更新麻烦,查询困难等缺点是纸质通讯录所不能克服的。在此情况下,迫切需要一个电子版的通讯录来满足我们的需求。这次课程设计的通讯录,它的主要任务是对各种通讯录进行日常的管理,如:记录
4、的输入、查询、修改、添加、删除,迅速准确地完成各种通讯记录的统计计算和汇总,快速打印出报表。具有方便记录通讯人员的详细信息的记录和查找等功能。关键词:通讯录管理系统;记录管理;学生记录信息目 录1 课题描述 1 2 设计过程 2 2.1头文件设计32.2 通讯管理系统子函数的设计32.21 显示菜单设计42.22 函数实现学生通讯录流程图93 测试164 结果分析23总 结24参考文献251 课题描述借助现代信息技术和管理理论,建立通讯管理信息系统是当今社会的重要趋势。对学校而言,全面开发和应用计算机管理信息系统就是近期不能回避的问题。运用数据结构中的结构体数组,结合C语言基本知识,编写一个通
5、讯录管理系统。以把所学数据结构知识应用到实际生活中去。 通过完成本课题,进一步熟悉C语言的基本知识,并掌握数据结构的一些基本算法思想,掌握C语言的文件操作(包括从磁盘读入和向磁盘写入内容),进一步熟悉指针的用法,数组的建立运用和函数的调用等。 学生通讯管理系统是学校常见的计算机信息管理系统。它的主要任务是对学生通讯信息进行日常的管理,如通讯信息的输入、查询、修改、增加、删除,迅速准确地完成学生通讯信息的统计计算和汇总,快速打印出报表。通讯管理系统是数据库管理系统的一个比较典型的应用,它具有大多数数据库应用系统的特征,在进行课程设计时,应尽可能使用C+的功能完成下列功能设计的各项操作。 本系统的
6、实现的主要功能有:能建立、修改和增删学生通讯录,能够按多种方式进行查询.开发工具:Visual C+6.02 设计过程编程以基于字符界面的控制台应用程序来实现。本系统应完成一下几方面的功能:输入信息(Enter()): 调用此函数用以输入数据到内存中,此过程包括建立相应的链表或相应的数组,便于读取显示信息(Display()):用以显示输入的数据,包括从内存中读出和从磁盘中读出查找(Search()):以姓名作为关键字查找要找的信息删除信息(Delete()):用以删除选定的输入信息(姓名作为关键字)存盘(Save()):调用此函数将内存中的数据保存至磁盘中装入(Load()):调用此函数用以
7、将之前保存在磁盘的内容读入到内存中或显示到屏幕上注:本课题中输入的数据应包括以下几项信息:姓名(NAME )地址(ADDRESS)电话(PHONE)2.1头文件设计头文件是程序设计不可或缺的一部分,但是各种程序的头文件所包含的内容也不近相同,然而,此次查找程序设计的头文件内容不仅包含一般程序所具有的头文件还添加了查找文件的长度、文件数据的类型、关键字项等等。#include #include #include typedef struct char num6; char name10; char unit20; char phone13; char addr30; 2.2 学生通讯录系统的子函
8、数设计2.2.1显示菜单设计datatype; typedef struct node datatype data; struct node * next; listnode; typedef listnode * linklist; linklist head; listnode *p; int menu_select( ); linklist createlist(void); void insertnode(linklist head,listnode *p); listnode *listfind(linklist head); void delnode(linklist head);
9、 void printlist(linklist head); void main() for( ; ; ) switch(menu_select() ) case 1: printf( *n); printf( * 通讯录链表的建立 *n); printf( *n); head=createlist(); break; case 2: printf( *n); printf( * 通讯录信息添加 *n); printf( *n); printf( * 编号(4) 姓名(8) 单位(20) 电话(11) 地址(30)*n); printf( *n); p=(listnode *)malloc(
10、sizeof(listnode); scanf(%s%s%s%s%s,p-data.num,p-data.name,p-data.unit,p-data.phone,p-data.addr); insertnode(head,p); break; case 3: printf( *n); printf( * 通讯录信息查询 *n); printf( *n); p=listfind(head); if(p!=NULL) printf( * 编号 姓名 单位 电话 地址*n); printf( -n); printf(%s,%s,%s,%s,%sn,p-data.num,p-data.name,p
11、-data.unit,p-data.phone,p-data.addr); printf( -n); else printf(没有你要找的人 ! n); break; case 4: printf( *n); printf( *通讯信息的删除*n); printf( *n); delnode(head); break; case 5: printf( *n); printf( *通讯录链表的输出*n); printf( *n); printlist(head); break; case 0: printf(t 谢谢您的使用! n); return; int menu_select() int
12、sn; printf( n); printf( n); printf( n); printf( 通讯录管理系统 n); printf( n); printf( =n); printf( 1.通讯录链表的建立n); printf( 2.通讯者结点的插入n); printf( 3.通讯录链表的查询n); printf( 4.通讯者结点的删除n); printf( 5.通讯录链表的输出n); printf( 0.退出通讯录管理系统n); printf( =n); printf( 请选择操作0-5 nn); for(; ;) scanf(%d,&sn); if(sn5) printf(t输入错误n);
13、 else break; return sn; linklist createlist(void) linklist head=(listnode *)malloc(sizeof(listnode); listnode *p,*rear; int flag=1; rear=head; while(flag=1) p=(listnode *)malloc(sizeof(listnode); printf( 编号(4) 姓名(8) 单位(20) 电话(11) 地址(31) n); printf( -n); scanf(%s%s%s%s%s,p-data.num,p-data.name,p-data
14、.unit,p-data.phone,p-data.addr); rear-next=p; rear=p; printf( 继续建表吗? (1.是/0.不):); scanf(%d,&flag); if(flag=1) printf(创建成功!n); rear-next=NULL; return head; void insertnode(linklist head,listnode *p) listnode *p1,*p2; p1=head; p2=p1-next; while(p2!=NULL & strcmp(p2-data.num,p-data.num)next; p1-next=p;
15、 p-next=p2; printf(插入成功!n); listnode * listfind(linklist head) listnode * p; char num6; char name10; int xz; printf(-n); printf( 1.编号查询n); printf( 2.姓名查询n); printf(-n); printf(请选择: n); p=head-next; scanf(%d,&xz); if (xz=1) printf( 请输入要查找的编号: ); scanf(%s,num); while(p & strcmp(p-data.num,num)next; if
16、 (p=NULL | strcmp(p-data.num,num)0) p=NULL; else if(xz=2) printf(请输入要查询者的姓名: ); scanf(%s,name); while(p & strcmp(p-data.name,name)!=0) p=p-next; return p; void delnode(linklist head) int jx; listnode *p,*q; p=listfind(head); if(p=NULL) printf(没有要删除的通讯者!:n); return; printf (真的要删除该结点吗?(1.是/0.不):); sca
17、nf(%d,&jx); if (jx=1) q=head; while(q!=NULL & q-next!=p) q=q-next; q-next=p-next; free(p); printf(通讯者已被删除!n); void printlist(linklist head) listnode * p; p=head-next; printf( 编号 姓名 单位 电话 地址n); printf( -n); while(p!=NULL) printf( %s, %s, %s, %s, %sn,p-data.num,p-data.name,p-data.unit,p-data.phone,p-d
18、ata.addr); printf( -n); p=p-next; 2.2.2函数实现学生通讯录流程图:NYNYNY 3 测试运行程序,对其中任意一个选择看其运行结果是否与预期的一样。各主要功能模块测试结果如下:(1)程序主界面测试 4 结果分析通过在VC+环境下,对源程序进行调试与测试,系统中包含了输入、输出、删除、查询、修改等多种功能,使得通讯管理系统的灵活性较强,我们可以从不同的角度去对学生的通讯记录进行系统化,电子化的管理。它可以从任意的角度去选择并了解学生的通讯记录等情况。程序操作简单易行是次程序最大的优点。但在运行的过程中我发现其中没有其他语言问题,主要的问题是对编程环境的不熟悉,
19、导致出现一些程序问题无法解决,使得结果无法达到预期的效果,甚至是无法运行。在以后的学习中我们该多做练习,使得自己对那些常用的程序熟练掌握,不至于到用时就出现一大堆自己无法解决的问题我们要不断对自己的知识增强,从而使得我们的设计能适应社会的发展。总 结课程设计的过程是艰辛的,但我的收获却是很大。这次课程设计我主要应用以前学习的VC+语言编程的相关知识综合自己的想法,完成了这个学生通讯管理系统.通过这次课程设计,我对很多的函数有了新的认识,也学会了运用多种函数,和基本方法。在这过程中我又学到了以前自己不知道的函数或是自己不会的函数的用法。首先,综合课程设计让我把以前学习到的知识得到巩固和进一步的提
20、高认识,对已有知识有了更进一步的理解和认识,再次,我在课程设计中碰到了很多的问题,我通过查询相关资料,寻求同学的帮助,还有老师也给予了我很大的帮助,也让我认识到了自己对所学知识的不足方面.学生通讯管理系统是学校常见的计算机信息管理系统。我们应该学会通讯信息的输入、查询、修改、增加、删除,迅速准确地完成学生通讯信息的统计计算和汇总当然,通过这次课程设计,我也发现了自身的很多不足之处,在以后的学习中,我会不断的完善自我,不断进取,能使自己在网络编程这方面有一个大的发展。参考文献1 马云升.VC+下声卡低层音频服务的编程技术.北京希望电子出版社.2001年3月1日 2 杨淑莹 .VC+图像处理程序设计. 清华大学出版社,北京交通大学出版社 2005年4月25日 3 杨淑莹.图像模式识别:VC+技术实现. 清华大学出版社,北京交通大学出版社 2005年5月1日 4 祁云嵩.VC+程序设计解析与训练. 华东理工大学出版社.2005年8月16日 5 汪兵.EVC高级编程及其应用开发:Embedded Visual C+嵌入式编程. 中国水利水电出版社. 2005 年7月15日