通讯录管理.doc

上传人:b****1 文档编号:172557 上传时间:2022-10-05 格式:DOC 页数:29 大小:414.50KB
下载 相关 举报
通讯录管理.doc_第1页
第1页 / 共29页
通讯录管理.doc_第2页
第2页 / 共29页
通讯录管理.doc_第3页
第3页 / 共29页
通讯录管理.doc_第4页
第4页 / 共29页
通讯录管理.doc_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

通讯录管理.doc

《通讯录管理.doc》由会员分享,可在线阅读,更多相关《通讯录管理.doc(29页珍藏版)》请在冰豆网上搜索。

通讯录管理.doc

计算机科学与技术学院

《C高级语言程序设计》课程设计报告

(2014/2015学年第一学期)

学生姓名:

薛晋

学生专业:

网络工程

学生班级:

132003班

学生学号:

201320030328

指导教师:

赵俊忠

2015年  1月  10日

计算机科学与技术学院

课程设计任务书

课程设计名称

《C高级语言程序设计》课程设计

课程设计题目

通讯录管理

学生姓名

薛晋

专业班级

网工132003

学号

201320030328

课程设计任务内容

[问题描述]将通讯录的姓名、性别,年龄、电话等进行结构体的声明,再定义结构数组以便进行统一处理。

之后设计菜单函数,显示操作项目,并对添加、显示、查找、删除、排序等功能模块进行调用,以实现管理系统的整体功能。

是用户的工作平台,也是用户与系统对话的平台。

像删除、查找等模块都有子菜单,这样使条理更清晰,并且加入通讯录的容量,使用户可以了解通讯录的存储。

[基本要求]

(1)程序基于结构体数组设计出了通讯录管理系统的基本功能,能对成员的学号、姓名、年龄、电话等进行添加、显示、查找、删除等操作,并且能通过电话号通讯录。

[测试要求]

(1)通信录信息通过链表形式存储,按电话号码降序存储。

按电话号码查询学生信息功能在排序的链表基础上实现。

指导教师:

赵俊忠

时间:

2015年1月10日

目录

一功能需求描述 1

二系统设计描述 2

2.1任务分解 2

2.2函数名以及功能 2

三算法描述 3

3.1流程介绍 3

3.1.1添加流程 3

3.1.2显示流程 4

3.1.3查找流程 5

3.1.4删除流程 5

3.1.5排序流程 6

3.1.6退出流程 6

四开发过程描述 7

4.1:

源代码 7

五设计心得体会 20

附录一:

必选题(链表) 21

源代码:

21

一功能需求描述

在C语言中,数组这样的构造数据类型可以将多个数据用一个名字来命名,为储存和处理带来很大的方便。

但是现实生活中还存在着大量需要作为一个整体来处理的数据,而这些数据的类型又不尽相同。

例如要处理通讯录数据,需要处理学生的学号(num)、姓名(name)、性别(sex)、年龄(age)、电话(phone)、和工作(job)等数据。

这样一组相互关联的数据如果用简单的变量储存,则难以反映出它们的内在联系,而且是程序冗长晦涩;而数组则无法容纳不同变量的元素。

结构体(structure,也称“结构”)就是C语言所提供的处理一组不同类型数据的类型。

但是这种类型需要用户自行定制,因为处理学生的结构体形式与处理教师的结构体形式不同,处理人的结构体形式与处理企业、处理产品、处理公文等的结构体形式均不同,等等。

因此,在结构体的大框架内,还要根据具体需要来定制自己的结构体类型[1]。

一个结构体只能存放一个对象的信息,但经常都是对一组对象来处理若干数据,这样就会用到结构体数组,结构体数组可以将若干待处理对象编成数组形式,然后再把每个对象的信息又存放到结构体中,这样就实现了对若干不同的对象来处理若干不同类型的数据。

因此结构体把数组在生活当中有广泛的应用[2]。

随着全球信息化水平逐步提高,通讯系统逐步成熟,通信成为我们生活中不可缺少的一部分。

通信系统的发达,通信方式的增多,记录信息量的增大,对于通信信息的处理将越来越复杂,仅仅靠人工操作已经满足不了人们的需求,使用功能全、信息量大的管理系统是一个不错的选择。

本次课程设计主要运用C语言中的结构体、数组、链表等数据结构,设计一个简单的管理系统应用程序。

本次课设主要考察了对函数的编写,对指针和数组的相关操作、结构体的定义和使用、算法的分析及设计、流程图的绘制等项目,对于熟悉编程环境、掌握编程流程、了解编程规范都有积极作用。

通过这次课设我们可以了解到数据结构算法的基本思想、锻炼编程思维,养成良好的编程习惯以及严谨的编程态度,为以后的设计打下良好的基础。

本程序基于结构体数组设计出了通讯录管理系统的基本功能,能对成员的学号、姓名、年龄、电话等进行添加、显示、查找、删除等操作,并且能通过姓名通讯录,符合一般管理系统的功能。

二系统设计描述

2.1任务分解

首先,将通讯录的姓名、性别,年龄、电话等进行结构体的声明,再定义结构数组以便进行统一处理。

