基于C++的学生考勤管理论文.docx

上传人:b****7 文档编号:11226179 上传时间:2023-02-25 格式:DOCX 页数:30 大小:103.33KB
下载 相关 举报
基于C++的学生考勤管理论文.docx_第1页
第1页 / 共30页
基于C++的学生考勤管理论文.docx_第2页
第2页 / 共30页
基于C++的学生考勤管理论文.docx_第3页
第3页 / 共30页
基于C++的学生考勤管理论文.docx_第4页
第4页 / 共30页
基于C++的学生考勤管理论文.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

基于C++的学生考勤管理论文.docx

《基于C++的学生考勤管理论文.docx》由会员分享,可在线阅读,更多相关《基于C++的学生考勤管理论文.docx(30页珍藏版)》请在冰豆网上搜索。

基于C++的学生考勤管理论文.docx

基于C++的学生考勤管理论文

学生考勤管理系统的开发与实现

摘要:

程序针对高校考勤管理信息化这一点,通过C++语言开发平台,及基本知识,设计开发出对于高校学生上课考勤信息的记录、修改、删除等,实现对于高校学生考勤信息的信息化管理。

关键字:

考勤管理信息录入查询密码登录C++文件操作。

一、需求分析

1、随着信息技术在管理上越来越广泛的应用,各个高校也进入了管理自动化,于是对于学生平时的考勤的管理,也同样需要相应的系统给予支持。

2、基本功能方面,考勤管理需要对学生的个人信息(姓名、学号等)及考勤信息(迟到、早退、请假、旷课等)进行有效的记录与统计。

3、实际运用方面,考勤管理系统要可以对学生的所有信息可以进行查询、修改、删除、增添、排序等相关操作。

4、信息记录保存方面,要求对所采编记录的学生信息可以长期的保留。

5、安全保密方面,要求管理系统具有实际的密码保护功能。

2、概要设计

首先,建立一个用于Record的类,在类的公有部分分别定义:

voidSetDate();、voidPutRecord()、voidModifyDate();等与系统要求有关学生信息的输入与添加、学生考勤的设置与修改、学生信息的输出与删除等各种功能函数。

并将学生的个人信息(Name[20]、ID)及学生的考勤信息(chidao、zaotui、kuangke、qingjia)封装于类的私有部分。

这些是对本系统所必须的基本要求。

其次,还要注意增加登陆系统(Entersystem)、密码验证与修改(GetPwd、SetPwd)、数据的读取与保存(ReadDate、SaveData)等相关函数,以便于所做的系统更加趋于完备。

3、程序功能简介及用户使用详解

1、登录系统(Entersystem):

在计算机上运行本系统.,系统自动通过调用登录函数voidEntersystem();显示登录系统界面框,输入密码。

图1(见附录)

2、进入主界面(MainInterface):

进入登录界面然后调用密码获取函数GetPwd();户从外界输入密码。

输入的密码通过密码比对函数strcpy();进行验证,若密码正确进入系统主界面。

图2(见附录)

3、学生信息的自动读取(ReadDate):

在进入系统主界面的同时,程序自动调用文本读取函数(ReadDate();)对系统根目录下的Record.txt进行读取,若没有则自动建立Record.txt的空文本,若存在自动读取相关信息记录。

4、界面子项的相关操作(Interfacesubentry):

在主界面中用户可以看到诸多选项,根据相关文字提示可进行对于学生信息的输入添加,查询输出,修改删除等各种功能的操作。

输入相关选项,系统按命令自动调用相关函数进行相关的操作。

5、界面子项相关功能简介(Functionintroduction)

(1)输入/增添学生名单

此项是在没有录入学生信息或者是想再次录入学生信息时所用,实现对学生信息的录入和追加增添。

(2)修改学生信息

此项是在有学生信息录入的前提下实现对学生的姓名、学号、考勤信息的修改,本系统只提供了按学号查询修改的功能。

(3)单人考勤信息

此项是在有学生信息的前提下实现按学号查询单人考勤信息的功能。

(4)全班考勤信息

通过此项操作可实现对全班学生考勤的输出查看功能。

(5)输入学生考勤

此项是通过对在录学生进行学号访问,然后按提示实现对该学生的迟到、早退、旷课、请假等相关考勤的记录。

(6)删除学生信息

该项提供了两种删除学生信息的功能,按学号删除学生信息和删除所有学生信息,使用者可根据不同的需要选择操作。

(7)修改登录密码

本管理系统可实现密码的修改功能,其初始密码为"123456"初次登录后建议使用者首先选择该项进行登录密码的修改,并牢记自己的密码。

(8)退出

该系统提供两种退出方式,一种便是主界面上选项8,一种则是在使用者进行到任意子项完成后既可按相关键退出。

注:

使用者在进行登录后的相关操作后必须选择一种方式进行退出,否则会造成数据的丢失。

因为该程序默认保存数据为退出键。

6、子项操作示例(Subentryexample):

下面以子项5为例简单介绍相关子项的操作:

