数据结构--班级通讯录管理系统

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计报告书课程名称:数据结构

题目:班级通讯录管理系统

学生姓名:

专业:计算机专业

班别:

学号:

指导老师:**

日期:年月日

班级通讯录管理系统

一.问题描述

设计目的:

1.掌握线性链表的建立。

2.掌握线性链表的基本操作。

3.掌握查找的基本算法。

设计内容:

利用线性链表实现班级通讯录管理系统,具体功能:输入、输出、插入、删除、查找、追加、读入、显示、退

出,并能在屏幕上输出操作前后的结果。

二.基本要求

设计要求:

1.写出系统需求分析,并建模。

2.编程实现,界面友好。

3.输出操作前后的结果。

三.工具/工作准备

了解线性表有两种存储方法:顺序存储和链式存储,线性表基本操作是:线性表建立、插入、删除、查找、求线性表的长度、取

表元。

线性表顺序存储:

1.顺序表初始化即构造一个空表,初始化函数为指针

函数

2. 顺序表插入运算是指在第i个位置插入值为x的新元

素:将Ai~An顺序向后移动,为新元素让出位置;

将x置入空出的第i个位置;修改last指针(相当

于修改表长),使之仍指向最后一个元素。

3. 删除运算:运算方法与插入运算方法一致。

4. 按值查找:给定的值x与表中元素比较。

5. 优点:方法简单,容易实现;具有按元素序号随机访

问特点等。

6. 缺点:在表中做插入删除操作时,需平均移动大约表

中一半元素;需预先分配足够大的存储空间,

估计过大等。

线性表链式存储:

单链表

1.建立单链表:在链表表头或表尾插入结点,建立线

性表的链式存储;

2.查找操作:从链表的第一个元素结点查找,判断当

前结点是否是第i个,若是,则返回该结

点指针,否则继续查找,直到表结束为止,

没有第i个结点是返回空。

3.插入操作:后插点:s->next=p->next ;p->next=s;

前插结点:单链表头指针为L

q=L;

while(q->next!=p)

q=q->next;

s->next=q->next;

q->next=s;

4.删除操作:删除前驱结点

q->next=p->next;

free(q);

删除后继结点

s=p->next;

p->next=s->next;

free(s);

循环链表:对于单链表而言,最后一个结点的指针域是空

指针,如果将该单链表的表头置入该指针域,

则使得链表头尾相连,就构成了单链表。

双向链表:在单链表中的每个结点再加一个指向前驱的指

针域,用这种结点组成的链表称为双向链表。

需要安装Microsoft Visual C++6.0,打开运行此软件,在该软件置入代码的环境下打入自己预先设计好的数据结构算法及C语言代码。

四.分析与实现

【界面总体设计】

图一系统功能模块图

(1).在main函数中,首先调用Creat_LinkList()函数创建链表导入班级同学的数据信息,然后通过switch()语句实现操作命令,调用print()、Search()、In_LinkList()、Del_printLinkList()、Free_()、Inser_printLinkList()分别实现输出、查找、追加、删除、结束、插入的系统功能,主函数具体代码如下:

void main() //主函数

{ LinkList L;

LNode *p;

int w;

printf("\t\t----------------班级通讯录管理系统----------------\n"); printf("\n");

printf("\t\t-------------------计科本122班---------------------\n"); printf("\n");

printf(" ***请导入班级学生通讯录***\n");

printf("\n");

L=Creat_LinkList(); //实现链表建立

printf(" ***信息导入并保存完毕!\n");

printf("\n");

printf("\t\t 1.输出班级通讯录\n"); //实现选择性的操作

printf("\t\t 2.查找信息\n");

printf("\t\t 3.追加同学信息\n");

printf("\t\t 4.删除同学信息\n");

printf("\t\t 5.插入同学信息\n");

printf("\t\t 6.结束操作\n");

printf("\n");

printf(" ***输入要执行以上操作对应的数字:");

scanf("%d",&w);

switch(w) //switch语句执行操作命令 { case 1: print(L);break; //输出

case 2: Search(L);break; //查找

case 3: In_LinkList(L);break; //追加

case 4: Del_printLinkList(L);break; //删除

case 5: Inser_LinkList(L);break; //插入

case 6: Free_(L); //释放结点,退出

exit(0);

}

}

(2).创建链表函数:

LinkList Creat_LinkList() //创建

{ LinkList L=NULL; //建立空表

LNode *s ,*rear=NULL; //*rear是标记尾指针int i,x;

printf("请输入全班同学的人数: ");

scanf("%d",&x); //输入班级人数

printf("全班同学的信息记录是\n");

printf("\n");

相关文档
最新文档