c++课程设计报告——考勤统计

上传人:第*** 文档编号:33591019 上传时间:2018-02-16 格式:DOCX 页数:16 大小:667.56KB
返回 下载 相关 举报
c++课程设计报告——考勤统计_第1页
第1页 / 共16页
c++课程设计报告——考勤统计_第2页
第2页 / 共16页
c++课程设计报告——考勤统计_第3页
第3页 / 共16页
c++课程设计报告——考勤统计_第4页
第4页 / 共16页
c++课程设计报告——考勤统计_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《c++课程设计报告——考勤统计》由会员分享,可在线阅读,更多相关《c++课程设计报告——考勤统计(16页珍藏版)》请在金锄头文库上搜索。

1、面向对象程序设计课程设计中南民族大学计算机科学学院 专业 计算机科学与技术 学号:201521091067 姓名 :刘申臣 1考勤统计一 目的1、课程设计目的根据所学知识,编写指定题目的 C+语言程序,并规范地完成课程设计报告。通过课程设计,加深对C+面向对象程序设计课程所学知识的理解,熟练掌握和巩固 C+语言的基本知识和语法规范,掌握 C+语言的基础知识,理解面向对象系统的封装性;熟练使用 C 语言中的函数、数组、指针、链表和字符串等基本知识;能够进行程序调试过程中的异常处理;进一步掌握利用 C+进行类的定义和操作方法;综合利用上述知识,学习设计并编写面向对象的 C+简单应用程序;培养解决复

2、杂任务功能分解方法(自顶向下逐步求精、模块化设计、信息隐藏等)。学会编制结构清晰、风格良好、数据结构适当的 C+语言程序,从而具备利用计算机编程分析解决综合性实际问题的初步能力2、系统设计目的本系统设计目的在于,设计建立考勤系统,可以对研究生进出实验室进行签到记录,方便快捷直观地统计考勤信息。同时,利用系统统计管理可直观了解查询到当天实验室的签到考勤情况,并作出科研时间排名,对每个人的科研情况有更好的管理和了解。二 需求分析1、输入数据需求分析用户可从键盘输入相关信息:姓名、学号、签到时间(时、分、秒)、离开时间(时、分、秒、)等等。2、输出数据需求分析可直观明了看到当天到达实验室科研的人员的

3、相关信息,在屏幕上依次显示每个人的学号、姓名、签到时间、离开时间、科研时间(以分钟为单位)、排名情况(按科研时间)。3、程序使用功能需求分析系统主要包含 3 大使用功能:1) 研究生信息录入功能,能够提示用户逐项输入研究生信息(时、分、秒分三次逐项输入),并检查输入信息的合法性(如时、分、秒的取值范围,用户输入非法字符提示等) ,同时以分为单位计算每位同学的科研时间;用户能够进行多次的信息录入,直到程序运行退出为止;2) 考勤信息浏览功能,显示所有研究生的考勤情况;有良好的版面依次显示每个人学号、姓名、签到时间、离开时间、科研时间、排名情况等等;用户可以随时调用查看浏览当前考勤的总体情况,直到

4、程序运行停止为止;面向对象程序设计课程设计中南民族大学计算机科学学院 专业 计算机科学与技术 学号:201521091067 姓名 :刘申臣 23) 排序功能,按科研时间长短进行排序并显示。用户可录入信息并实时根据所录入信息对当前排名情况进行排序或修改。4、非使用功能需求分析系统主要包含以下非使用功能:1) 使用菜单选择操作,具有友好的人机交互提示和显示,方便用户输入及查看程序运行过程、结果;2) 对于运行解决问题的步骤(例如从键盘输入的数据、输出到显示器的结果),除了能够在显示器上显示以外,能够处理后的结果用文件的方式保存到 outfile.txt 文件中。3) 程序算法说明清晰,理论分析与

5、计算正确,运行情况良好,实验测试数据无误,容错性强(能对错误输入进行判断控制)编程风格良好(包括缩进、空行、适当注释、变量名和函数名见名知意,程序容易阅读等)。三 概要设计1、总体设计本系统主要有三大板块构成:类的定义声明、功能实现函数、主函数;总体结构如图1 所示:图 1 总体设计流程图2、类的概要设计设计定义一个 Student 类,主要包括姓名、学号、到达小时、到达分钟、到达秒数、离开小时、离开分钟、离开秒数、科研时间、排名、总人数等数据成员;构造函数、设置信息函数和获取信息函数等成员函数,具体结构如图 2 所示:考勤统计系统学生类的定义声明程序功能实现函数主函数及函数调用面向对象程序设

6、计课程设计中南民族大学计算机科学学院 专业 计算机科学与技术 学号:201521091067 姓名 :刘申臣 3Student 类数据成员(protected)name姓名number学号reachHour到达小时reachMinute到达分钟reachSecond到达秒数leaveHour离开小时leaveMinute离开分钟leaveSecond离开秒数time科研时间rank时间排序成员函数(public)count总人数(静态成员)Student()构造函数设置信息函数set_name( )设置姓名set_number( )设置学号set_reachHour( )设置到达小时set_r

7、eachMinute( )设置到达分钟set_reachSecond( )设置到达秒数set_leaveHour( )设置离开小时set_leaveMinute( )设置离开分钟set_leaveSecond( )设置离开秒数set_time( )设置科研时间set_rank( )设置排名获取信息函数get_name( )获取姓名get_number( )获取学号get_reachHour( )获取到达小时get_reachMinute( )获取到达分钟get_reachSecond( )获取到达秒数get_leaveHour( )获取离开小时get_leaveMinute( )获取离开分钟g