如选择5则程序调用voidPutRecord();函数,系统进入新的界面。

若使用者事先并没有进行学生信息的录入则返回提示框。

图5(见附录)若使用者以进行过子项1的输入或者在以前使用录入过学生信息则进入考勤记录子项。

图6(见附录)并按照提示进行学生考勤的录入。

录入完毕后系统弹出录入后新的信息记录。

图7(见附录)最后返回主界面或者退出系统。

 

4、程序扩展应用展望

基于在编写过程中对问题的实际深入了解和探讨研究,发现实际生活中有很多类似的问题可以用本程序稍作修改来解决,就目前所了解该程序可实际扩展应用于学生考试管理系统,图书馆管理系统,医院就医管理系统,停车场管理系统,银行账户管理等等相关管理系统。

5、程序代码

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//类的定义

usingnamespacestd;

#defineSize1000

classRecord

{

public:

Record();//构造函数

voidEntersystem();//进入系统函数

voidGetPwd();//获取密码

voidSetDate();//输入设置学生信息

voidSetPwd();//修改登录密码

voidReadDate();//读取文本信息函数

voidSaveData();//向文本保存信息函数

voidPutRecord();//输入考勤函数

voidFindRecord();//查找学生信息函数

voidShowRecord();//输出所有学生信息

voidOrder();//按学号排序

voidModifyDate();//修改学生信息

voidDelRecord();//删除学生信息

private:

intrenshu;//学生人数

intchidao;//迟到次数

intzaotui;//早退次数

intkuangke;//旷课次数

intqingjia;//请假次数

longID;//学生学号

charName[20];//学生姓名

charpassword[20];//登录密码

ShowDate(int);//输出工具函数

};

 

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//类的实现

#include"iostream"

#include

#include"string.h"

#include

#include"zzz.h"

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//构造函数

Record:

:

Record()

{renshu=0;

chidao=0;

zaotui=0;

qingjia=0;

kuangke=0;

ID=0;

Name[20]=0;

password[20]=0;

}

RecordCRecord[Size];

charpwd[]={'1','2','3','4','5','6'};

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//输出函数

voidRecord:

:

ShowDate(inti)

{cout<<"\t"

<

<

<

<

<

<

}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//获取密码

voidRecord:

:

GetPwd()

{inta=0;

while

(1)

{charch;

ch=getch();

if(ch=='\b')

{

if(a!

=0)

{

cout<

a--;

}

}

elseif(ch=='\r')

{password[a]='\0';

cout<

break;

}

else

{cout<<"*";

password[a++]=ch;

}

}

}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//登陆进入系统

voidRecord:

:

Entersystem()

{inta=3,b=1;

charrepwd[20];

fstreamfile("\\mima.dat",ios:

:

in|ios:

:

binary);

file.get(repwd,20,'\0');

file.close();

b=strlen(repwd);

if(b)

{strcpy(pwd,repwd);}

while(a)

{system("cls");

cout<<"\n\n\n\n\t\t\t欢迎使用考勤管理系统!

";

cout<<"\n\n\n\t\t请输入登陆密码:

";

GetPwd();

a--;

if(strcmp(pwd,password)!

=0)

{

if(a)

{system("cls");

cout<<"\n\n\n\t\t密码输入错误!

还有"<

\n";

cout<<"\t\t";

system("pause");

}

else

{system("cls");

cout<<"\n\n\n\t\t连续3次密码输入错误!

系统自动退出!

\n";

cout<<"\t\t";

system("pause");

exit(0);

}

}

else

break;

}

}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//修改密码

voidRecord:

:

SetPwd()

{charrepwd[20]={0};

inta=0;

while(!

a)

{system("cls");

cout<<"\n\n\n\n\t\t输入原密码:

";

GetPwd();

if(strcmp(password,pwd)!

=0)

{cout<<"\n\n\t\t原密码错误!

\n\n"

<<"\t\t重新输入请按0否则请按任意键\n\n";

cin>>a;

if(a)

{system("cls");

cout<<"\n\n\n\n\t\t\t密码修改失败!

\n\n";

}

}

else

{cout<<"\n\n\t\t请输入新密码:

";

GetPwd();

strcpy(repwd,password);

cout<<"\n\n\t\t再次输入新密码:

";

GetPwd();

if(strcmp(repwd,password)!

=0)

{cout<<"\n\n\t\t两次输入密码不相同!

\n\n"

<<"\t\t重新输入请按0否则请按任意键\n\n";

cin>>a;

if(a)

{system("cls");

cout<<"\n\n\n\n\t\t\t密码修改失败!

\n\n";

}

}

else

{strcpy(pwd,password);

cout<<"\n\n\t\t密码修改成功!

请牢记你的新密码!

\n\n";

fstreamfile("\\mima.dat",ios:

:

out|ios:

:

binary);

file.write(pwd,strlen(pwd));

file.close();

break;

}

}

}

}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//输入增添学生人数

voidRecord:

:

SetDate()

