/************************************************************************/
/* 开发环境:vc6.0
/* 时间:2010.10.31 by zhangdongsheng */
/************************************************************************/
#include <iostream>
#include <string>
#include <time.h>
#include <fstream>
#include <conio.h>
#include <windows.h>
#include <iomanip>
using namespace std;
class borrow
{
public:
string name;
string goods;
string num;
};
const char *str="D:\\data.dat";
void FirstDisplay();//程序主菜单
void Input(); //输入
void Delete(); //删除记录
void Out(); //显示所有
string Int_to_string(int a);//将一个整形转化为string
tm *GetTime(); //获取当前时间
bool FindEqualData(string &today); //检查 str里面是否有字符串string
bool checkChoice(string str);//判断 str 是否为数字
int main() //main函数
{
ifstream fin(str); //如果没有文件则创建
if(fin.fail())
{ ofstream fon(str);
fon.close();
}
fin.close();
FirstDisplay();
system("pause");
return 0;
}
string Int_to_string(int a) //整形转化为string
{
char temp[10];
memset(temp,0,sizeof(temp));
itoa(a,temp,10);
string ResultStr=temp;
return ResultStr;
}
//程序主菜单
void FirstDisplay()
{
ifstream fin;
fin.open(str);
// if(fin.good()) cout<<"打开文件成功"<<endl;
tm *prt=GetTime();
//当前的年月日 转化为一人字符串如"2010.10.31"
string today=Int_to_string(1900+prt->tm_year);
today.append(".");
today.append(Int_to_string(prt->tm_mon+1));
today.append(".");
today.append(Int_to_string(prt->tm_mday));
cout<<"今天是"<<today<<endl;
// 在文本中查找是否出现string"2010.10.31"
string data;
bool check;
char ch;
while(!fin.eof())
{
getline(fin,data);
if(data==today) //如果出现"2010.10.31"
{
check=true;
break;
}
else
check=false;//
}
if(check)
{
while(!fin.eof())
{
ch=fin.get();
cout<<ch;
}
cout<<"\n\n\n"<<endl;
}
else
cout<<endl<<"今天没有记录\n\n"<<endl;
fin.close();
//菜单
int choice;
string TempChoice;
cout<<"***************欢迎使用拿包包记录系统**************\n";
puts("*\t+--------------------------------+ *");
puts("*\t| 1.添加记录 | *");
puts("*\t| 2.查看所有记录 | *");
puts("*\t| 3.删掉所有记录 | *");
puts("*\t| 4.保存退出 | *");
puts("*\t| | *");
puts("*\t| | *");
puts("*\t| c++奋斗乐园 | *");
puts("*\t+--------------------------------+ *");
puts("***************************************************");
cout<<"\t请输入您的选择:";
cin>>TempChoice;
while(!checkChoice(TempChoice))
{
cout<<"输入的不是数字,重新输入"<<endl;
cin>>TempChoice;
}
choice=atoi(TempChoice.c_str());
switch(choice)
{
case 1:
Input();
break;
case 2:
Out();
break;
case 3:
Delete();
break;
case 4:
cout<<"程序即将退出"<<endl;
exit(1);
default:
cout<<"输入有误,请输入1-4的数字"<<endl;
break;
}
}
void Input() //输入
{
ofstream fon;
fon.open(str,ios::app);
tm *prt=GetTime();
string today=Int_to_string(1900+prt->tm_year);
today.append(".");
today.append(Int_to_string(prt->tm_mon+1));
today.append(".");
today.append(Int_to_string(prt->tm_mday));
string finish="1";
borrow one;
while(finish=="1")
{
ifstream fin(str,ios::app);
cout<<"谁拿了"<<endl;
cin>>one.name;
cout<<"拿了什么"<<endl;
cin>>one.goods;
cout<<"几个"<<endl;
cin>>one.num;
if(FindEqualData(today))
{
fin.close();
// fon<<one.name<<"\t"<<one.goods<<"\t\t\t"<<one.num<<"\t\t"<<prt->tm_hour<<":"<<prt->tm_min<<":"<<prt->tm_sec<<endl;
fon<<one.name<<setw(20)<<one.goods<<setw(10)<<one.num<<setw(10)<<prt->tm_hour<<":"<<prt->tm_min<<":"<<prt->tm_sec<<endl;
}
else
{
fon<<today<<endl;
fon<<"------------------------------------------------------------------"<<endl;
fon<<"姓名"<<setw(20)<<"东西"<<setw(10)<<"个数"<<setw(15)<<"日期"<<endl;
// fon<<one.name<<"\t"<<one.goods<<"\t\t\t"<<one.num<<"\t\t"<<prt->tm_hour<<":"<<prt->tm_min<<":"<<prt->tm_sec<<endl;
fon<<one.name<<setw(20)<<one.goods<<setw(10)<<one.num<<setw(10)<<prt->tm_hour<<":"<<prt->tm_min<<":"<<prt->tm_sec<<endl;
fin.close();
}
cout<<"再有没有要输入的,有(1),没有(0)"<<endl;
cin>>finish;
}
if(finish=="0")
cout<<"按任意键返回主菜单"<<endl;
else cout<<"输入有误,按任意键返回主菜单"<<endl;
getch();
system("CLS");
FirstDisplay();
}
void Delete() //删除记录
{
char *password;
char *realpassword="1234";
char *p=NULL;
int count=0;
int length=4;
password = new char[length+1];
cout<<"请输入4位密码"<<endl;
p=password;
while(((*p=getch()))&&(count<length))
{
putch('*');
fflush(stdin);
p++;
count++;
}
password[count]='\0';
if(strcmp(password, realpassword) == 0)
{
ofstream fon(str,ios::trunc);
fon<<""<<endl;
cout<<"成功删除"<<endl;
fon.close();
getch();
system("CLS");
FirstDisplay();
}
else
{
cout<<"密码错误"<<endl;
FirstDisplay();
}
/* int secret;
cout<<"请输入密码"<<endl;
cin>>secret;
if(secret==3342125)
{
ofstream fon(str,ios::trunc);
fon<<""<<endl;
cout<<"成功删除"<<endl;
}
else
cout<<"密码不对"<<endl;*/
}
void Out() //输出
{
ifstream fin(str);
char ch;
while(!fin.eof())
{
ch=fin.get();
cout<<ch;
}
cout<<"\n\n按任意键进入主菜单";
fin.close();
getch();
system("CLS");
FirstDisplay();
}
tm *GetTime()//获取当前时间的一个指针
{
tm *prt;
time_t t;
t=time(NULL);
prt=localtime(&t);
return prt;
}
bool FindEqualData(string &today) //判断文件中是否有 today 字符串
{
ifstream fin(str);
string data;
bool check;
while(!fin.eof())
{
getline(fin,data);
if(data==today) //如果出现"2010.10.31"
{
check=true;
break;
}
else
check=false;//
}
fin.close();
return check;
}
bool checkChoice(string str)
{
for(int i=0;i<str.length();i++)
if(str[i]>'9'||str[i]<'0')
return false;
return true;
}