C++实现人员信息管理系统模拟
利用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 ;
}
C++实现人员信息管理系统模拟的更多相关文章
- atitit 商业项目常用模块技术知识点 v3 qc29
atitit 商业项目常用模块技术知识点 v3 qc29 条码二维码barcodebarcode 条码二维码qrcodeqrcode 条码二维码dm码生成与识别 条码二维码pdf147码 条码二维码z ...
- 连锁机构3D指纹考勤系统解决方案
信息技术的高速发展加速了商业零售业连锁经营的信息化和全球化的进程,同时也推动了商业管理的变革.尽管人们对它的认识是被动与滞后的,但这种变革依然伴随着商业业态的转变和信息技术的发展或快或慢地在悄然进行着 ...
- java面试宝典(蓝桥学院)
Java面试宝典(蓝桥学院) 回答技巧 这套面试题主要目的是帮助那些还没有java软件开发实际工作经验,而正在努力寻找java软件开发工作的学生在笔试/面试时更好地赢得好的结果.由于这套试题涉及的范围 ...
- .net实现调用本地exe等应用程序的办法总结
根据客户需求用户要实现在一个BS系统上打开本地的一应用程序,在网上查了好多资料再加上自己的各种测试,到最后功能是实现了,只不过还存在一些问题,接下来会先把各种方法一一列举出来 1.先写最终测试通过的这 ...
- 客户关系管理系统(CRM)的开发过程中使用到的开发工具总结
开发<客户关系管理系统(CRM)>软件过程,也就是一个标准的Winform程序的开发过程,我们可以通过这个典型的软件开发过程来了解目前的开发思路.开发理念,以及一些必要的高效率手段.本篇随 ...
- 在GridView列表中使用图片显示记录是否包含附件
在我的前面很多文章中,都介绍过通用附件模块的管理,本篇随笔主要介绍在一些应用模块中的列表展示中,包含附件的记录,在GridView列表界面中使用图标来快速显示是否有附件的情况. 1.通用附件模块的应用 ...
- 2013年7月底至8月初51Aspx源码发布详情
兼职人员信息管理系统源码 2013-8-2 [VS2008]2013.8.2更新内容:修改了一级菜单不能修改的bug.功能介绍:兼职人员信息管理:添加,修改,删除,查询,支持数据导出Excel,按多 ...
- 2013年7月份第4周51Aspx源码发布详情
大型企业通用管理ERP源码 2013-7-26 [VS2010]2013.7.4更新内容:1.修复决策模式-客户等级不能保存问题.2.修复企业知识库有报错问题.3.修复运营模式-人力资源分析模块-在 ...
- 第 8 章 适配器模式【Adapter Pattern】
以下内容出自:<<24种设计模式介绍与6大设计原则>> 好,请安静,后排聊天的同学别吵醒前排睡觉的同学了,大家要相互理解嘛.今天讲适配器模式,这个模式也很简单,你笔记本上的那个 ...
随机推荐
- centos7.2部署docker-17.06.0-ce的bug:Error response from daemon: oci runtime error: container_linux.go:262: starting container process caused "process_linux.go:339: container init caused \"\"".
现象: 操作系统:centos 7.2 kernel 3.10.0-327.el7.x86_64 mesos:1.3.0 docker:docker-17.06.0-ce 在做mesos验证时,通过m ...
- [转载]linux+nginx+python+mysql安装文档
原文地址:linux+nginx+python+mysql安装文档作者:oracletom # 开发包(如果centos没有安装数据库服务,那么要安装下面的mysql开发包) MySQL-devel- ...
- ThinkPHP - 6 - 学习笔记(2015.5.4)
解决:OneThink 站点无法被友言uyan后台识别 打开友言uyan插件功能,但OneThink站点无法被友言uyan后台检测到.页面生成的uyan代码为: <!-- UY BEGIN -- ...
- 深入react技术栈解读
1. react实现virtual DOM ,如果要改变页面的内容,还是需要执行DOM操作,比原生操作DOM多了virtualDOM的操作(计算,对比等), 应该是更耗性能??? 2. react特点 ...
- mariadb BINLOG_FORMAT = STATEMENT 异常
当在mariadb中插入数据是报 InnoDB is limited to row-logging 异常: java.sql.SQLException: Cannot execute statemen ...
- Segments CodeForces 909B (找规律)
Description You are given an integer N. Consider all possible segments (线段,划分)on the coordinate axis ...
- 20181113-3 Beta阶段贡献分配规则
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2382 在新成员加入后,我们经过商讨,决定沿用alpha阶段贡献分分配规则 ...
- 软工1816 · Alpha冲刺(8/10)
团队信息 队名:爸爸饿了 组长博客:here 作业博客:here 组员1(组长):王彬 过去两天完成了哪些任务 推进前后端各个接口的整合 学习jQuery基本语法,为beta阶段的商铺页面做准备 接下 ...
- phpcms 发布时间 更新 时间
- dat.gui 上手
dat.gui是款神器产品.一个调试利器.但是用起来很简单很简单 1:引用dat.gui.js. 2:实例化 this.gui = new dat.GUI(); 3:创建可设置一个数据对象.例如v ...