职工工资管理系统设计带源码Word格式.docx
《职工工资管理系统设计带源码Word格式.docx》由会员分享,可在线阅读,更多相关《职工工资管理系统设计带源码Word格式.docx(14页珍藏版)》请在冰豆网上搜索。
3.2自编程序
第四章调试与操作说明
4.1系统调试
4.2操作使用说明
第五章课程设计与总结体会
5.1对开发的过程归纳与总结
5.2在过程中遇到的技术难点与解决方法
5.3程序尚存问题
5.4进一步开发的见解与建议
5.5收获与体会
第六章致谢
第七章参考文献
第八章附录
源码链接
1.课程设计题目
带头结点的单循环链表(职工工资管理系统)
2.课程设计任务及要求
编写一个职工工资管理系统,可以实现对数据的基本处理,要求用带头结点的单循环链表实现
3.课程设计思想
首先完成对程序的密码的确认,其次完成数据录入模块,然后实现对已录入的数据的存储和读入,最后就可以在其基础建立链表完成其余各项操作
4.软硬件运行环境及开发工具
Turboc2.0,WindowsXP,VC++6.0
2.1设计流程图
图1主函数流程图
2.1.1录入读取建链流程图
建链流程图如图2所示
图2建链流程图
2.1.2考勤基本情况增、删、改数据流程图
操作流程图如图3所示
图3操作函数流程图
2.2主要的数据结构
2.2.1链表结构如图4所示
图4链表结构图
2.2.2链表的结点结构如表1所示
表1链表的结点结构
Char[20]
Char[4]
Int
指针
Nam
Sex
Bam
Dem
Inm
Mon
next
*姓名
性别
基础工资
扣除工资
补贴工资
实际工资
下一结点
3.1计算机程序框图
3.1.1密码确认部分程序图如表5所示
有
是
无
否
不对
对
图5密码确认部分程序图
3.1.2确认编号是否存在部分程序图如图6所示
是
是否
图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;
}
}
输入姓名:
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继续录入,其他键退出"
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->
bam=p->
bam;
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->
num=t->
nam,t->
sex,t->
bam=t->
inm=t->
dem=t->
mon=t->
p=p->
q=q->
排序成功!
!
是否输出数据,输入1输出,其他键退出"
m);
if(m==1)
{printlink(head);
getchar();
meau(head);
3.2.3姓名查找的部分代码
voidnamesearch(Linkhead)
chary[20];
charc[20]="
;
charb[20]="
Linkp;
intt;
p=head->
请输入所要查询的姓名:
y);
t=strlen(y);
strncpy(c,y,t);
=head)
{strncpy(b,p->
nam,t);
if(strcmp(c,b)==0)
if(a==1)
{printf("
编号姓名性别基础工资扣除工资补贴工资实际工资\n"
a=0;
}
%2d%10s%6s%11d%12d%12d%12d\n"
p->
num,p->
bam,p->
dem,p->
inm,p->
mon);
p=p->
}
if(a==1)
没有该学生数据。
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语言的编译,有更深的体会和了解。
对传值传址更为熟悉,对单链表的相关算法,如键立,插入,删除等也基本掌握,最基本的单链算法是后期学习的基础,调试程序作分析找错误时,画图细心分析每步的进程,提高了逻辑能力和思维能力。
也经过这次的练习找到自已很多的不足,好的编程习惯很重要,可以节省不少的调试时间。
对基础的掌握很重要,这样可不不必时时查资料,向同学咨询。
计算机编程要多多练习,这样才可以熟悉,可以加深记忆,提高编程的能力。
在编程的过程中,有时因某些错误难以改正而无奈,可以调试改正好后的成就感也让人愉悦。
大学的生活很松散,在编程过程中会觉得时间过得很快,专心的做一件事,也让人充实。
这也是学习计算机的乐趣所在,以后会加深在计算机方面的学习。
设计确实有些辛苦,但苦中也有乐,在如今单一的理论学习中,很少有机会能有实践的机会,但我们可以,而且设计也是一个团队的任务,一起的工作可以让我们有说有笑,相互帮助,配合默契,多少人间欢乐在这里洒下,大学里一年的相处还赶不上这一个月的合作,我感觉我和同学们之间的距离更加近了;
我想说,确实很累,但当我们看到自己所做的成果时,心中也不免产生兴奋;
同时我认为我们的工作是一个团队的