前言:大一C++课设
一、问题描述:
该新闻中心应该能够及时提供最新的资讯,并且应该在显示某条新闻的同时,列出所有的相关新闻,以便于客户在最短的时间内获得最新最全的信息。考虑到新闻的时效性,新闻中心管理系统中一般都需要提供良好的维护页面,即中心管理人员可以借助后台维护管理的页面实现对新闻内容实时的更新维护。
二、功能设计:
(1)新闻标题信息分类浏览
(2)新闻详细内容及相关新闻浏览
(3)新闻管理,包括新闻的增、删、改、查
(4)新闻的按条件搜索
三、系统设计:
该系统未存入数据内容,需要选择录入信息后才可操作。该系统未使用链表和数据库存储数据,可直接复制源代码运行
代码展示:
#include<iostream>
#include"string"
#include<fstream>
#include <stdlib.h>
#include <stdio.h>
#include "user.h"//用户
#define N 100 //N作为最大新闻总数
int f=0; //f作为开关
using namespace std;
string p; //p作为接收菜单选项的字符串
void menu(); //显示菜单
class news
{
public:
news(){}
void show(); //新闻信息显示
~news(){}
friend class NewsList;
private:
string num,title,writer,time,content;
};
class NewsList
{
private:
news w[N];
int NUM; //用来计算新闻数目,连接数据库后内的文件后计算NUM数量,现定义为0.
int count; //用来暂时记录当前操作第几个新闻
public:
void add(); //发布新闻信息
void search(); //新闻信息查找
void dele(); //新闻信息删除
void modify(); //新闻信息修改
void save(); //新闻信息以文件形式保存
void show();//显示新闻信息在屏幕上
NewsList(){
NUM=0;
count=0;
}
};
void menu() //显示菜单
{
cout<<endl;
cout<<"***********************************************"<<endl;
cout<<"** 新闻信息管理系统主菜单 **"<<endl;
cout<<" "<<endl;
cout<<"** 1.发布新闻信息 **"<<endl;
cout<<"** 2.新闻信息修改 **"<<endl;
cout<<"** 3.新闻信息删除 **"<<endl;
cout<<"** 4.搜索新闻信息 **"<<endl;
cout<<"** 5.浏览新闻信息 **"<<endl;
cout<<"** 6.新闻信息保存 **"<<endl;
cout<<"** 0.退出 **"<<endl;
cout<<" "<<endl;
cout<<"***********************************************"<<endl;
cout<<endl;
}
void domain() //主菜单函数实现
{
NewsList wl;
while(1)
{
menu();
cout<<"请选择数字编号0~6"<<endl;
int i1;
cin>>i1;
while(!(i1>=0&&i1<=7))
{
cout<<"输入有误,请重新输入:"<<endl;
cin>>i1;
}
switch(i1)
{
case 1:wl.add();break;
case 2:wl.modify();break;
case 3:wl.dele();break;
case 4:wl.search();break;
case 5:wl.show();break;
case 6:wl.save();break;
case 0:cout<<"系统退出!!"<<endl;
exit(0);
default:
break;
}
cout<<"是否返回主菜单? Y/N"<<endl;
cin>>p;
if(p=="n"||p=="N")
{
cout<<"系统退出!!"<<endl;
exit(0);
}
}
}
void NewsList::add() //发布新闻信息添加函数实现
{
cout<<"请输入新闻信息:"<<endl;
cout<<"编号:";
string num;
cin>>num;
for(int i=0;i<NUM;i++)
while(num==w[i].num)
{
cout<<"此编号已存在,请重新输入:"<<endl;
cout<<"编号:";
cin>>num;
}
w[NUM].num=num;
cout<<"标题:";cin>>w[NUM].title;
cout<<"作者:";cin>>w[NUM].writer;
cout<<"发布日期";cin>>w[NUM].time;
cout<<"内容:";cin>>w[NUM].content;
++NUM;
count=NUM;
}
void news::show() //新闻信息浏览显示函数实现
{
cout<<"编号:"<<num<<endl;
cout<<"标题:"<<title<<endl;
cout<<"作者:"<<writer<<endl;
cout<<"时间:"<<time<<endl;
cout<<"内容:"<<content<<endl;
cout<<endl;
}
void NewsList::modify() //新闻信息修改函数实现
{
if(NUM<=0)
{
cout<<"没有新闻信息存入,系统将返回主菜单"<<endl;
menu();
}
cout<<"请输入需要修改新闻的编号:"<<endl;
string num1;
cin>>num1;
int j=0,k;
int flag=1;
while(flag)
{
for(;j<count;j++)
{
if(num1==w[j].num)
{
flag=0;
k=j;
break;
}
}
if(flag)
{
cout<<"不存在此新闻,请重新输入:"<<endl;
j=0;
cin>>num1;
}
}
cout<<"你选择的新闻信息为:"<<endl;
cout<<" 编号:"<<w[k].num<<endl;
cout<<" 标题:"<<w[k].title<<endl;
cout<<" 作者:"<<w[k].writer<<endl;
cout<<" 时间:"<<w[k].time<<endl;
cout<<" 内容:"<<w[k].content<<endl;
cout<<endl;
cout<<"***********************************************"<<endl;
cout<<"** 1.修改编号 **"<<endl;
cout<<"** 2.修改标题 **"<<endl;
cout<<"** 3.修改作者 **"<<endl;
cout<<"** 4.修改时间 **"<<endl;
cout<<"** 5.修改内容 **"<<endl;
cout<<"** 0.返回主菜单 **"<<endl;
cout<<"***********************************************"<<endl;
cout<<endl;
cout<<"请选择数字编号0~5"<<endl;
int i3;
cin>>i3;
while(i3<0||i3>5)
{
cout<<"输入有误,请重新输入:"<<endl;
cin>>i3;
}
switch(i3)
{
case 1:
cout<<"请输入新的新闻编号:";
cin>>w[k].num;
cout<<"修改信息已保存,现返回主菜单:"<<endl;
menu();
break;
case 2:
cout<<"请输入新的标题:";
cin>>w[k].title;
cout<<"修改信息已保存,现返回主菜单:"<<endl;
menu();
break;
case 3:
cout<<"请输入新的作者:";
cin>>w[k].writer;
cout<<"修改信息已保存,现返回主菜单:"<<endl;
menu();
break;
case 4:
cout<<"请输入新的时间:";
cin>>w[k].time;
cout<<"修改信息已保存,现返回主菜单:"<<endl;
menu();
break;
case 5:
cout<<"请输入新的内容:";
cin>>w[k].content;
cout<<"修改信息已保存,现返回主菜单:"<<endl;
menu();
break;
case 0:
menu();
default:
break;
}
}
void NewsList::show() //新闻信息显示函数实现
{
if(NUM<=0)
{
cout<<"没有此新闻信息存入,系统将返回主菜单"<<endl;
menu();
}
else
cout<<"已保存的新闻信息如下:"<<endl;
for(int i=0;i<count;i++)
{
cout<<"***********************************************"<<endl;
cout<<" 编号:"<<w[i].num<<endl;
cout<<" 标题:"<<w[i].title<<endl;
cout<<" 作者:"<<w[i].writer<<endl;
cout<<" 时间:"<<w[i].time<<endl;
cout<<" 内容:"<<w[i].content<<endl;
cout<<"***********************************************"<<endl;
}
}
void NewsList::search() //新闻信息查询函数实现
{
if(NUM<=0)
{
cout<<"没有此新闻信息存入,系统将返回主菜单"<<endl;
menu();
}
else
cout<<"***********************************************"<<endl;
cout<<"** 请选择查找方式: **"<<endl;
cout<<"** 1.按编号查找 **"<<endl;
cout<<"** 2.按标题查找 **"<<endl;
cout<<"** 3.按时间查找 **"<<endl;
cout<<"** 0.返回主菜单 **"<<endl;
cout<<"***********************************************"<<endl;
cout<<endl;
cout<<"请选择数字编号0~3"<<endl;
int i4;
cin>>i4;
while(i4<0||i4>3)
{
cout<<"输入有误,请重新输入:"<<endl;
cin>>i4;
}
if(i4==1)
{
string num2;
cout<<"请输入要查询的新闻编号:"<<endl;
cin>>num2;
int j=0,k;
int flag=1;
while(flag)
{
for(;j<count;j++)
{
if(num2==w[j].num)
{
flag=0;
k=j;
cout<<"查询的新闻信息如下:"<<endl;
cout<<" 编号:"<<w[k].num<<endl;
cout<<" 标题:"<<w[k].title<<endl;
cout<<" 作者:"<<w[k].writer<<endl;
cout<<" 时间:"<<w[k].time<<endl;
cout<<" 内容:"<<w[k].content<<endl;
break;
}
}
if(flag)
{
flag=0;
cout<<"不存在此新闻!!\n返回主菜单"<<endl;
break;
}
}
}
else if(i4==2)
{
string title2;
cout<<"请输入要查询的新闻的标题:"<<endl;
cin>>title2;
int j2=0,k2;
int flag2=1;
while(flag2)
{
for(;j2<count;j2++)
{
if(title2==w[j2].title)
{
flag2=0;
k2=j2;
cout<<"查询的新闻信息如下:"<<endl;
cout<<" 编号:"<<w[k2].num<<endl;
cout<<" 标题:"<<w[k2].title<<endl;
cout<<" 作者:"<<w[k2].writer<<endl;
cout<<" 时间:"<<w[k2].time<<endl;
cout<<" 内容:"<<w[k2].content<<endl;
break;
}
}
if(flag2)
{
flag2=0;
cout<<"不存在此新闻!!\n返回主菜单"<<endl;
break;
}
}
}
else if(i4==3)
{
string time2;
cout<<"请输入要查询的新闻时间:"<<endl;
cin>>time2;
int j4=0,k4;
int flag4=1;
while(flag4)
{
for(;j4<count;j4++)
{
if(time2==w[j4].time)
{
flag4=0;
k4=j4;
cout<<"查询的新闻信息如下:"<<endl;
cout<<" 编号:"<<w[k4].num<<endl;
cout<<" 标题:"<<w[k4].title<<endl;
cout<<" 作者:"<<w[k4].writer<<endl;
cout<<" 时间:"<<w[k4].time<<endl;
cout<<" 内容:"<<w[k4].content<<endl;
break;
}
}
if(flag4)
{
flag4=0;
cout<<"不存在此新闻!!\n返回主菜单"<<endl;
break;
}
}
}
else if(i4==0)
menu();
}
void NewsList::dele() //新闻信息删除函数实现
{
if(NUM<=0)
{
cout<<"没有新闻信息存入,系统将返回主菜单"<<endl;
menu();
}
cout<<"请输入需要删除信息新闻的编号:"<<endl;
string num3;
cin>>num3;
int j=0,k;
int flag=1;
while(flag)
{
for(;j<count;j++)
{
if(num3==w[j].num)
{
flag=0;
k=j;
break;
}
}
if(flag)
{
cout<<"不存在此新闻,请重新输入:"<<endl;
j=0;
cin>>num3;
}
}
cout<<"你选择的新闻的信息为:"<<endl;
cout<<" 编号:"<<w[k].num<<endl;
cout<<" 标题:"<<w[k].title<<endl;
cout<<" 作者:"<<w[k].writer<<endl;
cout<<" 时间:"<<w[k].time<<endl;
cout<<" 内容:"<<w[k].content<<endl;
cout<<endl;
cout<<"确认删除请输入Y,返回主菜单请输入N "<<endl;
string p;
cin>>p;
while(1)
{
if(p=="y"||p=="Y")
{
cout<<"新闻信息已删除!"<<endl;
for(int i=0;i<count;i++)
if(w[i].num==num3)
int j=i;
for(;j<=count-1;j++)
w[j]=w[j+1];
count--;
break;
}
else if(p=="n"||p=="N")
{
menu();
}
else
{
cout<<"输入有误,请重新输入:";
cin>>p;
}
}
}
void NewsList::save() //新闻信息保存函数实现
{
if(NUM<=0)
{
cout<<"没有新闻信息存入,系统将返回主菜单"<<endl;
menu();
}
else
{
cout<<"文件正在保存......请稍候!!"<<endl;
cout<<"数据保存成功!!!"<<endl;
cout<<"已保存新闻信息如下:"<<endl;
for(int i=0;i<count;i++)
{
cout<<"***********************************************"<<endl;
cout<<" 编号:"<<w[i].num<<endl;
cout<<" 标题:"<<w[i].title<<endl;
cout<<" 作者:"<<w[i].writer<<endl;
cout<<" 时间:"<<w[i].time<<endl;
cout<<" 内容:"<<w[i].content<<endl;
cout<<"***********************************************"<<endl;
}
cout<<"系统返回主菜单:"<<endl;
menu();
}
}
int main()
{
domain();
return 0;
}