电话簿管理程序设计
个人通讯录系统设计【范本模板】

个人通讯录系统设计摘要:系统主要为满足单个用户对联系人的管理和查询工作而设计。
系统使用Visual Basic 作为编程语言、选用Access 2003作为后台数据库,并用ADO对象和ADO Data 控件进行数据库编程,实现了用户对联系人信息的添加、查询、浏览、修改、删除和对基本用户的管理。
系统设计突出个性化、人性化的特点。
界面美观,友好.登录后即出现欢迎画面,为防止用户出现密码遗忘的情况,系统还创新性地设计了密码保护程序。
用户可通过回答密码提示问题,找回自己遗忘的密码,实现登录.用户可以随时修改密码,还可通过系统获得必要的帮助,查看系统的介绍。
关键字:通讯录 VB Access目录:一、选题背景—--——-—--—--——————--——--——————-————--————————---——-———21、系统开发背景--———-—-——-———————-—————--—---—————--——---——————22、设计思路-—-—-----—--———--—-——-—--—---—----——-————-—----—-———33、系统指导思想——-—---———-----————-—--—---—-——-—-----—-—-—----—34、应解决的主要内容—---—————————-—--—-—-——----——---——--—--—--—3二、可行性分析——----——-——-—----—-——-------—————-------—-————————-41、技术可行性------—-—-—-—————-——----—--—--—---——----—---————--42、经济可行性——--—-—--——-----————--————---—-—-—----——-———-—-—-—43、环境可行性-----—---—---—--——-----—--——--—----————---—---—-—-54、进度可行性—--—-—-—-————————-——---——-----—--————---—-——-———--5三、需求分析—-————--—----——--—-——---—-———-——--—-—-———-——-—--——51、用户需求分析-—————---——---—---—-—-—-—-—--—---—-——--—-——-——--52、业务流程分析---——-—-----—————-—-------——-———-—-———------——-—63、数据流程分析--—-——--—---—————---—-—--—-—-—-——-—-—--————————-64、数据字典-—-—---——————-——-——----—-——-—-———---—-------———-——75、处理逻辑分析—--——--——-—------——-——--—---—-—-—--———----——--—16四、系统设计-——--—-———------—-—---—-—-—--—-—--———-—--——-——----——161、总体结构设计--—-—-——-—------————-—-----—--—--—-——---—----——162、E—R模型设计-—----———--———-—-——---—-—--—————-—-—---———-—-—-—173、代码设计-——--——--————-—---——--—————-—---—-—-—-—-—-———————---174、输入输出设计—----——---—----—-——-——-—------———--—-———--——-——185、人机对话设计—--——-——-—-——---—-———-—----—-——---—-———---——----10五、系统实现方法——--—-——--——--—--—--——--———-——-———————---—--—--20六、系统测试及评价----—--—-—--——-—-—----——-—-—---—-—---—-—----20七、附录——-—--————-——--————--—-——————------————-——--—-——--—-——--—-21八、参考文献——-—----—---———-——--—---——————--——-—-—————-——————---42正文:一、选题背景1、系统开发背景通讯录在当今的日常生活工作中的应用是十分普及的。
C++课程设计电话本管理

