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

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《面向对象程序设计》课程设计中南民族大学计算机科学学院专业计算机科学与技术学号:201521091067姓名:刘申臣1考勤统计一目的1、课程设计目的根据所学知识,编写指定题目的C++语言程序,并规范地完成课程设计报告。通过课程设计,加深对《C++面向对象程序设计》课程所学知识的理解,熟练掌握和巩固C++语言的基本知识和语法规范,掌握C++语言的基础知识,理解面向对象系统的封装性;熟练使用C语言中的函数、数组、指针、链表和字符串等基本知识;能够进行程序调试过程中的异常处理;进一步掌握利用C++进行类的定义和操作方法;综合利用上述知识,学习设计并编写面向对象的C++简单应用程序;培养解决复杂任务功能分解方法(自顶向下逐步求精、模块化设计、信息隐藏等)。学会编制结构清晰、风格良好、数据结构适当的C++语言程序,从而具备利用计算机编程分析解决综合性实际问题的初步能力2、系统设计目的本系统设计目的在于,设计建立考勤系统,可以对研究生进出实验室进行签到记录,方便快捷直观地统计考勤信息。同时,利用系统统计管理可直观了解查询到当天实验室的签到考勤情况,并作出科研时间排名,对每个人的科研情况有更好的管理和了解。二需求分析1、输入数据需求分析用户可从键盘输入相关信息:姓名、学号、签到时间(时、分、秒)、离开时间(时、分、秒、)等等。2、输出数据需求分析可直观明了看到当天到达实验室科研的人员的相关信息,在屏幕上依次显示每个人的学号、姓名、签到时间、离开时间、科研时间(以分钟为单位)、排名情况(按科研时间)。3、程序使用功能需求分析系统主要包含3大使用功能:1)研究生信息录入功能,能够提示用户逐项输入研究生信息(时、分、秒分三次逐项输入),并检查输入信息的合法性(如时、分、秒的取值范围,用户输入非法字符提示等),同时以分为单位计算每位同学的科研时间;用户能够进行多次的信息录入,直到程序运行退出为止;2)考勤信息浏览功能,显示所有研究生的考勤情况;有良好的版面依次显示每个人学号、姓名、签到时间、离开时间、科研时间、排名情况等等;用户可以随时调用查看浏览当前考勤的总体情况,直到程序运行停止为止;《面向对象程序设计》课程设计中南民族大学计算机科学学院专业计算机科学与技术学号:201521091067姓名:刘申臣23)排序功能,按科研时间长短进行排序并显示。用户可录入信息并实时根据所录入信息对当前排名情况进行排序或修改。4、非使用功能需求分析系统主要包含以下非使用功能:1)使用菜单选择操作,具有友好的人机交互提示和显示,方便用户输入及查看程序运行过程、结果;2)对于运行解决问题的步骤(例如从键盘输入的数据、输出到显示器的结果),除了能够在显示器上显示以外,能够处理后的结果用文件的方式保存到outfile.txt文件中。3)程序算法说明清晰,理论分析与计算正确,运行情况良好,实验测试数据无误,容错性强(能对错误输入进行判断控制)编程风格良好(包括缩进、空行、适当注释、变量名和函数名见名知意,程序容易阅读等)。三概要设计1、总体设计本系统主要有三大板块构成:类的定义声明、功能实现函数、主函数;总体结构如图1所示:图1总体设计流程图2、类的概要设计设计定义一个Student类,主要包括姓名、学号、到达小时、到达分钟、到达秒数、离开小时、离开分钟、离开秒数、科研时间、排名、总人数等数据成员;构造函数、设置信息函数和获取信息函数等成员函数,具体结构如图2所示:考勤统计系统学生类的定义声明程序功能实现函数主函数及函数调用《面向对象程序设计》课程设计中南民族大学计算机科学学院专业计算机科学与技术学号:201521091067姓名:刘申臣3Student类数据成员(protected)name——姓名number——学号reachHour——到达小时reachMinute——到达分钟reachSecond——到达秒数leaveHour——离开小时leaveMinute——离开分钟leaveSecond——离开秒数time——科研时间rank——时间排序成员函数(public)count——总人数(静态成员)Student()——构造函数设置信息函数set_name()——设置姓名set_number()——设置学号set_reachHour()——设置到达小时set_reachMinute()——设置到达分钟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()——获取离开分钟get_leaveSecond()——获取离开秒数get_time()——获取科研时间get_rank()——获取排名图2类的主要设计概要图《面向对象程序设计》课程设计中南民族大学计算机科学学院专业计算机科学与技术学号:201521091067姓名:刘申臣43、功能实现函数的设计功能实现函数部分主要包含了菜单显示函数、信息登记函数、计算科研时间函数、排序函数、保存数据函数以及打印信息函数,具体结构如图3所示:图3功能实现函数结构图4、主函数的设计主函数部分主要是获取用户的输入指令而执行相应的命令,包括了录入信息,打印信息和退出三个板块,具体结构如图4所示图4主函数结构图功能实现函数ShowInterface()界面菜单函数,显示选项以及提示信息Student*Registration()Student类的指针函数,登记录入人员信息ResearchTime()计算时间函数,计算每个人的科研总时间Sort()排序函数,根据每个人的科研时间按分钟进行排序Save()保存数据函数,将录入成功的人员信息以txt格式文件方式保存Show()打印信息函数,将录入成功的人员信息经排序后显示到屏幕主函数main()*temp——定义类的指针对象input——用户菜单按键输入指令ShowInterface()——调用函数显示菜单输入指令输入指令为“e”录入信息Registration()——登记信息ResearchTime()——计算时间Sort()——进行排序Save()——保存数据输入指令为“o”打印信息Show()——打印处理后信息输入指令为“e”退出程序exit(0)——退出《面向对象程序设计》课程设计中南民族大学计算机科学学院专业计算机科学与技术学号:201521091067姓名:刘申臣5四详细设计1、头文件为保证程序的合法性、标准性和代码的编译实现,需首先声明以下#include头文件:1)#includeiostream——输入输出流,C++开发环境必备头文件;2)#includestring——可用于字符数组处理的编译预处理头文件;3)#includefstream——文件流,可用于代码执行文件操作;同时通过语句usingnamespacestd;声明标准命名空间,声明各标识符可见范围。2、类的声明及成员函数为了保证数据的封装性以及面向对象编程的结构清晰明了,先用语句classStudent{};声明定义了一个Student类,在类中包含了protected和public两种访问权限数据成员或函数。protected(保护属性访问权限部分):对象中的姓名和学号两个信息为了方便和避免歧义可用string(字符串型)数据类型声明定义,以变量name、number分别表示姓名和学号,即stringname;stringnumber;迎合用户需求分别以reachHour、reachMinute、reachSecond、leaveHour、leaveMinute、leaveSecond、time、rank等变量表示到达小时、到达分钟、到达秒数、离开小时、离开分钟、离开秒数、科研总时间和排名,这些数据都是以数字表示,因此,这些变量的数据类型声明定义使用int(整型)。public(公共访问属性部分):为了方便各函数可使用Student类中总人数这一数据,在公共访问部分声明定义静态数据总人数count即staticintcount;通过定义声明构造函数Student()来初始化类的对象,根据传入参数类型不同重载出两个构造函数并进行变量的初始化,例第一个传入整型数据构造函数中初始化到达小时leaveHour=0;其他整型数据变量同理初始化为0;第二个构造函数声明传入参数为对象Student&p,初始化name=p.name;number=p.number;用const修饰保证数据不被修改。为了编序方便增加设置信息和获取信息的成员函数,例如设置姓名voidset_name(stringnm){name=nm;count++;},每当设置姓名时总人数加1,获取姓名stringget_name()const{returnname;},用const修饰保证整型返回值不被修改,其他变量(到达离开时、分、秒,总时间,排名)设置获取函数同理进行声明定义。3、显示菜单函数为使得程序运行可进行菜单选择操作以及良好的人机交互界面,用输出流cout搭建菜单界面,用语句cout"显示内容"endl;设计构建菜单显示界面。4、登记信息函数在类和函数衔接处需定义初始化静态数据count为0,即intStudent::count=0;同时为Student类定义一个全局指针对象并动态分配空间,即Student*pall=newStudent[100];。《面向对象程序设计》课程设计中南民族大学计算机科学学院专业计算机科学与技术学号:201521091067姓名:刘申臣6为方便使用类中的数据可将函数定义为类的对象函数即Student*Registration(),在函数中定义Student*temp动态空间对象temp=newStudent以及字符型info,整型reachHour、reachMinute、reachSecond、leavaHour、leaveMinute、leaveSecond等局部变量,并初始为空NULL,用输出流cout显示提示信息,例如cout请输入你的姓名:;对用户进行姓名输入提示,通过标准输入流cin将获取的字符赋给info,调用set_name()和set_number()函数,用语句temp-set_name(info);等实现设置对象信息。为了保证用户输入时间时的合法性,避免输入错误时间或非法字符同时提示用户重新输入,在设置时间部分需要用一个判断循环结构实现相应功能,逻辑算法伪代码如下:输入参数//到达小时if(参数=0且参数24)//判断是否输入正确是temp-set_reachHour(参数)//调用函数将参数传入设置到达小时否则执行do输出输入有误,请重新输入整点:;//提示用户重新输入cin.clear();//清除输入错误状态cin.sync();//清空缓冲区输入参数;当while(参数0或参数=24)时执行//用户输入错误时间字符时重复提示输入循环退出temp-set_reachHour(参数)//将输入正确后的参数传入设置小时(算法结构结束)同理,用此算法结构分别对分钟、秒数(其中判断参数范围为大于或等于0且小于60)进行用户的输入判断合法与否,保证登记的用户相关信息正确无误同时错误时可以提示用户重新输入。5、计算科研总时间函数为使数据使用的方便性,定义计算时间函数ResearchTime()中传入参数类型为Student*temp即类的对象,定义一个整型的局部变量reschT用作总时间传递给设置总时间函数,计算科研时间时考虑到可能

1 / 16
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功