C++学生信息管理系统一卡通.docx
- 文档编号:6926006
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:32
- 大小:19.30KB
C++学生信息管理系统一卡通.docx
《C++学生信息管理系统一卡通.docx》由会员分享,可在线阅读,更多相关《C++学生信息管理系统一卡通.docx(32页珍藏版)》请在冰豆网上搜索。
C++学生信息管理系统一卡通
//由于对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.eof())//判断文件指针是否到文件尾 { if(comp(undePay1.number,str)) { cout<<"您的姓名为: "< (y/n)"; while (1) { cin>>choose; if(choose=='y'||choose=='Y') { cout<<"您本次消费/充卡金额为(消费为正值,充卡为负值): "; cin>>payMoney; undePay1.money-=payMoney; cout<<"您的余额为: "< break; } elseif(choose=='n'||choose=='N')break; elsecout<<"您的输入错误"< } break; } file.read((char*)&undePay1,sizeof(undePay1));//如果指针没到文件尾,继续读取 } } voidundergraduate: : underSearchAll() { undergraduateunder5; cout< <<"―――――――――――――――――――――――――"< <<"★★★★本科生基本信息★★★★"< <<"学号"<<"姓名"<<"专业班级"<<"班长"<<"年龄"<<"性别" <<"籍贯"<<"电话"<<"余额"< fstreamfile("Undergraduate.txt",ios: : in);//打开文件,指针在文件头 file.read((char*)&under5,sizeof(under5));//读取类信息 while(! file.eof())//判断文件指针是否到文件尾 { cout< <
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 学生 信息管理 系统 一卡通