求水资源信息管理系统c或者c++代码
发布网友
发布时间:2022-04-22 04:02
我来回答
共2个回答
热心网友
时间:2023-12-23 17:36
应该很容易实现,这是我写的一个简单的银行管理系统,主要实现信息以文件的方式进行储存,你稍微改一下,大体与水资源信息系统功能实现一致,
#include<iostream>
#include<windows.h>
#include<conio.h>
#include<iomanip>
#include<fstream>
#include<string>
#include<ctime>
using namespace std;
//#include"touwenjian.h";
#include"administrator.h";
int main(int args1,char*args2[])
{
string n,s;
int m,m1(0);
ifstream f("C:\\windows\\system32\\系统管理员秘钥.txt");
f>>s;
f.close();
cout<<setfill(' ')<<setw(27)<<' ';
cout<<"欢迎进入银行管理系统"<<endl;
cout<<setfill(' ')<<setw(32)<<'*'<<"1.新用户注册"<<'*'<<endl;
cout<<setfill(' ')<<setw(32)<<'*'<<"2.老用户登陆"<<'*'<<endl;
if(s.empty())
cout<<setfill(' ')<<setw(32)<<'*'<<"3.初始化系统管理秘钥"<<endl;
if(!s.empty())
{
cout<<setfill(' ')<<setw(32)<<'*'<<"3.管理员登陆"<<endl;
m1++;
}
cout<<"*请选择:"<<endl;
cin>>n;
m=correct_check(n);
while(m<0)//容错处理.
{cout<<"输入有误!请重新输入:"<<endl;
cin>>n;
m=correct_check(n);
}
if(m==1)
new_user();//新用户注册
if(m==2)
old_load();//老用户登录
if(m==3&&m1==0)
new_admi();//初始管理信息
if(m==3&&m1==1)
old_admi();//管理员登陆
return 0;
}
/***
用户头文件主要用于新用户注册,
老用户登陆,可以显示余额、存款、
取款、转账、注销、以及对账户信
息以文档的形式进行记录.
***/
SYSTEMTIME _time;
void old_load();
struct person
{
string name;
string number;
string mobile;
string adress;
};
class caozuo//操作类
{
public:
void dir_last(string s);//显示余额
void cun_kuan(string s);//存款
void qu_kuan(string s);//取款
void zhuanzhang(string s);//转账
void del_count(string s);//注销
void tui_chu(); //退出
};
void caozuo::dir_last(string s)
{
string s1,s2[2],s3;
s1="C:\\"+s+"的账户信息.txt";
ifstream f(s1.c_str());
f>>s2[0];
f>>s2[1];
s3=s2[1].substr(15,s2[1].length()-17);
cout<<"您的当前余额为:"<<s3<<endl;
Sleep(2000);
system("cls");
}
void caozuo::cun_kuan(string s)
{
string s1,s2[1000];
int n,m;
int i=0;
char a[20];
char*a1[7]={"天","一","二","三","四","五","六"};
cout<<"请输入要存入的金额:"<<endl;
cin>>n;
GetLocalTime(&_time);//刷新时间.
m=n;
s1="C:\\"+s+"的账户信息.txt";
ifstream f(s1.c_str());
f>>s2[0];
f.close();//此处要先读入一串字符后再将文件关闭.
f.open(s1.c_str());
while(s2[i]!="")
{
i++;
f>>s2[i];
}
n=atoi((s2[2].substr(15,s2[2].length()-17)).c_str())+n;//字符转换为数字后相加
itoa(n,a,10);//数字转换为字符
s2[2].replace(15,s2[2].length()-17,a);
ofstream f1(s1.c_str());
for(int j=1;j<i;j++)
f1<<s2[j]<<endl;
f1<<_time.wYear<<"年"<<_time.wMonth<<"月"<<_time.wDay<<"日"<<"星期"<<a1[_time.wDayOfWeek]\
<<_time.wHour<<"时"<<_time.wMinute<<"分"<<_time.wSecond<<"秒"<<"您的账户存入"<<m<<"元"<<endl;
cout<<m<<"元钱已存入您的账户."<<endl;
f1.close();
Sleep(1000);
system("cls");
}
void caozuo::qu_kuan(string s)
{
int n,m;
int i=0;
char a[20];
char*a1[7]={"天","一","二","三","四","五","六"};
string s1,s2[1000],s3;
s1="C:\\"+s+"的账户信息.txt";
cout<<"请输入您要取的金额:"<<endl;
cin>>n;
m=n;
GetLocalTime(&_time);//刷新时间
ifstream f(s1.c_str());
f>>s2[0];
f.close();
f.open(s1.c_str());
while(s2[i]!="")
{
i++;
f>>s2[i];
}
f.close();
if(n>atoi((s2[2].substr(15,s2[2].length()-17)).c_str()))
cout<<"对不起,您输入的金额大于您银行账户的余额,无法完成该操作!"<<endl;
else
{
n=atoi((s2[2].substr(15,s2[2].length()-17)).c_str())-n;
itoa(n,a,10);
s2[2].replace(15,s2[2].length()-17,a);
ofstream f1(s1.c_str());
for(int j=1;j<i;j++)
f1<<s2[j]<<endl;
f1<<_time.wYear<<"年"<<_time.wMonth<<"月"<<_time.wDay<<"日"<<"星期"<<a1[_time.wDayOfWeek]\
<<_time.wHour<<"时"<<_time.wMinute<<"分"<<_time.wSecond<<"秒"<<"您的账户取出"<<m<<"元"<<endl;
f1.close();
cout<<m<<"元取款成功!"<<endl;
}
Sleep(1000);
system("cls");
}
void caozuo::zhuanzhang(string s)
{
system("cls");
char a[20];
char*a1[7]={"天","一","二","三","四","五","六"};
string s1[1000],s2[200],s3,s4[100],s5;
int n,i=0,i1(0);
s5="C:\\"+s+"的账户信息.txt";
s4[0]="不为空";
ifstream f(s5.c_str());
while(!s4[i1].empty())
{
i1++;
f>>s4[i1];
}
f.close();
s1[0]="不为空";
ifstream f1("C:\\注册者名单.txt");
while(!s1[i].empty())
{
i++;
f1>>s1[i];
}
f1.close();
for(int j=2,int x=0;j<i;j+=4,x++)
s2[x]=s1[j].substr(11,s1[j].length()-11);
cout<<"可转入的账户人名单如下:"<<endl;
for(j=0;j<x;j++)
{
if(j%5==0)
cout<<endl;
cout<<s2[j]<<'\t';
}
cout<<"\n请输入要转入账户人的名字:"<<endl;
cin>>s3;
q:cout<<"请输入要转入的金额:"<<endl;
cin>>n;
if(n>atoi((s4[2].substr(15,s4[2].length()-17)).c_str()))
{
cout<<"对不起,您的余额不足!"<<endl;
goto q;
}
else
{
GetLocalTime(&_time);//刷新时间
itoa(atoi((s4[2].substr(15,s4[2].length()-17)).c_str())-n,a,10);
s4[2].replace(15,s4[2].length()-17,a);
ofstream f2(s5.c_str());
for(int y=1;y<i1;y++)//将转出信息写入转账记录
f2<<s4[y]<<endl;
f2<<_time.wYear<<"年"<<_time.wMonth<<"月"<<_time.wDay<<"日"<<"星期"<<a1[_time.wDayOfWeek]\
<<_time.wHour<<"时"<<_time.wMinute<<"分"<<_time.wSecond<<"秒"<<"您的账户向"<<s3<<"转出"<<n<<"元"<<endl;
f2.close();
s5="C:\\"+s3+"的账户信息.txt";
i=0;
s4[0]="不为空";
ifstream f3(s5.c_str());
while(!s4[i].empty())
{
i++;
f3>>s4[i];
}
f3.close();
itoa(atoi((s4[2].substr(15,s4[2].length()-17)).c_str())+n,a,10);
s4[2].replace(15,s4[2].length()-17,a);
ofstream f4(s5.c_str());
for( y=1;y<i;y++)//将转入信息写入转账记录
f4<<s4[y]<<endl;
f4<<_time.wYear<<"年"<<_time.wMonth<<"月"<<_time.wDay<<"日"<<"星期"<<a1[_time.wDayOfWeek]\
<<_time.wHour<<"时"<<_time.wMinute<<"分"<<_time.wSecond<<"秒"<<s<<"向您的账户转入"<<n<<"元"<<endl;
f4.close();
cout<<"转账成功!"<<endl;
Sleep(1000);
system("cls");
}
}
void caozuo::del_count(string s)
{
string s1,s2[1000];
int i=0;
char c;
s1="del C:\\"+s+"的账户信息.txt";
cout<<"您确定要注销该账户?(y/n)"<<endl;
cin>>c;
if(c=='y')
{
system(s1.c_str());
cout<<"正在注销..."<<endl;
s2[0]="不为空";
ifstream f("C:\\注册者名单.txt");
while(s2[i]!="")
{
i++;
f>>s2[i];
}
f.close();
for(int j=2;j<i;j+=4)
if(s==s2[j].substr(11,s2[j].length()-11))//查找注销者的名字
s2[j+3].replace(5,s2[j+3].length(),"已注销");//更改注销者密码
ofstream f1("C:\\注册者名单.txt");
for(j=1;j<i;j++)
f1<<s2[j]<<endl;
Sleep(1000);
cout<<"注销成功!"<<endl;
}
else
;
}
void caozuo::tui_chu()
{
int n=clock();
cout<<"您本次在线时长"<<n/60000<<"分"<<(n%60000)/1000<<"秒."<<endl;
cout<<"亲,期待您的下次光临!"<<char(94)<<char(95)<<char(94)<<endl;
system("pause");
}
/**
检查用户是否输入数字以外的字符,
***/
int correct_check(string s)//程序的容错处理.
{int m;
for(int i=0;i<s.length();i++)
if(s[i]<'0'||s[i]>'9')
return -1;
m=atoi(&s[0]);
return m;
}
void open_count(string s)//开户口函数
{
string s1="C:\\"+s+"的账户信息.txt";
ofstream f(s1.c_str());
f<<'*'<<s<<"的银行账单:"<<endl;
f<<"您的当前余额为:"<<0<<"元"<<endl;
f<<"您的账户记录:"<<endl;
f.close();
}
/***
新用户注册后通过该函数登陆.
***/
void old_menu(string s)//老用户登陆
{ string n;
int m;
system("cls");
cout<<"*"<<s<<"欢迎您!\n";
string s1=" *******菜单*******\n\
*1.显示账户余额 *\n\
*2.存款 *\n\
*3.取款 *\n\
*4.转账 *\n\
*5.注销 *\n\
*6.退出 *\n";
d:cout<<s1;
cout<<"请选择:"<<endl;
cin>>n;
m=correct_check(n);
while(m<0)
{
cout<<"输入有误!请重新输入:"<<endl;
cin>>n;
m=correct_check(n);
}
caozuo c;
if(m==1)
{
c.dir_last(s);
goto d;
}
if(m==2)
{
c.cun_kuan(s);
goto d;
}
if(m==3)
{
c.qu_kuan(s);
goto d;
}
if(m==4)
{
c.zhuanzhang(s);
goto d;
}
if(m==5)
c.del_count(s);
if(m==6)
c.tui_chu();
}
/***
用户注册,并将信息存档在下次登录时
凭密码登入,程序自动检查密码是否正确.
***/
void new_user()//新用户输入.
{ GetLocalTime(&_time);
ofstream store;
ifstream store1,store2;
string a,a2,a3,b,b1,c[1000],e,s[1000];
char d,d2;
char*d1;
int u=16,y,i(0);
char*f[7]={"天","一","二","三","四","五","六"};
d1=new char[5];
store1.open("C:\\注册者名单.txt");//打开文件输入第一个字符串信息.
store1>>s[i];
store1.close();
/*while(!s[i].empty())
{
i++;
store1>>s[i];
}*/
store1.open("C:\\注册者名单.txt");
for(i=0;s[i].empty()==false;i++,store1>>s[i])
;
store1.close();
q:cout<<"请输入您的名字:"<<endl;
cin>>a;
p:cout<<"请输入初始登录密码:"<<endl;
while((d=getch())!=13)
{
b+=d;
cout<<'*';
}
cout<<"\n请再次输入密码:"<<endl;
while((d2=getch())!=13)
{
b1+=d2;
cout<<'*';
}
if(b!=b1)
{
cout<<"\n两次输入的密码不一样!\a"<<endl;
b1="";//密码不一样就初始化为空串.
b="";
goto p;
}
cout<<"\n正在注册,请稍后..."<<endl;
Sleep(2000);
if(!s[0].empty())
{
for(int i1=2;i1<i-1;i1+=4)
if(a==s[i1].substr(11,s[i].length()-11))
{
cout<<"该用户已存在!请重新输入用户名:\a"<<endl;
goto q;
}
}
open_count(a);//调用开户口函数
store.open("C:\\注册者名单.txt",ios::app);
if(s[0].empty())
store<<"目前注册的用户有"<<1<<"个"<<endl;//统计注册人数.
store<<"注册者名字:"<<a<<endl<<"注册日期:"<<_time.wYear<<"年"<<_time.wMonth<<"月"<<_time.wDay<<"日"<<endl;
store<<"星期"<<f[_time.wDayOfWeek]<<_time.wHour<<"时"<<_time.wMinute<<"分"<<endl;//注意星期天返回的是0!而不是7!
store<<"密码:"<<b<<endl<<endl;
store2.open("C:\\注册者名单.txt");
if(!s[0].empty())
{
for(int i2=0;i2<i+3;i2++)
store2>>c[i2];
while((c[0])[u]>'0'&&(c[0])[u]<'9')
{
u++;}
e=c[0].substr(16,u-16);
y=atoi(&e[0]);
y++;
itoa(y,d1,10);
c[0].replace(16,u-16,d1);
ofstream store2("C:\\注册者名单.txt");//提取数字处理后再次写入文件.
for(int i3=0;i3<i+3;i3++)
store2<<c[i3]<<endl;
store2.close();}
cout<<char(94)<<char(95)<<char(94)<<"注册成功!"<<endl;
Sleep(1000);
system("cls");
old_load();
}
void old_load()//老用户输入.
{ int n=2,m(0);
string s,s1[1000],s2;
char d;
q:cout<<"请输入登录密码:"<<endl;
while((d=getch())!=13)
{
s+=d;
cout<<'*';
}
ifstream store("C:\\注册者名单.txt");
store>>s1[0];
store.close();
store.open("C:\\注册者名单.txt");
for( m=0;s1[m].empty()==false;m++,store>>s1[m])
;
store.close();
for(int i=5;i<=m-1;i+=4)//循环查找密码判断是否相等
if(s==s1[i].substr(5,s1[i].length()-5))
{
s2=s1[i-3].substr(11,s1[i-3].length()-11);//查找密码拥有者的名字
n++;
break;
}
if(n==2)
{
cout<<"\n密码错误,您还有1次输入机会!"<<endl;
s="";//此处一定要初始化s;
n-=2;
goto q;
}
if(n==0)
{
cout<<"\n您不是老用户,请先进行注册!"<<endl;
new_user();
}
else
old_menu(s2);
}
/***
管理员头文件主要用于银行系统管理者
对用户信息查看、对账户冻结、解冻,
对文档资料进行删除.
***/
#include"user.h";
class admi//管理员类
{
public:
void look_out();
void blocked_account();
void thraw_account();
void del_inf();
void tuichu(){exit(1);}
};
void admi::look_out()
{
string s[1000],s1[200],s2[200],s3;
int i=0;
s[0]="不为空";
ifstream f("C:\\注册者名单.txt");
while(!s[i].empty())
{ i++;
f>>s[i];
}
f.close();
cout<<"*注册者名单如下:"<<endl;
for(int j=2,int x=0;j<i;j+=4,x++)
s1[x]=s[j].substr(11,s[j].length()-11);
for(int t=0;t<x;t++)
{
s3="C:\\"+s1[t]+"的账户信息.txt";
ifstream f1(s3.c_str());
f1>>s[0];
f1>>s[1];
f1.close();
s2[t]=s[1].substr(15,s[1].length()-17);
}
for(int y=0;y<x;y++)
{
if(y%5==0)
cout<<endl;
cout<<s1[y]<<":"<<"余额:"<<s2[y]<<'\t';
}
cout<<endl;
}
void admi::blocked_account()
{
string s,s1[1000];
char*a1[7]={"天","一","二","三","四","五","六"};
int i=0;
int n(0);
cout<<"请输入您要冻结的账户人名字:"<<endl;
cin>>s;
s1[0]="不为空";
ifstream f("C:\\注册者名单.txt");
while(!s1[i].empty())
{
i++;
f>>s1[i];
}
for(int j=2;j<i;j+=4)
if(s==s1[j].substr(11,s1[j].length()-11))
{
s1[j+3].insert(5,"冻结");
ofstream f1("c:\\注册者名单.txt");
for(int y=1;y<i;y++)
f1<<s1[y]<<endl;
f1.close();
cout<<"冻结成功!"<<endl;
n++;
GetLocalTime(&_time);//刷新时间
ofstream f("C:\\windows\\system32\\系统管理员秘钥.txt",ios::app);
f<<_time.wYear<<"年"<<_time.wMonth<<"月"<<_time.wDay<<"日"<<"星期"<<a1[_time.wDayOfWeek]\
<<_time.wHour<<"时"<<_time.wMinute<<"分"<<_time.wSecond<<"秒"<<"您冻结了"<<s<<"的账户"<<endl;
}
f.close();
if(n==0)
cout<<"未找到该该用户!请确认是否输入正确."<<endl;
}
void admi::thraw_account()
{
string s,s1[1000];
char*a1[7]={"天","一","二","三","四","五","六"};
int n(0),i(0);
cout<<"请输入要解冻的账户人的名字:"<<endl;
cin>>s;
s1[0]="不为空";
ifstream f("c:\\注册者名单.txt");
while(!s1[i].empty())
{
i++;
f>>s1[i];
}
f.close();
for(int j=2;j<i;j+=4)
if(s==s1[j].substr(11,s1[j].length()-11))
{
s1[j+3].erase(5,4);
ofstream f1("c:\\注册者名单.txt");
for(j=1;j<i;j++)
f1<<s1[j]<<endl;
f1.close();
cout<<"解冻成功!"<<endl;
n++;
GetLocalTime(&_time);//刷新时间
ofstream f("C:\\windows\\system32\\系统管理员秘钥.txt",ios::app);
f<<_time.wYear<<"年"<<_time.wMonth<<"月"<<_time.wDay<<"日"<<"星期"<<a1[_time.wDayOfWeek]\
<<_time.wHour<<"时"<<_time.wMinute<<"分"<<_time.wSecond<<"秒"<<"您解冻了"<<s<<"的账户"<<endl;
f.close();
}
if(n==0)
cout<<"未找到该该用户!请确认是否输入正确."<<endl;
}
void admi::del_inf()
{char c;
string s[1000],s1[200],s3;
cout<<"您确定要删除所有已保存的数据吗?(y/n)"<<endl;
cin>>c;
if(c=='y')
{
int i=0;
ifstream f("C:\\注册者名单.txt");
s[0]="不为空";
while(!s[i].empty())//从名单输入数据
{
i++;
f>>s[i];
}
f.close();
for(int j=2,int x=0;j<i;j+=4,x++)//提取名字
s1[x]=s[j].substr(11,s[j].length()-11);
for(j=0;j<x;j++)
{
s3="del C:\\"+s1[j]+"的账户信息.txt";
system(s3.c_str());
}
system("del C:\\windows\\system32\\系统管理员秘钥.txt");
system("del C:\\注册者名单.txt");
cout<<"删除成功!"<<endl;
}
else
;
}
void old_admi_menu(string s)//系统菜单
{
admi a;
string n;
int m;
system("cls");
q:cout<<s<<"行长"<<"欢迎您!"<<endl;
string s1=" * 系统菜单 *\n\
*1.查看注册会员*\n\
*2.冻结会员账户*\n\
*3.解冻会员账户*\n\
*4.删除全部信息*\n\
*5.退出 *\n";
cout<<s1;
cout<<"请选择:"<<endl;
cin>>n;
m=correct_check(n);//容错处理
while(m<0)
{
cout<<"输入有误!请重新输入:"<<endl;
cin>>n;
m=correct_check(n);
}
if(m==1)
{
a.look_out();
Sleep(1000);
system("cls");
goto q;
}
if(m==2)
{
a.blocked_account();
Sleep(1000);
system("cls");
goto q;
}
if(m==3)
{
a.thraw_account();
Sleep(1000);
system("cls");
goto q;
}
if(m==4)
{
a.del_inf();
}
if(m==5)
a.tuichu();
}
void new_admi()//初始化管理者信息只调用一次
{
string s,s1,s2,b,b1;
char d,d1;
cout<<"请输入您的名字:"<<endl;
cin>>s;
p:cout<<"请输入密码:"<<endl;
while((d=getch())!=13)
{
b+=d;
cout<<'*';
}
cout<<"\n请再次输入密码:"<<endl;
while((d1=getch())!=13)
{
b1+=d1;
cout<<'*';
}
if(b!=b1)
{
cout<<"\n两次输入的密码不一样!\a"<<endl;
b1="";//密码不一样就初始化为空串.
b="";
goto p;
}
cout<<"\n请设置密保问题,方便忘记密码后找回秘钥:"<<endl;
cin>>s1;
cout<<"请输入密保问题的答案:"<<endl;
cin>>s2;
ofstream f("c:\\windows\\system32\\系统管理员秘钥.txt");
f<<"管理员姓名:"<<s<<endl;
f<<"管理秘钥:"<<b<<endl;
f<<"密保问题:"<<s1<<endl;
f<<"密保答案:"<<s2<<endl;
f.close();
cout<<"保存成功!"<<endl;
}
void old_admi()
{
string s,s1[1000],s2;
int i=0;
cout<<"请输入系统秘钥:"<<endl;
cin>>s;
s1[0]="不为空";
ifstream f("c:\\windows\\system32\\系统管理员秘钥.txt");
while(!s1[i].empty())
{
i++;
f>>s1[i];
}
f.close();
s2=s1[1].substr(11,s1[1].length()-11);
if(s==s1[2].substr(9,s1[2].length()-9))
old_admi_menu(s2);
else
{
cout<<"密码输入错误,你忘记密码了吗?\n"<<endl;
cout<<"密保问题如下:"<<s1[3].substr(9,s1[3].length()-9)<<endl;
cout<<"请给出你的答案:"<<endl;
cin>>s2;
if(s2==s1[4].substr(9,s1[4].length()-9))
cout<<"你设置的管理密码是:"<<s1[2].substr(9,s1[2].length()-9)\
<<"亲,下次不要忘记了哦!"<<char(94)<<char(95)<<char(94)<<endl;
else
cout<<"密保问题回答错误,你无权对系统进行操作!"<<endl;
}
}
热心网友
时间:2023-12-23 17:36
应该不是很复杂吧,简单的话帮你写,疼训9814-55795追问刚给你发了邮件,麻烦了,请尽快