面向对象程序设计(C++)课程大作业-学生考勤管理系统.docx_第1页
面向对象程序设计(C++)课程大作业-学生考勤管理系统.docx_第2页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向对象程序设计(c+)课程大作业设计题目: 学生考勤管理系统 院 系: 计算机科学与信息工程学院 专业班级: 计算机科学与技术 学号姓名: 指导教师: 2015 年 1月目 录一、成员分工3二、需求分析5三、总体设计7四、详细设计9五、系统测试17六、总结21七、参考文献23一 成员分工 我们小组成员共有三名,分别是,为了能按时圆满的完成这次c+课程设计,我们小组进行了详细的分工,以确保设计能按时完成。经过周密的考虑和详细的调查最终确定该学生考核管理系统需要以下几个功能模块:(1) 需求分析(2) 界面的设计(3) 添加学生信息功能模块(4) 查询学生信息功能模块(5) 显示学生信息功能模块(6) 编辑学生信息功能模块(7) 删除学生信息功能模块(8) 统计学生信息功能模块(9) 保存学生信息功能模块(10) 读取学生信息功能模块(11) 模块联接(12) 系统测试经过小组成员的讨论,并根据个人的特长和具体爱好做如下具体分工: 具体完成以下模块的设计与实现:(1 ) 需求分析(2 ) 界面的设计 具体完成以下模块的设计与实现:(1)添加学生信息功能模块(2)查询学生信息功能模块(3)显示学生信息功能模块(4)编辑学生信息功能模块(5)删除学生信息功能模块(6)统计学生信息功能模块(7)保存学生信息功能模块(8)读取学生信息功能模块主要具体完成以下模块的设计与实现:(1) 模块联结(2) 系统测试二 需求分析2.1功能需求2.1.1添加功能:程序能够添加学生的记录和缺课记录,提供选择界面供用户选择所要添加的类别。添加学生记录时,要求学号要唯一,如果添加了重复学号的记录时,则提示数据添加重复并取消添加。2.1.2查询功能:可根据学号、姓名等信息对已添加的学生记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。还可以按课程名、学生姓名对缺课记录进行查询。2.1.3显示功能:可显示当前系统中所有学生的记录和缺课记录,每条记录占据一行。2.1.4编辑功能:可根据查询结果对相应的记录进行修改,修改时注意学号的唯一性。2.1.5删除功能:主要实现对已添加的学生记录进行删除。如果当前系统中没有相应的记录,则提示“记录为空!”并返回操作。2.1.6统计功能:能根据多种参数进行统计。能按课程名统计出学生旷课的信息、还可以按姓名统计出任一学生的旷课情况。需要排序。2.1.7保存功能:可将当前系统中各类记录存入文件中,存入方式任意。2.1.8读取功能:可将保存在文件中的信息读入到当前系统中,供用户进行使用。2.2数据需求 本系统主要涉及的数据有学生基本信息和学生考勤信息。学生基本信息包括学生学号、姓名、性别、年龄、班级等信息;学生考勤信息包括学生姓名,缺课日期,课程名称,第几节课,学生缺课类型(迟到、早退、请假和旷课)。三 总体设计3.1 功能模块图根据分析整个系统主要划分为8个功能模块,分别执行系统需求中的功能。数据管理中实现对学生的基本信息即学生学号、姓名、性别、年龄、班级等信息的管理。以及学生考勤信息即学生姓名,缺课日期,课程名称,第几节课,学生缺课类型(迟到、早退、请假和旷课)等管理实现学生缺课的查询、添加、删除和修改,以及具体考勤内容,是迟到、早退、请假还是旷课。查询管理可以通过根据学生姓名、学号、班级以及课程名称等信息进行,查询,修改管理可以任意修改考勤管理信息及基本信息中的任一项。功能模块图如图所示。学生考勤管理系统添加学生的考勤信息查询学生的考勤信息显示学生的考勤信息保存学生的考勤信息读取学生的考勤信息统计学生的考勤信息删除学生的考勤信息修改学生的考勤信息3.2数据技术模块此程序共包括4个类,分别是日期类、考勤类、缺课课程类以及缺课学生类。其中考勤类为一个基类,缺课课程类和缺课学生类均继承考勤类:考勤类kaoqin缺课课程类qkkc缺课学生类qkxs此程序是使用面向对象的语言设计的,在设计过程中采用了多种条件语句,主题采用了函数的调用,类的继承以及指针。程序在设计日期类时,采用了数组语句将日期的年月日分成了三个部分,在界面设计过程中采用了switch选择语句,然后在case子句中寻找值相等的常量表达式,以此为入口,将主界面发分为7个部分,使的程序更加清晰明了。另外在整个系统设计过程中需要处理大量的同类型数据,于是采用了大量的循环语句for 和dowhile语句用于实现许多已知和未知的循环。四 详细设计4.1 添加学生的考勤信息在功能模块图的第一部分添加学生的考勤信息是,我设计了一个添加函数tianjia,它是从“输入开始”后在根据提示逐步输入,首先是“请输入学生姓名:”输入完毕按回车键继续输入下一条“请输入课程名称:”再其次一次根据提示分别输入“请输入缺课日期:”,“请输入缺课学生年龄:”,“请输入缺课学生学号:”,“请输入缺课学生班级:”,“请输入缺课学生性别:”,“请输入缺课类型(迟到,请假,早退,旷课):”,“请输入缺课节次:”最后输入考勤信息完毕,系统会提示“是否还要继续输入:(y/n)”,以此来方便我们继续添加还是返回主界面!添加学生的考勤信息请输入学生姓名请输入课程名称请输入缺课学生学号请输入缺课学生班级请输入缺课学生性别请输入缺课类型(迟到,请假,早退,旷课)请输入缺课节次请输入缺课日期请输入缺课学生年龄在这一部分的设计中使用了do-while循环,实现了添加学生考勤信息时的逐步输入。4.2修改学生的考勤信息 在功能模块图的第二部分修改学生的考勤信息时,我定义了一个修改函数xiugai,它是先根据你要修改的学生姓名查找到你要修改的学生考勤信息,然后为你提供九个选项(08),分别是: 0.修改学生姓名 1.修改日期 2.修改节次 3.修改课程名称 4.修改缺课类型 5.修改学生年龄 6.修改学生性别 7.修改学生学号 8.修改学生班级”。之后输入你所要选择的数值(0,1,2,3,4,5,6,7,8)分别执行其中9个修改选项。程序代码如下: /修改函数 void xiugai(kaoqin st1,int n) int k=1,j=0,a10; int flgh; int h; while(k=1) cout请输入你要修改缺课记录的学生姓名:name; flgh=0; for(int i=0;in;i+) if(strcmp(name,st1i.getname()=0) do aj=i; cout0.修改学生姓名1.修改日期2.修改节次3.修改课程名称4.修改缺课类型5.修改学生年龄6.修改学生性别7.修改学生学号8.修改学生班级endl; cout请输入要选择的数值(0,1,2,3,4,5,6,7,8)b; if(b=1) cout请输入新日期:ymd; st1i.settime(y,m,d); else if(b=0) cout请输入新姓名:name; st1i.setname(name); else if(b=5) cout请输入新年龄:age; st1i.setage(age); else if(b=6) cout请输入新性别:sex; st1i.setsex(sex); else if(b=7) cout请输入新学号:xuehao; st1i.setxuehao(xuehao); else if(b=8) cout请输入新班级:banji; st1i.setbanji(banji); else if(b=2) cout请输入新节次:jieci; st1i.setjieci(jieci); else if(b=3) cout请输入新课程名称:kechen; st1i.setkechen(kechen); else if(b=4) cout请输入新缺课类型:queke; st1i.setqklx(queke); flgh=1;j+; while(b4); if(flgh=0)cout没有你要找的学生姓名,请重试要退出请按k; else cout还要继续吗?endl(1 or 0)退出请按k; for(int i=0;ij;i+) h=ai; xiansi(st1h); 由程序可以看到此段代码运用了if-else语句查询学生的考勤信息请输入你要查询的学生姓名、学号、班级、课程名称或课程类型(任一即可)将你要查询的学生考勤信息显示出来选择是进行继续添加还是返回主菜单(y/n)4.3查询学生的考勤信息 在功能模块图的第三部分查询学生的考勤信息时,我定义了一个查询函数chaxun。在此部分设计中,我采用了一种比较省事的方法来查询考勤信息,它的实用性非常好,即我采用了 | |符号,它可以让我们在查询学生考勤信息时随意的输入9大信息中任一信息即可查到该学生的考勤信息。当然在实际编程过程中我只使用了5种查询方法。分别是输入你要查询的学生姓名、学号、班级、课程名称或课程类型,查询时任意输入一种即可,下面为此功能的三个部分简图:(上图)。4.4删除学生的考勤信息在功能模块图的第四部删除改学生的考勤信息时,我定义了一个删除函数shanchu,先根据3.3的查询学生的考勤信息,查找出你要删除的某个学生的考勤信息,如果在查询时不存在该学生的考勤记录,界面将给出提示“你要删除的学生考勤信息不存在”,如果查询时发现记录中存有,就该对象中所有的对象成员全部赋值为0(其中int变量直接赋值为0,char类型变量全部赋值成字符0),赋值成功后界面将提示“删除该学生考勤信息成功”,其中模块图如图所示:删除学生的考勤信息请输入你要查询的学生姓名、学号、班级、课程名称或课程类型(任一即可)你要删除学生的考勤信息不存在选择是进行继续删除还是返回主菜单(y/n)不存在存在删除该学生考勤信息成功将所有成员全部赋值为04.5显示学生的考勤信息 在功能模块图的第五部显示学生的考勤信息时,我定义了一个显示函数xianshi,将所有的学生考勤记录显示出来,依靠添加时的顺序,将其9大信息依次列出。其设计的程序代码如下:/显示函数 void xiansi(kaoqin &st1) cout| 缺课日期|学生年龄学生性别学生学号学生班级 第几节课| 课程名称| 学生姓名| 缺课类型|endl; cout|*(st1.gettime()|*(st1.gettime()+1)*(st1.gettime()+2)|st1.getage()|st1.getsex()|st1.getxuehao()|st1.getbanji()|st1.getjieci()|st1.getkechen()|st1.getname()|st1.getqklx()|endl; 4.6统计学生的考勤信息此外在功能模块的第六部分统计学生的考勤信息共分为两部分进行统计,分别是tongji1按照“学生姓名统计出任一学生的旷课情况”和tongji2按照“按课程名称统计出任一课程学生旷课的信息”。在统计的过程中由于很有可能会有大量记录数据,使得显示出的记录不止一条。这时就要对这些数据记录进行排序,本程序我采用了以时间为顺序,时间被我划分为3部分,分别是年、月、日;比较顺序是,先按照年份进行比较然后用月份进行比较最后用日进行比较!具体代码如下:void tongji1(kaoqin st1,qkxs qt1) /按姓名统计出任一学生的旷课情况 int d1=0,js=0; kaoqin min; if (g=0) cout没有你要统计的学生信息请返回菜单录入学生缺课信息endl; else if(g=1) cout姓名:st10.getname()endl; if( *(st10.getjieci()+2)!=0) js=+2; else js+; cout节数:jsendl; else /信息按时间排序 int i=0; for(;i(g-1);i+) if(*(st1i.gettime()+1)*(st1i+1.gettime()+1) min=st1i; st1i=st1i+1; st1i+1=st1i; else if( *(st1i.gettime()+1)=*(st1i+1.gettime()+1)&*(st1i.gettime()+2)*(st1i+1.gettime()+2) min=st1i; st1i=st1i+1; st1i+1=st1i; else if(*(st1i.gettime()+1)=*(st1i+1.gettime()+1)&*(st1i.gettime()+2)=*(st1i+1.gettime()+2) d1+; for(int j=0;j(g-d1);j+) cout*st1j.gettime()*(st1j.gettime()+1)*(st1j.gettime()+2)endl; for(i=0;ik;i+) setqstn(st1,qt1,g); cout姓名:qt1i.qstnendl; cout节数:qt1i.getjs(st1,g,i)endl; 4.7保存和读取学生的考勤信息 此为功能模块图的第七、八部分保存学生的考勤信息和读取学生的考勤信息,将考勤信息保存在“考勤txt”文本文件中。ifstream file(考勤.txt,ios:in|ios:out|ios:binary); file.seekg(0,ios:beg);五 系统测试4.1功能调试 图一调试并运行该程序出现主界面,如图一所示,界面出现7个选项分别是“1.添加学生的缺课记录 2.修改学生的缺课记录 3.查询学生的缺课记录 4.删除学生的缺课记录 5.按姓名统计出任一学生的旷课情况 6.按课程名称统计出学生旷课的信息 7.退出系统”以及最下面的“请选择执行的项目:”。故输入数字1添加学生的考勤记录:如图二所示,依次按照系统所给的提示逐步完成对各个部分数据的记录。由图可知,当所有考勤数据记录完毕时,界面下方会给出提示:“是否还要继续输入(y/n)”,若选择y,则系统返回添加页面,再次添加另外的学生考勤记录,若选择n,则系统返回主页面即图一界面。由图二可知系统添加功能正常。图二 由图一输入2,即可进入修改界面;然后根据提示输入将要修改的图三学生姓名“刘多山”,后界面将显示0.修改学生姓名 1.修改日期 2.修改节次 3.修改课程名称 4.修改缺课类型 5.修改学生年龄 6.修改学生性别 7.修改学生学号 8.修改学生班级”,以及“请输入你所要选择的数值(0,1,2,3,4,5,6,7,8),然后根据需要输出即可!例如修改姓名选择0,输入新的姓名,输入完成后系统 图四会提示是否继续修改。由图四可以看出修改功能也一切正常。由图一输入3即可进入查询界面如图五所示,可以根据学生姓名、学号、班级、课程名称和课程类型进行查询。输入班级“软件“进行查询,查询结果如图六,显然查询结果正常!图五图六选择“n“返回主界面,在选择是进入删除选项,选择以学号进行删除,输入学号“3120909090”查询出来后确认删除,页面提示“删除成功”。六 总 结通过此次的学生考勤管理的设计,我不但对c+语言编程有了更加深刻的认识,还积累了许多软件开发的经验。整个系统的设计对于我来说都是在学习和探索中摸索出来的,这使我学会了在对待问题时应该考虑到哪些方面和怎么解决问题。虽然在设计时间上紧迫,但我也学会了许多。在整个设计过程中,出现过很多的问题,很多繁琐的东西都需要反复的修改,主要是前期工作不彻底,对系统的需求分析的要求认识不够清楚,使得在后边的工作中不得不经常反复去修改。除此之外,我对于怎样用文件保存数据还没有深入了解,但我将数据保存到文件后又因为文件打不开而无法访问文件“kaoqin.txt”的数据。在设置查

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论