考勤管理系统C语言课程设计.docx
《考勤管理系统C语言课程设计.docx》由会员分享,可在线阅读,更多相关《考勤管理系统C语言课程设计.docx(39页珍藏版)》请在冰豆网上搜索。
HUBEIUNIVERSITYOFAUTOMOTIVETECHNOLOGY
C语言程序设计课程设计报告
课设题目:
考勤管理系统
专 业:
自动化
班 级:
T1123-5
姓 名:
薛志波
成 绩:
良
完成日期:
2012年6月28日-2012年6月30日
指导教师:
史旅华 孙剑萍
目 录
1.课程设计目的 2
2.需求分析 2
2.1要求 2
2.2任务描述 2
2.3运行环境 3
2.4开发工具 3
3.总体设计 3
3.1系统流设计 3
3.2系统模块设计 4
4.详细设计 5
4.1数据结构设计 5
4.2模块接口设计 6
4.3以下是几个主要模块的流程图:
6
5.运行结果 9
5.1主菜单界面:
10
5.2信息录入界面:
11
5.3信息浏览界面:
12
5.4信息查询界面:
14
5.5信息修改界面:
15
6.程序调试与测试 16
6.1程序调试 16
6.2程序测试 16
7.问题与不足 17
8.建议 17
9.编程体会 17
10.程序源代码:
17
11.参考文献 32
12.用户使用手册 33
1.课程设计目的
1)通过课程设计,加深对结构化程序设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。
2)通过课程设计,进一步掌握C语言中重要的数据结构。
掌握并熟练运用指针、链表、结构体、文件等数据结构。
3)通过课程设计,提高程序开发能力,能运用合理的控制流编写清晰高效的程序。
4)通过课程设计,培养C语言知识运用和自学能力,真正的把课堂上获得的知识运用起来,培养自己对程序编写的兴趣,并能独立设计和实现一个小型系统。
5)通过课程设计,加强了自己的程序分析能力。
2.需求分析
2.1要求
1)遵循软件开发过程的基本规范;能灵活应用,初步具备运用C程序解决实际问题的能力。
2)运用结构化程序设计方法,按照课程设计题目要求,完成包括需求分析、数据结构设计、概要设计、详细设计、编写代码、调试和测试C程序等过程。
3)学会利用数组、结构体、链表进行相关信息表示。
4)功能模块划分清晰,系统结构图符合功能操作要求,且有详尽的功能描述
5)各主要功能模块有详尽的流程图及描述,用函数的形式实现,且调用入口、功能、出口等关系正确。
6)所设计的C程序较好的可读性和可靠性;程序书写风格规范,注释清晰。
7)界面友好(良好的人机互交),凡需要输入信息时,都有较详尽的提示信息,并对输入信息有较完善的值域分析。
8)程序经上机调试通过,不应出现语法型、功能型错误,并获得满意的结果。
9)学会通过各功能性测试用例测试程序的能力,尽可能避免原则性错误的出现。
10)掌握编写、调试和测试C语言程序的基本技巧,充分理解结构化程序设计
的基本方法。
11)C语言课程设计报告的内容反应实际设计过程,且符合格式要求,无抄袭现象。
2.2任务描述
假定公司有职工10人,职工有职工号、姓名、以周为记录时长的考勤情况
(迟到次数、早退次数、旷工天数)三项记录,一周上班五天,每天上午上班时间为8:
00,下班时间为11:
30、下午2:
00上班,5:
30下班。
试设计一考勤管理系统,使之能提供以下功能:
(1)系统以菜单方式工作(用键盘输入1~5之间的数来选择功能,其中
6为退出)
(2)职工上班、下班录入功能(职工号、姓名任意给一个即可,上班时间(自动获取系统时间)、下班时间(自动获取系统时间))
(3)职工出勤情况整体浏览功能(职工号、姓名、(迟到、早退、旷工)、无前项则显示全勤)
(4)查询功能,按职工号、姓名、迟到、早退、旷工、全勤查询(至少一种查询方式)
(5)职工考勤信息的删除(给定密码后可按职工号、姓名、考勤情况任一项进行删除)
(6)考勤信息的修改(给定密码后可按职工号、姓名、考勤情况任一项进行删除)
(7)所有数据符合实际应用要求
2.3运行环境
1)WindowsXP/7系统
2)VC++6.0编译环境
2.4开发工具
C语言
返回
修改职工资料
整体浏览
保存职工资料
查询职工资询
职工资料录入
删除职工资料
3.总体设计
3.1系统流设计
本系统的功能模块如图1所示,主要有以下模块:
课程名称界面
主菜单界面
退
出
下班时间
上班时间
按姓名修改
按工号修改
按姓名查询
按工号查询
图1系统功能模块图
3.2系统模块设计
1)主菜单界面:
构造函数voidmenu(),实现系统主菜单的显示。
2)删除职工资料:
构造函数void Del(Link l),实现职工资料的删除。
并且要密码输入的要求(可以修改密码)。
3)职工资料录入:
构造函数voidQur1(Linkl)和voidQur2(Linkl)。
分别对应上班时间和下班时间的录入。
4)查询职工资料:
构造函数void find(Link l),实现对需要修改资料的
学生的查询,并提供姓名和工号两种查询方式。
5)修改职工资料:
构造函数void Modify(Link l),实现职工对工号和姓名的修改。
6)保存职工资料:
构造函数voidSave(Linkl),实现资料修改,删除等功能之后的保存。
7)整体浏览:
构造函数void Disp(Link l),实现对全部职工的全部信息的浏览。
4.详细设计
4.1数据结构设计
(根据具体的题目来写这部分,不要照抄)
根据系统要求,系统中需要保存的数据信息,其结构如下:
数据项名称
数据项系统表示
数据类型
数据长度
备注
工号
num
char
13
姓名
name
char
20
早退
early
int
迟到
late
int
根据系统要求,系统中需要保存的类别信息,其结构如下:
类别代号
类别名称
(根据具体的题目来写这部分,不要照抄)
职工信息1
职工信息4
职工信息2
职工信息3
为了能实现不受限制的增加职工信息,采用链表的结构保存职工信息,在增加职工的基本信息时,创建一个职工信息的节点,将其插入到链表中,示意图如下。
为此,先声明一个类型为structwrker的结构体,其成员为学生的简历信息。
然后通过对指针、链表、文件等数据结构的操作,实现对学生简历信息的录入,插入,存盘,查询,浏览,删除,修改等一系列操作。
其中,结构体定义如下:
ststructworker
{
charnum[13];/*工号*/
charname[20];/*姓名*/intlate;
intearly;intnowork;
};
Comment[Sun1]:
你定义了两个全局变量,还有一个number
Comment[Sun2]:
主要模块的实现应包含程序中重要功能的函数的实现的介绍
typedefstructnode
{
structworkerdata;structnode*next;
}Node,*Link;/*结构体指针*/4.2模块接口设计
1)所有函数模块声明如下:
voidmenu();/*显示菜单*/
node*search/*定位链表中符合要求的接点,并返回该指针*/voidQur1(Linkl)/*职工上班录入功能*/
voidQur2(Linkl)/*职工下班录入功能*/voidfind(Linkl)/*查询职工的信息*/voidDel(Linkl)/*删除职工信息*/
voidModify(Linkl)/*修改职工板块*/voidDisp(Linkl)/*浏览全体职工的信息*/voidSave(Linkl)/*职工信息的保存*/
intmain()/*主函数*/
2)并定义一个全局变量:
typedefstruct*Link;
主要模块的实现
3)
系统以主函数void main()为入口,首先通过textcolor(black)以及
textbackgroud(white)将文本颜色置为黑色,背景颜色置为白色。
然后调用voidmai()函数,进入主菜单界面。
系统接收用户输入的选择,调用相应的函数,进入到下一级菜单进行相关工作。
4.3以下是几个主要模块的流程图:
1)主菜单函数:
是否合法
否
接收用户选项
打印主菜单
是否为0
否
是
退出系统
调用对应选项函数进入下一级菜单
图2主函数流程图
2)全体信息浏览函数:
显示子菜单
是否合法
打印全部链表的内容
用户输入选择
是
否
3)信息查询函数:
图3 全体员工信息浏览流程
按工号查询还是按姓名查询
按工号
按姓名
输入工号
输入姓名
显示信息
显示信息
5.运行结果
5.1主菜单界面:
图5主菜单界面输入功能选择,系统自动进入相应功能界面。
5.2信息删除界面:
图6信息录入界面
5.3信息浏览界面:
图7全部信息浏览
5.3信息查询界面
图8按工号查询
图9按姓名查询
5.4信息修改界面:
从键盘中输入选择,可以修改学号和姓名。
5.5信息保存界面:
图10 修改信息
从键盘中输入选择。
图11文件保存
5.5信息录入界面:
(1)上班录入界面
(2)下班录入界面
6.程序调试与测试
6.1程序调试
主菜单功能调试
删除功能调试:
录入功能调试:
查询功能调试:
修改功能调试:
6.2程序测试
(1)各模块测试用例数据的确定。
随机确定的。
(2)测试结果。
正常
(3)测试中出现的问题的原因和分析。
出现读取错误的现象。
原因是因为疏忽忘了在前面加地址符。
7.问题与不足
(1)在编写代码时,总是犯一些低级的错误,例如大小写字母的切换,分号和大括号的遗漏等。
(2)需求中的返回主菜单,仍需要改进,应在每个子菜单输出打印后都能返回主菜单。
(3)界面的设计不是很灵活,有些东西略显多余。
8.建议
课程设计的过程第一个综合学习的过程,需要运用很多以前学过甚至是没学过的知识点和相关函数。
因此同学们必须查大量的资料或者是问同学们、老师们,此阶段用的时间较长。
在老师验收程序时,希望老师能考虑到这一点。
9.编程体会
此次的课程设计让我真正的体会到了c语言的魅力。
此过程是一个漫长的过程,需要我们认真耐心的对待,只有这样,我们的程序才会达到预期的完美效果。
这个可设差不多做了两个星期左右,这几天每天都呆在机房中。
刚开始对题目根本没有什么头绪,