




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、通讯录操作系统一.需求分析当今时代是飞速发展的信息时代。在各行各业中离不开信息管理以及处理,这正是计算机被广泛应用于管理系统的原因。计算机管理的好处在于利用它能够进行信息储存以及信息编辑。用计算机储存和控制,大大提高了工作效率也减少了好多人的工作量。 通讯录信息系统不仅仅帮助了人们记忆,同时也为不少管理者提供了方便。 其设计理念较简单,将传统的纸张与笔录方式改为计算机自动化进行通讯录信息管理,既省时间又提高工作效率。用c语言构建的通讯录系统设计,通过课上学到一些关于结构体、数组、指针、函数以及循环函数的运用和字符串的处理等基本知识可以初步的实现通讯录的输入、显示、查找、删除等简单实用功能,给人
2、们带来更多的方便。通讯录信息系统的主要功能清单如下: 1) 建立通讯录链表; 2) 通讯者结点的插入(按编号的次序插入有序通讯录表); 3) 通讯者信息的查询(按编号或姓名查找通讯者信息); 4) 通讯者信息的删除 (按编号或姓名删除通讯者信息); 5) 通讯录的显示 (显示所有通讯者信息列表); 6) 通讯录信息系统的退出测试数据见调试分析。二.详细设计算法分析:主菜单 创建通讯录显示通讯录查找通讯录删除通讯录退出通讯录插入通讯录主函数流程图:int mm6返回 m结束开始输入选项06666真假主函数流程图创建函数流程图:开辟一个新结点,并使p1,p2指向它读入一个通讯者信息给p1所指的结点
3、 head=null,n=0当读入的p1-num不是零n=n+1yesif(n=1)nohead=p1(把p1所指的结点作为第一个结点)p2-next=p1(把p1所指的结点连接到表尾)p2=p1(p2移到表尾)再开辟一个新结点,使p1指向它读入一个学生数据给p1所指结点表尾结点的指针变量置null显示通讯录流程图:p=head,使p指向第一个结点 p指向的不是尾真结点 假输出p所指向的结点p指向下一个结点当p指向的不是尾结点查找函数流程图(1) find函数:i=0in-1?没有找到是否继续调用查找函数search函数流程图开始结束假真删除操作流程图: 链表真是一个空表 假输出“空表”p1=
4、head当num!=p-num以及p1所指的结点不是表尾结点p2=p1(p2后移一个位置)p1=p1-next(p1后移一个位置) p1是要删除是的结点 否 p1所指是是头结点 否输出“找不到”的信息head=p1-next(删除头结点)p2-next=p1-next(删除一个结点)插入函数流程图:p1=head,p0=stud 原来的是链表是空表 否将p0所指的结点作为唯一结点当p0-nump1-num以及p1所指的不是表尾结点p2指向p1的位置p1向后移一个结点 p0-numnum 假 p1指向是头结点 否p1-next=p0p0-next=null(插入到表尾之后)head=p0p0-n
5、ext=p1(插到表头之前)p2-next=p0p0-next=p1(插到表中间)n=n+1退出函数流程图:n=-1输出谢谢使用结束开始图11退出函数流程图返回n3)调试分析及测试结果进入系统后,系统会出现图所示菜单:在主菜单中输入1后,系统会给出提示,如图所示:在主菜单中输入3后,输入要找的姓名。在系统没有要找信息时或链表为空时,系统会给出提示,确认用户是否继续查找,如图所示:(链表为空时的查找)若要继续查找则按1 ,不是则按0,如图所示: (链表非空的查找) 在主菜单中输入0后,系统会给出提示,提示用户输入相关信息,如图所示:依次输入提示信息输入信息:1wuyifeinv139710869
6、21wuhan2wwnuhan00000再在主菜单输入1后,程序显示如图所示: 在主菜单中输入2后输入要删除的编号,系统便自动删除要删除的通讯录信息,如图15所示:按1显示查看是否删除如图:输入4进行插入操作,如图所示:插入信息如下2wyfnv12345678912wuhan按1进行显示如下图:现在如果没有其他的操作则可按5退出,操作如图所示:实验心得: 通过这次课程设计,我熟练的掌握了结构体、数组、指针、函数以及循环函数的运用和字符串的处理,了解代码中出现错误寻找错误的方法,初步了解到了一个完整的应用程序,应该如何处理美观与实用之间的关系,如何处理实际需求与操作难度
7、之间的关系,并让我深刻了解到数据结构这门课的重要性和实用性,在以后的学习中,我将更加努力的学习并动手实践这门课程。4)用户手册该设计主要运用c语言中的结构体、数组、链表、等数据结构,设计一个简单的管理系统应用程序。本程序仅设计出了通讯录管理系统的基本功能以及简单的界面,使用的是数组的相关操作,包括结构体数组的输入、输出、查找、删除等。用户仅需根据主菜单的提示操作进行创建新纪录、插入新记录、删除记录、显示记录信息、按姓名查找信息和退出系统等功能便可、操作较为简单,易于了解和操作。5)附录程序源代码:#include#include#include#define maxsize 100#defin
8、e null 0#define len sizeof(struct record)#define s %ld %s %s %s %s struct record/*定义通讯链表的结构体类型*/long num;char name20;char sex3;char tel12;char address40;struct record *next;int n;/*-建立通讯链表-*/struct record *creat(void)/*定义create函数,作用:带回一个指向链表表头的指针*/struct record *head;struct record *p1,*p2;n=0;p1=p2=
9、(struct record*)malloc(len);printf(请依次输入编号,姓名,性别,电话,住址n);scanf(s,&p1-num,p1-name,p1-sex,p1-tel,p1-address);head=null;while(p1-num!=0)n=n+1;if(n=1)head=p1;else p2-next=p1;p2=p1;p1=(struct record*)malloc(len);scanf(s,&p1-num,&p1-name,&p1-sex,&p1-tel,&p1-address);p2-next=null;return(head);/*-通讯链表的插入-*/
10、struct record *insert(struct record *head,struct record *rec)struct record *p0,*p1,*p2;p1=head;/*p1指向第一个结点*/p0=rec;/*p0指向待插入结点*/printf(请输入要插入人员的编号,姓名,性别,电话,地址:n);scanf(s,&rec-num,rec-name,rec-sex,rec-tel,rec-address);if(head=0)/*原来链表为空则p0指向结点作为头结点*/head=p0;p0-next=null;return head;else/*原链表不为空则进行比较插
11、入*/while (p0-nump1-num)&(p1-next!=null)p2=p1;p1=p1-next;if(p0-numnum)if(head=p1)head=p0;elsep2-next=p0;p0-next=p1;elsep1-next=p0;p0-next=null;n=n+1;return (head);/*-通讯链表的删除-*/struct record *del(struct record *head,long num)struct record *p1,*p2;if(head=null)/*查看通讯链表是否为空*/printf(n list null! n);p1=he
12、ad;while(num!=p1-num&p1-next!=null)/*p1指向的不是所要找的结点,并且后面还有结点*/p2=p1;/*p1后移一个结点*/p1=p1-next;if(num=p1-num)/*当所查结点找到时*/if(p1=head)/*情况1:p1指向首结点,则把第二个结点地址给head*/head=p1-next;else p2-next=p1-next;/*情况2:将下一结点地址赋给前一结点地址中*/printf(delete:%ldn,num);n=n-1;elseprintf(%ld notbeen found!n,num);return (head);/*-通讯
13、录的显示-*/void print(struct record *head)struct record *p;printf(nnow,these %d records are :n,n);p=head;if(head!=null)doprintf(编号:%ld,姓名:%s,性别%s,电话号码:%s,家庭住址:%sn,p-num,p-name,p-sex,p-tel,p-address);p=p-next;while(p!=null);printf(n);/*-通讯链表信息查询-*/int find(struct record rec,int n) int i;char s20; printf(
14、请输入的姓名n); scanf(%s,s); for(i=0;in;i+) if(strcmp(s,)=0)/*查看输入姓名和通讯录中姓名是否相同*/return i; else return -1; void search(struct record rec,int n) int i,ch; i=find(rec,n); if(i=-1) printf(没有找到要查找的记录,是否重新输入,是按1,否按0n); scanf(%d,&ch);if(ch=1)search(rec,n); else printf(编号:%ld,姓名:%s,性别%s,电话号码:%s,家庭住址:%s,
15、reci.num,,reci.sex,reci.tel,reci.address);/*-通讯录的退出-*/int exit()int n;n=-1;printf(谢谢使用n);return n; /*主菜单*/int menu()int m;printf(欢迎使用通讯录管理系统n);printf(主菜单n);printf(t 0.创建通讯录n);printf(t 1.显示通讯录n);printf(t 2.删除通讯录n);printf(t 3.查找通讯录n);printf(t 4.插入通讯录n);printf(t 5.退出通讯录n);do printf(ttt 请输入选项0-
16、5n);scanf(%d,&m);while(m5);return m;/*主函数*/int main()struct record *creat(void);struct record *insert(struct record *head,struct record *rec);struct record *del(struct record *head,long num);void print(struct record *head);int find(struct record rec,int n);void search(struct record rec,int n);int num,m=0; struct record *rec,*head=null;while(m=0)switch (menu()case 0:head=crea
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年维修汽车考试题库答案
- 2025年公路水运工程试验检测师公共基础试题库及答案法规与技术标准
- 安达市2025-2026学年七年级上学期语文期中测试试卷
- 2025 年小升初温州市初一新生分班考试英语试卷(带答案解析)-(牛津版)
- 陕西省西安市碑林区西北工业大学附属中学2024-2025学年七年级下学期期末考试数学试卷(含答案)
- 刮石膏劳务合同范本
- 线上商铺租赁合同范本
- 水产店面出租合同范本
- 上海租房合同范本
- 标准的期房合同范本
- 2025年重庆市高考物理试卷(含答案解析)
- 小番茄栽培技术课件
- 女职工普法宣传教学课件
- (高清版)DB22∕T 5159-2024 预应力混凝土桩基础技术标准
- 手术后切口愈合不良查房
- 合资研发中心管理制度
- 2024年中级统计师《统计工作实务》真题及答案解析
- 小学2024-2025学年度第二学期道德与法治课程计划
- 河北省唐山市路北区2025届八年级数学第二学期期末达标检测模拟试题含解析
- 缴纳社保免责协议书
- 平面广告设计基本原则试题及答案
评论
0/150
提交评论