职工工资管理系统设计带源码Word文件下载.doc
- 文档编号:5998191
- 上传时间:2023-05-05
- 格式:DOC
- 页数:12
- 大小:82KB
职工工资管理系统设计带源码Word文件下载.doc
《职工工资管理系统设计带源码Word文件下载.doc》由会员分享,可在线阅读,更多相关《职工工资管理系统设计带源码Word文件下载.doc(12页珍藏版)》请在冰点文库上搜索。
第一章需求分析
1.课程设计题目
带头结点的单循环链表(职工工资管理系统)
2.课程设计任务及要求
编写一个职工工资管理系统,可以实现对数据的基本处理,要求用带头结点的单循环链表实现
3.课程设计思想
首先完成对程序的密码的确认,其次完成数据录入模块,然后实现对已录入的数据的存储和读入,最后就可以在其基础建立链表完成其余各项操作
4.软硬件运行环境及开发工具
Turboc2.0,WindowsXP,VC++6.0
第二章概要设计
2.1设计流程图
确认密码
主菜单
密码修改
录入摸块
查找摸块
插入模块
保存模块
保存读入
统计模块
删除模块
排序模块
图1主函数流程图
2.1.1录入读取建链流程图
用户
D1数据表
增加数据
算法
建链流程图如图2所示
图2建链流程图
2.1.2考勤基本情况增、删、改数据流程图
操作流程图如图3所示
窗口展示
图3操作函数流程图
2.2主要的数据结构
2.2.1链表结构如图4所示
Head
结点1
结点2
……
图4链表结构图
2.2.2链表的结点结构如表1所示
表1链表的结点结构
Char[20]
Char[4]
Int
指针
Nam
Sex
Bam
Dem
Inm
Mon
next
*姓名
性别
基础工资
扣除工资
补贴工资
实际工资
下一结点
3.1计算机程序框图
3.1.1密码确认部分程序图如表5所示
有无密码
I=0
退出
确认密码码
I++
I<
2
有
是
无
否
不对
对
图5密码确认部分程序图
3.1.2确认编号是否存在部分程序图如图6所示
B=1
输入P与R比较
R!
=NULL
=HEAD
=P
R=R->
NEXT
R=NULL
B=0
输入其他部分
开始录入
是
是
否
否
是
是否
图6确认编号是否存在部分程序图
3.2自编程序
3.2.1录入模块
voidsetlink(Linkhead)
{/*建立单链表*/
Linkp,q,r;
inti=0;
intc;
inta=1;
intb;
printf("
\n"
);
p=head;
r=head->
next;
while(a==1)
{
q=(LNode*)malloc(sizeof(structnode));
b=1;
while(b==1)/*编码确认部分*/
{
printf("
输入编号:
scanf("
%d"
&
q->
num);
r=head->
while(r!
=NULL&
&
r!
=head&
r->
num!
=q->
num)
{
r=r->
}
if(r==NULL||r==head)
b=0;
else
{
printf("
你输入的员工已录入,请重新输入。
b=1;
}
}
printf("
输入姓名:
scanf("
%s"
nam);
输入性别:
"
sex);
printf("
输入基本工资:
bam);
输入补贴工资:
scanf("
inm);
输入扣除工资:
dem);
q->
mon=q->
bam+q->
inm-q->
dem;
p->
next=q;
p=q;
i++;
是否输入另一个数据?
\n输入1继续录入,其他键退出"
scanf("
c);
getchar();
if(c==1)
{q->
next=head;
continue;
}
else
{q->
break;
}
printlink(head);
getchar();
meau(head);
}
3.2.2排序模块的部分代码(起泡法)
voidpaixu1(Linkhead)
{
Linkq,p,t;
intm;
q=head->
p=q->
t=(Link)malloc(sizeof(structnode));
while(q->
next!
=head)
{
while(p!
{
if(q->
num>
p->
{
t->
num=p->
num;
strcpy(t->
nam,p->
sex,p->
t->
bam=p->
bam;
t->
inm=p->
inm;
t->
dem=p->
mon=p->
mon;
p->
num=q->
strcpy(p->
nam,q->
strcpy(q->
sex,q->
bam=q->
inm=q->
dem=q->
q->
num=t->
nam,t->
sex,t->
bam=t->
inm=t->
dem=t->
mon=t->
}
p=p->
}
q=q->
p=q->
}
printf("
排序成功!
!
是否输出数据,输入1输出,其他键退出"
scanf("
m);
if(m==1)
{printlink(head);
}
getchar();
meau(head);
3.2.3姓名查找的部分代码
voidnamesearch(Linkhead)
chary[20];
charc[20]="
;
charb[20]="
Linkp;
intt;
inta=1;
p=head->
printf("
请输入所要查询的姓名:
scanf("
y);
t=strlen(y);
strncpy(c,y,t);
while(p!
=head)
{strncpy(b,p->
nam,t);
if(strcmp(c,b)==0)
{
if(a==1)
{printf("
编号姓名性别基础工资扣除工资补贴工资实际工资\n"
a=0;
}
printf("
%2d%10s%6s%11d%12d%12d%12d\n"
p->
num,p->
bam,p->
dem,p->
inm,p->
mon);
}
p=p->
}
if(a==1)
printf("
没有该学生数据。
4.1系统调试
经多次调试修改,程序大体上无错误,可以实现基本要求。
4.2操作使用说明
第一次进系统因无密码文件直接进入界面,请建立新密码。
同样因无要处理
的数据第一次请录入链表,并选择是否保存,保存后的下次使用可以直接读入保存的数据。
再选择相关函数执行相应的操作,按系统给出的提示使用,程序大体上满足要求,但可以在某些细节还有不完善之处,若带来不便还请原谅。
5.1对开发的过程归纳与总结
程序的设计调式过程,需要分析总结,画图分析可以相对容易直观的找出错误。
5.2在过程中遇到的技术难点与解决方法
1因为主函数是以mimaqueren函数开始现再确认是否进入菜单,所以执行完每个函数默认返回主函数后都会出现确认密码部分,很不方便
解决方法,要在每个功能函数最末加上meau函数,使其不直接返回,而是跳转到菜单函数。
2与姓名模糊查询有关的函数,总是显示的无数据
查书知是因为char后几位字符不定,循环判定结果一直是无数据,对字符串初始为空解决。
3数据录入插入模块中对同号的的判定,起初做时用了不少方法,返回不行,递归不行,测返回也不行,最后想的办法是把输入编号放入循环里,有同号继续循环,无同号退出继续往下输入。
作完后老师讲了更方便的算法,不过没有使用。
4还有一部分错误错的很不应该,如在编写程序时,并没有把参数传进,这
种错误系统并不提示错误位置,浪费不少时间找错纠正。
5最不该的问题,使用VC读入时总提示内存出错,检查好久找不出错误,用TC执行却可以,程序不同,结果不同,以后要注意
5.3程序尚存问题
不能实现对读入和保存路径的输入,某些程序虽然可以完成其功能,但并不是最优化最有效率的算法,界面太粗糙。
排序的算法,每一项都是相似的算法,若用类的知识,倒是能解决,只是在本环境下不能实现。
5.4进一步开发的见解与建议
算法不够优化,界面不很美观,功能不很完善。
可以在这些方面完善程序,在某些功能上还不全面,还有优化提升的空间
5.5收获与体会
通过这次的设计,练习熟悉了C语言的编译,有更深的体会和了解。
对传值传址更为熟悉,对单链表的相关算法,如键立,插入,删除等也基本掌握,最基本的单链算法是后期学习的基础,调试程序作分析找错误时,画图细心分析每步的进程,提高了逻辑能力和思维能力。
也经过这次的练习找到自已很多的不足,好的编程习惯很重要,可以节省不少的调试时间。
对基础的掌握很重要,这样可不不必时时查资料,向同学咨询。
计算机编程要多多练习,这样才可以熟悉,可以加深记忆,提高编程的能力。
在编程的过程中,有时因某些错误难以改正而无奈,可以调试改正好后的成就感也让人愉悦。
大学的生活很松散,在编程过程中会觉得时间过得很快,专心的做一件事,也让人充实。
这也是学习计算机的乐趣所在,以后会加深在计算机方面的学习。
设计确实有些辛苦,但苦中也有乐,在如今单一的理论学习中,很少有机会能有实践的机会,但我们可以,而且设计也是一个团队的任务,一起的工作可以让我们有说有笑,相互帮助,配合默契,多少人间欢乐在这里洒下,大学里一年的相处还赶不上这一个月的合作,我感觉我和同学们之间的距离更加近了;
我想说,确实很累,但当我们看到自己所做的成果时,心中也不免产生兴奋;
同时我认为我们的工作是一个团队的工作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神.在计算机上的工作基本没有一人能完成的,写程序时只有一个人知道原理是远远不够的,必须让每个合作伙伴都知道,否则一个人的错误,就有可能导致整个工作失败。
团结协作是我们实习成功的一项非常重要的保证。
而这次练习也正好锻炼我们这一点,这也是非常宝贵的。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
计算机是门注重实践的学科,要学好计算机必须要多多的实践。
这次练习让我更明白了这点。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际。
经过这段时间的上机实践学习,使我对c语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;
再有对c语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对c语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。
课堂上要讲授许多关于c语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。
然而要使用c语言这个工具解决实际问题,又必须掌握它。
通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定。
对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,这是由于大部分学生是初次接触程序设计,缺乏程序设计的实践所致。
学习c语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题。
即把c语言作为工具,描述解决实际问题的步骤,由计算机帮助我们解题。
只有通过上机才能检验自己是否掌握c语言、自己编写的程序是否能够正确地解题。
一个c语言程序从编辑、编译、连接到运行,都要在一定的外部操作环境下才能进行。
所谓"
环境"
就是所用的计算机系统硬件、软件条件,只有学会使用这些环境,才能进行程序开发工作。
通过上机实验,熟练地掌握c语言开发环境,为以后真正编写计算机程序解决实际问题打下基础。
同时,在今后遇到其它开发环境时就会触类旁通,很快掌握新系统的使用。
完成程序的编写,决不意味着万事大吉。
你认为万无一失的程序,实际上机运行时可能不断出现麻烦。
如编译程序检测出一大堆错误。
有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。
开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。
程序的调试是一个技巧性很强的工作,对于初学者来说,尽快掌握程序调试方法是非常重要的。
有时候一个消耗你几个小时时间的小小错误,调试高手一眼就看出错误所在。
通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习c语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。
通过这次为数不多的几天计算机实践学习,我们了解了一些关于c语言的知识,理解巩固了我们c语言的理论知识,着对我们将来到社会工作将会有莫大的帮助。
同时它让我知道,只要你努力,任何东西都不会太难。
感谢老师的教导,同学的帮助。
谭浩强《C程序设计(第三版)》清货华大学出版社
严蔚敏《数据结构(C语言版)》清华大学出版社
第八章附录
算法图6中,P!
=R,比较的是关键字,这里指P->
=r->
num。
另图6的算法之外有个判断是否继续输入的循环,这里没有画出。
算法图5的密码确认算法,是初进系统时的算法,不是修改密码的算法。
指导教师评语:
指导教师签名:
年月日
成绩评定
项目
权重
成绩
1、设计过程中出勤、学习态度等方面
0.1
2、设计技术水平
0.4
3、编程风格
0.2
4、设计报告书写及图纸规范程度
0.3
总成绩
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 职工工资 管理 系统 设计 源码