之后设计菜单函数,显示操作项目,并对添加、显示、查找、删除、排序等功能模块进行调用,以实现管理系统的整体功能。

是用户的工作平台,也是用户与系统对话的平台。

像删除、查找等模块都有子菜单,这样使条理更清晰,并且加入通讯录的容量,使用户可以了解通讯录的存储,总体设计框图如图1所示。

主菜单

1

添加通讯录

2

显示通讯录

3

查找通讯录

4

删除通讯录

5

排序通讯录

6

退出并保存

图1程序的总体框图

2.2函数名以及功能

voidHandleChoice_f(int);//功能选择

voidAddRecord_f();//加入记录

voidInsertNode_f(Node*);//插入节点

Node*InsertPoint_f(char*);//寻找插入点

voidMakeNewHead_f(Node*);//

voidAddToEnd_f(Node*);//

voidMoveToEnd_f();//

voidDisplayList_f();//显示全部记录

voidDeleteRecord_f();//删除记录

voidDelNode_f(Node*);//删除节点

voidDelList_f();//删除链表

voidSearchByPhoneNum_f();//按电话查找记录

voidWriteFile_f();//记录写入文件并关闭程序

voidLoadFile_f();//加载原有记录

intlind_num(plistp_head);

plistlind_shun(plistp_head);//排序

boolbig_char(char*ch0,char*ch1);

三算法描述

3.1流程介绍

本程序一共有六个流程,即添加流程、显示流程、查找流程、删除流程、排序流程、保存流程及退出流程,为分别实现上述六种功能,下面介绍一下这六个流程。

3.1.1添加流程

通过此流程可以实现对信息的添加,首先先对容量进行测试如果没有容量则提示信息已满,若有容量,则显示通讯录使用量和总容量,再对姓名、学号等逐项输入,输入完毕后系统会提示是否继续添加,若是,则继续添加,若否则返回菜单函数。

开始

N

Y

内存分配允许?

输入信息

内存错误

InsertNode_f

结束

图2添加功能的流程图

3.1.2显示流程

通过此流程可以对录入的信息进行输出,只有当有录入信息时才会输出,否

则显示“没有此学生”。

流程图如图3所示。

结束

N

Y

开始

“没有此记录”

是否有该记录?

显示通讯录信息

图3显示功能的流程图

3.1.3查找流程

通过此流程可以实现对录入信息的查找,此程序支持三种查找方式,按学号、姓名、电话查找,然后判断是否有此人,有则输出该用户信息,并且显示通讯录使用容量和剩余容量,否则输出“没有此人信息”并进行重新选择。

流程图如图4所示。

结束

Y

开始

输入查找人姓名

9姓名

N

判断是否有此人?

“没有此记录”

输出此人信息

图4查找功能的流程图

3.1.4删除流程

通过此流程可以对录入的信息进行删除。

此程序提供学号、姓名、电话来查找删除人若没有此人,则显示没有此人信息,并返回删除菜单。

若有此人,系统会询问用户是否删除信息,是则删除,否则不删除,并返回删除菜单。

流程图如图5所示。

开始

输入删除人姓名

9姓名

N

Y

判断是否有此人?

显示信息

没有此人信息

节点删除释放空间

结束

图5删除功能的流程图

3.1.5排序流程

通过此函数可以实现对录入信息进行排序。

的功能此程序提供按学号和姓名的排序,此函数的算法即冒泡法排序通过对排序量进行交换,从而达到排序的目的。

图6排序功能的流程图

开始

以号码排序

返回首节点

3.1.6退出流程

开始

写入文件

删除整个链表

结束

四开发过程描述

4.1:

源代码

#include//标准输入输出头文件

#include//字符数组定义的头文件

#include//头文件

#defineboolint

#definefalse0//宏定义

#definetrue1//宏定义

typedefstructnode*plist;//定义指针类型结构plist

#defineNodestructnode//宏定义Node=structnode

Node//结构体类型定义

{

charszName[20];

charszSex[4];

charszAge[4];

charszPhoneNum[12];

charszJob[30];

Node*next;//结构体中指针

};

Node*strpHead;//全局变量,链表头指针

Node*strpCurrent;//用于指向当前正在操作的结点

//函数原型声明

voidHandleChoice_f(int);//功能选择

voidAddRecord_f();//加入记录

voidInsertNode_f(Node*);//插入节点

Node*InsertPoint_f(char*);//寻找插入点

voidMakeNewHead_f(Node*);//

voidAddToEnd_f(Node*);//

voidMoveToEnd_f();//

voidDisplayList_f();//显示全部记录

voidDeleteRecord_f();//删除记录

voidDelNode_f(Node*);//删除节点

voidDelList_f();//删除链表

voidSearchByPhoneNum_f();//按电话查找记录

voidWriteFile_f();//记录写入文件并关闭程序

voidLoadFile_f();//加载原有记录

intlind_num(plistp_head);

plistlind_shun(plistp_head);//排序

boolbig_char(char*ch0,char*ch1);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 党团建设

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1