学生信息管理系统一卡通.docx
《学生信息管理系统一卡通.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统一卡通.docx(41页珍藏版)》请在冰豆网上搜索。
学生信息管理系统一卡通
//由于对fsream的不熟练,不会对指定部分的数据的修改,因而删除了一些功能,同时也导致了只能对消费额进行加减,但不能导入txt文件。
Code:
Uni-cardsystem.h
#include
usingnamespacestd;
classperson
{
public:
voidbuildAdmin();
voidbuildUndergraduate();
voidbuildPostgraduate();
protected:
charname[20];
charsex;
charshape[10];
chartel[12];
};
classconsumer:
publicperson
{
protected:
doublemoney;
};
classstudent:
publicconsumer//定义学生类
{
protected:
charnumber[20];
intage;
charnowClass[20];
charbirthPlace[20];
};
classadmin:
publicperson//定义管理员类
{
public:
voidlogin();
voidadminRegister();
voidadminRegister2();
private:
characcount[12];
charpassword[12];
chartitle;
};
classundergraduate:
publicstudent//定义本科生类
{
public:
voidsearchUndergraduate();
voiddisplayUndergraduate();
voidinputUndergraduate_wrapper();
voidinputUndergraduate();
voidinputUndergraduate1();
voidunderPayout(charstr[]);
voidmonitorPower();
voidoutputClassStudent(chars[]);
voidunderSearchAll();
private:
charmonitor;
};
classpostgraduate:
publicstudent//定义研究生类
{
public:
voidsearchPostgraduate();
voiddisplayPostgraduate();
voidinputPostgraduate_wrapper();
voidinputPostgraduate();
voidinputPostgraduate1();
voidpostPayout(charstr[]);
voidpostSearchAll();
protected:
doublewage;
};
//不清楚教职工是否配备有一卡通,所以暂不考虑教职工类
Uni-cardsystem.cpp
#include
#include
#include
#include
#include
#include"uni-cardsystem.h"
usingnamespacestd;
voidonUndergraduate();
voidonPostgraduate();
boolcomp(chars1[],chars2[]);
voidinputStudent();
voidadminOnLogin();
//------------------------------------------------------------------
//---------------------以下为person类中成员函数---------------------
//------------------------------------------------------------------
voidperson:
:
buildAdmin()//建立Admin.txt
{
fstreamfile("Admin.txt",ios:
:
out|ios:
:
app);//打开文件,指针指向文件尾
file.close();//关闭文件
}
voidperson:
:
buildUndergraduate()//建立Undergraduate.txt
{
fstreamfile("Undergraduate.txt",ios:
:
out|ios:
:
app);//打开文件,指针指向文件尾
file.close();//关闭文件
}
voidperson:
:
buildPostgraduate()//建立Postgraduate.txt
{
fstreamfile("Postgraduate.txt",ios:
:
out|ios:
:
app);//打开文件,指针指向文件尾
file.close();//关闭文件
}
//------------------------------------------------------------------
//--------------------以下为admin类中成员函数-----------------------
//------------------------------------------------------------------
voidadmin:
:
login()//管理员登录及验证
{
intensurance=0;
characcount2[12],password2[12];
adminad;
cout<<<"★★★★★管理员登录界面★★★★★"<cout<<"请输入您的账号:
";
cin>>account2;
cout<<"请输入您的密码:
";
cin>>password2;
fstreamfile("Admin.txt",ios:
:
in);//打开文件,指针在文件头
file.read((char*)&ad,sizeof(ad));//读取类信息
while(!
file.eof())//判断文件指针是否到文件尾
{
if(comp(ad.account,account2)&&comp(ad.password,password2))//判断输入的字符是否与文件中的一样
{
cout<<"登录成功!
"<ensurance=1;break;
}
file.read((char*)&ad,sizeof(ad));//如果指针没到文件尾,继续读取
}
file.close();
if(ensurance==0)cout<<"您的账号或密码输入错误!
"<file.close();//关闭文件
if(ensurance)adminOnLogin();
}
voidadmin:
:
adminRegister()//管理员在文件外录入信息
{
adminadm;
charchoose;
intloop=1,loop1=1;
cout<<<"★★★★★管理员注册★★★★★"<while(loop1)
{
loop1=0;
cout<<"输入您的账号(12位以内):
";cin>>account;
fstreamfile("Admin.txt",ios:
:
in);//打开文件,指针在文件头
file.read((char*)&adm,sizeof(adm));//读取类信息
while(!
file.eof())//判断文件指针是否到文件尾
{
if(comp(adm.account,account))//判断输入的字符是否与文件中的一样
{
cout<<"账号已被占用!
"<loop1=1;
break;
}
file.read((char*)&adm,sizeof(adm));//如果指针没到文件尾,继续读取
}
file.close();
}
cout<<"输入您的密码(12位以内):
";cin>>password;
cout<<"输入您的姓名:
";cin>>name;
while(loop)
{
cout<<"选择您的性别(A.男,B.女):
";
cin>>choose;
if(choose=='a'||choose=='A')
{sex='m';loop=0;}
elseif(choose=='b'||choose=='B')
{sex='f';loop=0;}
else
{cout<<"您的输入有误,请重新选择!
"<}
strcat(shape,"Admin");
cout<<"输入您的电话:
";cin>>tel;
loop=1;
while(loop)
{
cout<<"输入您的管理员权限级别,是否为高级(y/n):
";
cin>>choose;
if(choose=='y'||choose=='Y')
{title='y';loop=0;}
elseif(choose=='n'||choose=='N')
{title='n';loop=0;}
else
{cout<<"您的输入有误,请重新选择!
"<}
}
voidadmin:
:
adminRegister2()//将管理员信息录入admin.txt
{
adminad;
ad.adminRegister();
fstreamfile("admin.txt",ios:
:
out|ios:
:
app);//打开文件,指针指向文件尾
file.write((char*)&ad,sizeof(ad));//把类信息写入文件
file.close();//关闭文件
cout<<"......信息已保存"<}
//------------------------------------------------------------------
//----------------以下为undergraduate类中成员函数-------------------
//------------------------------------------------------------------
voidundergraduate:
:
searchUndergraduate()//通过学号及姓名查找学生信息
{
undergraduateunde1;
intensurance=1;
charnumber2[20],name2[20];
cout<<"请输入您所需查询学生的学号:
";
cin>>number2;
cout<<"请输入该学生的姓名:
";
cin>>name2;
fstreamfile("Undergraduate.txt",ios:
:
in);//打开文件,指针在文件头
file.read((char*)&unde1,sizeof(unde1));//读取类信息
while(!
file.eof())//判断文件指针是否到文件尾
{
if(comp(unde1.number,number2))
{
if(comp(unde1.name,name2))
{
cout<<<"―――――――――――――――――――――――――"<<<"★★★本科生基本信息查询结果★★★"<cout<<"学号:
"<cout<<"姓名:
"<cout<<"专业班级:
"<cout<<"年龄:
"<cout<<"性别:
";
if(unde1.sex=='m')cout<<"男"<elseif(unde1.sex=='f')cout<<"女"<cout<<"班干部:
";
if(unde1.monitor=='y')cout<<"班长"<elseif(unde1.monitor=='n')cout<<"无"<cout<<"籍贯:
"<cout<<"电话:
"<cout<<"余额:
"<}
elsecout<<"您所输入姓名与学号不符!
"<ensurance=0;
break;
}
file.read((char*)&unde1,sizeof(unde1));//如果指针没到文件尾,继续读取
}
if(ensurance)cout<<"该学号不存在!
"<file.close();
}
voidundergraduate:
:
outputClassStudent(chars[])
{
undergraduateunder4;
cout<<<"―――――――――――――――――――――――――"<<<"★★★"<
<<"学号"<<"姓名"<<"专业班级"<<"班长"<<"年龄"<<"性别"
<<"籍贯"<<"电话"<<"余额"<fstreamfile("Undergraduate.txt",ios:
:
in);//打开文件,指针在文件头
file.read((char*)&under4,sizeof(under4));//读取类信息
while(!
file.eof())//判断文件指针是否到文件尾
{
if(comp(under4.nowClass,s))
{
cout<<<}
file.read((char*)&under4,sizeof(under4));//如果指针没到文件尾,继续读取
}
file.close();
}
voidundergraduate:
:
monitorPower()
{
undergraduateunder3;
intensure=0,ensureExit=1;
charnumber2[20];
charname2[20];
cout<<"请输入您的学号:
";
cin>>number2;
cout<<"请输入您的姓名:
";
cin>>name2;
fstreamfile("Undergraduate.txt",ios:
:
in);//打开文件,指针在文件头
file.read((char*)&under3,sizeof(under3));//读取类信息
while(!
file.eof())//判断文件指针是否到文件尾
{
if(comp(under3.number,number2))
{
if(comp(under3.name,name2))
if(under3.monitor=='y')
ensure=1;
elsecout<<"你不是班长,别冒牌了!
"<elsecout<<"您输入的学号和姓名不符!
"<ensureExit=0;
break;
}
file.read((char*)&under3,sizeof(under3));//如果指针没到文件尾,继续读取
}
file.close();
if(ensureExit)cout<<"您所输入的学号不存在!
"<if(ensure)outputClassStudent(under3.nowClass);
}
voidundergraduate:
:
inputUndergraduate()//管理员录入本科生信息
{
undergraduateundInput;
charchoose;
intloop=1,loop1=1;
strcat(shape,"Undergraduate");
while(loop1)
{
loop1=0;
cout<<"学号:
";cin>>number;
fstreamfile("Undergraduate.txt",ios:
:
in);//打开文件,指针在文件头
file.read((char*)&undInput,sizeof(undInput));//读取类信息
while(!
file.eof())//判断文件指针是否到文件尾
{
if(comp(undInput.number,number))//判断输入的字符是否与文件中的一样
{
cout<<"该学号已经录入"<loop1=1;
break;
}
file.read((char*)&undInput,sizeof(undInput));//如果指针没到文件尾,继续读取*/
}
file.close();
}
cout<<"姓名:
";cin>>name;
cout<<"班级:
";cin>>nowClass;
cout<<"年龄:
";cin>>age;
while(loop)
{
cout<<"性别(A.男,B.女):
";
cin>>choose;
if(choose=='a'||choose=='A')
{sex='m';loop=0;}
elseif(choose=='b'||choose=='B')
{sex='f';loop=0;}
else
{cout<<"您的输入有误,请重新选择!
"<}
cout<<"籍贯:
";cin>>birthPlace;
cout<<"电话:
";cin>>tel;
money=0;
loop=1;
while(loop)
{
cout<<"该学生是否为本班级班长(y/n):
";
cin>>choose;
if(choose=='y'||choose=='Y')
{monitor='y';loop=0;}
elseif(choose=='n'||choose=='N')
{monitor='n';loop=0;}
else
{cout<<"您的输入有误,请重新选择!
"<}
}
voidundergraduate:
:
inputUndergraduate1()//管理员本科生信息进Undergraduate.txt文件
{
undergraduateundInput1;
undInput1.inputUndergraduate();
fstreamfile("Undergraduate.txt",ios:
:
out|ios:
:
app);//打开文件,指针指向文件尾
file.write((char*)&undInput1,sizeof(undInput1));//把类信息写入文件
file.close();//关闭文件
cout<<"......信息已保存"<}
voidundergraduate:
:
inputUndergraduate_wrapper()//OK!
管理员录入本科生信息时单个录入或多个录入
{
chartotalChar;
inttotal,loop=1,i;
undergraduateunderInputWrapper;
while(loop)
{
loop=0;
cout<<"★★★★本科生信息录入★★★★"<cout<<"您想录入多少组信息(0-9):
";
cin>>totalChar;
if(totalChar<'0'||totalChar>'9')
{
cout<<"您的输入有误,请重新输入!
"<loop=1;
continue;
}
total=totalChar-'0';
for(i=0;i{
cout<<"第"<
"<underInputWrapper.inputUndergraduate1();
}
}
}
voidundergraduate:
:
underPayout(charstr[])
{
charchoose;
doublepayMoney;
undergraduateundePay1;
fstreamfile("Undergraduate.txt",ios:
:
in);//打开文件,指针在文件头
file.read((char*)&undePay1,sizeof(undePay1));//读取类信息
while(!
file.e