




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 c/c+c/c+程序设计课程设计程序设计课程设计 设计说明书 学生通讯录的设计与实现学生通讯录的设计与实现 计算机科学与技术系计算机科学与技术系 20102010 年年 7 7 月月 1212 日日 学生姓名 学号 班级 成绩 指导教师 2 c/c+c/c+程序设计程序设计课程设计评阅书 题 目学生通讯录的设计与实现学生通讯录的设计与实现 学生姓名学号 指导教师评语及成绩 成绩: 教师签名: 年 月 日 答辩教师评语及成绩 成绩: 教师签名: 年 月 日 教研室意见 总成绩: 室主任签名: 年 月 日 注:指导教师成绩 60%,答辩成绩 40%,总成绩合成后按五级制记入。 3 课程设计任务书 20092009 20102010 学年第学年第 二二 学期学期 专业: 学号: 姓名: 课程设计名称: c/c+课程设计 设计题目: 学生通讯录的设计与实现 完成期限:自 2010 年 7 月 5 日至 2010 年 7 月 16 日共 2 周 设计依据、要求及主要内容(可另加附页): 要求用 c 或 c+语言编写一个程序实现学生通讯录管理,数据的基本存 储结构采用结构体数组。 程序要实现的要求及功能如下: 1. 阐述设计思想,画出流程图 2. 记录的添加功能。该功能是能向记录表中添加和追加一个学生通讯 记录。 3. 记录的修改功能。该功能是能将某学生的记录进行修改,并存入记 录表中。 4. 数据查询功能,该功能要求能实现按姓名、学号查询某个学生的 联系方式;按电话查询某个学生的通讯方式。 5. 能够按班级查询全班学生的通讯方式的详细信息。 最终设计成果形式为: 1、设计好的软件一套; 2、撰写一份课程设计说明书一份,打印并装订成册。 指导教师(签字): 教研室主任(签字): 批准日期: 年 月 日 4 摘摘 要要 本课程设计主要借助 visual c+6.0 工具实现学生通讯录的设计与实现的功能。开设 的课程设计为了进一步筑固 vc+基础知识, 熟悉 vc+开发的硬件及软件环境,掌握应 用程序的开发过程,通过面向对象课程设计的学习,使学生能够更进一步地熟练掌握与 运用 vc+开发环境,以及增加培养创新型就业人才的理论知识与实际实践相合的技能。 纸质的通讯录已经不能满足我们的要求,更新麻烦,查询困难等缺点是纸质通讯录 所不能克服的。在此情况下,迫切需要一个电子版的通讯录来满足我们的需求。这次课 程设计的通讯录,它的主要任务是对各种通讯录进行日常的管理,如:记录的输入、查 询、修改、添加、删除,迅速准确地完成各种通讯记录的统计计算和汇总,快速打印出 报表。具有方便记录通讯人员的详细信息的记录和查找等功能。 关键词:通讯录管理系统;记录管理;学生记录信息 0 目目 录录 1 1 课题描述课题描述 1 1 2 2 设计过程设计过程 2 2 2.12.1 头文件设计头文件设计 3 3 2.22.2 通讯管理系统子函数的设计通讯管理系统子函数的设计 3 3 2.212.21 显示菜单设计显示菜单设计 4 4 2.222.22 函数实现学生通讯录流程图函数实现学生通讯录流程图 9 9 3 3 测试测试 1616 4 4 结果分析结果分析 2323 总总 结结 2424 参考文献参考文献 2525 - 0 - 1 课题描述 借助现代信息技术和管理理论,建立通讯管理信息系统是当今社会的重要趋势。对 学校而言,全面开发和应用计算机管理信息系统就是近期不能回避的问题。运用数 据结构 中的结构体数组,结合 c 语言基本知识,编写一个通讯录管理系统。以把所学 数据结构知识应用到实际生活中去。 通过完成本课题,进一步熟悉 c 语言的基本知识,并掌握数据结构的一些基本算法 思想,掌握 c 语言的文件操作(包括从磁盘读入和向磁盘写入内容) ,进一步熟悉指针的 用法,数组的建立运用和函数的调用等。 学生通讯管理系统是学校常见的计算机信息 管理系统。它的主要任务是对学生通讯信息进行日常的管理,如通讯信息的输入、查询、 修改、增加、删除,迅速准确地完成学生通讯信息的统计计算和汇总,快速打印出报表。 通讯管理系统是数据库管理系统的一个比较典型的应用,它具有大多数数据库应用 系统的特征,在进行课程设计时,应尽可能使用 c+的功能完成下列功能设计的各项操作。 本系统的实现的主要功能有:能建立、修改和增删学生通讯录,能够按多种方式进行 查询. 开发工具:visual c+6.0 - 1 - 2 设计过程 编程以基于字符界面的控制台应用程序来实现。 本系统应完成一下几方面的功能: 输入信息(enter()): 调用此函数用以输入数据到内存中,此过程包括建立相应的链表 或相应的数组,便于读取 显示信息(display()):用以显示输入的数据,包括从内存中读出和从磁盘中读出 查找(search()):以姓名作为关键字查找要找的信息 删除信息(delete()):用以删除选定的输入信息(姓名作为关键字) 存盘(save()):调用此函数将内存中的数据保存至磁盘中 装入(load()):调用此函数用以将之前保存在磁盘的内容读入到内存中或显示到屏幕 上 注:本课题中输入的数据应包括以下几项信息: 姓名(name )地址(address)电话(phone) - 2 - 2.1 头文件设计 头文件是程序设计不可或缺的一部分,但是各种程序的头文件所包含的内容也不近 相同,然而,此次查找程序设计的头文件内容不仅包含一般程序所具有的头文件还添加 了查找文件的长度、文件数据的类型、关键字项等等。 #include #include #include typedef struct char num6; char name10; char unit20; char phone13; char addr30; - 3 - 2.2 学生通讯录系统的子函数设计 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); 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(sizeof(listnode); scanf(“%s%s%s%s%s“,p-data.num,,p-data.unit,p-data.phone,p- data.addr); insertnode(head,p); break; case 3: printf(“ *n“); printf(“ * 通讯录信息查询 *n“); printf(“ *n“); - 4 - p=listfind(head); if(p!=null) printf(“ * 编号 姓名 单位 电话 地址*n“); printf(“ -n“); printf(“%s,%s,%s,%s,%sn“,p-data.num,,p-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 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“); - 5 - printf(“ 0.退出通讯录管理系统n“); printf(“ =n“); printf( “ 请选择操作 0-5 nn“); for(; ;) scanf(“%d“, if(sn5) printf(“t 输入错误n“); 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.unit,p-data.phone,p- data.addr); rear-next=p; rear=p; printf(“ 继续建表吗? (1.是/0.不):“); scanf(“%d“, 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 p1-next=p; 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“, if (xz=1) printf(“ 请输入要查找的编号: “); scanf(“%s“,num); while(p if (p=null | strcmp(p-data.num,num)0) p=null; else if(xz=2) printf(“请输入要查询者的姓名: “); scanf(“%s“,name); while(p return p; void delnode(linklist head) int jx; listnode *p,*q; p=listfind(head); if(p=null) printf(“没有要删除的通讯者!:n“); - 7 - return; printf (“真的要删除该结点吗?(1.是/0.不):“); scanf(“%d“, if (jx=1) q=head; while(q!=null 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.unit,p- data.phone,p-data.addr); printf(“ -n“); p=p-next; - 8 - 2.2.2 函数实现学生通讯录流程图: begin menu_select()=1 printf(“ * * *n“); menu_select()=2 printf(“ * * *n“); menu_select()=3 break; break; printf(“ * *n“); menu_select()=4 multiplesmultiples multiples n y n y n y - 9 - begin returnsn; scanf(“%d“, sn5 break; printf(“t输入错误n”); n y n y - 10 - begin linklisthead=(listnode*)malloc(sizeof(listnode); flag=1 flag=1 p=(listnode*)malloc(sizeof(listnode); rear-next=null; returnhead; printf(“创建成功!n”); n y y n - 11 - begin listnode*p1,*p2; p2!=null p1=p2; n y - 12 - begin listnode*p; xz=1 returnp; xz=2 printf(“ 请输入要查找的编号: “); multiples multiples n y n y - 13 - begin intjx; p=null printf(“真的要删除该结点吗?(1.是/0.不):“); jx=1 printf(“没有要删除的通讯者!:n“); return; multiples y n y n - 14 - begin listnode*p; p!=null printf(“ %s, %s, %s, %s, %sn“,p-data.num,p- ,p-data.unit,p-data.phone,p-data.addr); n y - 15 - 3 测试 运行程序,对其中任意一个选择看其运行结果是否与预期的一样。各主要功能模块测 试结果如下: (1)程序主界面测试 - 16 - - 17 - - 18 - - 19 - - 20 - - 21 - - 22 - 4 结果分析 通过在 vc+环境下,对源程序进行调试与测试,系统中包含了输入、输出、删除、 查询、修改等多种功能,使得通讯管理系统的灵活性较强,我们可以从不同的角度去对 学生的通讯记录进行系统化,电子化的管理。它可以从任意的角度去选择并了解学生的 通讯记录等情况。程序操作简单易行是次程序最大的优点。 但在运行的过程中我发现其中没有其他语言问题,主要的问题是对编程环境的不熟悉, 导致出现一些程序问题无法解决,使得结果无法达到预期的效果,甚至是无法运行。在 以后的学习中我们该多做练习,使得自己对那些常用的程序熟练掌握,不至于到用时就 出现一大堆自己无法解决的问题我们要不断对自己的知
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江省桐乡市第一中学2026届化学高一第一学期期中统考试题含解析
- 2026届湖北省黄冈市晋梅中学化学高一上期中综合测试试题含解析
- 主题中秋节活动营销策划方案
- 乡卫生院工作方案
- 兴国县旅游试题及答案
- 3招增强孩子的社交信心
- 2026届湖北省黄冈市化学高二上期中考试试题含解析
- 2026届甘肃省永昌县第四中学化学高二上期末达标测试试题含答案
- 隐性性格测试题及答案
- 延禧攻略试题及答案
- (高清版)DG∕TJ 08-2284-2018 城市道路和桥梁数据采集标准
- 2025年北京市海淀区高三二模英语试卷(含答案)
- 医院改建可行性研究报告
- 2025保定市涞水县涞水镇社区工作者考试真题
- 2025-2030中国芽孢杆菌行业市场现状供需分析及投资评估规划分析研究报告
- 人民警察职业道德教育
- 小学语文新课标跨学科学习任务群解读及教学建议
- 护士执业资格考试知识点大全2025
- 工厂合伙退股协议书模板
- 资料装订合同协议
- 沪港通测评试题及答案
评论
0/150
提交评论