VC++ 课程实验报告专业班级:学号:报告人:C++课程实验报告一、实验题目:电话本管理二、功能描述:这是一个电话簿管理小程序,利用文本文件储存电话簿数据,具有添加、删除、显示和查询联系人电话号码功能。
在这个小型管理程序中,类与类之间通过链表将各个数据相连接,形成一个通畅的应用小程序!在程序中,对于用户需求尽可能的予以满足.三、算法设计与实验步骤四、流程图:按ENTER进入电话本功能界面电话本功能界面(用户根据界面说明进行选择操作)0 进入帮助1添加联系人2查找并修改3姓名查找联系人4首字母近似查找5显示全部记录6删除记录用户根据帮助程序根据提示用户新建联系人姓名和电话号码输入联系人姓名,查找修改输入姓名查找输入首字母匹配查找显示电话薄全部数据逐一删除联系人数据,首先输入联系人姓名7退出电话簿程序并保存电话簿数据四、类与对象结构描述,核心程序代码(需要有相应的注释)1.程序中所定义的类 (1)电话簿记录类 class CTelRecord {private:int nYear,nMonth,nDay,nHour,nMinute,nSecond; //时间单元 char szName[20]; //电话簿数据:姓名和电话号码 char Last[20]; char szNumber[20]; public:CTelRecord(){} //构造函数CTelRecord(char *name,char *number);void SetRecord(char *name,char *last,char *number); //输出时间 int Compare(char *name); //根据姓名查找void SetName(char *name){strcpy(szName,name);} void SetNum(char *num){strcpy(szNumber,num);} void SetLast(char *last){strcpy(Last,last);}char *GetName(void){return szName;} //需通过函数访问的私有成员char *GetLast(void){return Last;} char *GetNum(void){return szNumber;} int GetYear(void){return nYear;} int GetMonth(void){return nMonth;}用户选择0后进入帮助界面1 怎样产生一个新纪录2 怎样显示我的电话本3 什么时候我有一种新版面4 什么时候有一种新版面5 退出帮助进入电话簿功能界面电话本功能界面int GetDay(void){return nDay;}int GetHour(void){return nHour;}int GetMinute(void){return nMinute;}int GetSecond(void){return nSecond;}void Show(); //打印数据void Modify(char *number); //修改结点函数int LookChar(char *szName); //按首字母查找匹配姓名};(2)定义结点类class CNode{private:CTelRecord *pData; //用于指向数据类指针CNode *pNext; //指向链表下一个结点指针public:CNode(){pData=0;pNext=0;} //结点构造CNode(CNode &node); //拷贝构造函数void ShowNode(){pData->Show();} //指向打印函数CTelRecord *GetData(void){return pData;}friend class CList; //定义链表类为友元类};(3) 定义链表类class CList{CNode *head_ptr,*current_ptr;public:CList(){head_ptr=NULL;} //构造函数void Help_me(); //帮助函数void AddNode(); //在首部添加结点void DeleteNode(); //删除结点void ShowList(); //显示所有记录void DeleteList(); //删除所有记录void Search(); //查找CNode *GetListHead(){return head_ptr;}void Insert(CNode *new_rec_ptr); //按顺序插入新节点CNode*Position_insertion_point(char name[20]);void ModNum(void); //修改号码void SearchFriends(void); //查找具有相似名的记录void load_list_from_file(void); //保存文件void write_list_to_file(); //把文件数据写入链表中};2.新增函数说明根据姓氏,返回其在链表中的正确位置,新节点即将插入此点。
《面向对象程序设计》教案

《面向对象程序设计》教案一、教案简介本教案旨在帮助学生掌握面向对象程序设计的基本概念、原理和方法,培养学生的编程能力和软件开发思维。
通过本课程的学习,学生将能够熟练运用面向对象的编程语言,如Java或C++,进行软件开发和设计。
二、教学目标1. 了解面向对象程序设计的基本概念,如类、对象、封装、继承和多态等。
2. 掌握面向对象程序设计的基本原则,如单一职责原则、开闭原则、里氏替换原则等。
3. 学会使用面向对象的编程语言进行程序设计和开发。
4. 培养学生的软件开发思维和团队协作能力。
三、教学内容1. 面向对象程序设计的基本概念1.1 类与对象1.2 封装1.3 继承1.4 多态2. 面向对象程序设计的基本原则2.1 单一职责原则2.2 开闭原则2.3 里氏替换原则2.4 接口隔离原则2.5 依赖倒置原则3. 面向对象的编程语言3.1 Java3.2 C++4. 面向对象的设计模式4.1 创建型模式4.2 结构型模式4.3 行为型模式四、教学方法1. 讲授法:讲解面向对象程序设计的基本概念、原理和编程方法。
2. 案例分析法:分析实际项目中的面向对象设计案例,让学生理解并掌握面向对象的设计思想。
3. 实践操作法:让学生通过编写代码,亲身体验面向对象程序设计的流程和方法。
4. 小组讨论法:分组进行讨论,培养学生的团队协作能力和解决问题的能力。
五、教学评价1. 课堂参与度:评估学生在课堂上的发言和提问情况,了解学生的学习兴趣和积极性。
2. 课后作业:布置相关的编程作业,检查学生对面向对象程序设计知识的掌握程度。
3. 项目实践:评估学生在团队项目中的表现,包括代码质量、设计思路和团队协作能力。
4. 期末考试:全面测试学生对面向对象程序设计知识的掌握情况。
六、教学资源1. 教材:推荐《Java面向对象程序设计》、《C++ Primer》等经典教材。
2. 在线资源:提供相关的在线教程、视频课程和编程练习平台,如慕课网、Coursera、LeetCode等。
c语言通讯录课程设计报告

一引言当今时代是飞速发展的信息时代。
在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。
计算机的最大好处在于利用它能够进行信息管理。
使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。
尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。
计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。
本系统就是为了管理而设计的。
通讯录管理系统的建立是可以有效节省同学、朋友、客户间日常交流的投资(指时间、精力),其设计理念很简单,变传统的纸张与笔录方式为计算机自动化进行通讯录信息管理系统,既省时间又提高效率。
因此在系统构建时,只要我们本着丰富通讯录的信息资源,为用户提供最为方便的快捷的信息阅览途径和管理手段,去吸引用户,那么通讯录管理系统是完全可行的。
通讯录软件设计的灵感来源于生活和工作中的需要。
如今,随着社会的飞速发展,信息时代改变着人们的各种生活方式。
人们的联系信息,联系方式变得复杂而多样化,以前所使用的各种电话簿、通讯本等小册子由于查找不方便、功能单一等缺陷已经无法胜任它的“时代使命”,而现在各种手机,商务通内设的电话簿尽管携带方便却又挥之不去其“记录量少,界面小,浏览不方便”的缺点。
工作中看到有些人巧妙地利用excell或者word制表格来建立通讯录,每逢用时再打开,可是查找极其不便,维护起来也麻烦。
通讯录系统设计,它的内容对于计算机来说是至关重要的,通讯录系统为计算机的使用者提供充足的信息和快捷的查询手段。
用c语言构建的通讯录系统设计,通过课上学到的和查阅一些文献的一些关于结构体[1]、数组、指针、函数以及循环函数的运用[1]和字符串的处理[2]等基本知识可以初步的实现通讯录的输入、显示、查找、删除、快速查询等通讯录简单而用的一些实用的功能,给人们带来更多的方便。
本管理系统设计合理、操作方便、运行稳定、功能完备,具有较高的实用价值。
本课程设计主要运用C语言中的结构体、数组、链表、等数据结构,设计一个简单的管理系统应用程序。
通讯录管理系统

通讯录管理系统姓名:学号:班级:导师:目录摘要 (2)第一部分 (3)1.1设计构思 (3)1.2系统数据流图: (4)1.3系统数据流程图: (5)1.4系统功能结构图: (6)1.5管理员用户部分功能图: (6)1.6普通用户部分功能图: (6)1.7开发及运行环境: (7)第二部分数据库设计: (7)2.1用户信息表(tb_User): (7)2.2资料信息表(tb_info) (8)第三部分通讯录管理系统的实现 (9)3.1 公共类的编写 (9)3.1.1 OperateAndValidate.cs类 (10)3.1.2 OperateAndValidate.cs类 (12)3.2 系统登录模块设计: (13)3.3 系统主窗体块模块设计:......................................................... 错误!未定义书签。
3.4 添加用户窗体块模块设计:................................................. 错误!未定义书签。
3.5 添加窗体块模块设计:......................................................... 错误!未定义书签。
3.6 修改密码窗体块模块设计:................................................. 错误!未定义书签。
第四部分总结 .............................................. 错误!未定义书签。
摘要日益繁多的人际交往使得我们很难搞清楚与每个人之间的联系方式,特别是对于做经常出差的人来说更是难,所以通讯录能够便捷的给我们带来所需要的相关信息。
而随着计算机的普及,人们的生活摆脱了传统式的记事本、电话簿,越来越多的靠计算机来帮助人们记住这些事情,极其简便。
管理归口分工及程序

4、 公文发放、传真归档 1、 所有公司文件发放到位,收件人要注意保存。‘ 2、 所有传真第一时间到位,并登记在册。 3、 所有传真当事人到前台领取,前台不负责送到。 4、 发放公司的公文由行政主管负责。
5、 客户档案管理(归口部门:客户服务部) 1、 客户自上门咨询起即建立客户档案表。 2、 凡签订合同的客户资料,自签约日起正式建立档案夹,统一
惠活动的通知等,由各部门经理负责通知到人,行政助理协 助贯彻,各部门经理负责两天内将执行情况及分析报告人事 行政部。 二十、 培训反馈(归口:人事行政部) 1、 凡各类培训后两天内各部门经理须反馈效果至人事行政部。 2、 人事部负责建立培训档案卡,并及时登录。 二十一、表格整理(归口:人事行政部、各行政助理) 1、 凡公司内部各类表格原件,均由前台保管。如发生表格短 缺,由前台用原件复印或安排印刷。 二十二、工资考核(归口:人事行政部) 1、 各行政助理配合人事主管详细统计各类考核处罚汇总。 2、 每月1日前将上月情况上报 二十三、考核(归口:人事行政部) 1、 定期对员工考核。 2、 人事主管负责将考核汇总上报总经理。 二十四、公司所有外在、内在形象包装(归口:企划部) 1、 随时跟踪调整。
二十六、各类与处罚相关的事务更改归口(总经理) 1、 所有处罚更改权归总经理所有。 2、 更改情况包括(事后补假、处罚金额更改、处罚取消等)。 3、 各部门经理有权对员工的处罚提出申诉,但无权更改。
更新日期:2010-06-19 生效日期:2010-07-01
电话簿管理系统修改的程序设计报告(参考)

课程设计报告题目电话薄管理系统——分组模块及其附属功能课程名称结构化程序设计课程设计院部名称信息技术学院专业计算机科学与技术班级学生姓名学号课程设计地点工科楼A101、1318 课程设计学时20学时指导教师金陵科技学院教务处制成绩电话簿管理系统修改的程序设计报告——分组模块及其附属功能(一)课程设计目的与要求1.目的1)了解并掌握C语言的基本知识和技能;2)基本掌握面向对象程序设计的基本思路和方法;3)提高综合运用所学的理论知识与方法分析和解决问题的能力;4)掌握C语言中的结构体、函数、文件操作等知识。
2.要求1)要求在设计的过程中,建立清晰的层次;2)在程序中要定义清楚,区分好类别,每个类别要有各自的属性和方法;(二)课程设计的主要内容1.项目名称:电话薄管理系统——分组模块及其附属功能2.实验设备及环境1)实验设备:教室机房2)硬件环境:具备C++、TC的计算机3)软件环境:C语言、C++3.系统功能介绍及结构设计软件各个模块功能:(1)、开场模块:首先是一个游戏界面,通过游戏来进入电话簿,游戏成功正常进入电话簿管理系统,退出游戏则进入紧急拨号界面。
(2)、对电话簿管理系统修改的模块:输入记录模块:主要实现将数据存入数组中,当从数据文件中读出记录时,它调用fread(&tele[count],sizeof(TELEBOOK),1,fp)文件读取函数,执行一次从文件中读取一条电话簿记录信息存入某个数组元素中的操作,并且这个操作在main()中调用执行,即在电话簿管理系统进入显示菜单界面时,该操作已经执行了。
若该文件中没有数据,则系统会提示数组为空,没有任何记录可操作,此时,用户应选择1,调用Add()函数,进行记录的输入,即完成在数组中添加元素的操作。
查询记录模块:主要实现在数组中按联系人姓名或电话或分组查找满足条件的记录。
在查询函数Qur()中,为了遵循模块化编程的原则,我们对在数组中进行的记录定位操作设计成了一个单独的函数int Locate(TELEBOOK temp[],int n,char findmess[],charnameorphonenum[]),参数findmess[]保存要查找的具体内容,nameorphonenum[]保存要查找的字段(值为字符串类型的name或phonenum或group),若找到该记录,则返回指向该记录的数组元素的下标;否则,返回一个-1的值。
0511590114周洵电话簿管理

