用简单链表管理员工信息文档格式.docx
《用简单链表管理员工信息文档格式.docx》由会员分享,可在线阅读,更多相关《用简单链表管理员工信息文档格式.docx(11页珍藏版)》请在冰点文库上搜索。
王传华销售部3920
殷泳培训部2940
杨柳青软件部5440。
三、课程设计要求
1.程序质量:
✧贯彻结构化的程序设计思想。
✧用户界面友好,功能明确,操作方便。
✧用户界面中的菜单至少应包括“输入员工信息”、“显示员工信息”、“保存员工信息”、“退出”4项。
✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。
2.课程设计说明书:
课程结束后,上交课程设计说明书和源程序。
课程设计说明书的格式和内容参见提供的模板。
四、指导教师和学生签字
指导教师:
学生签名:
五、成绩:
六、教师评语:
目录
一、需求分析1
二、程序流程图2
三、核心技术的实现说明及相应程序段5
四、个人总结8
五、参考文献8
六、源程序9
一、需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致分为三个模块,其中每一个模块对应一个函数,他们的功能分别是:
输入信息creat();
显示信息print();
保存信息save().
1、creat()主要实现输入员工信息功能;
2、print()实现的功能是把输入的信息显示出来;
3、save()实现的功能是保存输入的信息。
除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。
每一个员工记录都包含姓名,部门以及编号,在程序当中,将学生记录类型定义为结构体类型。
二、程序流程图
1、程序总体结构图
是
i=1?
否
输入
员工
信息
i=2?
显示
i=3?
否
保存员工信息
i=4?
退出
错误的选择
图一程序总体结构图
2、具体功能框图
(1)输入信息函数
开辟一个新节点,并使p1,p2指向它
读入一个员工数据给p1所指的结点
head=NULL,n=0
当读入的P1num不是零
n=n+1
真
n=1?
假
head=p1
(把p1所指的结点作为
第一个结点)
p2next=p1
(把p1所指的结点连接到表尾)
p2=p1(p2移到表尾)
再开辟一个新结点,使p1指向它
读入一个员工数据给p1所指结点
表尾结点的指针变量置NULL
图2creat()函数
(2)显示信息函数
p=head,使p指向第一个结点
p指向的不是尾结点
假
输出p所指的结点
p指向下一个结点
当p指向的不是表尾
图3print()函数
(3)保存信息函数
打开文件名为“myfile”的文件(fopen())
写入员工信息(fwrite())
关闭文件(fclose())
图4save()函数
三、核心技术的实现说明及相应程序段
本程序主要由四个自定义函数(包括一个菜单函数)和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。
在这些函数当中,输入信息函数、显示信息函数和保存信息函数是程序中较为核心的部分,下面分别进行说明。
1、输入信息函数(建立链表)
建立链表即一个一个的开辟结点和输入各结点数据并建立起前后相链的关系.以姓名,部门,编号的格式输入员工信息:
(先建立一个员工信息的结构体)
structemp
{charname[20];
chardep[20];
intnum;
structemp*next;
};
intn;
structempcreat(void)/*定义函数,此函数带回一个指向链表头的指针*/
{
structemp*head;
structemp*p1,*p2;
n=0;
p1=p2=(structemp)malloc(LEN);
/*开辟一个新单元*/
scanf("
%s%s%d"
&
p1->
name,&
dep,&
num);
head=NULL;
while(p1->
num!
=0)/*循环控制输入*/
n=n+1;
if(n==1)head=p1;
elsep2->
next=p1;
p2=p1;
p1=(structemp*)malloc(LEN);
}
p2->
next=NULL;
return(head);
/*函数返回头结点*/
2.显示信息的函数(输出链表)
同样是以姓名,部门,编号的格式输出员工信息:
voidprint(structemp*head)
{
structemp*p;
printf("
\n员工信息如下:
\n"
);
姓名部门编号\n"
p=head;
if(head!
=NULL)
do
{printf("
\n%-20s%-20s%4d"
p->
name,p->
dep,p->
p=p->
next;
/*使指针指向下一个结点*/
}while(p!
=NULL);
}
3.保存信息的函数
对文件的操作:
voidsave(structemp*head)/*文件保存函数*/
FILE*fp;
fp=fopen("
e:
\\myfile.dat"
"
wb"
fwrite(head,LEN,1,fp);
\n文件保存完毕。
\n\n"
fclose(fp);
4.菜单函数
此函数返回用户输入的选择:
intmenu(void)
{intret;
printf("
\n1.输入员工信息。
2.显示员工信息。
3.保存员工信息。
4.退出。
\n"
\n***请输入你的选择:
%d"
ret);
returnret;
四、个人总结
一周的课设时光就要接近尾声了,回顾这短短的一周,有欢笑也有泪水,更有发现新大陆时的激动,总之,这是难忘的一段时光。
在设计时,我总是在一些小问题上出错,翻看课本后,问题一目了然,这充分的暴露出了我平时学习上的不足,这为我以后的学习打下了不可或缺的基础.然而,这只是万里长征的第一步。
后面的路还很长,困难还很多,可是我能成功的编译一个程序,能够在思路卡壳的情况下,继续前进,我在此很想感谢那些给予我耐心解答的老师和同学,是他们为我小程序的成功起到了关键性的作用,那么多个日夜,如此多的困难,同学们勤恳塌实,从开始到结束,没有显出一点倦意,始终热情高涨,我感谢这种氛围,感谢学校提供的良好条件。
通过这次的C程序课设,我加深了对C语言的了解,培养了我缜密思维的能力,使我收获很多,受益匪浅。
五、参考文献
1谭浩强.C程序设计.北京:
清华大学出版社,2005
2刘成等.C语言程序设计实验指导与习题集.北京:
中国铁道出版社,2006
六、源程序
#include"
stdio.h"
malloc.h"
stdlib.h"
#defineNULL0
#defineLENsizeof(structemp)
structemp*creat(void)
p1=p2=(structemp*)malloc(LEN);
=0)
姓名部门编号\n"
voidsave(structemp*head)
}
{intret;
voidmain()
{structemp*head;
charc;
\n***\n"
while((c=menu())!
=4)
switch(c)
case1:
请按“姓名部门编号”的格式输入(输入完毕请按0):
head=creat();
break;
case2:
print(head);
case3:
save(head);
break;
case4:
default:
\n输入错误!
请重新输入: