职工工资管理系统设计带源码
- 格式:doc
- 大小:74.50 KB
- 文档页数:12
1 / 1 课程设计报告 课程名称:职工工资管理系统课程设计
设计题目:带头结点单循环链表(职工工资管理系统) 系 别: 计算机系 专 业: 信息管理 组 别: 学生姓名: 学 号: 起止日期: 09年11月 7 日 ~ 09年 12月20日 指导教师: 1 / 1
目录 第一章 需求分析
1.1 课程设计题目 1.2 课程设计任务及要求 1.3 课程设计思想 1.4 软硬件运行环境及开发工具 第二章 概要设计 2.1 设计流程图 2.2 主要的数据结构 2.3 方法及原理的简要说明 第三章 详细设计 3.1 计算机程序框图 3.2 自编程序 第四章 调试与操作说明 4.1 系统调试 4.2 操作使用说明 第五章 课程设计与总结体会 5.1 对开发的过程归纳与总结 5.2 在过程中遇到的技术难点与解决方法 5.3 程序尚存问题 5.4 进一步开发的见解与建议 5.5 收获与体会 第六章 致谢 第七章 参考文献 第八章 附录
源码链接 1 / 1
第一章 需求分析 1. 课程设计题目 带头结点的单循环链表(职工工资管理系统) 2. 课程设计任务及要求 编写一个职工工资管理系统,可以实现对数据的基本处理,要求用带头结点的单循环链表实现 3. 课程设计思想 首先完成对程序的密码的确认,其次完成数据录入模块,然后实现对已录入的数据的存储和读入,最后就可以在其基础建立链表完成其余各项操作 4. 软硬件运行环境及开发工具 Turboc2.0,Windows XP,VC++6.0 第二章 概要设计 2.1 设计流程图
图1主函数流程图 2.1.1录入读取建链流程图 建链流程图如图2所示
图2建链流程图 2.1.2考勤基本情况增、删、改数据流程图 操作流程图如图3所示
确认密码 主菜单
密码修改 录入摸块 查找摸块 插入模块 保存模块 保存读入 统计模块 删除模块 排序模块
用户 D1 数据表
增加数据
算法
用户 算法 D1 数据表
窗口展示 1 / 1
图3操作函数流程图 2.2 主要的数据结构 2.2.1链表结构如图4所示
图4链表结构图 2.2.2链表的结点结构如表1所示 表1链表的结点结构 Char[20] Char[4] Int Int Int Int 指针 Nam Sex Bam Dem Inm Mon next *姓名 性别 基础工资 扣除工资 补贴工资 实际工资 下一结点
第三章 详细设计 3.1 计算机程序框图 3.1.1密码确认部分程序图如表5所示
有
是 无 否 不对
对
图5 密码确认部分程序图 3.1.2确认编号是否存在部分程序图如图6所示
Head 结点1 结点2 …… 有无密码 I=0
退出 确认密码I ++
主菜单
I<2 1 / 1
是 是 否 否
是 是 否
图6确认编号是否存在部分程序图 3.2 自编程序 3.2.1录入模块 void setlink(Link head) { /*建立单链表*/ Link p,q,r; int i=0;int c; int a=1; int b; printf("\n"); p=head; r=head->next; while(a==1) {
B=1 输入P与R比较
R!=NULL R!
R=R->NEXT R=NULL
B=0 B=1 输入其他部分
开始录入 1 / 1
q=(LNode *)malloc(sizeof(struct node)); b=1; while(b==1)/*编码确认部分*/ { printf("输入编号:\n"); scanf("%d",&q->num); r=head->next; while(r!=NULL&&r!=head&&r->num!=q->num) { r=r->next; } if(r==NULL||r==head) b=0; else { printf("你输入的员工已录入,请重新输入。\n"); b=1; }
} printf("输入姓名:\n");scanf("%s",&q->nam); printf("输入性别:");scanf("%s",&q->sex); printf("输入基本工资:\n");scanf("%d",&q->bam); printf("输入补贴工资:\n"); scanf("%d",&q->inm); printf("输入扣除工资:\n");scanf("%d",&q->dem); q->mon=q->bam+q->inm-q->dem; p->next=q;p=q; i++; printf("是否输入另一个数据?\n输入1继续录入,其他键退出"); scanf("%d",&c); getchar(); if(c==1) { q->next=head; continue; } else { q->next=head; break; 1 / 1
} } printlink(head); getchar(); meau(head); } 3.2.2排序模块的部分代码(起泡法) void paixu1(Link head) { Link q,p,t; int m; q=head->next; p=q->next; t=(Link)malloc(sizeof(struct node)); while(q->next!=head) { while(p!=head) { if(q->num>p->num) { t->num=p->num; strcpy(t->nam,p->nam); strcpy(t->sex,p->sex); t->bam=p->bam; t->inm=p->inm;t->dem=p->dem;t->mon=p->mon;
p->num=q->num; strcpy(p->nam,q->nam); strcpy(q->sex,q->sex); p->bam=q->bam; p->inm=q->inm;p->dem=q->dem;p->mon=q->mon;
q->num=t->num; strcpy(q->nam,t->nam); strcpy(q->sex,t->sex); q->bam=t->bam; q->inm=t->inm;q->dem=t->dem;q->mon=t->mon; } 1 / 1
p=p->next; } q=q->next; p=q->next; } printf("排序成功!!!\n"); printf("是否输出数据,输入1输出,其他键退出"); scanf("%d",&m); if(m==1) {printlink(head); } getchar(); meau(head); } 3.2.3姓名查找的部分代码 void namesearch(Link head) { char y[20]; char c[20]=""; char b[20]=""; Link p; int t; int a=1; p=head->next; printf("请输入所要查询的姓名:\n"); scanf("%s",&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-