用简单链表管理员工信息.docx

上传人:b****2 文档编号:2139681 上传时间:2022-10-27 格式:DOCX 页数:18 大小:229.55KB
下载 相关 举报
用简单链表管理员工信息.docx_第1页
第1页 / 共18页
用简单链表管理员工信息.docx_第2页
第2页 / 共18页
用简单链表管理员工信息.docx_第3页
第3页 / 共18页
用简单链表管理员工信息.docx_第4页
第4页 / 共18页
用简单链表管理员工信息.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

用简单链表管理员工信息.docx

《用简单链表管理员工信息.docx》由会员分享,可在线阅读,更多相关《用简单链表管理员工信息.docx(18页珍藏版)》请在冰豆网上搜索。

用简单链表管理员工信息.docx

用简单链表管理员工信息

课程设计

学号

班级

姓名

指导教师

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(

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

当前位置:首页 > 农林牧渔 > 农学

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

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