用简单链表管理员工信息.docx
- 文档编号:2139681
- 上传时间:2022-10-27
- 格式:DOCX
- 页数:18
- 大小:229.55KB
用简单链表管理员工信息.docx
《用简单链表管理员工信息.docx》由会员分享,可在线阅读,更多相关《用简单链表管理员工信息.docx(18页珍藏版)》请在冰豆网上搜索。
用简单链表管理员工信息
课程设计
学号
班级
姓名
指导教师
2008年6月28日
课程设计任务书
一、课程设计题目:
用简单链表管理员工信息
二、课程设计工作自2008年6月22日,共计一周,20学时。
三、课程设计内容:
用C语言编写软件完成以下任务:
从键盘输入4位员工的信息到动态创建的线形单向链表中;然后通过访问该链表,将其中的所有节点中的员工信息存放到文件myfile.dat中。
每位员工信息如下:
杜永宁软件部5760
王传华销售部3920
殷泳培训部2940
杨柳青软件部5440
四、课程设计要求:
1.程序质量:
●贯彻结构化的程序设计思想。
●用户界面友好,功能明确,操作方便。
●用户界面的菜单至少应包括“输入员工信息”,“显示员工信息”,“保存员工信息”,“退出”4项。
●代码应适当缩进,并给出必要的注释,以增强程序的可读性。
课程设计说明书:
课程结束后,上交课程设计说明书(打印稿和电子稿),其内容如下:
●封面
●课程设计任务书
●目录
●需求分析(分析题目的要求)
●程序流程图(总体流程图和主要功能模块流程图)
●核心技术的实现说明及相应程序段
●个人总结
●参考资料
●源程序及适当的注释
指导教师:
_刘成_______学生签名:
_郑超_______
一、需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致分为五个模块,其中每一个模块对应一个函数,他们的功能分别是:
1)菜单函数2)创建动态的线形单向链表,而且能向其中输入员工信息的函数3)显示输入的员工信息的函数4)保存员工信息的函数5)主函数即可以调用前面的四个函数的函数。
具体如下:
1.创建一个结构体,分别输入员工的姓名、所在部门和编号信息。
2.创建四个自定义子函数用于:
输出菜单,输入员工的信息,显示员工的信息和保存员工的信息。
3.创建主函数,通过主函数实现对子函数的调用执行程序设计任务。
退出函数属于附加函数,可以在一次运行当中循环执行所有的功能,并根据需要最终终止程序的执行。
每一个员工的纪录都包含姓名、所在部门、编号、三个信息。
在程序当中,将员工信息类型定义为结构体类型,添加的员工信息直接写入D盘的myfile.dat文件中,现实函数每次对员工纪录的访问,其数据来源都是myfile.dat文件。
二.程序流程图
1.总体设计
●
●
●
●调试程序,链接程序,运行程序输出用户界面,即可完成用户界面的菜单至少应包括“输入员工信息”,“显示员工信息”,“保存员工信息”,“退出”4项。
2.模块设计
(1)菜单函数main()
voidmenu()//菜单函数
主要包括以下四个选项:
1.输入员工信息
2.显示员工信息
3.保存员工信息
4.退出
(2)创建动态的线形单向链表,而且能向其中输入员工信息的函数creat()
structmember*head;//头指针
structmember*creat()
structmember*p1,*p2;
intn=0;
inta=1;
head=NULL;
printf("\n请输入职工信息编号为0退出录入\n");
printf("\n第%d名员工\n",a);
p1=p2=(structmember*)malloc(LEN);
进而用琏表输入员工信息:
杜永宁软件部5760
王传华销售部3920
殷泳培训部2940
杨柳青软件部5440
(3)显示员工数据Print()
structmember*p;
printf("下面是你所输入的信息:
\n");
p=head;
if(head!
=NULL)
do
{printf("姓名:
%s部门:
%s编号:
%d\n",p->name,p->department,p->number);
p=p->next;
}
while(p!
=NULL);
(4)保存函数save()
structmember*p;
p=head;
FILE*fp;
if((fp=fopen("D:
\\myfile.dat","w"))==NULL)
{printf("cannotopenfile\n");
exit(0);
}
if(head!
=NULL)
while(p!
=NULL)
{fprintf(fp,"%s,%s,%d\n",p->name,p->department,p->number);
p=p->next;
}
fclose(fp);
三、核心技术的实现说明及相应程序段
本程序主要有一个定义的结构体,一个主函数,还有【1.菜单函数2.创建动态的线形单向链表,而且能向其中输入员工信息的函数3.显示输入的员工信息的函数4.保存员工信息的函数】构成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。
在这些函数当中,creat()函数和Print()函数,save()函数是程序中较为核心的部分,下面进行分别说明。
1.添加数据的函数creat()
对于员工信息的添加
(1)、用于插入结点,定义了文件指针,打开员工管理系统的文件。
(2)、输入员工的姓名,所在部门,编号,当姓名重复时则不能打开文件,也就不可输入信息,当不重复时可以继续输入新的员工信息。
具体的程序段如下:
structmember*head;//头指针
structmember*creat()//自己定义的一个创建链表的函数
{structmember*p1,*p2;
intn=0;
inta=1;
head=NULL;//头指针
printf("\n请输入职工信息编号为0退出录入\n");
printf("\n第%d名员工\n",a);
p1=p2=(structmember*)malloc(LEN);
printf("\t姓名:
");
scanf("%s",&p1->name);
printf("\t部门:
");
scanf("%s",&p1->department);
printf("\t编号:
");
scanf("%d",&p1->number);
while(p1->number!
=0)
{
a++;
printf("\n第%d名员工\n",a);
n=n+1;
if(n==1)head=p1;
elsep2->next=p1;
p2=p1;
p1=(structmember*)malloc(LEN);
printf("\t姓名:
");
scanf("%s",&p1->name);
printf("\t部门:
");
scanf("%s",&p1->department);
printf("\t编号:
");
scanf("%d",&p1->number);
}
p2->next=NULL;
printf("\n建立连表结束!
请选择继续操作!
\n");
return(head);
}
2.Print()函数
Print()的作用在于显示出以入的员工信息,当进入系统后通过选择自动显示所有员工的信息。
Out先指向第一个结点,爱输出完第一个结点之后,out指向第二个结点。
程序中out=->next的作用是将out原来所指向的结点中next的值赋给out,而out->next的值就是第二个结点的起始地址。
将它赋给out,就是使out指向第二个结点。
具体函数段如下,
voidprint()
{
structmember*p;
printf("下面是你所输入的信息:
\n");
p=head;//头指针
if(head!
=NULL)//头指针不是空的地址
do
{printf("姓名:
%s部门:
%s编号:
%d\n",p->name,p->department,p->number);
p=p->next;
}
while(p!
=NULL);
}
3.save()函数
voidsave()//保存函数
{structmember*p;
p=head;//头指针
FILE*fp;
if((fp=fopen("D:
\\myfile.dat","w"))==NULL)//打开一个空文件
{printf("cannotopenfile\n");
exit(0);
}
if(head!
=NULL)
while(p!
=NULL)
{fprintf(fp,"%s,%s,%d\n",p->name,p->department,p->number);//写入信息
p=p->next;//移动到达下一个结点
}
fclose(fp);//关闭文件
}
3.关于主函数
在主函数中期我应用了swich这个函数,应用选择结构对其前面的几个函数进行调用,供选择。
具体程序段如下:
voidmain()
{
charchoice;
menu();
choice=getch();
while
(1)
{
switch(choice)
{
case'1':
creat();break;
case'2':
print();break;
case'3':
save();
printf("保存成功!
");break;
case'4':
printf("退出!
");return;
}
choice=getch();
}
运行完毕。
四、个人总结
一周的课设已经在我们辛勤努力中过去了,回顾这短短的一周,我觉得我收获很大,这是一段难忘的时光。
C语言我们已经学习了一个学期了,但它所包含的内容是我们短短一学期所无法学精的,再经过这一周的课设我更是深有体会。
特别的我这次的题目是用链表处理实际问题,链表是难点但在学习中不是重点,我并没有太重视,甚至有些忽略。
现在我是非常的后悔,这几天下来我经过查阅各种资料,并且在课余时间向高年级的学长请教,几天下来我感觉对于链表问题有了大概的印象,但还不过深入,答辩就能很好的说明,对于我这次答辩的失败我感到非常后悔。
我在今后的学习过程中一定要更加专心仔细,对于细节不怕麻烦深入研究。
总之经过这一周的课设的学习我不只是学到C程序设计的方法,而是学习到了更多的东西,让我明白今后无论做什么事情,只要自己用心,认真的去对待,用正确的态度去面对,就没有办不到的事情。
还有,这对我今后生活处理各种问题也有很大的帮助,很感谢能有这次机会让我能力得到较大的提高,让我更好的认清自己。
五、参考文献
1谭浩强.C语言程序设计.北京:
清华大学出版社,2006
2刘成等.C语言程序设计实验指导与习题集.京:
中国铁道出版社,2004
六、源程序
#include
#include"stdlib.h"
#include
#include"ctype.h"
#include
#defineLENsizeof(structmember)
voidmenu()//菜单函数
{printf("***************\n");+
printf(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简单 管理 员工 信息