C++学生考勤系统含源代码.docx
《C++学生考勤系统含源代码.docx》由会员分享,可在线阅读,更多相关《C++学生考勤系统含源代码.docx(17页珍藏版)》请在冰豆网上搜索。
![C++学生考勤系统含源代码.docx](https://file1.bdocx.com/fileroot1/2023-1/24/e5b2894e-4198-44ca-bdbe-ac83057822f2/e5b2894e-4198-44ca-bdbe-ac83057822f21.gif)
C++学生考勤系统含源代码
C++语言程序设计
课程设计报告书
题目:
班级:
学号:
姓名:
指导教师:
周期:
以下由验收老师填写
成绩:
年月日
一、课程设计的目的与要求
(一)课程设计目的与任务
C++作为一门程序设计语言,其学习的最终目的是应用,作课程设计可以让我们更好的理解C++语言的精髓,学习掌握C++的语言流程,初步了解编程的思路,并且有重点的练习我们C++中的类、对象等模块的,使我们对这些重中之重的语言模块掌握的更加灵活可以实现我们的一些初步的程序设计要求也可以提高我们的实践能力;在课程设计中我们也应该就产生的实际开发问题象老师请教学习,以最好的最高的水准完成设计任务。
(二)题目要求
考勤信息记录了学生的缺课情况,它包括:
缺课日期、第几节课、课程名称、学生姓名、缺课类型(迟到、早退、请假及旷课)。
试设计一考勤管理系统,使之能提供以下功能:
(1).录入学生的缺课记录;
(2).修改某个学生的缺课记录;
(3).查询某个学生的缺课情况;
(4).统计某段时间内,旷课学生姓名及旷课次数,按旷课次数由多到少排序;
(5).统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排序;
(6).系统以菜单方式工作。
二、设计正文
1、系统分析
考勤信息记录了学生的缺课情况,它包括:
缺课日期、第几节课、学生姓名、缺课类型(迟到、早退、请假及旷课)。
设计一考勤管理系统,使之能提供以下功能:
(1).录入学生的缺课记录:
从键盘输入数据,输入格式为:
学生姓名、缺课日期、第几节课、课程名称、缺课类型。
例如:
张三2008-04-293-4C++程序设计实验迟到
李四2008-04-283-4C++程序设计旷课
(2).修改某个学生的缺课记录:
可以对缺课纪录的任意部分进行修改,然后显示一下修改后的纪录。
(3).查询某个学生的缺课情况
(4).统计某段时间内(以天为单位),旷课学生姓名及旷课节数,查询结果先按旷课节数降序排序
(5).统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排序(6).系统以菜单方式工作。
2、功能详细描述及框图
这是一个小型的学生考勤系统,它使用类来实现,充分体现面向对象的程序设计特点。
它可以实现的主要功能有:
录入学生的缺课记录;修改某个学生的缺课记录;查询某个学生的缺课情况;统计某段时间内,旷课学生姓名及旷课次数,按旷课次数由多到少排序;统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排序;
框图:
3、主要功能逻辑过程和实现算法
此程序用到了大模块,分别是:
主菜单模块;录入模块;修改模块;查询模块;查找人数模块;查找次数,每个模块可以实现不同的功能;
(1)、主菜单模块:
对本程序的功能进行说明,然后出现同学通迅录的主界面;
(2)、录入模块:
录入学生的缺课记录:
从键盘输入数据,输入格式为:
学生姓名、缺课日期、第几节课、课程名称、缺课类型。
(3)、查询模块:
查询某个学生的缺课情况
in>>name;
m.read((char*)&x,sizeof(x));
while(!
m.eof())//原文件到头结束
{
if(!
strcmp(name,x.getn()))
{
cout<<"姓名:
"<cout<<"日期:
"<cout<<"课时:
"<cout<<"课程名称:
"<cout<<"缺课类型:
"<flag=1
;}
(5)、查找次数模块:
统计某段时间内(以天为单位),旷课学生姓名及旷课节数,查询结果先按旷课节数降序排序
(6)、查找人数模块:
统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排序。
5、界面设计
(1)主菜单界面
6、系统测试
(1)输入记录界面
(2)修改记录界面
(3)旷课人名
(4)旷课课程名称
(5)退出界面
三、小组成员分工说明
独立完成
四、课程设计总结或结论
1课程设计过程中出现的技术难点和解决方法:
技术难点:
对文件的使用不熟悉,不会使用。
解决方法:
通过到图书馆查阅资料,以及课本上的讲解和老师的帮助让我会应用文件进行数据的输出与写入,从而完善了我的程序。
2课程设计期间的主要收获:
这是上大学以来第一次作课程设计,刚开始有点不知所措,很茫然,但后来,开始有了思路,作起来也容易多了,虽然会在这呆一整天,但感觉时间过得很快。
本次作课程设计让我更好的理解C++语言的精髓,也更加体会到了,只有理论与实践相结合才是真正的学会,而不是只有打高分才是真的学好,这次课程设计让我掌握了C++的语言流程,初步了解编程的思路,并且类、对象等模块更加深了了解的,特别是使用文件这块,我认为文件很难,刚开始,不会使用,但后来查了很多资料,也明白了应该怎么使用,作起来就顺手多了。
作课程设计的目的就是要提高我们的实践能力;所以,我会以自己所掌握的知识高水准的完成此次设计任务。
源代码:
#include"fstream.h"
#include"iostream.h"
#include"string.h"
classstudent//声明一个类为people
{
private:
charday[20];
charname[20];
intn;
charkname[20];
charlx[20];
public:
//公有数据成员
voidsetn()
{
cin>>name;//输入姓名
}
voidsetd()
{
cin>>day;//输入日期
}
voidsetk()
{
cin>>n;//输入课时
}
voidsetm()
{
cin>>kname;//输入课程名称
}
voidsetl()
{
cin>>lx;//输入缺课类型
}
char*getn()
{
returnname;
}
char*getd()
{
returnday;
}
intgetk()
{
returnn;
}
char*getm()
{
returnkname;
}
char*getl()
{
returnlx;
}
};
voidluru()
{
intj,i;
studentp[100];
fstreamfile;
file.open("D:
\\学生考勤.txt",ios:
:
in|ios:
:
out);//文件存盘
cout<<"〓请输入要录入几名同学信息:
";
cin>>j;
cout<<"\t\t\t请输入"<"<for(i=0;i{
cout<<"姓名:
";
p[i].setn();
cout<<"日期:
";
p[i].setd();
cout<<"课时:
";
p[i].setk();
cout<<"名称:
";
p[i].setm();
cout<<"类型:
";
p[i].setl();
file.write((char*)&p[i],sizeof(p[i]));//写文件
}
cout<<"^_^成功输入同学信息!
请返回!
"<file.close();//关闭文件
}
//查询信息
voidchaxun()//查询函数的调用
{
studentx;
charname[20],z;
fstreamm;
a1:
inta=0,flag=0;//goto语句
m.open("D:
\\学生考勤.txt",ios:
:
in);
cout<<"请输入您要查询的同学姓名:
"<cin>>name;
m.read((char*)&x,sizeof(x));
while(!
m.eof())//原文件到头结束
{
if(!
strcmp(name,x.getn()))
{
cout<<"姓名:
"<cout<<"日期:
"<cout<<"课时:
"<cout<<"课程名称:
"<cout<<"缺课类型:
"<flag=1;
break;
}
m.read((char*)&x,sizeof(x));
}
m.close();
if(flag==0)
{
cout<<" ̄_ ̄对不起,您查询的同学无缺课现象,请返回!
"<}
cout<<"如继续查询请输入Y,否则按任意键返回"<cin>>z;
if(z=='Y'||z=='y')
gotoa1;
}
//修改函数的调用
voidxiugai()/*修改成员函数*/
{
studentl;
charxname[20],w;
fstreamxfile;
xfile.open("D:
\\学生考勤.txt",ios:
:
in|ios:
:
out);
xfile.read((char*)&l,sizeof(l));//读文件到L里
cout<<"请输入您要修改的同学姓名:
"<cin>>xname;
while(!
xfile.eof())//调用EOF判断函数
{
if(!
strcmp(xname,l.getn()))
{
cout<<"姓名:
"<cout<<"日期:
"<cout<<"课时:
"<cout<<"课程名称:
"<cout<<"缺课类型:
"<cout<<"确认修改请按Y,否则按任意键"<cin>>w;
if(w=='Y'||w=='y')
{
cout<<"姓名:
";
l.setn();
cout<<"日期:
";
l.setd();
cout<<"课时:
";
l.setk();
cout<<"课程名称:
";
l.setm();
cout<<"缺课类型:
";
l.setl();
xfile.open("D:
\\学生考勤.txt",ios:
:
in);
xfile.write((char*)&l,sizeof(l));
}
else
{
break;
}
}
xfile.read((char*)&l,sizeof(l));//读文件到L里
}
xfile.close();
}
voidrenci()
{
inti=0,j=1,x=0,y=0;
students;
fstreamd;
d.open("D:
\\学生考勤.txt",ios:
:
in);
d.read((char*)&s,sizeof(s));
i=1;
cout<<"早退人数为:
"<cout<<"请假人数为:
"<cout<<"旷课人数为:
"<
cout<<"迟到人数为:
"<cout<<"在"<"<{
cout<<"课程名称:
"<}
d.read((char*)&s,sizeof(s));//读文件到L里
d.close();
}
voidcishu()
{
inti=0,j=1,x=0,y=0;
studentm;
fstreamb;
b.open("D:
\\学生考勤.txt",ios:
:
in);
b.read((char*)&m,sizeof(m));
i=1;
cout<<"早退次数为:
"<cout<<"请假次数为:
"<cout<<"旷课次数为:
"<
cout<<"迟到次数为:
"<cout<<"在"<"<{
cout<<"姓名:
"<}
b.read((char*)&m,sizeof(m));//读文件到L里
b.close();
}
main()
{
inti;
while
(1)
{
cout<<"\t\t★★★★★★★★★★★★★★★★★★★★★★★★"<cout<<"\t\t\t☆☆欢迎进入学生考勤系统☆☆"<cout<<"\t\t★★★★★★★★★★★★★★★★★★★★★★★★"<cout<<"\t\t★★"<cout<<"\t\t★★"<cout<<"\t\t★※1、录入学生的缺课记录;★"<cout<<"\t\t★★"<cout<<"\t\t★※2、修改某个学生的缺课记录;★"<cout<<"\t\t★★"<cout<<"\t\t★※3、查询某个学生的缺课情况★"<cout<<"\t\t★★"<cout<<"\t\t★※4、旷课学生姓名及旷课次数★"<cout<<"\t\t★★"<cout<<"\t\t★※5、有学生旷课人次★"<cout<<"\t\t★★"<cout<<"\t\t★※6.退出★"<cout<<"\t\t★★"<cout<<"\t\t★★★★★★★★★★★★★★★★★★★★★★★★"<cout<<"\t※******请选择您所需要的信息******※"<cin>>i;
switch(i)
{
case1:
luru();break;
case2:
xiugai();break;
case3:
chaxun();break;
case4:
cishu();break;
case5:
renci();break;
case6:
break;
}
if(i==6)
{
cout<!
"<break;
}
cout<}
return0;
}