学生考勤管理系统课程设计报告1

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

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

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

资源描述

南昌航空大学面向对象程序课程设计(c++)题目:班级考勤管理系统院系:软件学院班级:668学号:668姓名:帅哥2一.需求分析功能需求:1.录入班级信息;2.显示班级信息;3.录入学生的信息和缺勤记录;4.修改某个学生的信息和缺勤记录;5.查询某个学生的信息和缺勤情况;6.以文件的形式读写;7.系统以菜单方式工作;数据需求本系统主要涉及的数据有班级信息和学生信息及缺课信息类。班级信息包括班级的学号,班级的人数,学生缺课信息包括学生姓名,学号,专业,课程名称,缺课节次,学生缺课类型(迟到,早退,请假,旷课)。二、系统的主要功能(1).录用班级信息记录,在classclas中成员函数voidset(){}实现,按照用户提示进行操作写入类中,显示在voiddisplay(){}中。(2).录入学生的信息和缺课记录,在classstudent中成员函数代码voidinput(){}实现中。首先提示用户按照正确的格式进行学生缺课记录的录入,这个步骤比较简单,只需要不断地将记录的每个数据项存入结构体对应的成员中。(3)、修改某个学生的缺课记录,在classstudent中成员函数voidedt(){}实现。首先必须查找到你所需要修改的哪位的学生全部缺课记录。可以设置下面这五个菜单供用户选择:1、学生学号2、学生姓名3、学生班级4、缺课课程5、缺课类型6、退出修改程序并返回系统主菜单。修改很简单,仅需要对该学生的某个部分进行替换即可。最后实现对所选记录的修改,完成后更新原有的学生记录。(4)、查询某个学生的缺课情况,在classstudent中成员函数voidsearch(){}实现。可以对学生的学号进行查询,并输出学生信息和考勤的信息。(5)、学生信息的保存运用文件来保存,在classstudent中成员函数voidwt(int&i){}和voidrd(){}中实现。三、类的设计本系统设计了三个大类,一个是班级信息类(classclas),实现班级信息的录用,显示。另一个学生基本信息设置类(classstudent),实现学生信息课程的录用。最后一个学生考勤操作类(classrecords)实现考勤信息查询,显示,修改,保存等。在主函数中实现桌面菜单操作。四、流程图3学生考勤系统结构图:基类的数据成员和成员描述继承最后为main(){}Classclas班级信息基类intcnum,pnum;班级数据成员voidsetc();录用班级信息voiddisplay();显示班级信息Classstudent学生信息课程类intsnum,cnum,type;charcname[5],sname[5],lname[5]学生课程数据成员voidset();传递学生信息Classrecords实现学生信息和考勤情况操作的类clas*p;student*r;基类对象的指针staticintn=0;voidInput()录用学生课程考勤信息voidwt/rd/wdt()信息以文件的形式保存voidpri()显示学生课程考勤信息voidedt()修改学生考勤信息voiddel()删除学生考勤信息voidsearch()查询学生考勤信息4五、类具体设计实现及主函数实现此程序运用多种条件语句,主体采用的是动态对象数组、指针。系统的设计采用了数组语句、选择语句和循环语句,在需要处理大量同类数据时,这样就使程序书写更加简洁。程序。选择语句多采用if多分支选择结构与switch语句。首先计算switch表达式,然后在caes子句中寻找值相等的常量表达式,并以此为入口符号,由此开始顺序执行。switch语句中,保证多分支情况的正确执行,在循环语句中,强制终止本层循环。保存和读取函数是典型的函数功能,一个程序是由若干个函数组成的,保存和读取函数是和其他函数互相调用的。1.编写头文件(类的声明写一个文件“ClaStu.h”)//*************************//头文件ClaStu.h//*************************#includestring.h#includeiostream.h#includeiomanip.h#includefstream.h#includestdlib.hconstintmax=15;classclas//班级信息基类{public:voidsetc();//录用班级信息voiddisplay();//显示班级信息intcnum;//班级编号intpnum;//班级人数};classstudent//学生信息课程类{public:voidset(intb,char*s,char*l,char*c,intcno,inttype);//传递学生信息charcname[5],sname[5],lname[5];//定义缺课课程名称,学生称名,学生类别名称intsnum,cno,type;//定义学生学号,缺课节次,缺课类型};classrecords:publicstudent,clas//实现学生信息和考勤情况操作的类5{public:records()//构造函数{r=newstudent[max];//动态建立两个基类对象数组,返回两个对象指针p=newclas[max];}voidinput();//录用学生课程考勤信息voidwt(int&i);//信息以文件的形式保存voidrd();//信息以文件的形式读出voidpri();//显示学生课程考勤信息voidsearch();//查询学生考勤信息voiddel();//删除学生考勤信息voidedt();//修改学生考勤信息voidwdt(int&n);//修改信息以文件的形式保存student*r;//声明两个对象指针clas*p;staticintn;//n为静态变量记录创建对象的个数,};intrecords::n=0;2.编写cpp文件(类的实现)自定义的包含文件一般都放在自己指定的目录中,所以在引用他们时,采用双引号以通知c编译器在用户指定的目录下和当前目录下寻找包含文件。#include”ClasStu.h”voidclas::setc()//录用班级信息{cout输入班级学号:endl;cincnum;cout输入班级人数:endl;cinpnum;}voidclas::display()//显示班级信息{cout班级学号:cnumendl;cout班级人数:pnumendl;}6voidstudent::set(intb,char*s,char*l,char*c,intcno,inttype)//传递学生信息{strcpy(cname,c);//缺课课程名称strcpy(sname,s);//学生姓名strcpy(lname,l);//学生类别this-snum=b;//学生学号this-cno=cno;//缺课节次this-type=type;//缺课类型}voidrecords::wt(int&i)//信息以文件的形式保存{ofstreamoutf;//声明一个流对象if(i0)//判断是否是第一个数据,如果不是以追加文件尾的方式存储outf.open(data.txt,ios::app);elseoutf.open(data.txt,ios::out);//创建一个文件并以文件的方式存储outfsetw(6)n;//以左边对齐6个字节方式存储outfsetw(6)r[i].snumsetw(6)r[i].cnosetw(6)r[i].typesetw(1);outfsetw(7);outfr[i].sname;outfsetw(7);outfr[i].lname;outfsetw(7);outfr[i].cname;outf.close();}voidrecords::rd()//信息以文件的形式读出{ifstreaminf;//创建一个流对象inf.open(data.txt);//打开创建的文件inti=0;while(inf)//将文件里的数据读入内存{infn;infr[i].snumr[i].cnor[i].typer[i].snamer[i].lnamer[i].cname;i++;}}voidrecords::wdt(int&i)//修改信息以文件的形式保存{ofstreamoutf(data.txt);//同上面原理相同不在介绍7outfsetw(6)n;outfsetw(6)r[i].snumsetw(6)r[i].cnosetw(6)r[i].typesetw(1);outfsetw(7);outfr[i].sname;outfsetw(7);outfr[i].lname;outfsetw(7);outfr[i].cname;outf.close();}voidrecords::input()//学生考勤系统的录用模块{for(inti=0;i100;i++){chart1[5],t2[5],t3[5];//创建字符数组保存输入的学生信息和课程intt4,t5,t6;charyn;cout录入一条学生详细考勤记录:endl;cout输入学生的学号,学生的姓名,专业,缺课课程,缺课节次和缺课类别(1.迟到2.早退3.请假4.旷课)。endl;cint4t1t2t3t5t6;records::n++;coutendl;r[i].set(t4,t1,t2,t3,t5,t6);coutn;chary;cout保存?(y/n)endl;ciny;if(y=='y')wt(i);cout是否继续输入?(y/n)endl;//判断是否再输入学生信息cinyn;if(yn=='y')continue;elsebreak;}}voidrecords::pri()//学生考勤系统显示模块{if(n==0){cout------文件记录为空----endl-----请先输入数据保存在进行此次操作-----endl;return;}8cout学号\t姓名\t专业\t缺课课程\t,缺课节次\t缺课类别(1.迟到2.早退3.请假4.旷课)。endl;for(inti=0;in;i++)//学生缺课信息数据输出,n为静态变量记录创建对象的个数{coutr[i].snum\t;coutr[i].sname\t;coutr[i].lname\t;coutr[i].cname\t\t\t;coutr[i].cno\t\t;switch(r[i].type)//缺课信息以整形数据保存,以字符输出{case1:cout迟到endl;break;case2:cout早退endl;break;case3:cout请假endl;break;case4:cout旷课endl;break;default:;}}}voidrecords::edt()//学生考勤系统修改模块{cout请输入要修改缺课记录的学生的学号:endl;intt1,t5,t6;inttnum,flag=1,km,i;chart2[5],t3[5],t4[5];//创建字符数组保存输入的学生信息和课程cintnum;for(i=0;in;i++){if(r[i].snum==tnum){cout有您要查询的学生;break;}}if(!flag){cout查无此学生!endl;return;}t1=r[i].snum;strcpy(t2,r[i].sname);9strcpy(t3,r[i].lname);strcpy(t4,r[i].cname);t5=r[i

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

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

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

×
保存成功