课程设计--通讯录管理的设计与实现
- 格式:doc
- 大小:171.00 KB
- 文档页数:51
通讯录管理 课程设计一、课程目标知识目标:1. 让学生理解通讯录的基本概念,掌握通讯录的基本结构和管理方法。
2. 学会使用电子设备或软件进行通讯录的录入、查询、修改和删除操作。
3. 了解通讯录在日常生活和工作中的应用场景,认识到通讯录管理的重要性。
技能目标:1. 培养学生运用电子设备或软件进行通讯录管理的能力,提高信息处理效率。
2. 培养学生独立解决通讯录管理过程中遇到的问题,提升问题解决能力。
3. 培养学生团队协作能力,通过小组讨论和分享,优化通讯录管理方法。
情感态度价值观目标:1. 培养学生认真负责的态度,对待通讯录管理任务严谨细致,确保信息准确无误。
2. 增强学生的信息保护意识,学会保护个人隐私和信息安全。
3. 培养学生分享和帮助他人的精神,乐于与同学交流通讯录管理的心得体会。
课程性质:本课程属于信息技术与日常生活相结合的实践性课程,注重培养学生的实际操作能力和信息素养。
学生特点:学生具备基本的电子设备操作技能,对信息技术有一定了解,但通讯录管理方面可能缺乏系统学习和实践经验。
教学要求:教师需结合学生特点,采用任务驱动、小组合作等教学方法,引导学生掌握通讯录管理的基本知识和技能,培养良好的信息素养。
在教学过程中,关注学生的个体差异,提供个性化指导,确保课程目标的实现。
通过课程学习,使学生能够达到上述具体的学习成果。
二、教学内容1. 通讯录基本概念:介绍通讯录的定义、作用和基本结构,引导学生了解通讯录的组成元素,包括姓名、电话、邮箱、地址等。
2. 通讯录管理方法:讲解通讯录的录入、查询、修改和删除等基本操作,结合实际案例,让学生掌握各种操作的具体步骤。
3. 通讯录管理软件及应用:介绍常见的通讯录管理软件(如Outlook、Google联系人等),分析其功能特点,指导学生如何使用这些软件进行高效管理。
4. 通讯录信息安全:讲解通讯录信息安全的重要性,引导学生了解信息安全的基本知识,提高信息保护意识。
通讯录管理课程设计一、课程目标知识目标:1. 理解通讯录的基本概念,掌握通讯录的基本结构;2. 学会使用电子设备或软件进行通讯录的录入、查找、修改和删除;3. 了解通讯录管理的实际应用场景,理解其在个人和社会中的重要性。
技能目标:1. 能够独立操作电子设备或软件,完成通讯录的建立和管理;2. 掌握使用快捷方式进行通讯录信息检索和修改的技巧;3. 培养信息分类、整理和存储的能力,提高个人信息管理的效率。
情感态度价值观目标:1. 培养学生对信息技术学科的兴趣,激发学习积极性;2. 增强学生的团队协作意识,学会在小组合作中分享和交流;3. 培养学生尊重他人隐私,养成良好的信息安全意识。
分析课程性质、学生特点和教学要求,将目标分解为以下具体学习成果:1. 学生能够描述通讯录的基本结构,并能列出至少三种通讯录管理的实际应用场景;2. 学生能够使用电子设备或软件完成通讯录的建立,正确完成至少10个联系人的信息录入;3. 学生能够在5分钟内完成指定联系人的查找、修改和删除操作;4. 学生能够在小组合作中,共同完成一个具有实用价值的通讯录管理项目,提高团队协作能力;5. 学生能够自觉遵守信息安全管理规定,尊重他人隐私,养成良好的信息素养。
二、教学内容1. 通讯录概念及结构- 介绍通讯录的定义、作用;- 分析通讯录的基本结构,包括联系人信息、分组、标签等;- 课本第二章第一节的通讯录概述部分。
2. 通讯录管理操作- 演示如何使用电子设备或软件进行通讯录的录入、查找、修改和删除;- 操作实践:指导学生完成联系人的添加、分类和整理;- 课本第二章第二节的通讯录操作部分。
3. 通讯录管理技巧- 讲解快捷方式进行通讯录信息检索和修改的技巧;- 分析提高通讯录管理效率的方法;- 课本第二章第三节的通讯录管理技巧部分。
4. 实用通讯录管理项目- 小组合作:布置一个实用通讯录管理项目,让学生在实践中提高团队协作能力;- 分析项目需求,制定项目计划;- 课本第二章第四节的通讯录管理应用部分。
课程设计__通讯录管理系统要求:1,具有添加联系人功能2,具有删除联系人功能3,具有修改联系人功能4,具有查找联系人功能5,具有清空所有联系人功能注意:此次设计主要是为了让大家巩固一下C语言相关知识点(如:结构体,指针的使用),同时也熟悉C++基础语法,为今后的单片机开发或嵌入式开发打下更好的软件编程基础。
因此编写的程序并不涉及文件操作等知识点。
以下是源码:(还需自己进一步完善和调试,基本功能已实现)#include "Address_Book_Management_System.h"//display menu functionvoid Show_Menu(void){cout << "****** 1,添加联系人 ******" << endl;cout << "****** 2,显示联系人 ******" << endl;cout << "****** 3,删除联系人 ******" << endl;cout << "****** 4,查找联系人 ******" << endl;cout << "****** 5,修改联系人 ******" << endl;cout << "****** 6,清空联系人 ******" << endl;cout << "****** 7,退出通讯录 ******" << endl;}//添加联系人int Add_Person(struct AddressList *addperso n){if (addperson->size == MAX){cout << "通讯录已满无法添加" << endl;return -1;}else{//添加联系人string name;cout << "请输入欲添加联系人的名字:" << endl;cin >> name;addperson->person_arr[addperson->size].name = name;cout << "请输入欲添加联系人的性别:" << endl;cout << "6 ---- 男" << endl;cout << "9 ---- 女" << endl;int gender;for(;;){cout << "请输入欲添加联系人的性别:" << endl;cin >> gender;if((gender == 6) || (gender == 9)){addperson->person_arr[addperson->size].gender = gender;break;else{cout << "输入有误,请重新输入" << endl;}}int age;for(;;){cout << "请输入欲添加联系人的年龄:" << endl;cin >> age;if((age >= 1) && (age <= 150)){addperson->person_arr[addperson->size].age = ag e;break;else{cout << "输入有误,请重新输入" << endl;}}string phone_num;for(;;){cout << "请输入欲添加联系人的联系电话:" << endl;cin >> phone_num;if( phone_num.length() == 11){addperson->person_arr[addperson->size].phone_nu m = phone_num;break;else{cout << "输入有误,请重新输入" << endl; }}string addr;cout << "请输入欲添加联系人的地址:" << endl;cin >> addr;addperson->person_arr[addperson->size].addr = addr; }cout << "<添加联系人成功>" << endl;/*cout << "测试" << endl;cout << "您添加的信息为:" << endl;cout << addperson->person_arr[addperson->size].name < < addperson->person_arr[addperson->size].gender<< addperson->person_arr[addperson->size].age << addperson->person_arr[addperson->size].phone_num <<addperson->person_arr[addperson->size].addr << endl;*/addperson->size ++;//名单+1system("pause");system("cls");//清屏return 0;}//显示通讯录int Dispaly_Person(const struct AddressList *addperson){if(addperson->size == 0){cout << "当前通讯录为空" << endl;}else{for(int i = 0; i < addperson->size; i ++){cout << "通讯录名单人员" << i+1 << endl;cout << "姓名:" << addperson->person_arr[i].name << '\t';cout << "性别:" << (addperson->person_arr[i].gen der == 6 ? "男": "女") << '\t';cout << "年龄:" << addperson->person_arr[i].age << '\t';cout << "电话:" << addperson->person_arr[i].phon e_num << '\t';cout << "地址:" << addperson->person_arr[i].addr << endl;}}system("pause");system("cls");//清屏return 0;}//main menu functionint Main_Menu(void){ struct AddressList addresslist;addresslist.size = 0;int select = 7;//select show menuwhile(1){Show_Menu();cout << "请选择功能:" << endl;cin >> select;switch(select){case 1:Add_Person(&addresslist);break; //1,添加联系人 case 2:Dispaly_Person(&addresslist);break; //2,显示联系人 case 3:Del_Person(&addresslist);break; //3,删除联系人 case 4:LookUp_Menu(&addresslist);break; //4,查找联系人 case 5:Modify_Person(&addresslist);break; //5,修改联系人 case 6:Clean_AddressList(&addresslist);break; //6,清空联系人case 7:cout << "通讯录管理系统已退出" << endl;return 0;//7,退出通讯录default:break;//非法操作}}}/*函数名:根据人名检测联系人描述:如果存在联系人,则返回具体位置否则,则返回-1注意:关于通讯录中同名的情况,这里不加考虑*/int Check_Person_Name(const struct AddressList *addpe rson ,string name){int i = 0;int flag = MAX + 1;for(i; i < addperson->size; i ++){if(name == addperson->person_arr[i].name) {flag = i;break;//测试//return i;}}。
学生通讯录管理系统课程设计一、引言学生通讯录管理系统是一种能够有效管理学生通信信息的软件工具。
在当今信息化社会中,为了更好地维护学生通信信息和便于学校管理,设计一个高效、实用的学生通讯录管理系统至关重要。
本文将围绕学生通讯录管理系统的设计与实现展开讨论。
二、需求分析1. 用户需求•管理员需要能够对学生信息进行增删查改操作;•学生要能够方便地修改个人信息;•教师需要便捷地查看学生信息;•系统需要有良好的用户权限管理机制。
2. 功能需求•学生信息管理:包括学生基本信息的录入、修改和删除。
•通讯录管理:实现学生通讯录的管理和分类。
•查询功能:实现对学生信息的快速查询。
•权限管理:分管理员和普通用户,管理员有更高的权限控制。
三、系统设计1. 系统架构学生通讯录管理系统采用典型的客户-服务器架构,后端基于MySQL数据库存储学生信息,前端通过Web页面进行展示和操作。
2. 数据库设计设计数据库表格包括:学生信息表(包括学号、姓名、性别、年级等字段)、用户表、通讯录表等。
3. 页面设计•登录页面:对用户进行身份验证。
•学生信息管理页面:实现对学生基本信息的增删查改。
•通讯录管理页面:实现通讯录的分类和管理。
四、系统实现1. 环境配置•使用Python语言编写后端代码。
•前端采用HTML、CSS、JavaScript。
•数据库采用MySQL。
2. 实现步骤1.搭建后端框架,实现数据的增删查改功能。
2.设计前端页面,实现用户交互和数据展示。
3.进行系统测试和优化。
五、功能演示1. 登录功能输入正确的用户名和密码,用户可以成功登录系统。
2. 学生信息管理管理员可以添加、删除、修改学生信息,普通用户只能查看。
3. 通讯录管理实现对通讯录的添加、分类和管理。
六、总结与展望通过本次学生通讯录管理系统课程设计,我学到了如何进行系统设计、数据库设计和前后端分离开发的方法。
未来,还可以进一步改进系统功能,增加权限管理模块、优化界面交互等,使系统更加稳健和实用。
C语言通讯录管理系统课程设计报告一、引言通讯录管理系统是一种常见的实用性软件,用于记录和管理个人或组织的联系人信息。
本文档旨在介绍一种基于C语言开发的通讯录管理系统的设计与实现。
通过本系统,用户可以方便地添加、删除、搜索和编辑联系人信息,实现了通讯录的基本功能。
二、系统需求分析本通讯录管理系统的主要功能包括: 1. 添加联系人:用户可以添加联系人的姓名、电话号码、邮箱等信息。
2. 删除联系人:用户可以根据联系人的姓名或电话号码删除对应的联系人信息。
3. 查找联系人:用户可以根据联系人的姓名或电话号码查找对应的联系人信息。
4. 修改联系人:用户可以修改已存在联系人的信息。
5. 显示所有联系人:用户可以查看通讯录中所有的联系人信息。
三、系统设计1. 数据结构设计为了实现通讯录管理系统,我们需要设计适当的数据结构来存储联系人信息。
在本设计中,使用结构体数组来表示每个联系人的信息,其中每个结构体包含姓名、电话号码、邮箱等成员变量。
struct Contact {char name[50];char phoneNumber[20];char email[50];};2. 功能模块设计本系统主要包含以下几个功能模块:a. 添加联系人模块用户可以选择添加新的联系人,输入姓名、电话号码和邮箱等信息后,系统将在通讯录中添加新的联系人。
b. 删除联系人模块用户可以根据输入的姓名或电话号码查找对应的联系人信息,并选择删除对应的联系人。
c. 查找联系人模块用户可以根据输入的姓名或电话号码查找对应的联系人信息,并在界面上显示查询结果。
d. 修改联系人模块用户可以根据输入的姓名或电话号码查找对应的联系人信息,并选择修改对应的联系人。
e. 显示所有联系人模块用户可以选择显示通讯录中所有的联系人信息,在界面上进行展示。
3. 系统框架设计本系统的整体框架如下:1. 主菜单显示2. 根据用户的选择,进入对应的功能模块四、系统流程图下图展示了通讯录管理系统的整体流程:主菜单 -> 用户选择功能模块 -> 执行对应模块功能五、代码实现以下为通讯录管理系统的部分核心代码实现,完整代码可参考附录部分。
c 通讯录管理系统课程设计一、课程目标本课程为“通讯录管理系统课程设计”,针对初中年级信息技术学科,旨在通过实践操作,使学生能够:知识目标:1. 理解通讯录管理系统的基本功能与需求;2. 掌握使用编程语言(如Python)实现简单数据结构,如列表、字典;3. 学会使用文件操作保存和读取通讯录信息。
技能目标:1. 能够运用所学知识设计并实现一个基本的通讯录管理系统;2. 掌握基本的程序调试技巧,提高解决问题的能力;3. 学会对程序进行优化,提高代码的可读性和可维护性。
情感态度价值观目标:1. 培养学生的团队协作精神,提高沟通与表达能力;2. 激发学生对编程的兴趣,鼓励创新思维和动手实践能力;3. 增强学生对信息技术的认识,培养其信息安全意识。
课程性质:本课程为实践性课程,注重培养学生的动手能力和实际操作技能。
学生特点:初中年级学生具有一定的信息技术基础,对新事物充满好奇,但编程经验有限。
教学要求:结合学生特点,以实际操作为主,注重引导和激发学生的学习兴趣,培养其解决问题的能力。
通过课程学习,使学生能够将所学知识运用到实际项目中,提高其信息技术素养。
教学过程中,将课程目标分解为具体的学习成果,以便进行教学设计和评估。
二、教学内容本章节教学内容依据课程目标,紧密结合教材,确保科学性和系统性。
具体安排如下:1. 理论知识学习:- 简介通讯录管理系统的作用和功能;- 数据结构基本概念:列表、字典的使用;- 文件操作:读写文件,保存和加载通讯录信息。
2. 实践操作:- 设计通讯录管理系统需求分析;- 编程实现通讯录管理系统功能模块:添加、删除、查询、修改联系人信息;- 调试与优化程序,提高系统稳定性。
3. 教学大纲:- 第一周:通讯录管理系统概述,学习数据结构基本概念;- 第二周:文件操作,编写通讯录管理系统的基础代码;- 第三周:完善通讯录管理系统,增加功能模块;- 第四周:调试与优化程序,进行项目展示与评价。
目录第一章绪论 (2)1.1课题简介 (2)1.2开发的意义 (2)1.3团队构成 (3)第二章开发环境及实现技术 (4)2.1开发环境 (4)2.2开发工具简介 (4)第三章系统设计 (5)3.1概要设计 (5)3.2详细设计 (6)第四章数据库设计 (8)4.1数据库A CCESS简介 (8)4.2数据库需求分析 (9)4.3数据库需求分析 (9)第五章详细设计 (11)5.1系统登录模块的设计与实现 (11)5.2主界面的设计与实现 (15)5.3单人资料模块的设计与实现 (18)5.4模糊查询模块的设计与实现 (21)5.5全体资料模块的设计与实现 (24)5.6用户注册模块的设计与实现 (25)5.7用户维护模块的设计与实现 (26)5.8备忘提醒模块的设计与实现 (28)第六章系统使用说明 (31)6.1使用说明 (31)6.2运行环境 (31)第七章设计心得 (32)参考文献 (33)第一章绪论1.1课题简介通讯录管理系统是每一个用户管理通讯录的不可缺少的一个管理信息系统,它的内容对于用户的管理者来说是至关重要的,所以通讯录管理系统应该能够为每一个用户的管理者提供充足的信息和快捷的查询手段,大大的方便用户合理的管理通讯录。
随着科学技术的不断提高,计算机科学日渐成熟,网上通讯工具的迅速发展,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对通讯录进行管理,具有着手工管理所无法比拟的优点,如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高通讯录管理的效率,也是用户理财的科学化、正规化管理,与先进科学技术接轨的重要条件。
因此,开发这样一套管理软件成为很有必要的事情,对于我们即将计算机专业毕业的学员来说,也是一次将计算机应用于现实管理的一次很有意义的实践活动。
1.2开发的意义计算机已经成为我们学习和工作的得力助手,使用其可方便的管理通讯录今天,计算机的价格已经十分低廉,性能却有了长足的进步。
通讯录管理系统Java课程设计一、引言随着互联网的发展,人们的日常生活中越来越离不开各种各样的通讯工具。
通讯录是人们生活中常用的一种工具,通过通讯录可以管理和查找联系人的信息,为人们提供了便利。
本文将介绍一个基于Java语言开发的通讯录管理系统的设计和实现过程。
二、系统设计1. 系统需求通讯录管理系统的基本需求包括:添加联系人、删除联系人、查找联系人、编辑联系人信息等功能。
系统需要能够支持多用户使用,保证数据的安全性和可靠性。
2. 系统架构通讯录管理系统采用客户端-服务器模式,客户端负责与用户交互,服务器端负责数据存储和处理。
系统的主要模块包括用户管理模块、联系人管理模块、通讯录导入导出模块等。
3. 数据存储系统使用关系型数据库存储用户信息和联系人信息,保证数据的持久性和一致性。
可以选择使用MySQL或者SQLite等数据库。
三、系统实现1. 技术选型系统采用Java语言进行开发,使用Spring框架实现服务器端的业务逻辑,使用JavaFX构建客户端界面。
数据库访问采用JDBC技术,保证与数据库的连接和数据操作。
2. 功能实现•用户管理:实现用户的注册、登录、修改密码等功能,保证用户信息的安全性。
•联系人管理:实现联系人的添加、删除、查找、编辑等功能,支持分组管理和多种查询方式。
•导入导出:支持导入通讯录文件和导出联系人信息到文件,方便数据的备份和迁移。
四、系统测试系统开发完成后需要进行系统测试,包括功能测试、性能测试、安全测试等,确保系统的稳定性和可靠性。
可以使用Junit进行单元测试,使用JMeter进行压力测试。
五、总结通过本文的介绍,读者可以了解一个基于Java语言开发的通讯录管理系统的设计和实现过程。
通讯录管理系统可以提高人们日常生活中联系人信息的管理效率,为人们的生活提供更多的便利。
希望本文对读者有所帮助,谢谢观看。
以上是通讯录管理系统Java课程设计的相关内容,希朋友们能喜欢。
c语言课程设计通讯录管理系统课程设计报告一、教学目标本课程旨在通过学习C语言通讯录管理系统的设计与实现,让学生掌握C语言编程的基本技能,培养其软件开发的基本思路与方法。
具体目标如下:1.知识目标:–理解C语言的基本数据类型、运算符、控制结构。
–学习C语言函数的定义与调用。
–掌握结构体、文件操作等高级C语言特性。
2.技能目标:–能够运用C语言实现简单的数据结构,如链表、数组。
–培养学生使用C语言进行程序设计的能力,能够独立完成程序编写、调试与优化。
–学会使用C语言实现文件操作,包括文件的读取与写入。
3.情感态度价值观目标:–培养学生对计算机科学的兴趣,增强其自主学习的动力。
–通过项目实践,培养学生的团队协作能力和解决问题的能力。
–引导学生理解技术对生活的影响,培养其对技术发展的责任感。
二、教学内容教学内容选取C语言编程的核心知识点,结合通讯录管理系统的实例进行讲解。
具体内容包括:1.C语言基础:数据类型、变量、运算符、控制结构。
2.函数:函数定义、调用、参数传递、返回值。
3.数据结构:数组、链表、栈和队列。
4.文件操作:文件读写、文件指针。
5.通讯录管理系统实现:结构体定义、系统功能实现、项目管理。
三、教学方法结合C语言特点和通讯录管理系统实例,采用以下教学方法:1.讲授法:系统讲解C语言基础知识和通讯录管理系统的设计理念。
2.案例分析法:通过分析典型代码案例,让学生理解程序设计逻辑。
3.实验法:学生在实验室进行编程实践,巩固理论知识。
4.讨论法:分组讨论问题,培养学生的团队协作和沟通能力。
四、教学资源1.教材:《C程序设计语言》(K&R)、《C Primer Plus》。
2.参考书:《C语言编程思想》、《C语言实践》。
3.多媒体资料:教学PPT、在线编程教程、视频讲解。
4.实验设备:计算机、网络环境、编程环境(如Code::Blocks、VisualStudio)。
五、教学评估本课程的教学评估将综合考虑学生的平时表现、作业、考试等方面,以全面、客观、公正地评价学生的学习成果。
数据结构课程设计通讯录管理系统一、系统需求分析通讯录管理系统的主要目标是提供一个方便、高效的方式来管理联系人信息。
具体需求包括:1、能够添加联系人,包括姓名、电话号码、电子邮件、地址等基本信息。
2、可以对联系人信息进行修改和删除操作。
3、支持按照姓名、电话号码等关键字进行快速查找。
4、能够以列表形式展示所有联系人的信息。
二、数据结构选择为了实现上述功能,我们需要选择合适的数据结构来存储联系人信息。
考虑到联系人信息的多样性和动态性,链表是一个不错的选择。
链表可以方便地进行插入、删除和修改操作,并且能够灵活地调整存储空间。
另外,为了提高查找效率,我们可以结合使用哈希表。
通过将联系人的关键信息(如姓名或电话号码)进行哈希运算,快速定位到对应的联系人节点。
三、系统功能实现1、添加联系人功能当用户选择添加联系人时,系统会提示用户输入联系人的各项信息。
这些信息被封装成一个结构体,并通过链表的插入操作添加到链表中。
同时,将关键信息映射到哈希表中,以便后续快速查找。
2、修改联系人功能用户输入要修改的联系人的关键字,系统通过哈希表快速找到对应的联系人节点。
然后,提示用户输入修改后的信息,并更新链表和哈希表中的数据。
3、删除联系人功能与修改功能类似,通过关键字找到联系人节点,从链表和哈希表中删除相应的节点和信息。
4、查找联系人功能用户输入查找关键字,系统通过哈希表进行快速定位,如果找到匹配的联系人,则显示其详细信息。
5、展示所有联系人功能遍历链表,将所有联系人的信息以列表形式输出到屏幕上。
四、系统界面设计为了提高用户体验,系统设计了简洁直观的界面。
主界面提供了添加、修改、删除、查找和展示所有联系人等功能选项。
用户通过选择相应的选项,进入对应的操作流程。
五、代码实现示例以下是部分关键代码的示例:```c//联系人结构体typedef struct Contact {char name50;char phoneNumber20;char email50;char address100;struct Contact next;} Contact;//哈希表节点结构体typedef struct HashNode {char key50;Contact contact;struct HashNode next;} HashNode;//链表插入联系人void insertContact(Contact head, Contact newContact) {newContact>next = head;head = newContact;}//哈希函数unsigned int hashFunction(const char key) {unsigned int hash = 0;while (key) {hash =(hash << 5) + key++;}return hash % HASH_TABLE_SIZE;}//查找联系人Contact findContact(Contact head, const char key, HashNode hashTable) {unsigned int hashValue = hashFunction(key);HashNode node = hashTablehashValue;while (node) {if (strcmp(node>key, key) == 0) {return node>contact;}node = node>next;}Contact current = head;while (current) {if (strcmp(current>name, key) == 0 ||strcmp(current>phoneNumber, key) == 0) {//更新哈希表HashNode newNode =(HashNode )malloc(sizeof(HashNode));strcpy(newNode>key, key);newNode>contact = current;newNode>next = hashTablehashValue;hashTablehashValue = newNode;return current;}current = current>next;}return NULL;}```六、系统测试在完成系统的开发后,需要进行全面的测试以确保系统的稳定性和可靠性。
课程设计--通讯录管理的设计与实现课程设计(大作业)报告课程名称:数据结构课程设计设计题目:通讯录管理的设计与实现院系:信息技术学院班级:10级计算机应用技术班设计者:李婷学号:201011020120指导教师:阿圆设计时间:2011-12-26~2011-12-30信息技术学院昆明学院课程设计(大作业)任务书姓名:李婷院(系):信息技术学院专业:计算机应用技术学号:201011020120任务起止日期:2011-12-26~2011-12-30课程设计题目:通讯录管理的设计与实现课程设计要求:1)问题描述通讯录管理系统一般包括通讯者结点信息的插入、查询、删除、输出功能,通讯者结点的信息一般包括编号、姓名、性别、电话、地址等项。
2) 基本功能(1)通讯录的建立;(2)通讯者信息的插入;(3)通讯者信息的查询(按姓名或编号查询);(4)通讯者信息的删除;(5)通讯录信息的输出;工作计划及安排:1、问题分析和任务定义;(0.5天)2、数据类型和结点结构设计;(0.5天)3、算法设计与分析(1.5天)4、编码实现和上机调试;(1.5天)5、总结和整理课程设计报告。
(1天)指导教师签字2011年12 月29 日课程设计(大作业)成绩学号:201011020120 姓名:李婷指导教师:阿圆课程设计题目:通讯录管理的设计与实现总结:我们经过一个星期的时间把我们的通讯录管理的设计与实现做了出来,时间有些赶,做出来的有点不是很好,我们主要做了菜单模块:显示通讯员信息的菜单,共用户选择所需功能;输出模块:添加删除功能:能根据通讯员人事的变动情况,添加删除记录,利用void Add(Link l)实现添加,利用void Del(Link l)实现删除;显示模块:把通讯员的信息显示出来,通过void Disp(Link l)来实现;查询功能:能根据编号和姓名进行查询通过void Qur(Link l)实现;编辑功能(高级):根据查询对相应的记录进行修改,并存储;保存功能:能对输入的数据进行相应的存储;而我主要的是完成主菜单,添加,删除,显示四个模块和其他的模块的完善,我们分工合作,而另一些部分,我虽然没写,但是组员是在一边写一边跟我讲解每条语句的意思是什么,而我写的时候,组员也在一边听,所以我们都相当于写了全部的模块。
指导教师评语:成绩:填表时间:指导教师签名:课程设计(大作业)报告一、题目分析根据题目要求,人事信息是存放在文件中的,所以应该提供相应的文件的输入输出的功能,在程序中应该有添加,删除,查询,编辑,保存等程序实现相应的操作,另外菜单式的选择方式选择程序的功能也是必须需的。
另外程序中要求存储的模块,采用的方式均为将原文件中的所有数据读入内存,在内存中处理之后以覆盖的方式写入文件中重新储存,这样的方法容易理解、容易编写;而我们使用的是单链表的形式,它的好处就是对于频繁进行插入与删除的线性表适用。
二、总体设计思路根据以上需求分析,将程序分成以下几个模块:1.添加和删除****添加人员信息并保存(1)****按名称和编号查询与删除记录并保存(2)2.查询与编辑****按名称和编号查询****重新编辑信息并保存3.主菜单4. 文件的导入5. 文件的保存6.信息的显示Y三、实验环境根据N选者下列执行添加删除查询修改插入显示保存按职工号按姓名号按职工号按职工号是否创是否继续YN结束开始Visual C++ 四、方案比较无法运行的程序代码1.struct employee//定义一个employee的结构体{char num[10];//通讯员编号char name[15];//通讯员姓名char sex[15];//通讯员性别long int telephone;//通讯员电话char address[30];//通讯员地址int age;//通讯员年龄}typedef struct node {struct employee 正确运行的程序代码1.struct employee{char name[15]; /*通讯员姓名*/char num[10];/* 工号*/char sex[4]; //通讯员性别long int telephone;//通讯员电话char address[30];//通讯员地址int age;//通讯员年龄};typedef struct node {struct employee data;data;struct node *next;//建立一个链表}Node;错误点:意外的结构节点('struct' 'node')2.void Disp(Node * employee)//输出通讯员信息{Node *p;p=employee->next; if(!p){printf("\n>>>>>>>>>提示:没有资料可以显示!\n");return;}struct node *next; }Node,*Link;2. void Disp(Link l) //显示单链表l中存储的通讯员记录,内容为employee结构中定义的内容{int count=0;Node *p;p=l->next; // l存储的是单链表中头结点的指针,该头结点没有存储职工信息,指针域指向的后继结点才有职工信息if(!p)/*p==NULL,NUll在stdlib中定义为0*/ {错误点:发现“{”在文件范围内(缺少函数头?)printf("\n=====>提示:没有通讯员记录可以显示!\n");return;}五、程序代码//C语言课程设计职工信息管理系统-单链表实现#include "stdio.h"#include "stdlib.h"#include "string.h"int saveflag=0; /*是否需要存盘的标志变量*/ struct employee{char name[15]; /*通讯员姓名*/char num[10];/* 工号*/char sex[4]; //通讯员性别long int telephone;//通讯员电话char address[30];//通讯员地址int age;//通讯员年龄};typedef struct node{struct employee data;struct node *next;}Node,*Link;//Link l (注意是:字母l不是数字1)void add(Link l);void disp(Link l); //查看职工所有信息void del(Link l); //删除功能Node* Locate(Link l,char findmess[],char nameornum[]);void Qur(Link l); //查询功能void Tongji(Link l); //统计void Sort(Link l); //排序void Modify(Link l); //修改功能void save(Link l); //将单链表l中的数据写入文件void printe(Node *p); //本函数用于打印链表中某个结点的数据内容*///以下4个函数用于输出中文标题void printstart();void Wrong();void Nofind();void printc();void menu(){printf("\t******************************* **********************************\n"); printf("\t**\n");printf("\t* 通讯员信息管理系统*\n"); printf("\t**\n");printf("\t* [1] 增加职工信息[2] 删除职工信息*\n");printf("\t* [3] 查询职工信息[4] 修改职工信息*\n");printf("\t* [5] 插入职工记录[6] 保存职工信息*\n");printf("\t* [7] 显示数据[0] 退出系统*\n");printf("\t**\n");printf("\t******************************* **********************************\n");} //void menu菜单结束void Disp(Link l) //显示单链表l中存储的通讯员记录,内容为employee结构中定义的内容{int count=0;Node *p;p=l->next; // l存储的是单链表中头结点的指针,该头结点没有存储职工信息,指针域指向的后继结点才有职工信息if(!p) /*p==NULL,NUll在stdlib中定义为0*/{printf("\n=====>提示:没有通讯员记录可以显示!\n");return;}printf("\t\t\t\t显示结果\n");printstart(); //打印横线printc(); //打印各学科标题printf("\n");while(p) //逐条输出链表中存储的通讯员信息{printe(p);p=p->next;}printstart();printf("\n");} //void Disp结束void printstart()//打印横线{printf("-----------------------------------------------------------------------\n");}void Wrong()//如果你的输入有错误的话就会输出{printf("\n=====>提示:输入错误!\n");}void Nofind()//通讯员信息找不到{printf("\n=====>提示:没有找到该职工!\n"); }void printc() /* 本函数用于输出中文*/{printf(" 工号\t 姓名\t 性别\t 电话\t 住址\t 年龄\n");}void printe(Node *p)/* 本函数用于打印链表中某个结点的数据内容*/{printf("%s\t%s\t%s\t%d\t%s\t%d\t\n",p->d ata.num,p->,p->data.sex,p->data.tele phone,p->data.address,p->data.age);}//Locate(l,findmess,"num");/* 该函数用于定位连表中符合要求的结点,并返回该指针*/Node* Locate(Link l,char findmess[],char zcornum[]){Node *r;if(strcmp(zcornum,"num")==0) /* 按工号查询*/{r=l->next;while(r!=NULL){if(strcmp(r->data.num,findmess)==0) /*若找到findmess值的工号*/return r;r=r->next;}}else if(strcmp(zcornum,"name")==0) /* 按姓名查询*/{r=l->next;while(r!=NULL){if(strcmp(r->,findmess)==0) /*若找到findmess值的职工职称*/return r;r=r->next;}}return 0; /*若未找到,返回一个空指针*/}//add()函数中,无结点时,r指向list头,有节点时,r 指向末尾结点void Add(Link l) /* 增加通讯员信息*/{Node *p,*r,*s; /*实现添加操作的临时的结构体指针变量*/char num[10];int flag=0;r=l;s=l->next; //链表没有结点时,s=null;/链表有结点时,指向第一个职工结点while(r->next!=NULL) //如果存在后继结点时,r指针后移一个r=r->next; /*将指针移至于链表最末尾,准备添加记录*/while(1){printf("请你输入工号(以'0'返回上一级菜单:)");scanf("%s",num);if(strcmp(num,"0")==0) //输入'0',跳出while(1),即跳出add()函数break;s=l->next; //作用每次从第一个结点开始找,看num是否重复。