基于codeblocks,文件存储的观影网站影评信息管理程序
- 题目描述
设计三个类:用户类、影片类、影评信息类。用户类用来存储在该网站注册用户的信息,影片类用来存储该网站提供观看的影片信息,影评信息类用来存储用户对影片进行评论和打分的信息。用户类可以包括以下数据成员:用户名、用户等级、年龄组、职业组、兴趣分类、电子邮箱等。影片类可以包括以下数据成员:影片名称、上映年份、导演、主演、出品公司、分级等。影评信息类可以包括以下数据成员:用户名、影片名称、打分、影评链接、评价次数等。(注意:影评信息类的用户名成员可关联到具体的某个用户、影片名称成员可关联到具体的某个影片)
在程序中需要实现用户信息的添加和查询、影片信息的添加和查询、影评信息的添加和查询。
注意:各种信息添加后要求存储在文件中,并根据文件中存储的信息进行查询。三种不同的信息可以存储在三个不同的文件中。
此外,需要为该程序设计简单的菜单系统,根据用户的选择进行不同的操作。
- 开发环境
启动界面
功能界面
SDE:
codeblocks-17.12mingw-setup
Codeblocks属于C/C++开发程序软件。程序是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。为进行活动或过程所规定的途径。程序是由序列组成的,告诉计算机如何完成一个具体的任务。由于现在的计算机还不能理解人类的自然语言,所以还不能用自然语言编写计算机程序。为实现预期目的而进行操作的一系列语句和指令。一般分为系统程序和应用程序两大类。 计算机中的程序在港澳台地区称为程式。程序就是为使电子计算机执行一个或多个操作,或执行某一任务,按序设计的计算机指令的集合。由程序计数器控制。程序是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。是用汇编语言、高级语言等开发编制出来的可以运行的文件,在计算机中称可执行文件(后缀名一般为.exe)
三、需求分析
1.面向用户类型分析
本产品的使用对象是电影评论的管理人员。
2.功能需求
a.主要功能
b.一些其他的辅助功能
清屏功能,改变用户界面颜色。
3.可行性分析
各种信息添加后要求存储在文件中,并根据文件中存储的信息进行查询。三种不同的信息可以存储在三个不同的文件中。包含在#include <iostream> ;#include <fstream>;#include <sstream>;中的流类可以实现对信息的文本文件的存储和读取。
包含在#include <cstdlib>的system("cls");可以实现清屏功能,system("color 1B");可以实现改变用户界面颜色。
四、系统设计及算法描述
- 系统功能结构设计
*可以关联到是否存在用户信息和电影信息*
- 类的设计
- 关键算法实现步骤
*添加信息(以添加用户信息为例)*
void myWriteuse(const char* filename,const User& swrite)
{
ofstream os(filename,ios_base::out|ios_base::app);
os.write(swrite.name.c_str(),swrite.name.length());
os<<" ";
os.write(toString(swrite.denji).c_str(),toString(swrite.denji).length());
os<<" ";
os.write(toString(swrite.age).c_str(),toString(swrite.age).length());
os<<" ";
os.write(swrite.major.c_str(),swrite.major.length());
os<<" ";
os.write(swrite.interest.c_str(),swrite.interest.length());
os<<" ";
os.write(swrite.emeal.c_str(),swrite.emeal.length());
os<<" ";
os.write(swrite.number.c_str(),swrite.number.length());
os<<endl;
os.close();
}
*浏览信息(以浏览用户信息为例)*
void myReaduse(const char* filename)
{
ifstream is(filename,ios_base::in);
string info;
User sread;
while(!is.eof())
{
getline(is,info);
if(info!="")
{
string age;
string denji;
istringstream istr(info);
istr>>sread.name;
istr>>denji;
sread.denji=fromString<int>(denji);
istr>>age;
sread.age=fromString<int>(age);
istr>>sread.major;
istr>>sread.interest;
istr>>sread.emeal;
istr>>sread.number;
sread.printInfo();
}
}
is.close();
}
*查找信息(以查找用户信息为例)*
int myReaduse0(const char* filename,string name)
{
ifstream is(filename,ios_base::in);
string info;
User sread;
bool flag=0;
while(!is.eof())
{
getline(is,info);
if(info!="")
{
string age;
string denji;
istringstream istr(info);
istr>>sread.name;
istr>>denji;
sread.denji=fromString<int>(denji);
istr>>age;
sread.age=fromString<int>(age);
istr>>sread.major;
istr>>sread.interest;
istr>>sread.emeal;
istr>>sread.number;
if(sread.name==name)
{
flag=1;
break;
}
}
}
is.close();
if(flag)
{
sread.printInfo();
return flag;
}
else
return flag;
}
*删除指定类容(以删除用户信息为例)*
int myDeletuse(const char* filename,string number)
{
ifstream is(filename,ios_base::in);
string info;
User sread;
bool flag=0;
while(!is.eof())
{
getline(is,info);
if(info!="")
{
string age;
string denji;
istringstream istr(info);
istr>>sread.name;
istr>>denji;
sread.denji=fromString<int>(denji);
istr>>age;
sread.age=fromString<int>(age);
istr>>sread.major;
istr>>sread.interest;
istr>>sread.emeal;
istr>>sread.number;
if(sread.number==number)
{
flag=1;
break;
}
}
}
is.close();
if(flag==1)
{
string str, estr;
fstream in("User.txt", ios::in);//原文件
fstream out("temp.txt", ios::out);//中间文件
str = sread.name.append(" ").append(toString(sread.denji)).append(" ").append(toString(sread.age)).append(" ").append(sread.major).
append(" ").append(sread.interest).append(" ").append(sread.emeal).append(" ").append(sread.number);//test.txt中需要删除的某一行内容
while (getline(in, estr))//得到test.txt中一行的内容
{
if (!estr.compare(str))//比较test.txt每一行的内容和要删除的是否一致,一致就跳过
continue;
out << estr << "\n";//不一致的内容写到temp.txt中,注意换行
}
in.close();//关闭流
out.close();
fstream outfile("User.txt", ios::out);
fstream infile("temp.txt", ios::in);
while (getline(infile, estr)) //将temp.txt的内容写到test.txt
{
outfile<< estr << "\n";
}
const char* path = "temp.txt";
remove(path);//删除temp.txt
outfile.close();//关闭流
infile.close();
return flag;
}
else
{
cout<<"!!!!!!!!!要删除的对象不存在!"<<endl;
cout<<endl;
return flag;
}
}
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <cstdlib>
#include <iomanip>
using namespace std;
void mainMenu();
//定义用户类 用户名、用户等级、年龄组、职业组、兴趣分类、电子邮箱
class User
{
string name;
int denji;
int age;
string major;
string interest;
string emeal;
string number;
public:
User(string name="",int denji=0,int age=0,string major="",string interest="",string emeal="",string number=""):name(name),denji(denji),age(age),major(major),interest(interest),emeal(emeal),number(number) {}
void printInfo()
{
cout<<name<<" "<<denji<<" "<<age<<" "<<major<<" "<<interest<<" "<<emeal<<" "<<number<<endl;
}
friend void myWriteuse(const char* filename,const User& swrite);
friend void myReaduse(const char* filename);
friend void myReaduse(const char* filename,string number);
friend int myReaduse0(const char* filename,string name);
friend int myDeletuse(const char* filename,string number);
};
//来自例11-6将其他类T转化为string类
template<class T>
inline string toString(const T &v)
{
ostringstream os;
os<<v;
return os.str();
}
//来自例11-12将steing转化为类T
template<class T>
inline T fromString(const string &str)
{
istringstream is(str);
T v;
is>>v;
return v;
}
//用于向文件中写入一个对象
void myWriteuse(const char* filename,const User& swrite)
{
ofstream os(filename,ios_base::out|ios_base::app);
os.write(swrite.name.c_str(),swrite.name.length());
os<<" ";
os.write(toString(swrite.denji).c_str(),toString(swrite.denji).length());
os<<" ";
os.write(toString(swrite.age).c_str(),toString(swrite.age).length());
os<<" ";
os.write(swrite.major.c_str(),swrite.major.length());
os<<" ";
os.write(swrite.interest.c_str(),swrite.interest.length());
os<<" ";
os.write(swrite.emeal.c_str(),swrite.emeal.length());
os<<" ";
os.write(swrite.number.c_str(),swrite.number.length());
os<<endl;
os.close();
}
//用于从文件数读取所有对象并输出
void myReaduse(const char* filename)
{
ifstream is(filename,ios_base::in);
string info;
User sread;
while(!is.eof())
{
getline(is,info);
if(info!="")
{
string age;
string denji;
istringstream istr(info);
istr>>sread.name;
istr>>denji;
sread.denji=fromString<int>(denji);
istr>>age;
sread.age=fromString<int>(age);
istr>>sread.major;
istr>>sread.interest;
istr>>sread.emeal;
istr>>sread.number;
sread.printInfo();
}
}
is.close();
}
int myReaduse0(const char* filename,string name)
{
ifstream is(filename,ios_base::in);
string info;
User sread;
bool flag=0;
while(!is.eof())
{
getline(is,info);
if(info!="")
{
string age;
string denji;
istringstream istr(info);
istr>>sread.name;
istr>>denji;
sread.denji=fromString<int>(denji);
istr>>age;
sread.age=fromString<int>(age);
istr>>sread.major;
istr>>sread.interest;
istr>>sread.emeal;
istr>>sread.number;
if(sread.name==name)
{
flag=1;
break;
}
}
}
is.close();
if(flag)
{
sread.printInfo();
return flag;
}
else
return flag;
}
//用于根据学号查找到对应的对象并输出
void myReaduse(const char* filename,string number)
{
ifstream is(filename,ios_base::in);
string info;
User sread;
bool flag=0;
while(!is.eof())
{
getline(is,info);
if(info!="")
{
string age;
string denji;
istringstream istr(info);
istr>>sread.name;
istr>>denji;
sread.denji=fromString<int>(denji);
istr>>age;
sread.age=fromString<int>(age);
istr>>sread.major;
istr>>sread.interest;
istr>>sread.emeal;
istr>>sread.number;
if(sread.number==number)
{
flag=1;
break;
}
}
}
is.close();
if(flag)
{
sread.printInfo();
}
else
{
cout<<"!!!!!!!!!!要查找的对象不存在!"<<endl;
cout<<endl;
}
}
//删除指定类容
int myDeletuse(const char* filename,string number)
{
ifstream is(filename,ios_base::in);
string info;
User sread;
bool flag=0;
while(!is.eof())
{
getline(is,info);
if(info!="")
{
string age;
string denji;
istringstream istr(info);
istr>>sread.name;
istr>>denji;
sread.denji=fromString<int>(denji);
istr>>age;
sread.age=fromString<int>(age);
istr>>sread.major;
istr>>sread.interest;
istr>>sread.emeal;
istr>>sread.number;
if(sread.number==number)
{
flag=1;
break;
}
}
}
is.close();
if(flag==1)
{
string str, estr;
fstream in("User.txt", ios::in);//原文件
fstream out("temp.txt", ios::out);//中间文件
str = sread.name.append(" ").append(toString(sread.denji)).append(" ").append(toString(sread.age)).append(" ").append(sread.major).
append(" ").append(sread.interest).append(" ").append(sread.emeal).append(" ").append(sread.number);//test.txt中需要删除的某一行内容
while (getline(in, estr))//得到test.txt中一行的内容
{
if (!estr.compare(str))//比较test.txt每一行的内容和要删除的是否一致,一致就跳过
continue;
out << estr << "\n";//不一致的内容写到temp.txt中,注意换行
}
in.close();//关闭流
out.close();
fstream outfile("User.txt", ios::out);
fstream infile("temp.txt", ios::in);
while (getline(infile, estr)) //将temp.txt的内容写到test.txt
{
outfile<< estr << "\n";
}
const char* path = "temp.txt";
remove(path);//删除temp.txt
outfile.close();//关闭流
infile.close();
return flag;
}
else
{
cout<<"!!!!!!!!!要删除的对象不存在!"<<endl;
cout<<endl;
return flag;
}
}
class Film
{
string name;
int year;
string daoy;
string zuy;
string cpgs;
string denji;
public:
Film(string name="",int year=0,string daoy="",string zuy="",string cpgs="",string denji=""):name(name),year(year),daoy(daoy),zuy(zuy),cpgs(cpgs),denji(denji) {}
void printInfo()
{
cout<<name<<" "<<daoy<<" "<<zuy<<" "<<cpgs<<" "<<denji<<endl;
}
friend void myWritefilm(const char* filename,const Film& swrite);
friend void myReadfilm(const char* filename);
friend int myReadfilm(const char* filename,string name);
friend int myDeletfilm(const char* filename,string name);
};
//用于向文件中写入一个对象
void myWritefilm(const char* filename,const Film& swrite)
{
ofstream os(filename,ios_base::out|ios_base::app);
os.write(swrite.name.c_str(),swrite.name.length());
os<<" ";
os.write(toString(swrite.year).c_str(),toString(swrite.year).length());
os<<" ";
os.write(swrite.daoy.c_str(),swrite.daoy.length());
os<<" ";
os.write(swrite.zuy.c_str(),swrite.zuy.length());
os<<" ";
os.write(swrite.cpgs.c_str(),swrite.cpgs.length());
os<<" ";
os.write(swrite.denji.c_str(),swrite.denji.length());
os<<endl;
os.close();
}
//用于从文件数读取所有对象并输出
void myReadfilm(const char* filename)
{
ifstream is(filename,ios_base::in);
string info;
Film sread;
while(!is.eof())
{
getline(is,info);
if(info!="")
{
string year;
istringstream istr(info);
istr>>sread.name;
istr>>year;
sread.year=fromString<int>(year);
istr>>sread.daoy;
istr>>sread.zuy;
istr>>sread.cpgs;
istr>>sread.denji;
sread.printInfo();
}
}
is.close();
}
//用于根据电影名查找到对应的对象并输出
int myReadfilm(const char* filename,string name)
{
ifstream is(filename,ios_base::in);
string info;
Film sread;
bool flag=0;
while(!is.eof())
{
getline(is,info);
if(info!="")
{
string year;
istringstream istr(info);
istr>>sread.name;
istr>>year;
sread.year=fromString<int>(year);
istr>>sread.daoy;
istr>>sread.zuy;
istr>>sread.cpgs;
istr>>sread.denji;
if(sread.name==name)
{
flag=1;
break;
}
}
}
is.close();
if(flag)
{
sread.printInfo();
return flag;
}
else
return flag;
}
int myDeletfilm(const char* filename,string name)
{
ifstream is(filename,ios_base::in);
string info;
Film sread;
bool flag=0;
while(!is.eof())
{
getline(is,info);
if(info!="")
{
string year;
istringstream istr(info);
istr>>sread.name;
istr>>year;
sread.year=fromString<int>(year);
istr>>sread.daoy;
istr>>sread.zuy;
istr>>sread.cpgs;
istr>>sread.denji;
if(sread.name==name)
{
flag=1;
break;
}
}
}
is.close();
if(flag==1)
{
string str, estr;
fstream in("Film.txt", ios::in);//原文件
fstream out("temp.txt", ios::out);//中间文件
str = sread.name.append(" ").append(toString(sread.year)).append(" ").append(sread.daoy).
append(" ").append(sread.zuy).append(" ").append(sread.cpgs).append(" ").append(sread.denji);//test.txt中需要删除的某一行内容
while (getline(in, estr))//得到test.txt中一行的内容
{
if (!estr.compare(str))//比较test.txt每一行的内容和要删除的是否一致,一致就跳过
continue;
out << estr << "\n";//不一致的内容写到temp.txt中,注意换行
}
in.close();//关闭流
out.close();
fstream outfile("Film.txt", ios::out);
fstream infile("temp.txt", ios::in);
while (getline(infile, estr)) //将temp.txt的内容写到test.txt
{
outfile<< estr << "\n";
}
const char* path = "temp.txt";
remove(path);//删除temp.txt
outfile.close();//关闭流
infile.close();
return flag;
}
else
{
cout<<"!!!!!!!!!要删除的对象不存在!"<<endl;
cout<<endl;
return flag;
}
}
//用户名、影片名称、打分、影评链接、评价次数
class ReviewFilm
{
string uname;
string fname;
double score;
string ip;
int counts;
public:
ReviewFilm(string uname="",string fname="",double score=0,string ip="",int counts=0):uname(uname),fname(fname),score(score),ip(ip),counts(counts) {}
void printInfo()
{
cout<<uname<<" "<<fname<<" "<<score<<" "<<ip<<" "<<counts<<endl;
}
friend void myWritereview(const char* filename,const ReviewFilm& swrite);
friend void myReadreview(const char* filename);
friend void myReadreview(const char* filename,string fname);
friend void myReadreview0(const char* filename,string uname);
friend int myDeletreview(const char* filename,string fname,string uname);
};
//用于向文件中写入一个对象
void myWritereview(const char* filename,const ReviewFilm& swrite)
{
ofstream os(filename,ios_base::out|ios_base::app);
os.write(swrite.uname.c_str(),swrite.uname.length());
os<<" ";
os.write(swrite.fname.c_str(),swrite.fname.length());
os<<" ";
os.write(toString(swrite.score).c_str(),toString(swrite.score).length());
os<<" ";
os.write(swrite.ip.c_str(),swrite.ip.length());
os<<" ";
os.write(toString(swrite.counts).c_str(),toString(swrite.counts).length());
os<<endl;
os.close();
}
//用于从文件数读取所有对象并输出
void myReadreview(const char* filename)
{
ifstream is(filename,ios_base::in);
string info;
ReviewFilm sread;
while(!is.eof())
{
getline(is,info);
if(info!="")
{
string score;
string counts;
istringstream istr(info);
istr>>sread.uname;
istr>>sread.fname;
istr>>score;
sread.score=fromString<double>(score);
istr>>sread.ip;
sread.counts=fromString<int>(counts);
sread.printInfo();
}
}
is.close();
}
//用于根据电影名查找到对应的对象并输出
void myReadreview(const char* filename,string fname)
{
ifstream is(filename,ios_base::in);
string info;
ReviewFilm sread;
bool flag=0;
while(!is.eof())
{
getline(is,info);
if(info!="")
{
string score;
string counts;
istringstream istr(info);
istr>>sread.uname;
istr>>sread.fname;
istr>>score;
sread.score=fromString<double>(score);
istr>>sread.ip;
istr>>counts;
sread.counts=fromString<int>(counts);
if(sread.fname==fname)
{
flag=1;
sread.printInfo();
}
}
}
is.close();
if(flag==0)
{
cout<<"!!!!!!!!要查找的对象不存在!"<<endl;
cout<<endl;
}
}
//用于根据用户名查找到对应的对象并输出
void myReadreview0(const char* filename,string uname)
{
ifstream is(filename,ios_base::in);
string info;
ReviewFilm sread;
bool flag=0;
while(!is.eof())
{
getline(is,info);
if(info!="")
{
string score;
string counts;
istringstream istr(info);
istr>>sread.uname;
istr>>sread.fname;
istr>>score;
sread.score=fromString<double>(score);
istr>>sread.ip;
istr>>counts;
sread.counts=fromString<int>(counts);
if(sread.uname==uname)
{
flag=1;
sread.printInfo();
}
}
}
is.close();
if(flag==0)
{
cout<<"!!!!!!!!要查找的对象不存在!"<<endl;
cout<<endl;
}
}
//根据电影名,评论人名删除影评
int myDeletreview(const char* filename,string fname,string uname)
{
ifstream is(filename,ios_base::in);
string info;
ReviewFilm sread;
bool flag=0;
while(!is.eof())
{
getline(is,info);
if(info!="")
{
string score;
string counts;
istringstream istr(info);
istr>>sread.uname;
istr>>sread.fname;
istr>>score;
sread.score=fromString<double>(score);
istr>>sread.ip;
istr>>counts;
sread.counts=fromString<int>(counts);
if(sread.fname==fname&&sread.uname==uname)
{
flag=1;
break;
}
}
}
is.close();
if(flag==1)
{
string str, estr;
fstream in("ReviewFilm.txt", ios::in);//原文件
fstream out("temp.txt", ios::out);//中间文件
str = sread.uname.append(" ").append(sread.fname).append(" ").append(toString(sread.score)).append(" ").append(sread.ip).append(" ").append(toString(sread.counts));//test.txt中需要删除的某一行内容
while (getline(in, estr))//得到test.txt中一行的内容
{
if (!estr.compare(str))//比较test.txt每一行的内容和要删除的是否一致,一致就跳过
continue;
out << estr << "\n";//不一致的内容写到temp.txt中,注意换行
}
in.close();//关闭流
out.close();
fstream outfile("ReviewFilm.txt", ios::out);
fstream infile("temp.txt", ios::in);
while (getline(infile, estr)) //将temp.txt的内容写到test.txt
{
outfile<< estr << "\n";
}
const char* path = "temp.txt";
remove(path);//删除temp.txt
outfile.close();//关闭流
infile.close();
return flag;
}
else
{
cout<<"!!!!!!!!要删除的对象不存在!"<<endl;
cout<<endl;
return flag;
}
}
class Menu
{
public:
void userMenu();
void filmMenu();
void reviewMenu();
};
void finduser()
{
system("cls");
string number;
Menu u;
//根据用户输入的学号查找对象并输出
cout<<"如果要返回userMenu请输入0:"<<endl;
cout<<"如果要返回mainMenu请输入00:"<<endl;
while(1)
{
cout<<"请输入要查找的用户:"<<endl;
cin>>number;
if(number=="0")
{
u.userMenu();
break;
}
if(number=="00")
{
mainMenu();
break;
}
cout<<"姓名 等级 年龄 职业 兴趣 邮件 序号"<<endl;
myReaduse("User.txt",number);
}
}
void creatuser()
{
system("cls");
Menu u;
string name;
int denji;
int age;
string major;
string interest;
string emeal;
string number;
cout<<"如果要返回userMenu请输入0:"<<endl;
cout<<"如果要返回mainMenu请输入00:"<<endl;
while(1)
{
cout<<"请输入所要添加的用户:"<<endl;
cout<<"序号 姓名 等级 年龄 职业 兴趣 邮件"<<endl;
cin>>number;
if(number=="0")
{
u.userMenu();
break;
}
if(number=="00")
{
mainMenu();
break;
}
cin>>name>>denji>>age>>major>>interest>>emeal;
User s(name,denji,age,major,interest,emeal,number);
myWriteuse("User.txt",s);
}
}
void ulook()
{
system("cls");
string n;
Menu u;
system("cls");
cout<<"姓名 等级 年龄 职业 兴趣 邮件 序号"<<endl;
myReaduse("User.txt");
cout<<"如果要返回userMenu请输入0:"<<endl;
cout<<"如果要返回mainMenu请输入00:"<<endl;
cin>>n;
if(n=="0")
u.userMenu();
if(n=="00")
mainMenu();
}
void deletuser()
{
system("cls");
Menu u;
string n,m;
cout<<"请输入要删除的用户序号:"<<endl;
cout<<"如果要返回userMenu请输入0:"<<endl;
cout<<"如果要返回mainMenu请输入00:"<<endl;
cin>>n;
if(n=="0")
u.userMenu();
if(n=="00")
mainMenu();
if(myDeletuse("User.txt",n)==1)
{
system("cls");
cout<<"*****删除成功!*****"<<endl;;
}
cout<<"如果要继续删除请输入0:"<<endl;
cout<<"返回请输入1"<<endl;
cin>>m;
if(m=="0")
deletuser();
if(m=="1")
u.userMenu();
}
void Menu::userMenu()
{
while(1)
{
system("cls");
cout<<" *********************************"<<endl;
cout<<" ********用户信息操作*************"<<endl;
cout<<" * 1.浏览用户信息 *"<<endl;
cout<<" * 2.查询用户信息 *"<<endl;
cout<<" * 3.添加用户信息 *"<<endl;
cout<<" * 4.删除用户信息 *"<<endl;
cout<<" * 0.返回主菜单 *"<<endl;
cout<<" *********************************"<<endl;
cout<<" 请输入你的选择项[ ]\b\b";
int opt;
cin>>opt;
if(opt==0)
{
mainMenu();
break;
}
switch(opt)
{
case 1:
ulook();
break;
case 2:
finduser();
break;
case 3:
creatuser();
break;
case 4:
deletuser();
break;
}
}
}
void findfilm()
{
system("cls");
Menu u;
string name;
//根据用户输入的电影查找对象并输出
cout<<"如果要返回filmMenu请输入0:"<<endl;
cout<<"如果要返回mainMenu请输入00:"<<endl;
while(1)
{
cout<<"请输入要查找的电影:"<<endl;
cin>>name;
if(name=="0")
{
u.filmMenu();
break;
}
if(name=="00")
{
mainMenu();
break;
}
cout<<"名字 年份 导演 主要演员 出品公司 等级"<<endl;
if(myReadfilm("Film.txt",name)==0)
{
cout<<"!!!!!!!要查找的对象不存在!"<<endl;
cout<<endl;
}
}
}
void creatfilm()
{
system("cls");
Menu u;
string name;
int year;
string daoy;
string zuy;
string cpgs;
string denji;
cout<<"如果要返回filmMenu请输入0:"<<endl;
cout<<"如果要返回mainMenu请输入00:"<<endl;
while(1)
{
cout<<"请输入要添加的电影信息:"<<endl;
cout<<"名字 年份 导演 主要演员 出品公司 等级"<<endl;
cin>>name;
if(name=="0")
{
u.filmMenu();
break;
}
if(name=="00")
{
mainMenu();
break;
}
cin>>year>>daoy>>zuy>>cpgs>>denji;
Film s(name,year,daoy,zuy,cpgs,denji);
myWritefilm("Film.txt",s);
}
}
void flook()
{
system("cls");
Menu u;
string n;
system("cls");
cout<<"名字 年份 导演 主要演员 出品公司 等级"<<endl;
myReadfilm("Film.txt");
cout<<"如果要返回filmMenu请输入0:"<<endl;
cout<<"如果要返回mainMenu请输入00:"<<endl;
cin>>n;
if(n=="0")
u.filmMenu();
if(n=="00")
mainMenu();
}
void deletfilm()
{
system("cls");
Menu u;
string n,m;
cout<<"请输入要删除的电影:"<<endl;
cout<<"如果要返回filmMenu请输入0:"<<endl;
cout<<"如果要返回mainMenu请输入00:"<<endl;
cin>>n;
if(n=="0")
u.filmMenu();
if(n=="00")
mainMenu();
if(myDeletfilm("Film.txt",n)==1)
{
system("cls");
cout<<"*****删除成功!*****"<<endl;;
}
cout<<"如果要继续删除请输入0:"<<endl;
cout<<"返回请输入1"<<endl;
cin>>m;
if(m=="0")
deletfilm();
if(m=="1")
u.filmMenu();
}
void Menu::filmMenu()
{
while(1)
{
system("cls");
cout<<" *********************************"<<endl;
cout<<" ********影片信息操作*************"<<endl;
cout<<" * 1.浏览影片信息 *"<<endl;
cout<<" * 2.查询影片信息 *"<<endl;
cout<<" * 3.添加影片信息 *"<<endl;
cout<<" * 4.删除影片信息 *"<<endl;
cout<<" * 0.返回主菜单 *"<<endl;
cout<<" *********************************"<<endl;
cout<<" 请输入你的选择项[ ]\b\b";
int opt;
cin>>opt;
if(opt==0)
{
mainMenu();
break;
}
switch(opt)
{
case 1:
flook();
break;
case 2:
findfilm();
break;
case 3:
creatfilm();
break;
case 4:
deletfilm();
break;
}
}
}
void findreview()
{
system("cls");
Menu u;
string funame;
string n;
//根据用户输入的学号查找对象并输出
cout<<"如果要返回reviewMenu请输入0:"<<endl;
cout<<"如果要返回mainMenu请输入00:"<<endl;
while(1)
{
cout<<"请输入1按电影名查找:"<<endl;
cout<<"请输入2按评论名查找:"<<endl;
cin>>n;
if(n=="0")
{
u.reviewMenu();
break;
}
if(n=="00")
{
mainMenu();
break;
}
if(n=="1")
{
cout<<"请输入要查找的电影名:"<<endl;
cin>>funame;
cout<<"评论人 电影名 评分 电影链接 评论次数"<<endl;
myReadreview("ReviewFilm.txt",funame);
}
if(n=="2")
{
cout<<"请输入要查找的评论人:"<<endl;
cin>>funame;
cout<<"评论人 电影名 评分 电影链接 评论次数"<<endl;
myReadreview0("ReviewFilm.txt",funame);
}
}
}
void creatreview()
{
//文件中写入三个对象
system("cls");
Menu u;
string uname;
string fname;
double score;
string ip;
int counts;
cout<<"如果要返回reviewMenu请输入0:"<<endl;
cout<<"如果要返回mainMenu请输入00:"<<endl;
while(1)
{
cout<<"请输入要评论的电影:"<<endl;
cin>>fname;
if(fname=="0")
{
u.reviewMenu();
break;
}
if(fname=="00")
{
mainMenu();
break;
}
if(myReadfilm("Film.txt",fname)==0)
{
cout<<"相关电影不存在"<<endl;
cout<<"请输入相关存在电影"<<endl;
}
else
{
cout<<"请输入评论人"<<endl;
cin>>uname;
if(myReaduse0("User.txt",uname)==0)
{
cout<<"相关评论人不存在"<<endl;
cout<<"请输入相关评论人"<<endl;
}
else
{
cout<<"请输入电影评论信息:"<<endl;
cout<<"评分 电影链接 评论次数"<<endl;
cin>>score>>ip>>counts;
ReviewFilm s(uname,fname,score,ip,counts);
myWritereview("ReviewFilm.txt",s);
}
}
}
}
void rlook()
{
system("cls");
Menu u;
string n;
cout<<"如果要返回reviewMenu请输入0:"<<endl;
cout<<"如果要返回mainMenu请输入00:"<<endl;
cout<<"评论人 电影名 评分 电影链接 评论次数"<<endl;
myReadreview("ReviewFilm.txt");
cin>>n;
if(n=="0")
u.reviewMenu();
if(n=="00")
mainMenu();
}
void deletreview()
{
system("cls");
Menu n;
string f,u,m;
cout<<"请输入要删除的电影影评的!电影名!和!评论人名!"<<endl;
cout<<"如果要返回reviewMenu请输入0:"<<endl;
cout<<"如果要返回mainMenu请输入00:"<<endl;
cin>>f;
if(f=="0")
n.reviewMenu();
if(f=="00")
mainMenu();
cin>>u;
if(u=="0")
n.reviewMenu();
if(u=="00")
mainMenu();
if(myDeletreview("ReviewFilm.txt",f,u)==1)
{
system("cls");
cout<<"*****删除成功!*****"<<endl;;
}
cout<<"如果要继续删除请输入0:"<<endl;
cout<<"返回请输入1"<<endl;
cin>>m;
if(m=="0")
deletreview();
if(m=="1")
n.reviewMenu();
}
void Menu::reviewMenu()
{
while(1)
{
system("cls");
cout<<" *************************************"<<endl;
cout<<" ********影评信息管理系统*************"<<endl;
cout<<" * 1.浏览影评信息操作 *"<<endl;
cout<<" * 2.查询影评信息操作 *"<<endl;
cout<<" * 3.进行影评操作 *"<<endl;
cout<<" * 4.删除影评操作 *"<<endl;
cout<<" * 0.返回主菜单 *"<<endl;
cout<<" *************************************"<<endl;
cout<<" 请输入你的选择项[ ]\b\b";
int opt;
cin>>opt;
if(opt==0)
{
mainMenu();
break;
}
switch(opt)
{
case 1:
rlook();
break;
case 2:
findreview();
break;
case 3:
creatreview();
break;
case 4:
deletreview();
break;
}
}
}
void mainMenu()
{
system("cls");
Menu w;
while(1)
{
system("cls");
system("color 1B");
cout<<" *************************************"<<endl;
cout<<" *******观影网站影评信息管理程序******"<<endl;
cout<<" * 1.用户信息 *"<<endl;
cout<<" * 2.影片信息 *"<<endl;
cout<<" * 3.影评信息 *"<<endl;
cout<<" * 0.关闭系统 *"<<endl;
cout<<" *************************************"<<endl;
cout<<" 请输入你的选择项[ ]\b\b";
int opt;
cin>>opt;
if(opt==0)
{
exit(0);
}
switch(opt)
{
case 1:
system("cls");
w.userMenu();
break;
case 2:
system("cls");
w.filmMenu();
break;
case 3:
system("cls");
w.reviewMenu();
break;
}
}
}
int main()
{
mainMenu();
return 0;
}