8、et_leaveSecond( )获取离开秒数get_time( )获取科研时间get_rank( )获取排名图 2 类的主要 设计概要图3、功能实现函数的设计功能实现函数部分主要包含了菜单显示函数、信息登记函数、计算科研时间函数、排功能实现函数ShowInterface( )界面菜单函数,显示选项以及提示信息Student *Registration( )Student类的指针函数,登记录入人员信息ResearchTime( )计算时间函数,计算每个人的科研总时间Sort( )排序函数,根据每个人的科研时间按分钟进行排序Save( )保存数据函数,将录入成功的人员信息以 txt格式文件方式保

9、存Show( )打印信息函数,将录入成功的人员信息经排序后显示到屏幕面向对象程序设计课程设计中南民族大学计算机科学学院 专业 计算机科学与技术 学号:201521091067 姓名 :刘申臣 4序函数、保存数据函数以及打印信息函数,具体结构如图 3 所示:图 3 功能实现函数结构图4、主函数的设计主函数部分主要是获取用户的输入指令而执行相应的命令,包括了录入信息,打印信息和退出三个板块,具体结构如图 4 所示图 4 主函数结构图四 详细设计1、头文件主函数main()*temp定义类的指针对象input用户菜单按键输入指令ShowInterface( )调用函数显示菜单输入指令输入指令为“e”

10、录入信息Registration( )登记信息ResearchTime( )计算时间Sort( )进行排序Save( )保存数据输入指令为“o”打印信息Show()打印处理后信息输入指令为“e”退出程序exit(0)退出面向对象程序设计课程设计中南民族大学计算机科学学院 专业 计算机科学与技术 学号:201521091067 姓名 :刘申臣 5为保证程序的合法性、标准性和代码的编译实现,需首先声明以下#include 头文件:1) #include输入输出流,C+开发环境必备头文件;2) #include可用于字符数组处理的编译预处理头文件;3) #include文件流,可用于代码执行文件操作

11、;同时通过语句 using namespace std;声明标准命名空间,声明各标识符可见范围。2、类的声明及成员函数为了保证数据的封装性以及面向对象编程的结构清晰明了,先用语句 class Student ;声明定义了一个 Student 类,在类中包含了 protected 和 public 两种访问权限数据成员或函数。protected(保护属性访问权限部分):对象中的姓名和学号两个信息为了方便和避免歧义可用 string(字符串型)数据类型声明定义,以变量 name、number 分别表示姓名和学号,即 string name;string number;迎合用户需求分别以reachH

12、our、reachMinute、reachSecond、leaveHour、leaveMinute、leaveSecond、time、rank 等变量表示到达小时、到达分钟、到达秒数、离开小时、离开分钟、离开秒数、科研总时间和排名,这些数据都是以数字表示,因此,这些变量的数据类型声明定义使用int(整型)。public(公共访问属性部分):为了方便各函数可使用 Student 类中总人数这一数据,在公共访问部分声明定义静态数据总人数 count 即 static int count;通过定义声明构造函数 Student()来初始化类的对象,根据传入参数类型不同重载出两个构造函数并进行变量的初始

13、化,例第一个传入整型数据构造函数中初始化到达小时 leaveHour = 0;其他整型数据变量同理初始化为 0;第二个构造函数声明传入参数为对象 Student number = p.number;用 const 修饰保证数据不被修改。为了编序方便增加设置信息和获取信息的成员函数,例如设置姓名 void set_name(string nm) name = nm; count+; ,每当设置姓名时总人数加 1,获取姓名 string get_name() const return name; ,用 const 修饰保证整型返回值不被修改,其他变量(到达离开时、分、秒,总时间,排名)设置获取函数

14、同理进行声明定义。3、显示菜单函数为使得程序运行可进行菜单选择操作以及良好的人机交互界面,用输出流 cout 搭建菜单界面,用语句 coutset_name(info);等实现设置对象信息。为了保证用户输入时间时的合法性,避免输入错误时间或非法字符同时提示用户重新输入,在设置时间部分需要用一个判断循环结构实现相应功能,逻辑算法伪代码如下:输入参数 /到达小时if ( 参数 =0 且 参数 set_reachHour(参数) /调用函数将参数传入设置到达小时否则执行 do输出 参数;当 while( 参数 =24 )时执行 /用户输入错误时间字符时重复提示输入循环退出 temp-set_reac

15、hHour(参数) /将输入正确后的参数传入设置小时(算法结构结束)同理,用此算法结构分别对分钟、秒数(其中判断参数范围为大于或等于 0 且小于60)进行用户的输入判断合法与否,保证登记的用户相关信息正确无误同时错误时可以提示用户重新输入。5、计算科研总时间函数为使数据使用的方便性,定义计算时间函数 ResearchTime( )中传入参数类型为Student *temp 即类的对象,定义一个整型的局部变量 reschT 用作总时间传递给设置总时间函数,计算科研时间时考虑到可能存在科研时间段跨越 0 点情况,所以计算语法结构伪代码如下:if( 对象离开的小时 = 对象到达小时 )/计算不过 0 点情况是 总时间 = (离开小时*60+离开分钟) - (到达小时*60+到达分钟)temp-set_time(reschT) /调用函数将总时间传入设置时间否则总时间 = ( (23-对象到达小时)*60 + (60-对象到达分钟) )+(对象离开小时*60 +对象离开分钟)temp-set_time(reschT) /调用函数将总时间传入设置时间(算法结构结束)由此可计算出各对象在实验中的科研总时间,为时间排序提供参数数据。6、排序函数面向对象程序设计课程设计中南民族大学计算机科学学院 专业 计算机科学与技

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号