mis系统的编写与设计
来源:互联网 发布:白雪racemenu捏脸数据 编辑:程序博客网 时间:2024/05/16 07:23
mis系统
一、实验目的
●熟悉文件流
●熟练掌握类的封装,继承与多态的运用
二、实验实验环境:
在Code::Blocks编辑器下实现c++编写
三、实验内容
实现一个mis系统
1. 要求至少有两类用户
2. 可以登录后有两类用户
3.利用面向对象技术,充分利用继承和多态及文件流
四、实验前的分析
所谓MIS(管理信息系统--Management InformationSystem)系统,主要指的是进行日常事物操作的系统。这种系统主要用于管理需要的记录,并对记录数据进行相关处理。
过继承机制,可以利用已有的数据类型来定义新的数据类型。所定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员。我们称已存在的用来派生新类的类为基类,又称为父类。由已存在的类派生出的新类称为派生类,又称为子类。
多态指同一个实体同时具有多种形式。它是面向对象程序设计(OOP)的一个重要特征。如果一个语言只支持类而不支持多态,只能说明它是基于对象的,而不是面向对象的。C++中的多态性具体体现在运行和编译两个方面。运行时多态是动态多态,其具体引用的对象在运行时才能确定。编译时多态是静态多态,在编译时就可以确定对象使用的形式。多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。C++中,实现多态有以下方法:虚函数,抽象类,重载,覆盖,模版。
文件流,简单来说就是建立在面向对象基础上的一种抽象的处理数据的工具。在流中,定义了一些处理数据的基本操作,如读取数据,写入数据等,程序员是对流进行所有操作的,而不用关心流的另一头数据的真正流向。流不但可以处理文件,还可以处理动态内存、网络数据等多种数据形式。
五、实验步骤
1.新建一个mis.cpp文件用于实现员工对基本信息的查询,老板对信息的管理,员工只具有看的权限,老板在具有看的权限的同时还具有修改和删除的功能.
2.完善登陆界面,此界面包括用户注册,普通用户登录,管理员登录,以及退出部分
cout<<" 简单信息管理系统 "<<endl;
cout<<" 1. 用户注册 "<<endl;
cout<<" 2. 用户登录 "<<endl;
cout<<" 3. 管理员登录 "<<endl;
cout<<" 4. 退出系统 "<<endl;
cout<<" 其它:终止系统"<<endl;
cout<<"请输入操作项:";
cin>>key;
3.完善注册界面
cout<<"输入姓名:"; cin>>a;
cout<<"输入密码:"; cin>>b;
cout<<"输入性别:"; cin>>c;
cout<<"输入年龄:"; cin>>d;
cout<<"输入职业:"; cin>>f;
b1.Setdata(a,b,c,d,f);
file3.open("message.dat",ios::app|ios_base::app);//增补方式打开文件
file3.write((char*)&b1,sizeof(b1));
file3.close();
4.完善普通用户登录界面
cout<<"输入你的名子:"; cin>>b;
cout<<"输入你的密码:";cin>>c;
file1.open("message.dat",ios::in | ios::in);//按读方式打开文件
if (!file1)
{
cout<<"文件打开失败!"<<endl;
exit(0);
}
while(!file1.eof())
{
int n;
file1.read((char*)&b1,sizeof(Worker));
n=file1.gcount();
if(n==sizeof(Worker))
{
if((strcmp(b1.GetName(),b)==0)&&(strcmp(b1.Getpassword(),c)==0))//名字和密码同时正确才能显示信息
{
k=0;
cout<<"登录成功"<<endl;
while(loop)
{
cout<<" 用户信息管理系统 "<<endl;
cout<<" 1. 特定用户基本信息查询 "<<endl;
cout<<" 2. 返回到主界面 "<<endl;
cout<<" 其它:返回到主界面"<<endl;
cout<<"请输入操作项:";
cin>>key;
}
}
5.完善管理员登录界面
cout<<"请输入管理员用户名:"<<endl;
cin>>adminName;
cout<<"请输入管理员密码:"<<endl;
cin>>adminPassword;
if (strcmp(ADNAME,adminName) == 0) //用户名输入正确
{
if (strcmp(ADPASSWORD,adminPassword) ==0)
{
cout<<"登录成功!3秒后 自动返回管理员操作界面!请稍后......"<<endl;
while(loop)
{
cout<<" 简单信息管理系统 "<<endl;
cout<<" 1. 查看用户信息"<<endl;
cout<<" 2. 修改信息"<<endl;
cout<<" 3. 删除信息"<<endl;
cout<<" 4. 返回到主界面"<<endl;
cout<<" 其它:返回到主界面"<<endl;
cin>>key;
6.保存运行结果
主登录界面
用户注册界面
普通用户登录界面
管理员登录界面
七、实验小结及问题分析
1.此软件通过运用面向对象,通过类实现数据的继承,封装与继承,并用文件流对数据进行储存与提取,从而构建了一个简单的信息管理系统,同时设置不同的登录界面,来限制不同用户的访问权限.
2.在用类的对数据进行封装时,设置私有和公有访问权限,限制私有访问,通过公有继承实现对同一功能的继承使用.
3.通过文件流对数据进行存储和提取时,有不同的读取方式
ofstream outFile(“clients.dat”,ios::out|ios::binary); //打开文件
ofstream 是 fstream中定义的类
outFile 是我们定义的ofstream类的对象
“clients.dat”是将要建立的文件的文件名
ios::out 是打开并建立文件的选项
ios:out 输出到文件, 删除原有内容
ios::app 输出到文件, 保留原有内容,总是在尾部添加
ios::ate 输出到文件, 保留原有内容,可以在文件任意位置添加
ios::binary 以二进制文件格式打开文件
八、详细代码
#include <cstdlib>#include<stdlib.h>#include <iostream>#include<cstring>#include<windows.h>//Sleep函数头文件#include<fstream>//文件流头文件using namespace std;#define ADNAME "chuchu" // 管理员用户名#define ADPASSWORD "123456" //管理员密码class Worker{ private: char Name[20];//用户名 char password[20];//登录密码 char sex[20];//性别 int age;//年龄 char profession[20];//职业 public: char* GetName(){return Name;}//返回名字 char* Getpassword(){return password;}//返回密码值 void Setdata(char *a,char *b,char *c,int d,char *f)//存入数据 { strcpy(Name,a); strcpy(password,b); strcpy(sex,c); age=d; strcpy(profession,f); } void show()//显示数据 { cout<<"Name:"<<Name<<" password:"<<password<<" sex:"<<sex<<" age="<<age<<" profession:"<<profession<<endl; } void changemessage();};Worker mess;//创建Worker的对象class Boss:public Worker{ public: void lookmessage(); void changemessage(); void deletemessage();};void Boss::lookmessage()//查看信息{ Worker b1; int loop=1,key=1; char b[20],c[20]; ifstream file1; cout<<"输入要查找的人名:"; cin>>b; file1.open("message.dat",ios::in | ios::in);//按读方式打开文件 if(!file1) { cout<<"文件打开失败!"<<endl; exit(0); } while(!file1.eof()) { int n; file1.read((char *)&b1,sizeof(Worker)); n=file1.gcount(); if(n==sizeof(Worker)) { key=0; if(strcmp(b1.GetName(),b)==0)//显示书的信息 b1.show(); } } if(key) cout<<"你所查找的信息不存在"<<endl; file1.close();}void Boss::changemessage()//修改信息{ int loop=1,key; char a[20],b[20],c[20],f[20],e[20]; int d; bool flag=false; //ifstream file1; cout<<"输入要查找的人名:"; cin>>e; fstream file1("message.dat",ios::in | ios::out);//创建向文件读取数据的对象 if(!file1) { cout<<"读取文件打开失败!"<<endl; exit(0); } while(file1.read((char*)&mess,sizeof(mess))) //读取文件数据,直到文件读到末尾 { if(strcmp(mess.GetName(),e)==0) { flag = true; mess.show(); cout<<endl; cout<<"请重新输入姓名:"; cin>>a; cout<<"请重新输入密码:"; cin>>b; cout<<"请重新输入性别:"; cin>>c; cout<<"请重新输入年龄:"; cin>>d; cout<<"请重新输入职业:"; cin>>f; //将修改的信息赋值给类相对应的数据 mess.Setdata(a,b,c,d,f); file1.seekp(-1*(off_t)sizeof(mess),ios_base::cur); //将指针从当前位置移一条 file1.write((char*)&mess,sizeof(mess)); //将数据写入文件 cout<<"恭喜您!信息修改成功!2秒后返回操作界面......"<<endl; } } if (flag == false) { cout<<"您查找的信息不存在!"<<endl; } file1.close();//关闭文件}void Boss::deletemessage()//修改信息{ int loop=1,key; char e[20]; bool flag=false; cout<<"输入要查找的人名:"; cin>>e; fstream file1("message.dat",ios::in | ios::out);//创建向文件读取数据的对象 if(!file1) { cout<<"读取文件打开失败!"<<endl; exit(0); } while(file1.read((char*)&mess,sizeof(mess))) //读取文件数据,直到文件读到末尾 { if(strcmp(mess.GetName(),e)==0) { flag = true; char a[20]="",b[20]="",c[20]="",f[20]=""; int d=0; mess.Setdata(a,b,c,d,f); file1.seekp(-1*(off_t)sizeof(mess),ios_base::cur); //将指针从当前位置移一条 file1.write((char*)&mess,sizeof(mess)); //将数据写入文件 cout<<"恭喜您!信息删除成功!2秒后返回操作界面......"<<endl; } } if (flag == false) { cout<<"您查找的信息不存在!"<<endl; } file1.close();//关闭文件}void LoginIterface()//用户注册界面{ cout<<" 用户注册 "<<endl; Worker b1; ofstream file3; char a[20],b[20],c[20],f[20]; int d; cout<<"输入姓名:"; cin>>a; cout<<"输入密码:"; cin>>b; cout<<"输入性别:"; cin>>c; cout<<"输入年龄:"; cin>>d; cout<<"输入职业:"; cin>>f; b1.Setdata(a,b,c,d,f); file3.open("message.dat",ios::app|ios_base::app);//增补方式打开文件 file3.write((char*)&b1,sizeof(b1)); file3.close(); cout<<"注册成功!"<<endl;}void UserInterface()//普通用户登录界面{ Worker b1; int loop=1,key,k=1; char b[20],c[20]; ifstream file1; cout<<"输入你的名子:"; cin>>b; cout<<"输入你的密码:";cin>>c; file1.open("message.dat",ios::in | ios::in);//按读方式打开文件 if (!file1) { cout<<"文件打开失败!"<<endl; exit(0); } while(!file1.eof()) { int n; file1.read((char *)&b1,sizeof(Worker)); n=file1.gcount(); if(n==sizeof(Worker)) { if((strcmp(b1.GetName(),b)==0)&&(strcmp(b1.Getpassword(),c)==0))//名字和密码同时正确才能显示信息 { k=0; cout<<"登录成功"<<endl; while(loop) { cout<<" 用户信息管理系统 "<<endl; cout<<" 1. 特定用户基本信息查询 "<<endl; cout<<" 2. 返回到主界面 "<<endl; cout<<" 其它:返回到主界面"<<endl; cout<<"请输入操作项:"; cin>>key; switch (key) { case 1: system("cls");//清屏 b1.show(); //特定用户基本信息查询 break; case 2: loop=0; break; default: loop=0; break; } } } } } if(k)cout<<"登录错误"<<endl;}void AdminInterface()//管理员登陆界面{ Boss b1; char adminName[20],adminPassword[20]; int i=0,loop=1,key; cout<<"请输入管理员用户名:"<<endl; cin>>adminName; cout<<"请输入管理员密码:"<<endl; cin>>adminPassword; if (strcmp(ADNAME,adminName) == 0) //用户名输入正确 { if (strcmp(ADPASSWORD,adminPassword) == 0) { cout<<"登录成功!3秒后 自动返回管理员操作界面!请稍后......"<<endl; while(loop) { cout<<" 简单信息管理系统 "<<endl; cout<<" 1. 查看用户信息 "<<endl; cout<<" 2. 修改信息 "<<endl; cout<<" 3. 删除信息 "<<endl; cout<<" 4. 返回到主界面 "<<endl; cout<<" 其它:返回到主界面"<<endl; cin>>key; switch (key) { case 1: system("cls");//清屏 b1.lookmessage(); //用户注册 break; case 2: system("cls"); b1.changemessage();//管理员界面 break; case 3: system("cls"); b1.deletemessage();//管理员界面 break; case 4: loop=0; break; default: loop=0; break; } } } else { cout<<"密码输入错误!3秒后 自动返回主界面重新登录......"<<endl; } } else { cout<<"用户名输入错误!3秒后 自动返回主界面重新登录......"<<endl; }}int main(){ system("color 1D"); //颜色的设置 int loop=1,key; while(loop) { cout<<" 简单信息管理系统 "<<endl; cout<<" 1. 用户注册 "<<endl; cout<<" 2. 用户登录 "<<endl; cout<<" 3. 管理员登录 "<<endl; cout<<" 4. 退出系统 "<<endl; cout<<" 其它:终止系统"<<endl; cout<<"请输入操作项:"; cin>>key; switch (key) { case 1: system("cls");//清屏 LoginIterface(); //用户注册 break; case 2: system("cls"); UserInterface();//用户登录界面 break; case 3: system("cls"); AdminInterface();//管理员界面 break; case 4: loop=0; cout<<"byebye"; break; default: loop=0; cout<<"byebye"; break; } } return 0;}
- mis系统的编写与设计
- MIS系统的权限设计
- 使用ExtJs开发MIS系统(1):基于ExtJs的MIS构架设计
- MIS系统中的权限设计
- MIS人机界面的设计原则
- asp.net的MIS系统
- ERP与MIS的概念
- DSS与MIS的关系
- ERP与MIS的概念
- MIS系统
- mis系统
- VB开发MIS系统的若干思考
- 基于INTERNET的企业MIS系统
- 分布MIS系统的安全性考虑
- 基于Case的MIS系统 - 总账模块
- 系统交接的一些经验:(基于MIS业务系统)
- 打通流程管理与MIS数据的管道是运用工作流程工具搭建业务系统的关键
- 基于语义Web技术的MIS与基于XML技术,传统MIS的比较
- 消息字典
- Django1.6 运行manage.py 报错解决办法(ImportError)
- C# 仿造QQ界面,代码在我的资源文件里,可免费下载
- redhat 6.1 上静默安装11g
- C++异常处理
- mis系统的编写与设计
- 如何让ubuntu开机默认进入命令行
- Ubuntu安装无线网卡驱动
- 包含图片的CSS样式外联问题
- 关于INSTALL_FAILED_MISSING_SHARED_LIBRARY错误的解决方法
- 7 个网页视差滚动插件分享
- 给VS2008/VS2010 MFC项目添加启动画面
- 【网站建设】Linux上安装MySQL - 12条命令搞定MySql
- QT210开发板 NFS方式启动的构建过程