利用C++语言实现基本的学生信息管理系统;
要求:
1-设置管理员密码
2-人员数据有:姓名,性别等基本的信息
3-可以添加,删除,保存,统计
#include<iostream>
#include<iomanip>
#include<fstream>
#include<cstring>
#include<windows.h>
using namespace std;
const int EXIT=;
const int REFUSE=;
const int OK=;
int IFRUN=;
int PasswordExam();
void printline()
{
cout<<endl<<endl<<endl<<endl<<endl<<endl;
}
void printspace()
{
cout<<" ";
}
class student
{
public:
char name[];//姓名
char sex[];//性别
char identity[];//学号
char birth[];//出生年月
char major[];//专业
int Class;//班级
char tell[];//电话号码
char qq[];//QQ号
char address[];//家庭地址
};
class SystemControl{
public:
SystemControl()
{
StuNum=;
initial();
}
~SystemControl();
void RunControl();
private:
void initial(int work=);//初始化数组
void input();//添加
int search(int work=);//查询
void modify();//修改
void deletes();//删除
void display();//输出
void menu();//菜单
void biaotou();//表头
void changepassword();//修改密码
student stu[];//最多放100个学生信息
int StuNum;
};
void SystemControl::changepassword()
{
char pass1[];
char pass2[];
system("cls");
printline();
ifstream fp("password.dat",ios::in);
fp>>pass1;
fp.close(); printspace();
cout<<"请先输入旧密码:";cin>>pass2;
if(strcmp(pass2,pass1))
{
printspace();
cout<<"旧密码输入错误,按Enter键返回主菜单"<<endl;
getchar();getchar();getchar();
return;
}
int timesort=;
NEW:
printspace();
cout<<"请输入新密码:";cin>>pass1;printspace();
cout<<"请确认新密码:";cin>>pass2;printspace();
timesort++;
if(strcmp(pass2,pass1))
{
if(timesort>=)
{
cout<<"错误次数太多,按Enter键返回主菜单。"<<endl;
getchar();getchar();
return;
}
cout<<"两次输入不同,按Enter键重新输入" <<endl;
getchar() ;getchar();
system("cls");
printline();
goto NEW;
}
ofstream fo("password.dat",ios::out);
fo<<pass1<<endl;
fo.close();
cout<<"密码修改成功,按Enter键返回主菜单"<<endl;
getchar();getchar();
}
//初始化学生数组
//学生信息保存到student.dat中
void SystemControl::initial(int work)
{
ifstream fp("student.dat",ios::in);
char test[];
while(fp>>stu[StuNum].identity)
{
fp>>stu[StuNum].name>>stu[StuNum].sex>>stu[StuNum].Class;
fp>>stu[StuNum].major>>stu[StuNum].address;
fp>>stu[StuNum].birth>>stu[StuNum].qq>>stu[StuNum].tell;
StuNum++;
}
if(work==)return;
if(StuNum>)
{
system("cls");
printline();
printspace();
cout<<"记录中的所有数据已经初始化完毕"<<endl;printspace();
cout<<"一共有"<<StuNum<<"个学生的信息"<<endl;
cout<<endl;printspace();
cout<<"即将进入主界面"<<endl;
Sleep();
system("cls");
} }
SystemControl::~SystemControl()
{
ofstream fp("student.dat",ios::out);
for(int i=;i<StuNum;i++)
{
system("cls");
printline();
printspace();
cout<<"您即将关闭系统,正在保存信息中,请稍后----" <<endl;printspace();
cout<<"已完成:";
fp<<stu[i].identity<<" "<<stu[i].name<<" "<<stu[i].sex<<" "<<stu[i].Class<<" ";
fp<<stu[i].major<<" "<<stu[i].address<<" "<<stu[i].birth<<" "<<stu[i].qq<<" "<<stu[i].tell<<endl;
Sleep();
cout<<(double)(i+)/StuNum*<<"%"<<endl;
}
fp.close();printspace();
cout<<"已经关闭" <<endl;
}
void SystemControl::biaotou()
{
cout<<"姓名"<<" 性别"<<" 学号"<<" 出生年月"<<" 专业"<<" 班级"<<" 电话号码"<<" QQ号"<<" 家庭地址"<<endl;
}
void SystemControl::menu()
{
system("cls");
cout<<endl;
printspace();
cout<<"\t==========================\n";printspace();
cout<<"\t||请选择你要进行的操作:||\n";printspace();
cout<<"\t|| 1.添加信息 ||\n";printspace();
cout<<"\t|| 2.查询信息 ||\n";printspace();
cout<<"\t|| 3.修改操作 ||\n";printspace();
cout<<"\t|| 4.删除操作 ||\n";printspace();
cout<<"\t|| 5.显示信息 ||\n";printspace();
cout<<"\t|| 6 修改密码 ||\n";printspace();
cout<<"\t|| 7.退出系统 ||\n";printspace();
cout<<"\t==========================\n";printspace();
cout<<"请选择你要进行的操作(1,2,3,4,5,6,7):";
IFRUN=;
}
//主控函数
void SystemControl::RunControl()
{
while(true){
menu();
int i;
cin>>i;
switch(i)
{
case :input();break;
case :search();break;
case :modify();break;
case :deletes();break;
case :display();break;
case :changepassword();break;;
case :printspace();cout<<"谢谢您的使用!"<<endl;return;break;
default:cout<<"您的选择有误!";break;
}
}
}
//输入函数
void SystemControl::input()
{
char ch='y';
do{
system("cls");
cout<<"退出输入请在学号栏输入#"<<endl;
cout<<"按要求输入信息"<<endl;
cout<<"学号:"; cin>>stu[StuNum].identity;
if(!strcmp(stu[StuNum].identity,"#"))return;
cout<<"姓名:"; cin>>stu[StuNum].name;
cout<<"性别:"; cin>>stu[StuNum].sex;
cout<<"班级:"; cin>>stu[StuNum].Class;
cout<<"专业:"; cin>>stu[StuNum].major;
cout<<"地址: "; cin>>stu[StuNum].address;
cout<<"生日:"; cin>>stu[StuNum].birth;
cout<<"QQ号:"; cin>>stu[StuNum].qq;
cout<<"电话:"; cin>>stu[StuNum].tell;
cout<<"是否继续输入(y/n):";cin>>ch;
StuNum++;
}
while(ch=='y'||ch=='Y');
}
int SystemControl::search(int work)
{
int choice=;
int i=;
char cho;
char item[];
SEARCH:
system("cls");printspace();
cout<<"============查询学生信息============="<<endl;printspace();
cout<<"|| <1>通过姓名查询 ||"<<endl;printspace();
cout<<"|| <2>通过学号查询 ||"<<endl;printspace();
cout<<"|| <3>返回上一级菜单 ||"<<endl;printspace();
cout<<"====================================="<<endl;printspace();
cout<<endl<<"请输入您的查询方式(1,2,3):" ;cin>>choice; switch(choice)
{
case :
cout<<"输入姓名:";cin>>item;
for(i=;i<StuNum;i++)
{
if(!strcmp(stu[i].name,item))
break;
}
break;
case :
cout<<"输入学号:";cin>>item;
for(i=;i<StuNum;i++)
{
if(!strcmp(stu[i].identity,item))
break;
}
break;
case :return -;
default:
goto SEARCH;
break;
} if(i>=StuNum)
{
cout<<"没有找到符合的学生"<<endl;
cout<<"继续查找(y/n):";getchar();cin>>cho;
if(cho=='y'||cho=='Y')goto SEARCH;
else return -;
} cout<<"已找到学生:"<<stu[i].name<<endl;
printspace();
cout<<"学号:"; cout<<stu[i].identity<<endl;
printspace();
cout<<"性别:"; cout<<stu[i].sex<<endl;printspace();
cout<<"班级:"; cout<<stu[i].Class<<endl;printspace();
cout<<"专业:"; cout<<stu[i].major<<endl;printspace();
cout<<"地址: "; cout<<stu[i].address<<endl;printspace();
cout<<"生日:"; cout<<stu[i].birth<<endl;printspace();
cout<<"QQ号:"; cout<<stu[i].qq<<endl;printspace();
cout<<"电话:"; cout<<stu[i].tell<<endl;
if(work==){
cout<<endl;
return i;}
cout<<endl<<endl;
cout<<"是否继续查找(y/n):" ;cin>>cho;
if(cho=='y'||cho=='Y')goto SEARCH;
return ;
}
void SystemControl::deletes()
{
DELTE:
system("cls");
int num;printspace();
cout<<"全部删除输入-1"<<endl;printspace();
cout<<"选择单个信息删除请输入 1"<<endl;printspace();
cout<<"返回主菜单输入 0"<<endl; printspace();
cin>>num;
if(num==)return;
if(num==-)
{
if(PasswordExam()==OK)
{
StuNum=;
printspace();
cout<<"所有学生信息删除成功"<<endl;
}
printspace();
cout<<"按Enter键返回主菜单"<<endl;
getchar();
return;
}
else if(num==)
{
int getint=search();
if(getint==-)
{
goto DELTE;
}
ofstream fp("student",ios::out);
for(int i=;i<StuNum;i++)
{
if(getint==i)continue;
fp<<stu[i].identity<<stu[i].name<<stu[i].sex<<stu[i].Class;
fp<<stu[i].major<<stu[i].address<<stu[i].birth<<stu[i].qq<<stu[i].tell<<endl;
}
fp.close();
StuNum=;
initial();
cout<<"删除成功"<<endl;
cout<<"按Enter键返回上一级菜单"<<endl;
getchar();getchar();
}
goto DELTE;
}
void SystemControl::modify()
{
int getvalue=search();
char value[];
if(getvalue>=&&getvalue<StuNum){
cout<<"在学号栏输入#退出修改"<<endl;
cout<<"输入修改后的信息:"<<endl;
cout<<"学号:"; cin>>value;
if(!strcmp(value,"#"))return;
strcpy(stu[getvalue].identity,value);
cout<<"姓名:"; cin>>stu[getvalue].name;
cout<<"性别:"; cin>>stu[getvalue].sex;
cout<<"班级:"; cin>>stu[getvalue].Class;
cout<<"专业:"; cin>>stu[getvalue].major;
cout<<"地址: "; cin>>stu[getvalue].address;
cout<<"生日:"; cin>>stu[getvalue].birth;
cout<<"QQ号:"; cin>>stu[getvalue].qq;
cout<<"电话:"; cin>>stu[getvalue].tell;
cout<<"修改成功,按任意键返回主菜单" <<endl;
getchar();getchar();
}
}
//密码文件password.dat
int PasswordExam()
{
ifstream fp("password.dat",ios::in);
char pass1[];
char pass2[];
fp>>pass1;
if(strlen(pass1)<)
{
fp.close();
ofstream fi("password.dat",ios::out);
printline();
printspace();
cout<<"您这是第一次使用本系统,请先设置管理员密码!"<<endl;
cout<<endl;
SETPASSWORD:
printspace();
cout<<"请设置密码:"; cin>>pass1;
printspace();
cout<<"请确认密码:"; cin>>pass2;
if(strcmp(pass1,pass2))
{
printspace();
cout<<"两次输入密码不一致,请重新输入" <<endl;
goto SETPASSWORD;
}
fi<<pass1<<endl;
system("cls");
printline();
printspace();
cout<<"密码设置成功,按任意键继续"<<endl;
getchar();getchar();
return OK;
}
else
{
int testtime=;
TEST:
{
system("cls");
printline();
printspace();
cout<<"请输入管理员密码:";
cin>>pass2;
testtime++;
}
if(strcmp(pass1,pass2))
{
system("cls");
printline();
printspace();
if(testtime>=){
if(!IFRUN)
{
cout<<"错误次数太多,自动退出系统" <<endl;
return EXIT;}
cout<<"错误次数太多,请求被拒绝:";
return REFUSE;
}
cout<<"输入密码错误,";
cout<<"按Enter键重新输入";
getchar();getchar();
goto TEST;
}
system("cls");
printline();
printspace();
cout<<"密码正确,按任意键继续操作"<<endl;
getchar();getchar();
return OK;
}
}
void SystemControl::display()
{
system("cls");
if(StuNum==) {
printline();printspace();
cout<<"学生记录为空,按任意键返回"<<endl;
getchar();getchar();
return;}
cout<<"学生人数:"<<StuNum<<endl<<"所有学生信息如下" <<endl;
biaotou();
for(int i=;i<StuNum;i++)
{
cout<<stu[i].name<<" "<<stu[i].sex<<" "<<stu[i].identity<<" "<<stu[i].birth<<" "<<stu[i].major;
cout<<" "<<stu[i].Class<<" "<<stu[i].tell<<" "<<stu[i].qq<<" "<<stu[i].address<<endl;
}
cout<<"按任意键返回主菜单"<<endl;
getchar();getchar();
}
int main()
{
//验证登陆密码
if(PasswordExam()==EXIT)return ;
SystemControl command;
command.RunControl();
return ;
}