课程设计电话簿管理系统
学生通讯录管理系统课程设计
学生通讯录管理系统课程设计一、引言学生通讯录管理系统是一种能够有效管理学生通信信息的软件工具。
在当今信息化社会中,为了更好地维护学生通信信息和便于学校管理,设计一个高效、实用的学生通讯录管理系统至关重要。
本文将围绕学生通讯录管理系统的设计与实现展开讨论。
二、需求分析1. 用户需求•管理员需要能够对学生信息进行增删查改操作;•学生要能够方便地修改个人信息;•教师需要便捷地查看学生信息;•系统需要有良好的用户权限管理机制。
2. 功能需求•学生信息管理:包括学生基本信息的录入、修改和删除。
•通讯录管理:实现学生通讯录的管理和分类。
•查询功能:实现对学生信息的快速查询。
•权限管理:分管理员和普通用户,管理员有更高的权限控制。
三、系统设计1. 系统架构学生通讯录管理系统采用典型的客户-服务器架构,后端基于MySQL数据库存储学生信息,前端通过Web页面进行展示和操作。
2. 数据库设计设计数据库表格包括:学生信息表(包括学号、姓名、性别、年级等字段)、用户表、通讯录表等。
3. 页面设计•登录页面:对用户进行身份验证。
•学生信息管理页面:实现对学生基本信息的增删查改。
•通讯录管理页面:实现通讯录的分类和管理。
四、系统实现1. 环境配置•使用Python语言编写后端代码。
•前端采用HTML、CSS、JavaScript。
•数据库采用MySQL。
2. 实现步骤1.搭建后端框架,实现数据的增删查改功能。
2.设计前端页面,实现用户交互和数据展示。
3.进行系统测试和优化。
五、功能演示1. 登录功能输入正确的用户名和密码,用户可以成功登录系统。
2. 学生信息管理管理员可以添加、删除、修改学生信息,普通用户只能查看。
3. 通讯录管理实现对通讯录的添加、分类和管理。
六、总结与展望通过本次学生通讯录管理系统课程设计,我学到了如何进行系统设计、数据库设计和前后端分离开发的方法。
未来,还可以进一步改进系统功能,增加权限管理模块、优化界面交互等,使系统更加稳健和实用。
java课程设计(通讯录管理系统)
掌握Java语言基础
理解面向对象编程思 想
掌握数据库操作技术
提高团队协作和沟通 能力
完成一个实用的通讯 录管理系统
联系人管理:添加、删除、修改、查询联系人信息 联系人分组:创建、删除、修改、查询联系人分组 联系人搜索:根据姓名、电话、邮箱等信息进行搜索 联系人导出:将联系人信息导出为Excel、CSV等格式的文件 联系人导入:从Excel、CSV等格式的文件中导入联系人信息 系统设置:修改系统语言、主题、字体等设置
数据库类型:MySQL
数据库表结构:用户表、 联系人表、分组表等
主键和外键:用户ID、联 系人ID、分组ID等
数据库操作:增删改查等 基本操作
数据库优化:索引、缓存、 分表等优化措施
数据库安全:用户权限管 理、数据加密等安全措施
界面布局:简洁 明了,易于操作
色彩搭配:协调 统一,易于阅读
功能模块:联系 人管理、分组管 理、搜索功能等
汇报人:
添加标题
添加标题
查询方式:支持模糊查询和精确查 询
查询优化:使用索引提高查询效率
功能描述:删除指定联系人信 息
实现方法:调用数据库删除接 口
操作步骤:选择联系人,点击 删除按钮,确认删除
注意事项:确保删除操作不会 影响其他数据完整性
添加联系人:输入姓名、电话、邮箱等信 息
修改联系人:修改姓名、电话、邮箱等信 息
删除联系人:删除指定联系人
查询联系人:根据姓名、电话、邮箱等信 息进行查询
导出联系人:将联系人信息导出为Excel 或CSV文件
导入联系人:将Excel或CSV文件中的联系 人信息导入到系统中
修改模块界面:提供用户友 好的界面,方便用户操作
电话簿管理系统课程设计
课程设计簿管理系统VER1.0系别:计算机科学与技术系专业(班级):电子信息科学与技术2班XX 徐楚奇学号指导教师:翔完成日期:2014年11月7日目录摘要3第一章前言4第二章簿管理系统介绍52.1流程图52.2程序编写概要6第三章主要功能实现73.1删除功能设计73.2添加功能设计7第四章源程序9第五章总结心得23致谢 (24)参考文献 (24)摘要本次课程设计的题目是个人通讯录管理系统,要求将程序中所输人的联系人XX、、QQ、MSN和地址信息这些数据以文本的方式保存,并且能够对所储存的联系人信息进行显示、查询、修改、删除等功能。
本文通过利用模块化程序设计思想,使用单链表和结构体等编写出的可以实现存储、打印、删除等功能的簿管理系统。
通过完成这个课程设计让我们熟悉并掌握在c语言中使用结构体、单链表,指针,函数,和模块化设计思想。
关键词结构体,链表,指针,函数第一章前言在前面我们学习了c语言的一些基础知识对c语言有了初步的认识和了解,为了让我们更加全面地了解c语言程序设计的步骤和方法,在老师的指导下我们进行了一次综合实训。
设计一个简单的簿管理系统,可以存储,删除等。
为了方便使用DEV-C++来编写程序,可以添加汉字备注方便理解程序。
根据前面所学的单链表、指针、函数、结构体等知识在使用模块化设计思想去编写。
设计“通讯录管理系统”使其具有数据插入、修改、删除、显示和查询等功能。
使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序中的使用方法。
使学生掌握软件设计的基本容和设计方法,并培养学生进行规化软件设计的能力。
使学生掌握使用各种计算机资料和有关参考资料,提高学生进行程序设计的基本能力。
其功能包括以下各项:1)数据包括:人名、。
2)可对记录中的XX和进行修改。
3)可增加或删除记录。
4)可显示所有保存的记录。
第二章簿管理系统介绍2.1 流程图簿管理系统因具备以下功能有流程图表示,如下图2.10图2.102.2程序编写概要1 主函数main()主函数使用户进入簿管理系统主界面——用户选择界面,用户可以选择要使用的功能并选择相应的选项进入该功能。
c语言电话簿课程设计
c语言电话簿课程设计一、课程目标知识目标:1. 理解并掌握C语言结构体和数组的使用,能运用其创建电话簿数据结构;2. 学会使用C语言进行文件操作,实现对电话簿数据的保存和读取;3. 掌握C语言中字符串处理的相关函数,实现对电话簿信息的增删查改操作。
技能目标:1. 能够运用所学知识独立设计并实现一个简单的电话簿管理系统;2. 培养学生的编程实践能力,提高问题分析和解决问题的能力;3. 培养学生的团队协作能力,通过分组讨论和合作完成课程设计。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发学生主动探索计算机科学的热情;2. 培养学生的创新意识,鼓励学生勇于尝试和改进自己的设计方案;3. 培养学生严谨、认真的学习态度,养成良好的编程习惯。
分析课程性质、学生特点和教学要求,本课程目标旨在使学生在掌握C语言基础知识的基础上,通过实际项目设计,提高学生的编程实践能力和问题解决能力。
同时,注重培养学生的团队协作精神和情感态度,使学生在完成课程设计的过程中,形成积极的学习态度和价值观。
课程目标分解为具体学习成果,便于后续教学设计和评估。
二、教学内容1. C语言基础知识回顾:结构体、数组、字符串处理函数(教材相关章节)- 结构体的定义和使用;- 数组的定义和操作;- 常用字符串处理函数。
2. 文件操作:文件读写、文件打开与关闭(教材相关章节)- 文件的打开与关闭;- 文件读写操作;- 错误处理。
3. 电话簿管理系统功能设计及实现(课程设计项目)- 系统需求分析;- 功能模块划分;- 编程实现电话簿的增删查改操作;- 文件存储与读取。
4. 课程设计实践:分组讨论、编程实现、测试与优化(教材实践环节)- 学生分组,明确分工;- 编程实践,完成电话簿管理系统;- 测试系统,发现并解决问题;- 优化程序,提高系统性能。
教学内容按照课程目标进行选择和组织,确保科学性和系统性。
教学大纲明确教学内容的安排和进度,结合教材相关章节,让学生在实践中掌握C语言电话簿课程设计所需的知识点。
(完整word版)电话簿管理系统
课程设计说明书设计名称:程序设计语言强化课程设计题目:电话簿管理系统学生姓名:专业:班级:学号:指导教师:日期:年月日课程设计任务书专业年级班一、设计题目(一)学生成绩排名(二)根据条件进行学生成绩排名(三)链表的操作(链表的建立,访问,删除链表指定结点,增加结点)(四)学生成绩文件管理(五)一个综合系统(电话簿管理系统)二、主要内容2.1学生成绩排名采用选择法,将学生成绩从高到低进行排序,再输入一个学生的成绩,将此成绩按照排序规律插入已排好序的学生成绩数组,最后将排好序的成绩单进行反序存放。
2.2 根据条件进行学生成绩排名在函数中进行10个学生成绩从高到低排名,再改进函数,进行n个学生成绩从高到低排名, 排名方式根据函数的style参数进行,如style为‘a'按升序排,style为' d ' 按降序排。
(a:ascending 升,d:descending 降)编写多个不同函数,使之能实现不同的排序算法(3种以上),再编写一个通用输出函数,(要求用函数指针做参数)能分别打印不同排序算法的结果。
2.3链表的操作(链表的建立,访问,删除链表指定结点,增加结点)建立一个动态链表,将学生数据(学号,成绩)存入链表结构中,实现链表的访问(求学生成绩的平均分,找到最高分,最低分,将其数据输出)。
删除指定学号的学生数据,对学生数据进行排序,分别在链表头部,中间,末尾插入学生数据。
2.4学生成绩文件管理定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩,输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩,输出三门课程的平均分数最高的学生的学号、姓名及其平均分,将10个学生的相关数据,存入文件中,再从文件中读出,按照平均分数从高到低进行排序,分别将结果输出到屏幕上和另一文件中,再从文件中读取第 1 ,3 , 5 ,7,9个学生的数据。
2.5 一个综合系统(电话簿管理系统)数据库的主要数据包括:姓名、工作单位、电话号码、E-mail地址。
电话簿模拟系统课程设计
电话簿模拟系统课程设计一、课程目标知识目标:1. 让学生掌握电话簿模拟系统的基本原理和功能,包括数据的存储、检索和更新。
2. 使学生了解并运用程序设计的基本思路和方法,实现电话簿系统的功能模块。
3. 引导学生理解数据结构中数组、链表等在电话簿系统中的应用。
技能目标:1. 培养学生运用所学知识,设计并编写简单的电话簿模拟系统程序。
2. 提高学生的问题分析能力,能够将现实生活中的问题转化为计算机程序进行处理。
3. 培养学生的团队协作能力,通过分组合作完成电话簿系统的设计。
情感态度价值观目标:1. 激发学生对计算机科学的兴趣,提高学习积极性,培养自主学习能力。
2. 培养学生面对问题时的耐心和毅力,增强解决问题的信心。
3. 引导学生认识到编程在解决实际问题中的应用价值,树立正确的价值观。
课程性质:本课程为信息技术学科的课程,结合编程语言和实际应用,培养学生的编程思维和实际操作能力。
学生特点:学生为初中年级,具备一定的计算机操作基础,对编程有初步了解,好奇心强,喜欢动手实践。
教学要求:教师需结合学生特点,采用任务驱动的教学方法,引导学生主动探索,注重理论与实践相结合,提高学生的实际操作能力。
通过课程目标的分解,确保学生在课程结束后能够独立完成一个简单的电话簿模拟系统设计。
二、教学内容1. 电话簿系统基本概念:介绍电话簿系统的定义、功能及在生活中的应用。
2. 数据结构:讲解数组、链表等基本数据结构,分析其在电话簿系统中的应用。
3. 编程语言基础:回顾相关编程语言的基本语法,如变量、条件语句、循环语句等。
4. 电话簿系统功能模块设计:- 数据存储:介绍如何使用数组或链表存储电话簿信息。
- 数据检索:讲解如何实现按照姓名、电话号码等条件进行查找。
- 数据更新:介绍如何添加、修改和删除电话簿中的信息。
5. 电话簿系统实现:结合实际案例,指导学生动手编写电话簿程序。
6. 测试与调试:教授学生如何测试电话簿程序,发现并解决程序中的错误。
数据结构课程设计通讯录管理系统
数据结构课程设计通讯录管理系统一、系统需求分析通讯录管理系统的主要目标是提供一个方便、高效的方式来管理联系人信息。
具体需求包括: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;}```六、系统测试在完成系统的开发后,需要进行全面的测试以确保系统的稳定性和可靠性。
电话簿管理系统课程设计
目录摘要 (2)一、课程设计目的 (3)二、课程设计内容 (3)三、总体设计 (3)四、详细设计 (5)(1)数据结构设计 (5)(2)模块接口设计 (5)(3)部分函数细节 (6)五、调试与测试 (9)(1)调试过程中的主要问题 (9)(2)测试结果的分析与讨论 (9) (12)六.实习总结 (14)参考文献 (15)致谢辞 (16)附录:源程序代码 (17)摘要日益繁多的人际交往使得我们很难搞清楚与每个人之间的联系方式,特别是对于做经常出差的人来说更是难,所以电话簿能够便捷的给我们带来所需要的相关信息。
而随着计算机的普及,人们的生活摆脱了传统式的电话簿,越来越多的靠计算机来帮助人们记住这些事情,极其简便。
这就需要有一个使用的电话簿管理系统,用户可以方便的通过自己电脑的电话簿管理系统,来随时查阅自己所需要的信息,而不必再大费周折去翻开那繁琐的记事本。
电话簿管理系统是一个专门针对储存用户联系方式以及一些简单个人信息的实用管理系统,它方便了用户对众多客户、朋友、同事等个人信息的储存和快速查阅的功能,大大减少了查找过程的时间。
关键字:信息(Information)电话簿管理系统(The Management of Telephone Book)一、课程设计目的通过课程设计,加深对结构化设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。
通过课程设计,学会设计数据结构。
其中包括对结构数组、链表和数据结构等知识的运用。
通过课程设计,提高程序开发功能,能运用合理的控制流程编写清晰高效的程序。
通话课程设计,培养分析问题、解决实际问题的能力。
二、课程设计内容设计一个实用的电话簿管理系统,能以简便高效的方式对电话簿进行管理,具体要示:电话簿信息包括:姓名,电话。
(1)更新:能插入、删除电话簿信息。
.(2)浏览:能够查看所有的电话簿信息。
(3)查询:能实现指定姓名信息查询。
(4)修改:能修改指定的电话簿信息。
南航c语言课程设计报告——电话簿管理系统
电话簿管理系统一.程序功能:电话簿管理系统要求实现一个电话薄系统的基本管理功能,包括录入、删除、查找、和导入/导出功能等。
1.创建电话簿;2.#include<stdio.h>#include<stdlib.h>#include<ctype.h>#include<string.h>struct telebook{ char num[4];char name[10];char phonenum[15];char email[20];struct telebook *next;};typedef struct telebook TeleBook;int menu_select();TeleBook *s;TeleBook *Create();void Display(TeleBook *head);TeleBook *Insert(TeleBook *head,TeleBook *s);TeleBook *Insert_a_record(TeleBook *head);TeleBook *Delete(TeleBook *head,char *num);TeleBook *Delete_a_record(TeleBook *head);TeleBook *Query(TeleBook *head,char *num);void Query_a_record(TeleBook *head);TeleBook *AddfromText(TeleBook *head,char *filename);void WritertoText(TeleBook *head,char *filename);void Quit(TeleBook *head);TeleBook *DeleteSame(TeleBook *head);int menu_select(){ char c;do {system("cls");printf("1. Create List\n");printf("2. Display All Record\n");printf("3. Insert a Reacord\n");printf("4. Delete a Reacord\n");printf("5. Query\n");printf("6. Add Records from a Text File\n");printf("7. Write to a Text File\n");printf("8. Delete the Same Record\n");printf("0. Quit\n");printf("Give your choice (0-8):\n");c=getchar();}while(c<'0'||c>'8');return(c-'0');}TeleBook *Create(){ TeleBook *s,*head=NULL;char c='Y';printf("create an increasing list...\n");printf("please input num,name,phonenum,email\n");while(c=='Y'||c=='y'){ s=(TeleBook *) malloc(sizeof(TeleBook));system("pause");gets(s->num);gets(s->name);gets(s->phonenum);gets(s->email);head=Insert(head,s);printf("Do you want to continue to input :(Y/N)?\n");c=getchar();}return(head);}void Display(TeleBook *head){ TeleBook *p;int i=0;p=head;printf("output list: \n ");printf("num\tname\tphonenum\temail\n");while(p!=NULL){ printf("%s\t%s\t%s\t%s\n",p->num,p->name,p->phonenum,p->email);p=p->next;if(++i%10==0){ printf("\n");system("pause");system("cls");}}}TeleBook *Insert(TeleBook *head,TeleBook *s) { TeleBook *p1,*p2;if(head==NULL){ head=s;s->next=NULL;return(head);}p2=p1=head;while(strcmp(s->num,p1->num)>0 && p1->next!=NULL){ p2=p1; p1=p1->next; }if(strcmp(s->num,p1->num)<=0){ s->next=p1;if(head==p1) head=s;else p2->next=s;}else {p1->next=s;s->next=NULL;}return(head);}TeleBook *Insert_a_record(TeleBook *head){ TeleBook *p;p=(TeleBook *) malloc(sizeof(TeleBook));printf("Please input the new Num,Name,Phonenum,Email\n");getchar();gets(p->num);gets(p->name);gets(p->phonenum);gets(p->email);head=Insert(head,p);printf("Insert success!!\n");printf("%s\n%s\n%s\n%s\n",p->num,p->name,p->phone num,p->email);return(head);}TeleBook *Delete(TeleBook *head,char *num){ TeleBook *p1,*p2;if(head==NULL){ printf("List is null\n" );return(NULL);}p1=head;while(strcmp(p1->num,num)!=0 && p1->next!=NULL){ p2=p1;p1=p1->next;}if(strcmp(p1->num,num)==0){ if(p1==head) head=p1->next;else p2->next=p1->next;printf("The num %s is deleted.\n",p1->num);free(p1);}elseprintf("The num %s is not found.\n",num);return(head);}TeleBook *Delete_a_record(TeleBook *head) { char c;char num[20];printf("Do you want to delete?(y/n)\n");getchar();c=getchar();if(c=='y'||c=='Y')printf("please input num=\n");getchar();gets(num);head=Delete(head,num);printf("delete success!\n");return(head);}TeleBook *Query(TeleBook *head,char *num) { TeleBook *p;p=(TeleBook *) malloc(sizeof(TeleBook));p=head;while(p!=NULL){ if(strcmp(p->num,num)==0) return(p);p=p->next;}return(NULL);}void Query_a_record(TeleBook *head){ char num[10];TeleBook *p;p=(TeleBook *) malloc(sizeof(TeleBook));printf("Please input the num you want to search\n");getchar();gets(num);p=Query(head,num);if(p==NULL) printf("Fail!\n");else{ printf("Search Success!\n");printf("Num:%s\nName:%s\nPhonenum:%s\nEmail:%s\ n",p->num,p->name,p->phonenum,p->email);}}TeleBook *AddfromText(TeleBook *head,char *filename){ FILE *fp;printf("Please input the filename you want.....\n");getchar();gets(filename);fp=fopen(filename,"r");if(fp==NULL){ printf("Can't open the file!\n");getchar();exit(1); }while(feof(fp)==0){ TeleBook *s;s=(TeleBook *) malloc(sizeof(TeleBook));fscanf(fp,"%s%s%s%s",s->num,s->name,s->phonenum,s ->email);head=Insert(head,s);}fclose(fp);printf("Add success\n");return(head);}void WritertoText(TeleBook *head,char *filename){ TeleBook *p;FILE *fp;printf("Please input the filename you want to output.....\n");getchar();gets(filename);if((fp=fopen(filename,"w"))==NULL){ printf("Can't open ");exit(0);}p=head;printf("Output list:\n");while(p!=NULL){ fprintf(fp,"%s\t%s\t%s\t%s\n",p->num,p->name,p->p honenum,p->email);p=p->next;}fclose(fp);printf("Write Successful!\n");}void Quit(TeleBook *head){ TeleBook *p;char c;printf("Do you want to exit? (Y or N)\n");getchar();c=getchar();if(c=='Y'||c=='y'){ while(head!=NULL){ p=head;head=head->next;free(p);}}}TeleBook *DeleteSame(TeleBook *head) { TeleBook *p;TeleBook *p1,*p2;if(head==NULL){ printf("List is null\n");return(NULL);}for(p=head;p!=NULL;p=p->next)for(p2=p,p1=p->next;p1!=NULL;p2=p1,p1=p1->next) {if(strcmp(p->name,p1->name)==0&&strcmp(p->phonenu m,p1->phonenum)==0&&strcmp(p->email,p1->email)= =0){ p2->next=p1->next;free(p1);printf("Delete Success\n");}}return(head);}void main() { TeleBook *head=NULL;printf("\t ******TeleBook*******\n");for(;;){ switch(menu_select()){case 1:printf("\tCreate List\n");head=Create();system("pause");break;case 2:printf("\tDisplay All Record\n");Display(head);system("pause");break;case 3:printf("\tInsert a Reacord\n");head=Insert_a_record(head);system("pause");break;case 4:printf("\tDelete a Reacord\n");head=Delete_a_record(head);system("pause");break;case 5:printf("\tQuery\n");Query_a_record(head);system("pause");break;case 6:printf("\tAdd Records from a Text File\n"); head=AddfromText(head,"filename");system("pause");break;case 7:printf("\tWrite to a Text File\n"); WritertoText(head,"filename"); system("pause");break;case 8:printf("\tDelete the Same Record\n"); head=DeleteSame(head);system("pause");break;case 0:printf("Goodbye!\n");Quit(head);system("pause");exit(0); }}}。
电话簿系统课程设计
电话簿系统课程设计一、课程目标知识目标:1. 让学生理解电话簿系统的基本概念,掌握其数据结构和操作方法。
2. 使学生能够运用所学知识,设计并实现一个简单的电话簿系统。
3. 帮助学生了解电话簿系统在实际应用中的功能需求,如添加、删除、查询和修改联系人信息。
技能目标:1. 培养学生运用编程语言(如Python)实现电话簿系统的能力。
2. 提高学生分析问题、解决问题的能力,使其能够针对电话簿系统进行需求分析和功能设计。
3. 培养学生团队协作和沟通表达的能力,能够就电话簿系统的设计与同伴进行有效讨论。
情感态度价值观目标:1. 激发学生对计算机科学和信息技术的兴趣,培养其主动探索新知识的热情。
2. 培养学生认真负责、严谨细致的学习态度,使其认识到细节在软件开发中的重要性。
3. 引导学生关注信息技术对社会生活的影响,使其认识到电话簿系统等应用在实际生活中的价值。
课程性质:本课程为信息技术学科的教学内容,旨在通过电话簿系统设计与实现,帮助学生掌握编程语言和数据结构的基础知识,培养其解决实际问题的能力。
学生特点:考虑到学生所在年级,已具备一定的计算机操作基础和编程知识,对新鲜事物充满好奇心,但可能缺乏实际项目经验。
教学要求:结合学生特点,注重理论与实践相结合,以项目为导向,引导学生主动参与,培养其动手实践能力和团队协作精神。
在教学过程中,关注学生个体差异,给予个性化指导,确保课程目标的实现。
二、教学内容1. 电话簿系统的基本概念:介绍电话簿系统的定义、功能、应用场景,引导学生理解其与现实生活的联系。
2. 数据结构基础:回顾线性表、字典等基本数据结构,为学生实现电话簿系统提供知识储备。
3. 编程语言选择:以Python为例,讲解其在电话簿系统中的应用,如列表、字典的使用,函数的定义等。
4. 电话簿系统功能设计:分析添加、删除、查询、修改联系人信息等功能的实现方法,引导学生进行需求分析和功能规划。
5. 编程实践:指导学生运用Python编程实现电话簿系统,包括数据存储、功能模块划分、代码编写等。
java电话簿课程设计
java电话簿课程设计一、课程目标知识目标:1. 让学生掌握Java编程语言的基本语法和结构,特别是面向对象编程思想。
2. 使学生理解电话簿的基本功能,如添加、删除、查找和修改联系人。
3. 帮助学生掌握使用数组或集合类(如ArrayList)存储和管理电话簿数据的方法。
技能目标:1. 培养学生运用Java语言编写电话簿管理系统的能力。
2. 培养学生运用条件语句和循环结构进行数据处理的能力。
3. 提高学生调试和优化代码的能力,确保电话簿程序的正确性和稳定性。
情感态度价值观目标:1. 激发学生对编程的兴趣,培养其主动学习和解决问题的积极态度。
2. 培养学生团队协作精神,学会与他人共同分析、讨论和解决问题。
3. 培养学生关注实际应用,认识到编程对生活的重要性和实用性。
分析课程性质、学生特点和教学要求:1. 课程性质:本课程为实践性较强的Java编程课程,旨在让学生通过实际项目设计,掌握编程技巧和方法。
2. 学生特点:学生已具备一定的Java基础,具有较强的逻辑思维能力,但对实际项目开发尚缺乏经验。
3. 教学要求:课程注重理论与实践相结合,以项目为导向,引导学生自主探究,培养其编程能力和实际操作能力。
将目标分解为具体的学习成果:1. 学生能够独立编写一个具备基本功能的电话簿管理系统。
2. 学生能够运用所学知识对电话簿系统进行优化和扩展。
3. 学生在课程结束后,具备进一步学习和开发其他Java项目的能力。
二、教学内容1. 电话簿项目需求分析:介绍电话簿的基本功能,包括添加、删除、查找、修改联系人等。
- 相关章节:教材第3章“面向对象编程”2. Java基本语法回顾:复习Java基本数据类型、运算符、控制结构等。
- 相关章节:教材第1、2章“Java语言基础”3. 面向对象编程:讲解类与对象、封装、继承、多态等概念。
- 相关章节:教材第3章“面向对象编程”4. 数组与集合类:介绍数组和ArrayList的使用,用于存储电话簿数据。
电话簿管理c课程设计
电话簿管理c 课程设计一、课程目标知识目标:1. 学生能够理解电话簿的基本概念,掌握电话簿的信息结构和管理方法。
2. 学生能够运用所学知识,使用编程语言实现电话簿的基本功能,如增加、删除、查找和修改联系人信息。
3. 学生能够了解数据存储的概念,并运用文件操作实现电话簿数据的持久化。
技能目标:1. 学生能够运用编程语言进行电话簿管理系统的设计与开发,提高编程实践能力。
2. 学生能够运用调试工具解决编程过程中的问题,提高问题解决能力。
3. 学生能够运用所学知识,进行团队协作,共同完成电话簿管理项目的开发。
情感态度价值观目标:1. 学生通过电话簿管理项目,培养对计算机编程的兴趣和热情,增强学习动力。
2. 学生在项目开发过程中,培养团队协作精神,提高沟通与交流能力。
3. 学生能够认识到编程在生活中的应用,理解编程对解决实际问题的价值。
本课程针对高年级学生,结合学科特点和教学要求,注重知识与实践相结合,提高学生的编程能力和问题解决能力。
课程目标具体、可衡量,旨在帮助学生明确学习成果,为教学设计和评估提供依据。
二、教学内容本章节教学内容主要包括以下几部分:1. 电话簿基本概念:电话簿的数据结构、功能特点及其在现实生活中的应用。
2. 编程语言基础:复习巩固与电话簿管理相关的基础语法,如变量、数据类型、控制结构等。
3. 电话簿管理系统功能设计:- 增加联系人:学习输入、输出语句,实现添加联系人信息的功能。
- 删除联系人:学习条件语句,实现根据条件删除联系人信息的功能。
- 查找联系人:学习循环语句,实现查找并显示联系人信息的功能。
- 修改联系人:学习数组操作,实现修改联系人信息的功能。
4. 数据存储与文件操作:学习文件操作,实现电话簿数据的持久化存储。
5. 项目实践:以小组形式,完成一个完整的电话簿管理系统的设计与开发。
教学内容按照以下进度安排:1. 电话簿基本概念及编程语言基础复习(1课时)2. 电话簿管理系统功能设计(2课时)3. 数据存储与文件操作(1课时)4. 项目实践(4课时)教学内容与教材章节关联,以教材中相关章节为基础,结合课程目标进行拓展和深入,确保学生掌握电话簿管理系统的核心知识和技能。
昆明理工大学 c++课程设计 小型电话簿管理系统
课程设计课程名称:程序设计语言课程设计设计题目:小型电话簿管理系统学院:信息工程与自动化学院专业:计算机科学与技术年级: 2009级学生姓名:孙浩川指导教师:李川日期: 2010年7月9日教务处制昆明理工大学一、课程设计(论文)任务书信息工程与自动化学院计算机科学与技术专业2009 级学生姓名(学号):孙浩川200910405310课程设计目的:通过设计一个较为简单的管理系统,进一步熟悉C++中类的概念、类的封装、继承的实现方式。
了解系统开发的需求分析、类层次设计、模块分析、编码测试、模块组装与整体调试的全过程,加深对C++的理解与Visual C++环境的使用;逐步熟悉程序设计的方法,并养成良好的编程习惯。
课程设计(论文)题目及具体内容:(一)写程序总体设想:有一个首页菜单,用于选择各项结构,其中(1). 添加联系人:用于输入电话簿数据(2). 删除联系人:用于删除电话簿数据(3). 显示所有联系人:用于输出电话簿数据(4). 修改数据:用于对错误信息的修改(5). 查询联系人:用于搜索数据(6). 关闭通讯簿(二)读程序,给出80%的注释,每个主要功能模块画出流程图。
贪吃蛇设计(论文)指导教师:(签字)___________2010年06月28日二、摘要随着社会的发展,人们生活地步调日益加快,越来越多的人加入了全球化的世界。
人们不再拘泥于自己的一小块天地,随时随地的沟通是生活中非常重要的一件事,于是通讯簿成为每个人必不可少的工具。
所编写《小型电话簿管理系统》,旨在帮助人民方便的几下同学、朋友以及各种联系人的姓名、电话、住址,成为人们身边必不可少的工具,使我们感受到高科技为生活带来的便利。
不过在紧张的工作学习之余,也要适当放松一下。
现在我要介绍一款游戏——贪食蛇,希望给大家带来欢乐。
贪食蛇这款游戏简单易行,操作方便,娱乐性较强,吸引了不少人。
这款游戏紧紧地抓住了人们的心理,虽然简单却乐趣无穷,在人们不断追求更多的欲望下,给人们带来追逐的快感,以及成功后的满足感,对于一直处于高压下的现代人是个很好的放松工具。
JAVA程序设计电话簿管理系统
某某工业大学JA V A程序设计课程设计(论文)题目:电话薄信息管理系统院(系):专业班级:学号:学生姓名:指导教师:教师职称:起止时间:程序设计专题(报告)任务及评语目录第1章课程设计的目的与要求 (1)1.1 课程设计目的 (1)1.2 课程设计的实验环境 (1)1.3 课程设计的预备知识 (1)1.4 课程设计要求 (1)第2章课程设计内容 (2)2.1课程设计主要内容 (2)2.2概要设计 (2)2.2.1自定义类说明 (3)2.2.2 成员变量 (4)2.2.3 方法设计 (5)2.2.4 功能流程图 (5)2.3详细设计 (7)2.4测试分析 (13)2.4.1程序运行情况 (13)2.4.2程序异常处理 (16)第3章课程设计总结 (18)参考资料 (19)第1章课程设计的目的与要求1.1 课程设计目的《JA V A程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。
实践教学环节是必不可少的一个重要环节。
本课程的程序设计专题实际是计算机相关专业学生学习完《JA V A程序设计》课程后,进行的一次全面的综合训练,JA V A程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。
1.2 课程设计的实验环境硬件要求能运行Windows 9.X操作系统的微机系统。
JA V A程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具。
1.3 课程设计的预备知识熟悉JA V A语言及ECLIPSE开发工具。
1.4 课程设计要求按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。
要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JA V A程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。
C语言课设--电话簿管理系统解读
高级语言课程设计任务书及说明书设计题目电话簿管理系统学院计算机与通信学院专业、年级通信工程1班学生杨智刚学号 ____ 1416530101_ 指导教师时间 2015 年春季学期目录1 摘要 (3)2 前言 (4)3 正文 (5)3.1系统分析3.2系统总体设计3.3详细设计3.4系统测试4 参考文献 (16)5 总结 (17)附录: 程序源代码本次课程设计采用C语言,开发了一个基本的电话簿管理系统,该系统具备了按联系人姓名查找并输出联系人信息,按联系人姓名查找并删除数据,输出全部联系人信息数据,对联系人的管理也可以更加方便快捷。
关键词:C语言;课程设计;电话簿管理系统随着交际能力的广泛性的提高,朋友的数量逐渐增多,但是在联系人管理方面总是出现联系人姓名、年龄等出现错误的诸多问题。
本文针对上述问题,采用软件工程的开发原理,根据软件流程过程规范,按照需求分析、概要设计、详细设计、程序编码、测试、软件应用、软件维护等过程开发了一个电话簿管理系统。
采用c语言作为开发工具,设计了这个电话簿管理系统,解决了联系人信息管理中存在的数据安全性、数据一致性等问题。
3.1 系统分析3.3.1.设计要求该设计要求以方便查找和管理联系人为背景,设计、开发一套“电话簿管理系统”软件。
通过该题目的设计过程,可以培养学生结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解,针对c语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。
得到软件工程的综合训练,提高解决实际问题的能力。
3.3.2设计任务1、以电话簿管理业务为背景,通过调研、分析现有的管理模式和已有的管理软件,建立系统模型;2、完成软件结构设计和算法设计;3、完成系统的软件开发和测试工作联系人信息包括:姓名,年龄,性别,电话等。
设计“电话簿管理系统”,使之能提供以下功能:1.系统以菜单方式工作;2.联系人信息录入功能;3.联系人信息浏览功能;4.查询功能:按姓名查询;5.联系人信息的删除与修改。
课程设计电话簿管理系统 (1)
电话簿设计文档设计者:董昊李月婷2014/6/28一、问题分析与任务定义电话簿是用户用来存储联系人信息的一个软件,用户通过电话簿可以对联系人信息进行删除、添加、修改、查询等功能。
实现一个电话簿管理系统需要设计以下几个模块。
(1)、添加:将需要存储的联系人信息添加进去。
(2)、删除:先根据联系人的名字进行搜索,同名的根据号码进行选择性删除。
(3)、查询:根据指定的人名查找联系人信息。
(4)、修改:对指定的人的姓名先进行搜索,找到后,再根据该联系人信息进行选择性修改。
(5)、显示:显示文件中所有的联系人信息。
(6)、排序:将显示出的联系人信息按姓名进行升序排序显示出(7)、翻页:一页显示5个联系人的信息,根据给定的操作,选择上下翻页操作。
(8)、退出系统二、数据结构选择与概要设计1.本程序的基本算法设计(1)tell结构体定义定义了结点对应的数据信息,有联系人的姓名name、号码number、QQ、邮箱mail、性别sex以及pre指向其前驱的指针域和next指向其后继的指针域。
(2)各模块函数功能的实现2.数据结构设计#include "stdlib.h"#include "stdio.h"#include "string.h"//---------结构体定义----------typedef struct tell{char name[20]; //姓名char number[20]; //号码char qq[20]; //QQchar mail[20]; //邮件char sex;//男:M 女:Wstruct tell *next;struct tell *pre;}tell,*tp;3.概要设计首先在浏览菜单中显示文件中原有的联系人信息,一页显示5个人,根据显示的操作进行相应的选择,有上下翻页选择,进入主菜单选择,以及联系人详细信息的选择。
电话号码簿管理系统,课程设计报告,
目录摘要 (2)第1章需求分析 (3)1.1 问题提出 (3)1.2 本系统涉及的知识点 (3)1.3 功能要求 (3)1.3.1功能菜单 (3)第2章总体功能设计 (4)2.1算法设计 (4)2.1.1主界面菜单 (4)2.1.2根据所选菜单编写相应代码 (4)2.2 模块图 (5)2.3 部分模块流程图 (5)第3章程序代码设计 (7)3.1 create模块 (7)3.2 save模块 (7)3.3 load模块 (7)3.4 print模块 (8)3.5 search模块 (8)3.6 delete模块 (8)3.7 append模块 (9)3.8 modify模块 (9)第4章 C程序设计总结 (10)4.1 程序调试 (10)4.1.1程序调试情况 (10)4.1.2感想 (11)谢辞 (11)参考文献 (12)附录程序清单 (13)摘要本报告包括需求分析、总体功能设计、程序代码设计、C程序设计总结、谢辞、参考资料、附录七部分。
需求分析中介绍了要实现的功能、功能菜单、涉及的知识点以及各功能之间的联系。
总体功能设计中介绍了算法设计、模块图、主菜单以及根据主菜单而对各分函数的设计进行大致的描述,位于后面的是部分模块流程图。
程序代码设计中详细描述了各分模块的代码设计,包括用到的函数、各种语句、对变量和功能的介绍说明,具体详见附录中的源代码。
C程序设计总结中记录了调试程序时遇见的情况及解决方法和此次设计的感想。
在谢辞中表达了对给予帮助的人员的感谢。
参考资料中列举的是完成本设计所参考的资料。
附录中为程序清单。
关键词功能菜单,模块图,代码设计,调试程序。
第1章需求分析1.1 问题提出本人计划编写一个电话号码簿管理系统,主要用来管理联系人电话号码。
1.2 本系统涉及的知识点函数、结构体、指针、文件、链表、循环、判断、switch语句等。
1.3 功能要求(1)增加记录的修改功能。
(2)将指定电话从电话簿中删除。
电话簿管理系统课程设计
电话簿管理系统课程设计一、课程目标知识目标:1. 学生能够理解电话簿管理系统的基本概念,掌握其数据结构及存储方式。
2. 学生能够运用所学编程语言实现电话簿管理系统的增、删、改、查功能。
3. 学生了解数据库的基本原理,并能将电话簿数据存储在数据库中。
技能目标:1. 学生能够运用结构化编程思想,设计并实现电话簿管理系统。
2. 学生掌握基本的编程调试技巧,能够独立解决编程过程中遇到的问题。
3. 学生掌握数据库操作的基本方法,能够实现数据的存储和查询。
情感态度价值观目标:1. 学生通过本课程的学习,培养对计算机编程的兴趣和热情,提高信息素养。
2. 学生在团队协作中学会沟通与分享,培养合作精神和解决问题的能力。
3. 学生认识到编程在生活中的应用,体会科技给生活带来的便利,增强社会责任感。
课程性质分析:本课程为信息技术课程,旨在让学生通过实践操作,掌握电话簿管理系统设计与实现的基本方法。
学生特点分析:学生为初中年级,已具备一定的计算机操作能力和编程基础,对新鲜事物充满好奇心。
教学要求:结合学生特点,注重实践操作,引导学生运用所学知识解决实际问题,提高学生的编程能力和信息素养。
在教学过程中,关注学生的个体差异,鼓励学生积极参与,培养自主学习与合作学习能力。
通过本课程的学习,使学生在知识、技能和情感态度价值观方面均取得具体、可衡量的学习成果。
二、教学内容1. 电话簿管理系统概述- 了解电话簿管理系统的基本概念与功能- 掌握电话簿数据结构的设计与实现2. 编程语言基础- 掌握基本的编程语法和结构- 学会使用变量、数据类型、控制结构等实现电话簿功能3. 电话簿管理系统功能实现- 设计并实现电话簿的增、删、改、查功能- 掌握模块化编程,提高代码的可读性和可维护性4. 数据库基础- 了解数据库的基本原理- 学习数据库的创建、表的设计及数据操作5. 电话簿数据存储与查询- 实现电话簿数据在数据库中的存储- 掌握SQL语句,实现数据的查询与维护6. 课程实践与项目展示- 进行电话簿管理系统项目的实践操作- 撰写项目报告,进行项目展示与评价教学内容安排与进度:第一周:电话簿管理系统概述,编程语言基础第二周:电话簿管理系统功能实现(增、删、改)第三周:电话簿管理系统功能实现(查),数据库基础第四周:电话簿数据存储与查询,课程实践与项目展示教材章节关联:《信息技术》教材第3章:编程基础《信息技术》教材第4章:数据库与数据管理三、教学方法1. 讲授法:- 对于电话簿管理系统的基础知识、编程语言基础、数据库原理等理论知识,采用讲授法进行教学。
电话簿管理系统课程设计
电话簿管理系统课程设计一、教学目标本课程的目标是让学生掌握电话簿管理系统的基本概念、设计和实现。
通过本课程的学习,学生应能够:1.理解电话簿管理系统的需求和功能;2.掌握电话簿管理系统的基本设计原则;3.学会使用编程语言实现电话簿管理系统的基本功能;4.培养学生的实际动手能力和团队协作精神。
二、教学内容本课程的教学内容主要包括以下几个部分:1.电话簿管理系统的需求分析:介绍电话簿管理系统的基本功能和需求;2.电话簿管理系统的设计:讲解电话簿管理系统的基本设计原则和方法;3.电话簿管理系统的实现:教授学生使用编程语言实现电话簿管理系统的基本功能;4.案例分析:分析实际中的电话簿管理系统案例,加深学生对知识的理解。
三、教学方法为了提高教学效果,本课程将采用多种教学方法:1.讲授法:用于讲解电话簿管理系统的基本概念、设计和实现方法;2.案例分析法:通过分析实际案例,让学生更好地理解电话簿管理系统的设计和实现;3.实验法:让学生动手实践,实际操作电话簿管理系统,提高其实际操作能力;4.小组讨论法:鼓励学生分组讨论,培养团队协作精神,提高解决问题的能力。
四、教学资源为了支持本课程的教学,我们将准备以下教学资源:1.教材:为学生提供系统、全面的知识体系;2.参考书:为学生提供更多的学习资料,拓宽知识面;3.多媒体资料:通过视频、动画等形式,让学生更直观地理解电话簿管理系统;4.实验设备:提供足够的实验设备,保证每个学生都能动手实践。
通过以上教学资源的支持,我们将帮助学生更好地掌握电话簿管理系统的基本概念、设计和实现,提高其实际操作能力和团队协作精神。
五、教学评估为了全面、客观地评估学生的学习成果,本课程将采用以下评估方式:1.平时表现:通过观察学生在课堂上的参与程度、提问回答等,评估其学习态度和理解程度;2.作业:布置适量的作业,让学生巩固所学知识,通过批改作业了解学生的掌握情况;3.考试:安排一次期中考试和一次期末考试,全面测试学生对电话簿管理系统知识的掌握程度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一.程序功能简介一个基本的电话簿管理程序,具有插入、删除、显示、修改和查询联系人电话码的功能。
主菜单如右图所示,每个菜单项功能如下:1.增加记录菜单:请输入用户姓名,如果该用户已经存在则添加失败,否则,输入用户的电话号码,进行添加。
2.修改某条记录:请输入用户姓名,如果没有该用户显示“该用户不存在”信息,否则,输出原电话号码,然后输入新的电话号码,进行修改。
3.删除记录:输入用户姓名,进行删除(删除时要进行确认)。
4.查询:输入用户姓名,进行查找。
5.排序:根据子菜单,选择不同的排序方式。
6.显示:逐屏显示(每屏显示10条记录)。
7.全删:进行全部删除(要确认)。
二.课程设计要求请选择以下功能1- 增加记录2- 修改记录3- 删除记录4- 查找(按姓名)5- 排序6- 显示记录1.用汉化菜单实现。
2.提供按姓名查询电话号码的功能。
3.显示功能(提供逐屏显示的功能,每屏显示10条记录)。
4.删除和修改时要进行确认。
5.将电话簿记录以文件的形式存在磁盘上;每次操作时将电话簿调出,操作完毕后存盘。
三.课程设计说明1.程序采用数组数据结构实现。
2.用类来实现数据的封装。
四.参考数据结构1.“电话簿”称为用户信息表,用数组实现。
用户信息表由若干用户信息构成,每个用户信息是一个数组元素。
2.“user.txt”是一个文件,用于保存“用户信息表”中的信息。
当系统启动时,从该文件中读入信息,当退出系统时,将“用户信息表”中的信息写到该文件中。
该文件中信息存放形式如下:ZhangHong 5221369LiLi 84891112ZhaoQiang 5221498其中name(姓名)占20列phone_num(电话号码)占12列五.具体功能及实现定义Fphone类,通过其私有成员数组name[20]和phone[12]分别记录用户姓名与电话号码,定义UserDatabase类记录用户信息,通过公有成员函数实现对数据的操作。
六.源程序及注释#include<fstream.h>#include<iostream.h>#include<iomanip.h>#include<string.h>#include<stdlib.h>#define M 20#define N 12#define MAX 100class Fphone //用户信息类的定义{char name[M]; // 姓名char phone_num[N]; //电话号码public:Fphone(char *na="",char *ph=""){ strcpy(name,na);strcpy(phone_num,ph);}char*getname(); //获取姓名char*getphone_num(); //获取电话号码void setname(char*a); //设置姓名void setphone_num(char*a); //设置电话号码void disp(); //显示用户信息};char *Fphone::getname(){ return name;}char *Fphone::getphone_num(){ return (phone_num);}void Fphone::setname(char *a){ strcpy(name,a);}void Fphone::setphone_num(char*a){ strcpy(phone_num,a);}void Fphone::disp(){ cout<<"姓名:"<<name<<'\t'<<"电话号码:"<<phone_num<<endl;}class UserDatabase //用户信息表类的定义{ int nElem; //用户信息表中的元素个数,即当前记录总数int Maxu; //最多的用户Fphone *user; //指向用户信息表的指针public:UserDatabase() //构造函数,初始化用户信息表,将user.txt文件中数据读到User[]中{ nElem=0;Maxu=50;user=new Fphone[Maxu];fstream in;in.open("user.txt",ios::in|ios::nocreate); //打开文件for(int i=0;(!in.eof());i++){ in>>user[i].getname();in>>user[i].getphone_num();nElem++;}in.close();}~UserDatabase() //析构函数,将user[]写入user.txt文件中{ fstream out;Fphone *p=NULL;p=user;out.open("user.txt",ios::out,filebuf::sh_none);for(int i=0;i<nElem;i++){ out<<setw(20)<<((p+i)->getname())<<setw(15)<<((p+i)->getphone_num())<<endl;}delete []user;out.close();}void clear() //删除所有用户信息{ char ord;cout<<"确定删除吗?(选择:[y]是;[n]否)\a\a"<<endl;do{ cin>>ord;if(ord=='N'||ord=='n') return;else if(ord=='Y'||ord=='y'){ delete[Maxu]user;user=0;cout<<"删除成功啦!"<<endl;nElem=0;return;}else cout<<"请重新输入(选择:[y]是;[n]否)\a\a"<<endl;}while(ord!='n'||ord!='N'||ord!='y'||ord!='Y');}void add_record(char *na,char*ph_num) //添加用户信息,插入用户后仍按升序排列{ if (nElem==0){ nElem++;user->setname(na);user->setphone_num(ph_num);}else if(nElem<Maxu){ for(int i=nElem-1;i>=0;i--){ if(strcmp((user+i)->getname(),na)>0){ (user+i+1)->setname(((user+i)->getname()));(user+i+1)->setphone_num(((user+i)->getphone_num()));}else break;}(user+i+1)->setname(na);(user+i+1)->setphone_num(ph_num);nElem++;}else cout <<"空间不足,无法添加!"<<endl;}Fphone *getuser() //返回user指针{ return(user); }void delete_record(Fphone *p,int k) //删除用户信息{ char con;cout<<"确认删除?(Y/N)";cin>>con;if (con=='N'||con=='n') return;else if (con=='Y'||con=='y'){ for(int i=k;i<nElem;i++){ user[i]=user[i+1]; }nElem--;cout<<"已删除!"<<endl;return;}else{ cout<<"输入错误!"<<endl;system("pause");return;}}void modify_record(Fphone *p,char*ph_num)//修改用户信息{p->setphone_num(ph_num);}Fphone *query(char *na) //按姓名查找顺序查找,这里也可以用折半{ Fphone *p=user;int i=0;while(1){ if(strcmp(p->getname(),na)==0)return p;p++;if(i++==nElem)break;}return NULL;}void sorta_name() //按姓名升序排序插入排序法{ Fphone temp;int i,j;for(i=1;i<nElem;i++){ temp=user[i];for(j=i-1;j>=0&&(strcmp(temp.getname(),user[j].getname())<0);j--){ strcpy(user[j+1].getname(),user[j].getname());strcpy(user[j+1].getphone_num(),user[j].getphone_num());}strcpy(user[j+1].getname(),temp.getname());strcpy(user[j+1].getphone_num(),temp.getphone_num());}}void sorta_phonenum() //按电话号码升序排序选择排序法{ int i,j,p;Fphone temp;for(i=0;i<nElem-1;i++){ p=i;for(j=i+1;j<nElem;j++)if(strcmp(user[j].getphone_num(),user[p].getphone_num())<0) p=j;if(p!=i){ strcpy(temp.getname(),user[p].getname());strcpy(temp.getphone_num(),user[p].getphone_num());strcpy(user[p].getname(),user[i].getname());strcpy(user[p].getphone_num(),user[i].getphone_num());strcpy(user[i].getname(),temp.getname());strcpy(user[i].getphone_num(),temp.getphone_num());}}}void sort_name() //按姓名降序排序,将排成升序的对象数组逆向放置{ Fphone temp;int i,m=(nElem+1)/2;for(i=0;i<m;i++){ strcpy(temp.getname(),user[i].getname());strcpy(temp.getphone_num(),user[i].getphone_num());strcpy(user[i].getname(),user[nElem-i-1].getname());strcpy(user[i].getphone_num(),user[nElem-i-1].getphone_num());strcpy(user[nElem-i-1].getname(),temp.getname());strcpy(user[nElem-i-1].getphone_num(),temp.getphone_num());}}void sort_phonenum() //按电话号码降序排序冒泡排序法{ Fphone temp;int i,m=(nElem+1)/2;for(i=0;i<m;i++){ strcpy(temp.getname(),user[i].getname());strcpy(temp.getphone_num(),user[i].getphone_num());strcpy(user[i].getname(),user[nElem-i-1].getname());strcpy(user[i].getphone_num(),user[nElem-i-1].getphone_num());strcpy(user[nElem-i-1].getname(),temp.getname());strcpy(user[nElem-i-1].getphone_num(),temp.getphone_num());}}void disp(){ int i,n=0;cout<<setw(22)<<"姓名"<<setw(14)<<"电话号码"<<endl;for(i=0;i<nElem;i++){cout<<setw(22)<<(user+i)->getname()<<setw(14)<<(user+i)->getphone_num()<<endl;n++;if(n%10==0){ system("pause");system("cls");}}cout<<endl;}};void menu(){ cout<<" 请选择以下功能:"<<endl;cout<<" 1-增加记录"<<endl;cout<<" 2-修改记录"<<endl;cout<<" 3-删除记录"<<endl;cout<<" 4-查找(按姓名)"<<endl;cout<<" 5-排序"<<endl;cout<<" 6-显示记录"<<endl;cout<<" 7-全删"<<endl;cout<<" 0-退出"<<endl;cout<<" 输入选择:"<<endl;}void main(){ cout<<"************************************************** "<<endl;cout<<" "<<endl;cout<<" 欢迎使用电话簿管理系统"<<endl;cout<<" 祝您使用愉快"<<endl;cout<<" "<<endl;cout<<"***************************************************** "<<endl;system("pause");while(1){ UserDatabase s;system("cls");menu();int k;cin>>k;switch(k){ case 1:{ system("cls")cout<<"*****************************************"<<endl;cout<<" 增加记录"<<endl;char na[20],ph_num[12];Fphone *t=NULL;char w;do{ cout<<"请输入您要增加的用户的姓名";cin>>na;t=(s.query(na));if(t){ cout<<"用户已经存在,添加失败!!!"<<endl; }else{ cout<<"请输入用户的电话号码";cin>>ph_num;s.add_record(na,ph_num);cout<<"您添加的信息为:";cout<<"姓名:"<<na<<'\t'<<"电话号码:"<<ph_num<<endl;cout<<"成功添加"<<endl;}cout<<"是否继续?(Y or N)"<<endl;cin>>w;}while(w=='Y');break;}case 2:{ system("cls");cout<<"***************************************"<<endl;cout<<" 修改记录"<<endl;cout<<"***************************************"<<endl;char na[M],ph_num[N];Fphone *t=NULL;char w;do{ cout<<"请输入您要修改的用户的姓名";cin>>na;t=s.query(na);if(!t)cout<<"没有该用户!"<<endl;else{ cout<<"该用户原号码为:"<<t->getphone_num()<<endl;cout<<"请输入新的电话号码";cin>>ph_num;s.modify_record(t,ph_num);cout<<"成功修改"<<endl;}cout<<"是否继续?(Y or N)"<<endl;cin>>w;}while(w=='Y');break;}case 3:{ system("cls");cout<<"********************************************"<<endl;cout<<" 删除记录"<<endl;cout<<"************** ***************************"<<endl;char w;char na[M];int k;Fphone *p;do{ cout<<"请输入您要删除的用户的姓名";cin>>na;p=s.query(na);if(p==0)cout<<"没有该用户!"<<endl;else{ (*p).disp();k=p-s.getuser();s.delete_record(p,k);}cout<<"是否继续?(Y or N)"<<endl;cin>>w;}while(w=='Y');break;}case 4:{ system("cls");cout<<"*********************************"<<endl;cout<<" 查询记录"<<endl;cout<<"**********************************"<<endl;char na[M];int p=1;Fphone *t=NULL;char w;do{ cout<<"请输入您要查询的用户的姓名";cin>>na;t=s.query(na);if(t){cout<<"姓名:"<<t->getname()<<endl;cout<<"电话号码:"<<t->getphone_num()<<endl;}elsecout<<"对不起,没有此人信息!"<<endl;cout<<"是否继续?(Y or N)"<<endl;cin>>w;}while(w=='Y');break;}case 5:{ system("cls");cout<<" 请选择排序方式"<<endl;cout<<" 1.按姓名(升序) "<<endl;cout<<" 2.按电话号码(升序) "<<endl;cout<<" 3.按姓名(降序) "<<endl;cout<<" 4.按电话号码(降序) "<<endl;cout<<" 请输入你的选择:"<<endl;int k;cin>>k;switch(k){ case 1:s.sorta_name();cout<<"排序完成"<<endl;system("cls");break;case 2:s.sorta_phonenum();cout<<"排序完成"<<endl;system("cls");break;case 3:s.sort_name();cout<<"排序完成"<<endl;system("cls");break;case 4:s.sort_phonenum();cout<<"排序完成"<<endl;system("cls");break;}}case 6:{ system("cls");cout<<"*****************************************"<<endl;cout<<" 显示记录"<<endl;cout<<"*****************************************"<<endl;s.disp();system("pause");break;}case 7:{ system("cls");cout<<"您确定要删除所有记录吗?(Y or N)"<<endl;char q;cin>>q;if(q=='Y'||q=='y'){ cout<<"*********************************"<<endl;cout<<" 全部删除记录"<<endl;cout<<"*********************************"<<endl;s.clear();}else break;system("pause");break;}case 0:{ system("cls");cout<<"谢谢使用,再见!"<<endl;exit(0);}default:cout<<"不存在该选择,请重新输入要进行的操作:"<<endl;system("pause");break;}}}七.感想与心得1.电话簿管理程序较长,算法比较复杂,调试的过程中遇到了各种各样的问题。