C++课程设计实验报告姓名周洵学号0511590114班级05115901任课教师肖亮时间 2006-9-21教师指定题目电话簿管理评定难易级别 A实验报告成绩1.实验内容:电话簿管理1.1 程序功能介绍一个基本的电话簿管理程序,具有插入、删除、显示、修改和查询联系人的功能。
1.2 程序设计要求(1)增加纪录修改功能。
(2)增加显示功能(每屏显示数目可由用户自己设定)(3)汉化菜单和帮助2. 源程序结构流程框图与说明(含新增子函数的结构框图)3. 基本数据结构struct friend_node //结构体类型定义,包括:姓、名和电话号码{char last_name[20];//用户名字char first_name[15];//用户的姓char phone_num[12];//电话号码friend_node *next;};friend_node *head_ptr; //全程变量,链头指针friend_node *current_ptr; //全程变量,用于指明当前在链表中的位置//function prototypesvoid handle_choice(int choice); //--函数原形说明void add_record();//增加记录函数,用于输入新用户的信息void insert_node(friend_node *new_rec_ptr);//插入函数,用于将新结点插入链表中friend_node *position_insertion_point(char lastname[20]);//根据姓氏返回其在链表中的正确位置,新结点将插入此点void make_node_new_head(friend_node *new_rec_ptr);//将新结点设成链表头的函数void add_node_to_end(friend_node *new_rec_ptr);//将新结点插入链表尾的函数void move_current_to_end();//确认结点被插入在链表尾void display_list();//显示用户信息的函数void delete_record();//删除记录的函数void delete_head_of_list();//删除链表的头结点void delete_end_of_list(friend_node *previous_ptr);//删除链表最后的结点void delete_from_middle_of_list(friend_node *previous_ptr);//从链表中间删除结点int verify_delete();//确认是否删除的函数void delete_node(friend_node *previous_ptr);//删除已找到的结点void delete_list();//删除所有记录void search_by_lastname();//根据名字查找用户的函数void help_me();//帮助函数void revice_record();//修改记录的函数void display_onebyone_list();//按使用者要求的显示数目显示用户信息的函数4. 程序运行结果界面图1修改前图2修改后图3显示一名用户图4显示两名用户图5汉化前图6汉化后5. 课程设计遇到的技术问题与解决思路问题1:如何设计修改功能的函数解决办法:基本思路:查找目标---建立新信息---插入新信息---删除原记录首先根据姓名查找用户的方法找到需要修改的目标,然后建立一个新结点输入修改的内容,此时新信息储存在新结点中,再将新结点插入到链表中并将查找到的需要修改的结点删除。
手机通话记录管理系统设计报告

C++面向对象课程设计报告院(系):计算机工程学院专业:计算机网络学生姓名:__班级:__学号:题目:手机通话记录管理系统_____起迄日期:____设计地点:指导教师:完成日期: 2012 年 5 月 4 日一、课程设计目的进行本次C++面向对象程序设计课程设计主要是在学习了C++这门面向对象语言之后,依靠自己的理解自学MFC,掌握一种可视化编程的方法,加深对C++这门语言的理解并强化记忆。
同时,可以提高运用C++编程语言解决实际问题的能力,在进行课程设计的过程中对于一些算法的设计可以使我们更好的应对C++以及其他编程语言的综合编程能力,还能提高调查研究、查阅技术文献、资料以及编写软件设计文档的能力。
二、课程设计内容与实现的功能1)设计内容:1、模拟手机的通话记录功能,具有记录最新20个未接电话、已接电话、已拨电话(并记录时间,并按时间排序);2、相同的记录只记录最新的一个;3、符合课题的要求,实现响应功能,可以增加其他功能或者修饰,使程序更加完善合理;4、要求界面友好美观,操作简便易行。
2)实现基本功能:1、模拟手机的通话记录功能,具有记录最新20个未接电话、已接电话、已拨电话(并记录时间,并按时间排序);2、相同的记录只记录最新的一个;3)基于上述功能,又添加了几个功能,使程序模拟效果更合理些,添加功能包括:1、简易的电话簿电话薄功能:只实现能够读取出数据库中存储的10个联系人的姓名以及电话号码,可以根据个人需要往数据库中添加自己的联系人,之所以不在程序界面实现添加功能是考虑到可能这样会偏离设计的主题,不利于界面的美观。
2、实际的来模拟手机的拨打、接听、挂断、等待等的功能,将操作的结果存入拨打、未接、已接等的记录中,可以更好的实现通话记录的管理这一功能。
3、考虑到个人手机的通话管理功能,在本通话记录管理系统中,添加了一个删除记录的功能,可以将界面显示的记录与数据库中对应的记录同步删除,更加方便易行。
C语言课程设计题目