{inti=0;

intm=0;

cout<<"\n输入/增添学生人数:

";

cin>>m;

for(i=0;i

{cout<<"\n输入/增添第"<

"<

cout<<"\n\t学号:

";

cin>>CRecord[renshu+i].ID;

cout<<"\n\t姓名:

";

cin>>CRecord[renshu+i].Name;

}

renshu+=m;

}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//按学号排序

voidRecord:

:

Order()

{ints,z;

longt;

charr[20];

s=renshu;

for(inti=0;i

{for(intj=i+1;j

if(CRecord[i].ID>=CRecord[j].ID)

{strcpy(r,CRecord[i].Name);

strcpy(CRecord[i].Name,CRecord[j].Name);

strcpy(CRecord[j].Name,r);

t=CRecord[i].ID;CRecord[i].ID=CRecord[j].ID;CRecord[j].ID=t;

z=CRecord[i].chidao;CRecord[i].chidao=CRecord[j].chidao;CRecord[j].chidao=z;

z=CRecord[i].zaotui;CRecord[i].zaotui=CRecord[j].zaotui;CRecord[j].zaotui=z;

z=CRecord[i].qingjia;CRecord[i].qinjia=CRecord[j].qinjia;CRecord[j].qinjia=z;

z=CRecord[i].kuangke;CRecord[i].kuangke=CRecord[j].kuangke;CRecord[j].kuangke=z;

}

}

}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//设置学生考勤信息

voidRecord:

:

PutRecord()

{inti;

doublelongid;

if(renshu<=0)

cout<<"\n\n\n\n\t目前没有任何学生信息请先输入学生个人信息再进行此操作!

\n\n";

else

{cout<<"\n请输入所查学生学号:

";

cin>>id;

for(i=0;i

{

if(CRecord[i].ID==id)

break;

}

if(i>=renshu)

cout<<"\n没有你所查找的记录!

\n";

else

{

cout<<"\n该学生的原始信息记录是:

\n";

cout<<"\n\t学号姓名迟到早退请假旷课"<

ShowDate(i);

cout<<"\n信息记录:

\n";

intm=0;

while(!

m)

{intn;

cout<<"\n\t请输入选择缺课类型:

(1迟到2早退3请假4旷课):

";

cin>>n;

switch(n)

{

case1:

cout<<"\n请输入迟到次数:

";

cin>>n;

CRecord[i].chidao+=n;

break;

case2:

cout<<"\n请输入早退次数:

";

cin>>n;

CRecord[i].zaotui+=n;

break;

case3:

cout<<"\n请输入请假次数:

";

cin>>n;

CRecord[i].qingjia+=n;

break;

case4:

cout<<"\n请输入旷课次数:

";

cin>>n;

CRecord[i].kuangke+=n;

break;

default:

break;

}

cout<<"\n\t继续输入该生考情请输0否则输任意值:

";

cin>>m;

}

cout<<"\n该学生现在的信息记录是:

\n";

cout<<"\n\t学号姓名迟到早退请假旷课"<

ShowDate(i);

}

}

}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//修改学生信息

voidRecord:

:

ModifyDate()

{inti,j=1;

longid;

if(renshu<=0)

cout<<"\n\n\n\n\t目前没有任何学生信息请先输入学生个人信息再进行此操作!

\n\n";

else

while(j==1)

{system("cls");

cout<<"\n请输入要修改学生的学号:

";

cin>>id;

for(i=0;i

{

if(CRecord[i].ID==id)

break;

}

if(i>=renshu)

{cout<<"\n\t\t没有你所查找的记录!

\n";

cout<<"\n重新查询修改请输0否则输任意值:

";

cin>>i;

if(i==0)

j=1;

else

{system("cls");

cout<<"\n\n\n\n\t\t\t信息修改失败!

\n\n";

break;

}

}

else

{

cout<<"\n该学生的原始信息是:

\n";

cout<<"\n\t学号姓名迟到早退请假旷课"<

ShowDate(i);

cout<<"\n信息修改:

\n";

charname[]={0};

intn=0;

while(n==0)

{cout<<"\n\t选择修改内容:

(1学号2姓名3迟到4早退5请假6旷课):

";

cin>>n;

switch(n)

{case1:

cout<<"\n新的学号:

";

cin>>id;

CRecord[i].ID=id;

break;

case2:

cout<<"\n新的姓名:

";

cin>>name;

strcpy(CRecord[i].Name,name);

break;

case3:

cout<<"\n输入迟到次数:

";

cin>>n;

CRecord[i].chidao=n;

break;

case4:

cout<<"\n输入早退次数:

";

cin>>n;

CRecord[i].zaotui=n;

break;

case5:

cout<<"\n输入请假次数:

";

cin>>n;

CRecord[i].qingjia=n;

break;

case6:

cout<<"\n输入旷课次数:

";

cin>>n;

CRecord[i].kuangke=n;

break;

default:

break;

}

cout<<"\n\t该学生修改后的信息是:

\n";

cout<<"\n\t学号姓名迟到早退请假旷课"<

ShowDate(i);

cout<<"\n

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 初中作文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1