C语言课程设计报告范例职工考勤信息管理系统.docx
- 文档编号:14598073
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:71
- 大小:1.47MB
C语言课程设计报告范例职工考勤信息管理系统.docx
《C语言课程设计报告范例职工考勤信息管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告范例职工考勤信息管理系统.docx(71页珍藏版)》请在冰点文库上搜索。
C语言课程设计报告范例职工考勤信息管理系统
HUBEIUNIVERSITYOFAUTOMOTIVETECHNOLOGY
C语言程序设计
课程设计报告
课设题目:
职工考勤信息管理系统
专业:
电气工程及其自动化
班级:
*************
姓名:
*****
成绩:
完成日期:
2012年12月28日-2013年1月11日
指导教师:
*********
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任务描述
此系统以公司上班考勤为背景,职工有职工号、姓名、以周为记录时长的考勤情况(迟到次数、早退次数、旷工天数)三项记录,一周上班五天,每天上午上班时间为8:
00,下班时间为11:
30、下午2:
00上班,5:
30下班。
该考勤管理系统,提供以下功能:
1)系统以菜单方式工作(用键盘输入数字来选择功能);
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)系统欢迎界面:
构造函数voidwelcome(),实现欢迎使用职工考勤管理系统的显示。
2)主菜单界面:
构造函数voidmenuprint(),实现系统主菜单的显示。
3)职工考勤信息录入:
构造函数voidloadinf(),实现从磁盘录入职工考勤信息及显示职工考勤信息。
4)显示题目要求:
构造函数voidprinttimu(),实现对题目要求的显示。
5)考勤信息的录入:
构造函数voidmonuprecord()、voidmondownrecord()、voidafteruprecord()、voidafterdownrecord()、voidevenuprecord()、voidevendownrecord(),实现对上午上下班、下午上下班和晚上上下班的录入,构造函数voidgetjudge(charwh[])对输入的职工号进行判断。
6)显示所有学生信息:
构造函数voidallprint(),实现对所有职工考勤信息的浏览。
7)查询职工考勤信息:
构造查找函数voidseek(),并通过对密码函数voidputsecret()、职工号判断函数voidgetjudge(charwh[])的调用,实现相应的职工考勤信息的浏览。
8)修改职工考勤信息:
构造修改函数voidchange()并通过对密码函数voidputsecret()、职工号判断函数voidgetjudge(charwh[])的调用,实现相应的职工考勤信息(姓名、迟到次数、早退次数、旷工次数)的修改。
9)删除职工考勤信息:
构造删除函数voidcutoff()并通过对密码函数voidputsecret()、职工号判断函数voidgetjudge(charwh[])的调用,实现相应的职工考勤信息(姓名、迟到次数、早退次数、旷工次数)的删除。
10)保存职工考勤信息:
构造函数voidinforsave(),通过保存标志全局变量writenflag将考勤信息保存入文件中。
4.详细设计
4.1数据结构设计
根据系统要求,系统中需要保存的数据信息,其结构如下:
数据项名称
数据项系统表示
数据类型
数据长度
备注
职工号
p1->number
字符串
20个字节
职工姓名
p1->name
字符串
20个字节
迟到次数
p1->late
整型
4个字节
早退次数
p1->earlyleave
整型
4个字节
旷工次数
notwork
整型
4个字节
根据系统要求,系统中需要保存的类别信息,其结构如下:
类别代号
charnumber[20]
charname[20]
intlate
intearlyleave
intnotwork
类别名称
职工号
职工姓名
迟到次数
早退次数
旷工次数
为了能实现系统的优越性和c语言的精华采用链表的建立职工考勤信息,示意图如下。
为此,先声明一个类型为structworker的结构体,其成员为职工考勤信息。
然后通过对指针、链表、文件等数据结构的操作,实现对职工考勤信息的录入,存盘,查询,浏览,删除,修改等一系列操作。
其中,结构体定义如下:
structworker
{
charnumber[20];
charname[20];
intlate;
intearlyleave;
intnotwork;
structstudent*next;
};
为了实现程序的功能,还要定义一个时间的结构体,用于存放系统时间,具体定义如下:
时间结构体:
typedefstructnow{
intyear;
intmonth;
intweekday;
inthour;
intminute;
}NOW;
NOWnowtime;
4.2模块接口设计
1)所有函数模块声明如下:
voidwelcome;/*显示欢迎界面*/
voidprinttimu();/*显示题目*/
voidmenuprint();/*主菜单打印*/
voidloadinf();/*从磁盘导入职工信息到内存*/
voidmonuprecord();/*上午上班时间录入*/
voidmondownrecord();/*上午下班时间录入*/
voidafteruprecord();/*下午上班时间录入*/
voidafterdownrecord();/*下午下班时间录入*/
voidevenuprecord();/*晚上上班时间录入*/
voidevendownrecord();/*晚上下班时间录入*/
voidallprint();/*显示所有考勤职工信息*/
voidseek();/*查找考勤职工信息*/
voidchange();/*修改考勤职工信息*/
voidcutoff();/*删除考勤职工信息*/
voidinforsave()/*保存考勤信息*/
voidquit();/*退出*/
voidinput();/*输入选择*/
voidgetjudge(charwh[]);/*输入判断*/
voidputsecret();/*密码*/
2)并定义一个全局变量以及结构体指针:
结构体指针:
structworker*head=NULL,*p1,*p2,*p3;
保存职工信息标志的全局变量:
intwritenflag=0;
3)主要模块的实现
系统以主函数intmain()为入口,首先调用voidwelcome()函数,显示系统欢迎界面。
然后调用voidmenuprint()函数,显示主菜单界面。
其次调用voidloadinf()函数,从文件读入职工考勤信息。
最后调用voidinput()函数,使系统接收用户输入的选择,调用相应的函数,进入到下一级菜单进行相关工作。
4.3以下是几个主要模块的流程图:
1)文件读入考勤信息并打印函数:
图2文件读入信息流程图
2)主菜单函数:
图3主菜单函数流程图
3)考勤信息录入函数:
图4上下班时间函数流程图
4)显示所有职工考勤信息函数:
图5显示所有职工考勤信息函数流程图
5)查找职工考勤信息函数:
图6显示指定职工号的职工考勤信息
6)修改职工考勤信息函数:
图7修改职工考勤信息函数流程图
7)删除职工考勤信息函数:
图8删除指定职工号的职工考勤信息
8)保存职工考勤信息函数:
图9保存职工考勤信息
5.运行结果
5.1欢迎界面:
图10欢迎界面
5.2录入职工信息界面:
图11职工信息录入界面
5.3主菜单界面:
图12主菜单界面
5.4上午上班时间录入界面:
图13上午上班时间录入界面
5.5显示题目界面:
图14题目显示界面
5.6上午下班时间录入界面:
图15上午下班时间录入界面
5.7下午上班时间录入界面:
图16下午上班时间录入界面
5.8下午下班时间录入界面:
图17下午下班时间录入界面
5.9晚上上班时间录入界面:
图18晚上上班时间录入界面
5.10晚上下班时间录入界面:
图19晚上下班时间录入界面
5.11全部考勤信息的浏览界面:
图20全部职工考勤信息的浏览界面
5.12查询职工考勤信息界面:
图21查询职工考勤信息界面
5.13修改职工考勤信息界面:
图21修改职工考勤信息界面
5.14删除职工考勤信息界面:
图22删除职工考勤信息界面
5.15保存职工考勤记录界面:
图23保存职工考勤信息界面
5.16退出系统界面:
图24退出系统界面
6.程序调试与测试
6.1程序调试
文件录入信息出错的界面
图25文件录入信息出错的界面
主菜单选择输入错误的界面
例如,输入“aubds”会出现以下运行结果:
图26择输入错误的界面
职工号输入不合法的的界面
例如,在上午上班考勤时间录入时,输入的职工号为“1aedhi”会出以下运行结果(其它要输入职工号的地方与此处相同):
图27选择输入错误的界面
密码输入错误的界面
例如,在用查找、修改和删除功能时输入错误密码“sdfusoif”会出现以下运行结果:
图28密码输入错误的界面
6.2程序测试
(1)各模块测试用例数据的确定
建立的文件为:
123.txt;
文件路径为:
c:
\\123.txt;
初始密码为:
abc123;
文件中的数据为:
1001范小城000
1002李小贤000
1003冯小刚000
1004何小适000
1005李小震000
1006李小林000
1007吴小坤000
1008冷小龙000
1009艾小鹏000
1010李小贝000
职工按职工号、姓名、迟到次数、早退次数、旷工次数的格式保存。
规定:
早上8:
00上班11:
30下班;中午2:
00上班5:
30;
晚上6:
00上班9:
00下班。
上班要求准点,五分钟以内算迟到,30分钟后到算旷工,早于规定下班时间算旷工。
(2)测试结果
从文件录入职工信息
图29从文件录入职工信息的界面
考勤信息录入界面
此处以上午上班时间录入(其它考勤信息与此类似)为例,
现在已对职工号为1001和1010的职工进行此操作:
图30职工号为1001考勤信息录入的界面
图31职工号为1010考勤信息录入的界面
全部考勤信息浏览界面
图32全部职工考勤信息的浏览界面
查询指定职工号职工考勤记录界面
现在已对职工号为1001和1010的职工进行此操作:
图33查询职工号为1001职工考勤信息的界面
图34查询职工号为1010职工考勤信息的界面
修改指定职工号职工考勤记录界面
现在对职工号为1001和1010的职工进行此操作。
职工号为1001更改结果为姓名“q”,迟到次数“1”,早退次数“3”,旷工次数“2”。
图35修改职工号为1001职工考勤信息的界面
职工号为1001更改结果为姓名“p”,迟到次数“1”,早退次数“3”,旷工次数“2”。
图37修改职工号为1010职工考勤信息的界面
1001和1010的职工进行此操作后文件中的结果为:
图38修改职工号为1001和1010职工考勤信息后的文件界面
删除指定职工号职工考勤记录界面
现在对职工号为1001和1010的职工进行此操作。
图38删除职工号为1001职工考勤信息的界面
图39删除职工号为1010职工考勤信息的界面
图40删除职工号为1001和1010职工考勤信息后的文件界面
保存考勤信息
图41保存职工考勤信息的界面
(3)测试中出现的问题的原因和分析
特别注意:
每执行一个操作后一定要执行保存功能,这样才能将信息及时准确无误的把存入文件。
7.问题与不足
(1)需求分析中存在的问题和分析
题目中没有说明是否需要添加职工,如果在题目中加上密码修改功能,添加职工考勤信息等功能,做出来的系统会更完美。
(2)概要设计中存在的问题和分析
系统在记录考勤信息时过于粗糙。
(3)详细设计中存在的问题和分析
在记录职工上下班时间时,不应只统计违纪次数,还要把每一次上下班的具体时间组一个记录,可以将此处重新建一个链表,用以存放考勤的具体信息。
另外,考虑到实际情况,有些职工可能在上班时不录入考勤信息,此时应在系统中加一个时间的判断,如果咋规定时间内未进入考勤系统,系统将自动视其为上班考勤违纪。
(4)代码编制中存在的问题和分析
在输入函数中,再输入的地方加一个while
(1){if(…)break;}对输入的选择进行判断,输入的数据以字符串的形式赋给一个数组对输入数据的前两位进行判断,这样系统会更完美。
(5)调试和测试中存在的问题和分析
每执行一个操作后一定要执行保存功能,这样才能将信息及时准确无误的把存入文件。
8.建议
课程设计的题目涉及范围应该更广,可以增加:
机票管理系统和景点售票系统等。
对于课设的时间按排,可以提前把题目给学生,这样可以提前做课设以及复习考试。
9.编程体会
经历了编c语言课程设计后,我弄懂了在前几周课堂上没搞明白的东西,例如,建立链表的具体操作、在进行文件操作时,文件末尾不能存在回车、写入文件时一定要注意文件中数据的格式,否则在后面的读文件中会出错、在用“fscanf“写整型和浮点型的数据到文件是不能把“&”漏掉。
10.程序源代码:
#include
#include
#include
#include
#include
#include
#defineNULL0
#defineLENsizeof(structworker)
structworker{
charnumber[20];
charname[20];
intlate;
intearlyleave;
intnotwork;
structworker*next;
};
typedefstructnow{
intyear;
intmonth;
intday;
intweekday;
inthour;
intminute;
}NOW;
NOWnowtime;
structworker*head=NULL,*p1,*p2,*p3;/*定义结构体指针head为头指针p1为输入数据缓存空间指针p2为尾指针*/
intwritenflag=0;
voidwelcome();/*欢迎函数*/
voidprinttimu();/*显示题目*/
voidmenuprint();/*主菜单打印*/
voidloadinf();/*从磁盘导入职工信息到内存*/
voidmonuprecord();/*上午上班时间录入*/
voidmondownrecord();/*上午下班时间录入*/
voidafteruprecord();/*下午上班时间录入*/
voidafterdownrecord();/*下午下班时间录入*/
voidevenuprecord();/*晚上上班时间录入*/
voidevendownrecord();/*晚上下班时间录入*/
voidallprint();/*显示所有职工信息*/
voidseek();/*查找*/
voidchange();/*修改*/
voidcutoff();/*删除*/
voidinforsave();/*保存考勤信息*/
voidquit();/*退出*/
intinput();/*输入选择*/
voidgetjudge(charwh[]);/*输入判断*/
voidputsecret();/*密码*/
intmain()
{
welcome();/*欢迎函数*/
menuprint();
loadinf();
system("cls");
for(;;)
{
switch(input())/*显示主菜单*/
{
case0:
printtimu();break;
case1:
monuprecord();break;/*上午上班时间录入*/
case2:
mondownrecord();break;/*上午下班时间录入*/
case3:
afteruprecord();break;/*下午上班时间录入*/
case4:
afterdownrecord();break;/*下午下班时间录入*/
case5:
evenuprecord();break;/*晚上上班时间录入*/
case6:
evendownrecord();break;/*晚上下班时间录入*/
case7:
allprint();break;/*显示所有职工信息*/
case8:
seek();break;/*查找*/
case9:
change();break;/*修改*/
case10:
cutoff();break;/*删除*/
case11:
inforsave();system("cls");break;/*保存考勤信息*/
case12:
system("cls");quit();return0;/*退出*/
default:
{
rewind(stdin);
printf("\n\n输入错误,按任意键返回.....\n");
getch();
system("cls");/*清屏*/
}
}
}
return0;
}
voidwelcome()
{
printf("\n\n\n\n\t\t***************************************************\n");
printf("\t\t**************************\n");
printf("\t\t**************************\n");
printf("\t\t**\t\t\t\t\t\t**\n");
printf("\t\t**\t\t\t\t\t\t**\n");
printf("\t\t**\t欢迎使用职工考勤系统!
\t**\n");
printf("\t\t**\t\t\t\t\t\t**\n");
printf("\t\t**\t\t\t\t\t\t**\n");
printf("\t\t**\t\t\t\t\t\t**\n");
printf("\t\t**\t\t指导老师:
***********\t\t**\n");
printf("\t\t**\t\t\t\t\t\t**\n");
printf("\t\t**\t\t制作人:
************\t\t**\n");
printf("\t\t**\t\t\t\t\t\t**\n");
printf("\t\t*****
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 范例 职工 考勤 信息管理 系统