C语言程序编码训练题目一、程序设计题目:简单的学生成绩管理程序程序设计功能及要求:(1)总人数定义为宏,数据使用文件存放;(2)输入学生姓名学号,及五门成绩,并计算每个学生五门功课的平均分,并按平均分排列名次,若平均分相同则名次并列;结果写入文件并按格式打印在屏幕上。
⑶统计全班每门课程的平均分,并计算各分数段(60以下,60~69,70~79,80~89,90以上)的学生人数;结果写入文件,并按格式在屏幕上打印;⑷在屏幕上打印出所有不及格学生的下列信息:学号,不及格的课程名,该不及格课程成绩;⑸在开始画面加入简单的菜单便于选择各种功能。
例:1学生条目输入2成绩统计3分数段统计4不及格学生筛选⑹文件格式要求1.原始数据文件格式(具体数据和项目自行编写)学号姓名英语C语言高等数学…………..1张三7689782李四….….….2.输出数据文件(由程序自动生成)1)学生综合成绩文件。
2)学号姓名英语C语言高等数学…………….平均成绩名次1张三768978…………..2李四….….….3)统计结果文件。
4)分数段英语C语言高等数学………………….<602…60~698…70~795…80~8910…⑺加入优等生统计功能,要求按优等生条件筛选出优等生的条目存入单独文件,并输出到屏幕。
优等生标准(满足之一即可):1平均成绩上80。
2平均成绩及格但未上80,有单科成绩上90。
3平均成绩未及格,有单科满分。
二、程序设计题目:简单的同学通讯录程序设计[问题描述]具有数据插入、修改、删除、显示、查询和统计功能的电话簿管理程序。
[程序设计功能及要求]⑴人数不定,数据使用文件存放。
⑵记录每位同学的学号、姓名、性别、工作单位、电话号码和E-mail地址建立单独的条目,存入数据文件。
⑶可对记录中的姓名和电话号码等进行修改。
⑷可增加或删除记录⑸可显示所有保存的记录⑹加入统计功能,可以统计男女同学或总人数。
⑺加入查询功能,通过姓名、学号或电话号码查询到同学的条目。
Java课程设计通讯录管理系统

摘要随着社会的发展,人际关系变来越重要,为了保持良好的人际关系,必须常与亲戚朋友,同学同事保持联系,但有时候存在许多限制条件,因此我们需要为了快速查找联系人的信息,节省查找时间,开发通讯录管理系统。
通讯录管理系统是一个基于C/S模式的个人通讯录管理系统,它是将自己的联系人的具体信息集中处理,成为一个方便人们使用的小软件。
在开发过程中应用java,JDK,MYSQL,SWING等技术,由于开发工具与数据库之间的良好使用,可以为开发带来方便,使之成为可视性的系统。
通过采用相关技术,将系统设计的功能全部实现。
功能包括:用户登录,添加联系人信息,修改联系人信息,删除联系人信息,查询联系人信息,可以浏览全部通讯录联系人,可以根据数据表的歌字段来查询你要找的联系人等功能。
关键字:C/S架构,联系信息,通讯录,数据库目录一、需求分析 (2)二、系统总体规划 (2)三、程序流程 (2)四、设计步骤 (5)1.数据库表的设计 (5)2.详细设计 (5)五、设计总结 (9)六、结束语 (10)六、参考文献 (11)七、程序清单 (12)1一需求分析通讯录在当今的日常生活工作中的应用是十分普及的,每个人都拥有大量的通讯录资料信息,当前大家一般都用手工来记录所有的通讯录信息。
但随着时代的发展,人们的联系方式及信息变得复杂多样,通讯录信息大量增加,导致管理这些信息资料就成了问题。
直接操作来查找,添加,修改,删除这些信息,由于数据多,工作量十分巨大,查找,编辑都很困难,而且极易出错,容易造成资料的混乱或丢失。
在各种手机,上午通内设的电话簿尽管携带方便却又存在“记录量少,界面小,浏览不方便,记录信息不全面”的缺点。
有人利用Excel或Word编制通讯录,虽然数据比较全面,信息比较充分,可是查找及其不便,维护起来也麻烦,所以运用文件或数据库技术建立一个通讯录管资料理系统十分必要,使通讯录资料管理工作规范化,系统化,程序化,避免资料管理中的混乱。
C语言课程设计-通讯录管理系统

