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大设计原则>> 好,请安静,后排聊天的同学别吵醒前排睡觉的同学了,大家要相互理解嘛.今天讲适配器模式,这个模式也很简单,你笔记本上的那个 ...
随机推荐
- 228. [LeetCode] Summary Ranges
Given a sorted integer array without duplicates, return the summary of its ranges. Example 1: Input: ...
- 如何计算FOB价格
FOB价格是国际贸易术语常有的一种算法,针对不同的对象,FOB价格也有不一样的算法.对于做外贸生意的朋友,需要了解FOB价格以及各项费用名称,以及如何计算FOB价格. FOB价格是国际FOB价格语常有 ...
- MySQL 中的数据类型介绍
1.MySQL 数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 2.数值类型(12) 2.1. ...
- react native中state和ref的使用
react native中state和ref的使用 因props是只读的,页面中需要交互的情况我们就需要用到state. 一.如何使用state 1:初始化state 第一种方式: construct ...
- Python中用字符串导入module
在Python中,无法通过字符串来导入一个module文件: import "string" # Error x = "string" import x # 不 ...
- CF 1008B Turn the Rectangles(水题+贪心)
There are n rectangles in a row. You can either turn each rectangle by 90 degrees or leave it as it ...
- Java中的静态变量static
package com.wangcf; public class Test { String name="你好"; static String sex="男"; ...
- ZOJ 1842 Prime Distance(素数筛选法2次使用)
Prime Distance Time Limit: 2 Seconds Memory Limit: 65536 KB The branch of mathematics called nu ...
- JAVA之路(一)
距离做下复习JAVA并学好JAVA的决定已经过去一周了,我买了慕课网的JAVA入门视频,在图书馆借了三本关于JAVA的书——两本是JAVA入门经典,一本是JAVA WEB开发宝典.我的计划是短时间内复 ...
- C++ Primer Plus学习:第五章
C++入门第五章:循环和关系表达式 for循环 for循环的组成部分 设置初始值. 执行测试,看循环是否应该继续执行. 执行循环操作. 更新用于测试的值. 以上操作由括号括起,每个部分均是一个表达式, ...