班级通讯录数据结构C语言.docx
- 文档编号:1011596
- 上传时间:2022-10-15
- 格式:DOCX
- 页数:16
- 大小:149.15KB
班级通讯录数据结构C语言.docx
《班级通讯录数据结构C语言.docx》由会员分享,可在线阅读,更多相关《班级通讯录数据结构C语言.docx(16页珍藏版)》请在冰豆网上搜索。
班级通讯录数据结构C语言
班级通讯录
1、设计目的
设计一个计算机管理系统对班级通讯录进行管理。
2、设计要求
一个学生的数据包括:
学号、姓名、电话号码、手机、QQ号。
要求设计一个计算机管理系统对班级通讯录进行管理,具有的功能是能够进行录入、修改、删除、查找和输出所有记录。
为提高数据的可访问性,电话号码、手机、QQ号建立索引表,索引表可以在维护数据时动态维护,也可能最后一次建立。
设计条件:
硬件条件:
(1)学生用微机
(2)多媒体教室(3)局域网环境
软件条件:
(1)WindowsXP中文操作系统
(2)TurboC3.0
3、课程设计的内容
3.1、需求分析:
随着科技的进步和信息产业的发展,通讯录成为了现代生活中的一个重要的工具。
利用通讯录管理系统对通讯录进行统一管理,包括添加,修改,查询记录等功能,实现通讯录管理工作的系统化,规范化和自动化,为生活提供便利。
在设计的通讯录中,学生学号,电话号码,手机号码,QQ均以数字的形式进行输入,学生姓名则以中文,英文输入均可进行记录,输出的形式与输入形式相同。
按要求,设计的通讯录管理系统可以实现添加、修改、删除、查找,对学号的排序和输出所有学生记录。
进行测试的数据和执行情况如下图所示:
程序主观图:
添加记录:
显示所有记录:
删除一条记录:
根据学号查找:
对记录的排序:
主要是对添加新纪录在链表中按升序排列,如新加李伟这条记录,对它采取排序,具体结果如下:
进行排序:
输入6即退出:
3.2、概要设计:
对该系统各种函数的定义在源代码给出,先给出函数的定义,然后给出菜单的执行函数,建立链表,并对各个功能的实现编出程序,直到调试成功为止。
3.3、详细设计
主要给出程序的流程图,如下所示:
菜单函数:
链表构造:
按学号显示学生数据:
删除记录:
显示所有信息:
排序:
3.4、程序调试与测试结果:
经过认真调试最终结果为正确。
如图:
3.5、结果分析:
在编译过程中遇到很多困难,程序也基本上符合要求,但是有一点目前还没解决,就是基于链表的修改还没掌握,因此花了很大的力气,但是还是没有完成,只好采取的修改方式为:
删除,添加,排序的方法对链表中的元素进行修改。
4、总结
本系统基本实现了班级通讯录系统的典型功能,如添加查找等功能,而且具有较高的安全性。
但是因为能力有限,还有部分功能未能完善,这些局限性都是有待逐步完善的方面。
而且通过这次课程设计,我培养了自己对C编程的兴趣,进一步了解了数据结构的特色和,编程能力也有所提高,但仍存在许多不足,不能独自编写完整代码,写代码要参考很多资料,所以今后应培养自己独立写代码的能力。
5、参考文献
[1]宁正元,王秀丽.算法与数据结构.北京:
清华大学出版社,2006
[2]姜灵芝,余键.C语言课程设计案例精编北京:
清华大学出版社,2008
6、附录
该程序的源代码:
#include
#include
#include
#include
#include
typedefstructstudent
{
charNumber[10];//学号
charname[20];//姓名
chartelephone[20];//电话号码
charcellphone[20];//手机号码
charQQ[10];//QQ
structstudent*next;
}student;
student*headLink;//链表表头指针
voidDesplayMenu();//以下是函数声明
voidCreateHeadLink();
student*MallocNode();
voidGetInformation(student*t);
voidOutputInformation();
voidDesplayInfoByNumber();
voidDesplayOneNode(student*t);
voidInsertOneNode(student*t);
voidrangebyNumber();
voidDeleteNodeByNumber();
voidDesplayInfoByName();
intchoose;//用于接受用户的选择
voidmain()//主函数
{
CreateHeadLink();
DesplayMenu();
}
voidDesplayMenu()//显示菜单,根据用户的输入完成相应的功能
{
student*p;
printf("\n-------请选择相应功能-------------\n\n");
printf("1显示所有学生信息\n");
printf("2增加一条学生信息\n");
printf("3删除一条学生信息\n");
printf("4根据学号查找学生的信息\n");
printf("5按学号高到低排序\n");
printf("6退出\n");
printf("请输入序号:
\n");
scanf("%d",&choose);//取得用户的选择
switch(choose)
{
case1:
OutputInformation();
break;
case2:
p=MallocNode();//先申请一个新结点
GetInformation(p);//要求用户输入信息到新结点中
InsertOneNode(p);//将新结点加到链表中
break;
case3:
DeleteNodeByNumber();
break;
case4:
DesplayInfoByNumber();
break;
case5:
rangebyNumber();
break;
case6:
free(headLink);//先释放内存空间
exit
(1);
break;
default:
break;
}
DesplayMenu();//递归调用
}
voidCreateHeadLink()//建立链表表头
{
student*p;
p=(student*)malloc(sizeof(student));
headLink=p;
p->next=NULL;
}
student*MallocNode()//申请一个新结点,并将其初始化
{
student*p;
inti;
p=(student*)malloc(sizeof(student));
if(p==NULL)
returnNULL;
for(i=0;i<10;i++)
p->Number[i]='\0';
for(i=0;i<20;i++)
p->name[i]='\0';
for(i=0;i<20;i++)
p->telephone[i]='\0';
for(i=0;i<10;i++)
p->cellphone[i]='\0';
for(i=0;i<10;i++)
p->QQ[i]='\0';
p->next=NULL;
returnp;
}
voidGetInformation(student*t)//添加学生信息
{
printf("请输入序号:
\n");
scanf("%s",t->Number);
printf("请输入姓名:
\n");
scanf("%s",t->name);
printf("请输入电话:
\n");
scanf("%s",t->telephone);
printf("请输入手机号:
\n");
scanf("%s",t->cellphone);
printf("请输入QQ:
\n");
scanf("%s",t->QQ);
}
voidInsertOneNode(student*t)//在链表的结尾处增加一个结点
{
student*p;
p=headLink;
while(p->next)
{
p=p->next;
}
p->next=t;
}
voidDesplayInfoByNumber()//根据学号显示该学号学生的信息
{
student*p;
chargood[10];
charflag=0;
p=headLink->next;
if(p==NULL)
{
printf("对不起,现在没有学生信息!
\n");
return;
}
printf("请输入序号:
\n");
scanf("%s",good);
printf("学号\t姓名\t电话\t手机号\tQQ\t\n");
while(p)
{
if(strcmp(p->Number,good)==0)
{
DesplayOneNode(p);
flag=1;
break;
}
p=p->next;
}
if(!
flag)
printf("对不起,不存在序号为%s的学生\n",good);
}
voidDesplayOneNode(student*t)//输出一个学生结点的信息
{
printf("%s\t",t->Number);
printf("%s\t",t->name);
printf("%s\t",t->telephone);
printf("%s\t",t->cellphone);
printf("%s\t\n",t->QQ);
}
voidDeleteNodeByNumber()//根据学号删除该学生信息
{
chargood[10];
student*p,*q;
charflag=0;
printf("请输入要删除的学生序号:
");
scanf("%s",good);
p=headLink;
q=headLink->next;
while(q)
{
if(strcmp(q->Number,good)==0)
{
p->next=q->next;
free(q);
flag=1;
break;
}
p=p->next;
q=q->next;
}
if(!
flag)
printf("不存在这学生\n");
}
voidOutputInformation()//显示所有学生的信息
{
student*p;
p=headLink->next;
if(p==NULL)
{
printf("现在没有任何信息,请先输入学生信息\n\n");
return;
}
printf("学号\t姓名\t电话\t手机号\tQQ\t\n");
while(p)
{
DesplayOneNode(p);
p=p->next;
}
}
voidrangebyNumber()//根据输入的学号,按低到高排序
{
charNumber[10];
studentexchange,*r,*p,*q;
r=headLink->next;
if(r==NULL)
{
printf("现在还没任何信息,请先输入学生信息\n");
return;
}
p
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 班级 通讯录 数据结构 语言