3.1.3 显示删除功能的界面
3.1.4 查找功能:
通过5:find—by—name 用姓名来查找个人的通讯录信息 通过6:find—by—tel 用电话号码来查找个人的通讯录信息
3.1.5 修改功能的界面:
输入姓名后的系统界面: 输入修改信息后的系统界面:
3.1.6添加功能的界面:
选择1后的系统界面:
struct student one; printf("\nInput tel:"); scanf("%s",telkey); if((fp=fopen(filename,"rb"))==NULL) { printf("\nCann't open this addressbook!!!"); exit(); } while(!feof(fp)) { fscanf(fp,"%s%s%s%s%s\n",,one.num,one.dis,one.tel,one.addr); if(!strcmp(telkey,one.tel)) { printf("\n\nHave finded,as follow:\n"); printf(" name num dis tel addr"); printf("\n%-10s%-10s%-10s%-20s%-20s\n",,one.num,one.dis,one.tel,one.addr); k=1; } } if(!k) printf("\n\nSorry,there is no this student!!"); fclose(fp); } void output() { struct student one; if((fp=fopen(filename,"r"))==NULL) { printf("\nCann't open this addressbook!!!"); exit(0); } /* printf("\n\n%20s\n"," \nCann't open this addressbook\n");*/ while(!feof(fp)) {
电话号码簿管理系统,课程设计报告,

目录摘要 (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)将指定电话从电话簿中删除。
线性数据结构的应用案例分析

线性数据结构的应用案例分析在计算机科学中,数据结构是计算机存储、组织数据的方式。
线性数据结构是其中一种常见的数据结构类型,它将数据元素按照线性的顺序存储和访问。
线性数据结构的应用非常广泛,本文将通过几个案例分析,展示线性数据结构在实际生活和计算机领域中的应用。
案例一:任务列表假设我们需要设计一个任务管理系统,用户可以将待办事项添加到任务列表中,并且能够按照添加的顺序查看任务。
这个问题可以使用线性数据结构解决。
我们可以使用数组或链表来实现任务列表,每个任务被存储为一个节点。
当用户添加一个新任务时,我们可以将它添加到列表的末尾。
当用户查看任务列表时,我们可以按照顺序输出每个任务。
这样,用户可以方便地管理自己的待办事项。
案例二:电话簿假设我们需要设计一个电话簿应用程序,用户可以存储和查找联系人的电话号码。
这个问题也可以使用线性数据结构解决。
我们可以使用数组或链表来实现电话簿,每个联系人被存储为一个节点,包含姓名和电话号码两个属性。
当用户添加一个新联系人时,我们可以将它添加到电话簿的末尾。
当用户查找联系人时,我们可以按照姓名顺序遍历电话簿,找到匹配的联系人并返回其电话号码。
这样,用户可以方便地管理自己的联系人信息。
案例三:栈的应用栈是一种特殊的线性数据结构,它遵循后进先出(LIFO)的原则。
栈的应用非常广泛,以下是几个例子:1. 网页浏览器的后退功能:当我们在浏览网页时,浏览器将每个访问的网页存储在一个栈中。
当用户点击后退按钮时,浏览器从栈中取出上一个访问的网页,并显示在屏幕上。
2. 撤销操作:在文本编辑器或图形设计软件中,我们可以使用栈来实现撤销功能。
每一次操作都被存储为一个节点,并按照操作的顺序存储在栈中。
当用户点击撤销按钮时,软件从栈中取出上一个操作,并撤销该操作。
3. 函数调用堆栈:在计算机程序中,函数的调用和返回也可以使用栈来管理。
当一个函数被调用时,函数的上下文(局部变量、返回地址等)被存储在栈中。
App Inventor手机通信录设计报告

App Inventor手机通信录设计报告学号:13734118姓名:张凡专业:计算机网络管理与信息安全任务与要求任务:完成手机通信录的设计要求:1、完成界面设计,要求至少有3个以上的数据项;2、具有查找功能;3、能够保存;4、可以拨打电话、发短信;5、屏幕有背景图,且可以改变。
(可选)6、完成设计方案、设计成果、总结与思考一、设计方案通过电话簿的设计,可以实现联系人的姓名、手机号的增加、删除、保存、查询等一些基本信息,当然也要能实现打电话、发短信这些功能。
这对自己来说,有一定的难度,通过自己的慢慢摸索,终于完成了整个作业,程序也能很好的运行。
功能:1.程序启动:当程序启动后,会显示第一个联系人的姓名、手机号。
自己总共存储了5位联系人。
2.点击【下一个】键:当点击“下一个”键时,程序显示第二个联系人,再点击,就会显示第三个,以此类推;若当前联系人是最后一个,则点击“下一个”键时显示第一位联系人。
3.点击【上一个】键:当点击“上一个”键时,程序显示前一个联系人,再点击,就会显示再前一个,以此类推;若当前联系人是第一个,则点击“下一个”键时显示最后位联系人4.点击【添加】键:当用户点击“添加”键时,一个新的联系人被添加到电话列表中。
5.点击【删除】键:当用户点击“删除”键时,则当前联系人被从列表中删除。
6.点击【保存】键:屏幕上的人名和号码可以被修改,如果要保存修改的内容,则可以点击这个键完成。
7.点击【查找】键:当用户点击“查找”键时,也可以实现点击“上一个”、“下一个”键的效果,当然它的效果不仅仅指这个,可以查找到你所要找的联系人的信息。
8.点击【发信息】键:通过点击“发信息”键,来达到发信息的效果。
9.点击【打电话】键:通过点击“打电话”键,来达到打电话的效果。
二、设计成果组件设计逻辑设计1.程序启动:当程序启动后,会显示第一个联系人的姓名、手机号。
自己总共存储了5位联系人。
2.点击【下一个】键:当点击“下一个”键时,程序显示第二个联系人,再点击,就会显示第三个,以此类推;若当前联系人是最后一个,则点击“下一个”键时显示第一位联系人。
数据结构课程设计题目

数据结构课程设计题目题目一:工资管理程序功能简介:完成员工工资信息管理,如员工工资信息的新建、存储、显示、修改和删除等功能(系统功能可充分自由发挥),最好用文件系统存储数据信息。
题目二:物品库存管理程序功能简介:实现物品库存管理,如进库、出库、浏览、修改等功能(系统功能可充分自由发挥),最好用文件系统存储数据信息。
题目三:个人财政支出管理程序功能简介:个人财政支出管理程序,如完成收入、支出、赢余的记录和管理等功能(系统功能可充分自由发挥),最好用文件系统存储数据信息。
题目四:电话簿管理程序功能简介:一个基本的电话簿管理程序,如插入、删除、显示、修改和查询联系人电话号码等功能(系统功能可充分自由发挥),最好用文件系统存储数据信息。
题目五:股票交易系统程序功能简介:股票交易系统的管理,如增加新股票、删除旧股票、挂起股票、住手交易、修改股票的名称、代码、股票买卖等功能(系统功能可充分自由发挥),最好用文件系统存储数据信息。
题目六:学生信息管理程序功能简介:完成学生基本的管理,如学生基本信息的新建、存储、显示、修改和删除等功能(系统功能可充分自由发挥),最好用文件系统存储数据信息。
题目七:学生成绩管理程序功能简介:完成学生成绩管理,如学生成绩信息的录入、显示、修改和浏览等功能(系统功能可充分自由发挥),最好用文件系统存储数据信息。
题目八:运动会分数统计任务:参加运动会有 n 个学校,学校编号为1……n。
比赛分成 m 个男子项目,和 w 个女子项目。
项目编号为男子1……m,女子m+1……m+w。
不同的项目取前五名或者前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或者前三名由学生自己设定。
(m<=20,n<=20)功能要求:可以输入各个项目的前三名或者前五名的成绩 ;能统计各学校总分,可以按学校编号或者名称、学校总分、男女团体总分排序输出 ;可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或者前五名的学校。
JAVA程序设计报告

JA V A程序设计报告姓名:学号:成绩:__________同组人员:东南大学自动化学院一、引言Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言以下简称Java语言和Java平台的总称..Java平台由Java虚拟机Java Virtual Machine和Java 应用编程接口Application Programming Interface、简称API构成..其具有的特点如下:1、Java语言是简单的..Java语言的语法与C语言和C++语言很接近;使得大多数程序员很容易学习和使用Java..另一方面;Java丢弃了C++ 中很少使用的、很难理解的、令人迷惑的那些特性;如操作符重载、多继承、自动的强制类型转换..特别地;Java语言不使用指针;并提供了自动的废料收集;使得程序员不必为内存管理而担忧..2、Java语言是一个面向对象的..Java语言提供类、接口和继承等原语;为了简单起见;只支持类之间的单继承;但支持接口之间的多继承;并支持类与接口之间的实现机制关键字为implements..Java语言全面支持动态绑定;而C++ 语言只对虚函数使用动态绑定..总之;Java语言是一个纯的面向对象程序设计语言..3、Java语言是分布式的..Java语言支持Internet应用的开发;在基本的Java应用编程接口中有一个网络应用编程接口java;它提供了用于网络应用编程的类库;包括URL、URLConnection、Socket、 ServerSocket等..Java的RMI远程方法激活机制也是开发分布式应用的重要手段..二.问题描述设计一个家庭通讯录小管理程序;请构建一个小数据酷;数据库字段为联系人姓名、家庭住址、移动电话、固定电话..要求如下:数据信息的录入功能;信息的查找功能;信息的删去功能;实现信息的打印功能..三.问题分析通讯簿管理现在是人们办公中不可缺少的一项环节;可以有效的管理众多的联系人的相关信息;实现查找信息的便捷化;添加联系人的简易化;以及及时修改联系人相关信息;删去不必要的联系人信息;为人们在使用过程创造便捷化和简易化;可是长期以来人们都是通过手工的方式来管理学生的成绩的;而且当进行成绩排名的时候这项工作就比较繁琐了;通过手工既耗时又耗力..为了使这项工作变得简单易行;开发一个通讯簿管理系统是很有必要的..要求该系统有如下的功能:1.可浏览全体联系人的成绩情况2.可添加联系人的具体信息3.可删除联系人的具体信息4.可进行联系人的排序查找5.可进行联系人信息的修改6.将数据储存在数据库中保存四.系统功能结构五.在设计中完成的模块本Java电话簿管理系统主要分为三个模块:界面模块、监听操作模块、数据库操作模块..我在程序开发中主要完成了事件监听的模块..1.实现方式程序开始定义了菜单栏和菜单项JMenuBar menubar;JMenu setmenu; caozuo;JMenuItem name; data; addrecord; delrecord; selrecord; updrecord;因此要对定义的Mennuitem进行事件监听;items事件的interface 为ItemListener ;方法为itemstatechangeitemevent..还定义了ButtonJButton add; //添加按钮JButton select;所以我通过 .addActionListenerthis;来对每个菜单项的items和每个Button进行事件监听;在程序结尾处又重新定义每个事件的方法如下..public void actionPerformedActionEvent ae{}接下来用了if"按姓名排序" == ae.getActionCommand{}else if"按序号排序" == ae.getActionCommand{}else if"添加记录" == ae.getActionCommand{}else if"查找记录" == ae.getActionCommand{}else if"修改记录" == ae.getActionCommand{}else if"删除记录" == ae.getActionCommand{}等方法从新定义了每一个事件的具体处理方法..2.具体定义方式A.if"按姓名排序" == ae.getActionCommand{}此方法作用是将信息按姓名进行排列getAllRecord;int count = defaultModel.getRowCount;forint i = 0; i < count - 1; i++forint j = i + 1; j < count; j++ {String min = null;String max = null;min = String.valueOfdefaultModel.getValueAti; 1;max = String.valueOfdefaultModel.getValueAtj; 1;ifminpareTomax > 0{rowchangei; j;}else{B.else if"按序号排序" == ae.getActionCommand getAllRecord;int count = defaultModel.getRowCount;forint i = 0; i < count - 1; i++forint j = i + 1; j < count; j++{int min = 0;int max = 0;min = Integer.valueOfString.valueOfdefaultModel.getValueAti; 0; max = Integer.valueOfString.valueOfdefaultModel.getValueAti; 0; ifmin > max{rowchangei; j; }else{ };C. else if"添加记录" == ae.getActionCommand此操作涉及数据库的链接和添加信息;所以我从网上当下来的下面的程序片段String getaddname = t_name.getText;String getadd_addr = t_addr.getText;String getadd_guhua = t_guhua.getText;String getadd_mobilenum = t_mobile_num.getText;ifgetaddname.length == 0 || getadd_addr.length == 0JOptionPane.showMessageDialogthis; "请输入姓名和电话号码"; "Warning"; RMATION_MESSAGE;else{ResultSet rs;Connection con;Statement sql;try{ Class.forName"sun.jdbc.odbc.JdbcOdbcDriver"; }catchClassNotFoundException e{JOptionPane.showMessageDialogthis; "ClassNotFoundException"; "Warning"; RMATION_MESSAGE; }{con=DriverManager.getConnection"jdbc:odbc:phone"; ""; "";sql=con.createStatement;sql.executeUpdate"INSERT INTO 电话簿姓名;家庭住址;固定电话;移动电话V ALUES'" + getaddname + "';'" + getadd_addr + "';'" + getadd_guhua + "';'" + getadd_mobilenum + "'";rs=sql.executeQuery"SELECT FROM 电话簿WHERE 姓名='" + getaddname + "' AND 家庭住址='" + getadd_addr + "'";long getaddxuhao = 0;while rs.next{getaddxuhao = rs.getLong"序号";}defaultModel.addRownew Vector;//在表格中添defaultModel.setValueAt getaddxuhao; defaultModel.getRowCount - 1; 0;defaultModel.setValueAt getaddname; defaultModel.getRowCount - 1; 1;defaultModel.setValueAt getadd_addr; defaultModel.getRowCount - 1; 2; defaultModel.setValueAt getadd_guhua; defaultModel.getRowCount - 1; 3;defaultModel.setValueAtgetadd_mobilenum;defaultModel.getRowCoun -con.close;catchSQLException e{JOptionPane.showMessageDialogthis; "SQLException"; "Warning"; RMATION_MESSAGE;}catchException e{JOptionPane.showMessageDialogthis; "Exception"; "Warning"; RMATION_MESSAGE;} }t_name.setText"";t_addr.setText"";t_guhua.setText"";t_mobile_num.setText"";}D.else if"查找记录" == ae.getActionCommand也是从网上查到的;E.else if"修改记录" == ae.getActionCommand从书上摘抄的F.else if"删除记录" == ae.getActionCommand也是从书上抄的六.操作简介打开系统会看到如下图1的系统界面图11.在添加栏中输入要添加人的相应姓名、家庭住址、固定电话、移动电话后;点添加按钮就会将要添加的信息添加到下面的显示栏中;同时也保存了添加的信息..同时在下面的显示栏中会出现你所记录的信息的序号;是对已记录信息的个数的统计..如图1所示..2.在相同的文本区中输入要查询人的姓名然后点击右边的查找按钮就可以将要查询的人的信息显示在下面的显示框中;方便查找..如图2所示为输入姓名“马飞”点击查找按钮后的界面..图23.在菜单栏上点击操作选项会弹出下拉项;点击“删除记录”就会弹出如图3所示的对话框;输入要删除人的姓名就可以把该人的信息删除;如果记录中没有要删除的人;则会出现一提示对话框给出“该人不存在”的提示信息..图33.在菜单栏的操作项下点击“修给记录”按钮会弹出对话框依次要求输入被修改人的姓名;然后是“要修改的家庭住址”、“要修改的固定电话”、“要修改的移动电话”..用户可根据要修改的项目点击“确定”或“撤销”按钮..方便的对信息进行修改..具体信息如图4、图5、图6、图7所示..图4 图5图6 图74.点击设置菜单下的“按姓名排序按钮”;在下面的显示框中就会出现按姓名排序的列表;主要是按照英文首字母的顺序从a拍到z的..若点击“按序号排序按钮”;显示框中就会列出按照顺序排列的相关人的信息..如图8所示图8七.参考文献1苗春义. Java项目开发全程实录J . 北京:清华大学出版社;2008.6 2辛运帏、绕一梅、马素霞. java程序设计J . 北京:清华大学出版社;2006.8。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.设计内容:电话薄管理程序存储的数据包括:人名,工作单位,电话号码和E-mail地址有如下功能:1)加入一个新的电话号码2)删除一个电话号码3)显示保存的已有的电话号码4)修改功能5)排序功能(按电话号码,按姓名字母顺序)6)查询功能(按人名查电话号码,按电话号码查人名)要求:1)程序运行开始,首先显示一个命令菜单。
用户选择那条命令,就调用那项功能。
2)显示数据时,一页显示不下,可以分页显示。
1、设计目的通过本次课程设计了解指针、函数、文件、链表等在实际中的具体应用及他们各自特点,并通过这次实习能达到熟练应用c语言来编辑一些简单的可以在生活中使用的程序的目的,而且学会添加、删除、修改、排序、查找、显示等功能在c语言下的实现。
2、3、程序代码#include<stdio.h> /*标准输入输出库*/#include<conio.h> /*界面处理库*/#include<stdlib.h> /*标准库*/#include<string.h> /*处理字符串函数库*/char filename[20]="E:\\tx123.txt";struct phone /*定义结构体变量*/{char name[10]; /*存放姓名*/char mobile[15]; /*存放手机号码*/char phone[15]; /*存放家庭电话*/char company[20]; /*存放工作单位*/char add_Email[20]; /*存放Email地址*/struct phone *next; /*存放下一个节点的地址*/};typedef struct phone tel; /*重命名*/tel *head=NULL;int z=1,x=1; /*标记量x,z*/void showmenu(); /*显示功能菜单*/void add( ); /*控制添加记录*/void creat(); /*添加记录并按姓名排序*/void modify(); /*修改记录函数*/void searchshow(); /*查找功能显示*/tel *search(); /*查找菜单*/tel *searchname(); /*按人名查找*/tel *searchmob(); /*按手机号码查找*/tel *searchph(); /*按家庭号码查找*/void del(); /*删除记录函数*/void show(); /*显示全部记录*/void save(); /*保存函数*/void openfile(); /*输出文件到链表*/void fre(); /* 释放链表空间*/void showmenu() /*显示功能菜单*/{ int i;clrscr();for(i=0;i<80;i++)printf("%c",14);printf("\n\t\t********************************************\n"); printf("\t\t\t欢迎使用通讯录管理系统");printf("\n\t\t********************************************\n"); printf("\n\n\t\t\t******请选择你的操作******\n");printf("\t\t\t +-------------------------------+\n");printf("\t\t\t | 1 增加记录|\n");printf("\t\t\t | 2 修改记录|\n");printf("\t\t\t | 3 查找记录|\n");printf("\t\t\t | 4 删除记录|\n");printf("\t\t\t | 5 显示全部记录|\n");printf("\t\t\t | 0 退出|\n");printf("\t\t\t +-------------------------------+\n");printf("\n\n\t注意!!输入电话号码或Email要在英文状态下,中文状态无法输入!!\n\n"); printf("请在0--6选择:\n");for(i=0;i<80;i++)printf("%c",14);}void add( ) /*控制添加记录*/{int x=1;printf("开始添加纪录,在添加记录过程中按0 停止添加\n");while(x!=0){do{ creat();printf("操作完成\n");break;}while(1);printf("按0结束添加!!按其他数字键,继续添加!!!\n");scanf("%d",&x);if(x==0){ save();system("cls");}}}void creat() /*添加记录并按姓名排序*/{ int i;tel *new,*p1,*p2;new=(tel *)malloc(sizeof(tel));aa: printf("\t\t\t请输入姓名:");scanf("%s",new->name);printf("\t\t\t请输入工作单位:");scanf("%s",new->company);printf("\t\t\t请输入手机号码:");scanf("%s",new->mobile);printf("\t\t\t请输入家庭电话:");scanf("%s",new->phone);printf("\t\t\t请输入Email地址:");scanf("%s",new->add_Email);p1=head; /*将头指针赋给变量p1*/if(head!=NULL) /*先判断是否有记录*/do{if((strcmp(p1->mobile,new->mobile))==0||(strcmp(p1->phone,new->phone))==0){printf("记录已经存在\n");printf("\n%-10s%-20s%-15s%-15s%-20s\n",p1->name,p1->company,p1->mobile,p1->phone,p1->add_Email);printf("是否继续添加?1 继续添加\t其他数字键重新输入\n");scanf("%d",&i);if(i==1)break;elsegoto aa;}p1=p1->next;}while(p1!=NULL);p1=head;if(head==NULL) /*检测是否为空链表*/{head=new; /*链表为空,插入的结点作为第一个结点*/new->next=NULL;}else{while((p1->next!=NULL)&&(strcmp(p1->name,new->name)<0)){ p2=p1;p1=p1->next;}if((strcmp(p1->name,new->name)>0)){if(head==p1){ new->next=head;head=new;}else{ p2->next=new;new->next=p1;}}else{ p1->next=new;new->next=NULL;}}}void modify() /*修改记录函数*/ { tel *new=search();if(z==0);else if(x==0);else if(z==0&&x==0);else{ if(new==NULL){printf("请输入新纪录:\n");printf("\t\t\t请输入姓名:");scanf("%s",head->name);printf("\t\t\t请输入工作单位:"); scanf("%s",head->company);printf("\t\t\t请输入手机号码:"); scanf("%s",head->mobile);printf("\t\t\t请输入家庭电话:"); scanf("%s",head->phone);printf("\t\t\t请输入Email地址:"); scanf("%s",head->add_Email); save();}else{printf("请输入新纪录:\n");printf("\t\t\t请输入姓名:");scanf("%s",new->name);printf("\t\t\t请输入工作单位:"); scanf("%s",new->company);printf("\t\t\t请输入手机号码:"); scanf("%s",new->mobile);printf("\t\t\t请输入家庭电话:"); scanf("%s",new->phone);printf("\t\t\t请输入Email地址:"); scanf("%s",new->add_Email);save();}}printf("\n\n");printf("\t\t\t按任意键继续");getch();system("cls");}void searchshow() /*查找功能显示*/{ int i;clrscr();for(i=0;i<80;i++)printf("%c",16);printf("\n\t\t********************************************\n"); printf("\n\n\t\t\t******请选择你的操作******\n");printf("\t\t\t +-------------------------------+\n");printf("\t\t\t | 1 按人名查找|\n");printf("\t\t\t | 2 按手机号码查找|\n");printf("\t\t\t | 3 按家庭号码查找|\n");printf("\t\t\t +-------------------------------+\n");printf("\n\t\t********************************************\n"); printf("请在1--3选择:\n");for(i=0;i<80;i++)printf("%c",17);}tel *search() /*查找菜单*/{ int i;tel *p1=NULL,*p2=NULL,*p=NULL;searchshow();loop:scanf("%d",&i);if(i>=1&&i<=3)switch(i){case 1:p2=searchname();break;case 2:p2=searchmob();break;case 3:p2=searchph();break;}else{printf("选择错误,请重新选择\n\n");goto loop;}p1=head;while(p1!=NULL){if((strcmp(p1->name,p2->name))==0||(strcmp(p1->mobile,p2->mobile))==0||(strcmp(p1->phone,p2->phone))==0){printf("找到记录:\n");printf("%-10s%-20s%-15s%-15s%-20s\n","姓名","工作单位","手机号码","电话号码","家庭住址");printf("\n%-10s%-20s%-15s%-15s%-20s",p1->name,p1->company,p1->mobile,p1->phone,p1->a dd_Email);getch();break;}p=p1;p1=p1->next;}if(p1==NULL){printf("\t\t\t电话本中无此记录\n\n");printf("\t\t是否重新进行?按1 继续\t\n");scanf("%d",&i);if(i==1){free(p2);goto loop;}}return p;}tel *searchname() /*按人名查找*/{tel *p2=NULL;printf("\t\t请输入姓名:");p2=(tel *)malloc(sizeof(tel));scanf("%s",p2->name);return p2;}tel *searchmob() /*按手机号码查找*/{ tel *p2=NULL;printf("\t\t请输入手机号码:");p2=(tel *)malloc(sizeof(tel));scanf("%s",p2->mobile);return p2;}tel *searchph() /*按家庭号码查找*/{ tel *p2=NULL;printf("\t\t请输入家庭电话:");p2=(tel *)malloc(sizeof(tel));scanf("%s",p2->phone);return p2;}void del() /*删除记录函数*/{tel *p2=search();int i;if(z==0);else if(x==0);else if(z==0&&x==0);else if(p2==NULL){printf("\n\n\n确实要删除吗?\t按1 删除\t按其他数字保留!!\n"); scanf("%d",&i);if(i==1)head=head->next;save();printf("\t\t\t按任意键返回\n");getch();system("cls");}else{printf("\n\n\n确实要删除吗?\t按1 删除\t按其他数字保留!!\n"); scanf("%d",&i);if(i==1){p2->next=p2->next->next;save();}printf("\t\t\t按任意键返回\n");getch();system("cls");}}void show() /*显示全部记录*/{ tel *p1=NULL;clrscr();if(head==NULL) /*判断是否是空链表*/{printf("\n\t\t\t电话簿中没有记录,请输入纪录后,在使用本能!\n");printf("\t\t\t按任意键返回\n");getch();return;}p1=head;printf("\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~\n");printf("%-10s%-20s%-15s%-15s%-20s\n","姓名","工作单位","手机号码","电话号码","E_mail 地址");printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~\n");do{printf("%-10s%-20s%-15s%-15s%-20s",p1->name,p1->company,p1->mobile,p1->phone,p1->add_Email);p1=p1->next;}while(p1!=NULL);printf("\t\t\t按任意键返回\n");getch();system("cls");}void save() /*保存函数*/{tel *p1=NULL;FILE *fp;if((fp=fopen(filename,"w"))==NULL){printf("不能打开文件\n");return ;}p1=head;for(;p1!=NULL;p1=p1->next){fprintf(fp,"%s\t\t%s\t\t%s\t\t%s\t\t%s\n",p1->name,p1->company,p1->mobile,p1->phone,p1->add_Email);}printf("操作完毕\n");fclose(fp);}void openfile() /*输出文件到链表*/{FILE *fp;tel *p1=NULL,*p2=NULL;head=NULL;if((fp=fopen(filename,"r"))==NULL) /*打开文件*/{ /*文件不存在,表明第一次使用本电话簿*/ printf("\n\t\t\t********这是一个新电话簿*********\n");return ;}while(!feof(fp) ) /*循环读取文件数据*/{p1=(tel*)malloc (sizeof(tel));fscanf(fp,"%s%s%s%s%s\n",p1->name,p1->company,p1->mobile,p1->phone,p1->add_Email); if(head==NULL){head=p1;p1->next=NULL;p2=p1;}else{p2->next=p1;p1->next=NULL;p2=p1;}}fclose(fp);}void fre() /* 释放链表空间*/{tel *p=head;while(head!=NULL){head=head->next;free(p);p=head;}free(head);}main(){int x;openfile(); /*读取文件到链表*/textbackground(4);/*设置背景颜色*/textcolor(0); /*设置字体颜色*/while(1) /*设置循环条件为真*/{showmenu(); /*显示各个功能*/fflush(stdin); /*刷新缓存区,即清除上一次的存储数据*/printf("请作出您的选择:");scanf("%d",&x);if(x>=0&&x<=5){switch(x){ clrscr();case 1:add();break; /*添加记录函数*/case 2:modify();break; /*修改记录函数*/case 3:search();break; /*查找记录函数*/case 4:del();break; /*删除记录函数*/case 5:show();break; /*显示全部记录*/case 0:fre();printf("\n\t\t欢迎再次使用通讯录管理系统,再见!\n\n");exit(0); /*程序正常退出*/}}else printf("\n\n选择错误,请再次选择!\n");}}4、运行结果具体运行结果见实际操作5、分析与讨论大体上设计的程序与要求符合,但在分页程序的设计上,虽然我们设计出了较简单的可行的分页程序,可是在糅合进主程序时我们遇到了问题,主要是添加记录后显示的结果中始终带有乱码,这里可能是因为主程序的复杂性使输入、输出的数据格式与分页程序中的无法相匹配。