学校的c++程序课程设计(简单的写法 并无太多c++的特色)
好久没更新博客了,最近一直在忙,花了一天时间做出这个简陋版的课程设计,
为了储存,也为了更新,所以于今天更新我的博客。
我选的课程设计题目如下:
某某公司的设备管理系统
功能及要求描述:
(1)公司主要包括三类设备需要管理:电视机、DVD、带DVD的电视机;
(2)设备主要包含的信息:编号、类别、名称、价格、库存数量;
(3)添加各类设备信息;
(4)删除设备信息;
(5)查找设备信息;
(6)修改设备信息;
(7)输出所有设备信息;
(8)将信息保存到文件。
由于我目前水平有限,并没有使用太多c++的东西,正如老师所说,只是把printf scanf换成了cout
cin之类,但尽管如此,我仍使用了类与对象,继承,文件这几个东西,对于这次,有个bug我没时间
调了,就是每次运行程序的时候,储存的后台信息会自动清除,并没有读取上回留下来的产品信息。
如果读者有兴趣的话,可以帮我debug,也算是留给大家的一个小小的“作业”。哈哈。
话不多说,贴上代码,还有一点,我比较调皮,加了两个图形,故代码部分你们可能不知道是什么,
你们可以运行看看这两个小彩蛋。。。。
# include<iostream>
# include<fstream>
# include<cstring>
# include<cstdlib>//system()
# define maxnum //后台定义最大设备数量为50
using namespace std; //类的声明
class menu;
class Product;
class graphical; class graphical//图形类
{
public:
void in();//进入系统图形
void out();//退出系统图形
};
void graphical::out()
{
int a[][]= {};
int i,j;
a[][]=;
for(j=; j<; j++) a[][j]=;
for(j=; j<; j++) a[][j]=;
for(j=; j<; j++) a[][j]=;
for(j=; j<; j++) a[][j]=;
for(j=; j<; j++) a[][j]=;
for(j=; j<; j++) a[][j]=;
for(j=; j<; j++) a[][j]=;
for(j=; j<; j++) a[][j]=;
for(j=; j<; j++) a[][j]=;
for(j=; j<; j++) a[][j]=;
for(j=; j<; j++) a[][j]=;
for(j=; j<; j++) a[][j]=;
for(j=; j<; j++) a[][j]=;
for(j=; j<; j++) a[][j]=;
for(j=; j<; j++) a[][j]=;
for(j=; j<; j++) a[][j]=;
for(j=; j<; j++) a[][j]=;
for(j=; j<; j++) a[][j]=;
a[][]=,a[][]=;
for(i=; i<; i++)
{
for(j=; j<; j++)
if(a[i][j]==)
cout<<"*";
else
cout<<" ";
cout<<endl;
}
cout<<"拜拜 欢迎下次再来玩"<<endl;
cout<<"系统由台湾高山族第一美男子黄广独立完成"<<endl;
}
void graphical::in()
{
cout<<"----------Dragon be here!----------"<<endl;
cout<<" ┏┓ ┏┓"<<endl;
cout<<"┏┛┻━━━┛┻┓"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┃ ■ ■┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┃ ◎ ┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┗━┓ ┏━┛"<<endl;
cout<<" ┃ ┃神兽保佑"<<endl;
cout<<" ┃ ┃代码无BUG!"<<endl;
cout<<" ┃ ┗━━━┓"<<endl;
cout<<" ┃ ┣┓"<<endl;
cout<<" ┃ ┏┛"<<endl;
cout<<" ┗┓┓┏━┳┓┏┛"<<endl;
cout<<" ┃┫┫ ┃┫┫"<<endl;
cout<<" ┗┻┛ ┗┻┛"<<endl;
cout<<"━━━━━━神兽出没━━━━━━"<<endl;
} class Product //产品类
{
public:
int ID; //编号
int PRICE; //价格
int NUM; //库存数量
string TYPE; //类别 为三种 TV(电视) DVD DT(带DVD的电视)
string NAME; //名称 如 康佳电视机 美的电视机
//五个获取信息的成员函数
void getID(int & id)
{
ID=id;
}
void getPRICE(int & price)
{
PRICE=price;
}
void getNUM(int & num)
{
NUM=num;
}
void getTYPE(string & type)
{
TYPE=type;
}
void getNAME(string & name)
{
NAME=name;
}
void headdisplay();//显示南阳公司信息
void error();//显示错误信息(因为无产品)
};
void Product::headdisplay()
{
cout<<"★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★"<<endl;
cout<<"★★★★★★★★★★★★★★欢迎来到南阳康佳公司★★★★★★★★★★★★★★★★"<<endl;
cout<<"★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★"<<endl;
cout<<"★★★★★★★★★★ 当你看到这个界面 ★★★★★★★★★★★"<<endl;
cout<<"★★★★★★★★★★★★★★ 就代表你 ★★★★★★★★★★★★★★★★"<<endl;
cout<<"★★★★★★★★★★★★★ 已经成为一名 ★★★★★★★★★★★★★★★"<<endl;
cout<<"★★★★★★★★★★★★ 康佳产品搬运工 ★★★★★★★★★★★★★★"<<endl;
cout<<"★★★★★★★★★★★ 恭喜恭喜 ★★★★★★★★★★★★★"<<endl;
}
void Product::error()
{
cout<<"错误!!没有产品信息"<<endl;
cout<<"自动返回主菜单"<<endl<<endl;
} //全局定义产品信息组
int count=;
Product pro[maxnum];
//全局定义图形类对象
graphical b; class menu: public Product//菜单类继承产品类
{
public:
void Display();//显示菜单信息
void use();//操控菜单
void Add();//添加
void Find();//查找
void Delete();//删除
void Modify();//修改
void display();//显示产品信息
void Storage();//自动储存产品信息
void storage();//手动储存产品信息(欺骗用户)因为每一个操作之后都会自动储存 所以无需手动
void Empty();//清空产品日记信息
};
void menu::Display()
{
cout<<"***欢迎使用设备管理系统***"<<endl;
cout<<" ***1.添加设备信息***"<<endl;
cout<<" ***2.查找设备信息***"<<endl;
cout<<" ***3.删除设备信息***"<<endl;
cout<<" ***4.修改设备信息***"<<endl;
cout<<" ***5.输出设备信息***"<<endl;
cout<<" ***6.储存设备信息***"<<endl;
cout<<" ***7.一键清空信息***"<<endl;
cout<<" ***0.退出管理系统***"<<endl;
cout<<"请选择所需要的功能:";
}
void menu::use()
{
int i;
while(cin>>i)
{
switch(i)
{
case :
Add();
system("cls");
Storage();//自动储存
Display();
break;
case :
Find();
Display();
break;
case :
Delete();
Storage();//自动储存
Display();
break;
case :
Modify();
Storage();//自动储存
Display();
break;
case :
display();
Display();
break;
case :
storage();
Display();
break;
case :
Empty();
Display();
break;
case :
Storage();//自动储存
b.out();
exit();
break;
default:
cout<<"选择错误!!请重新选择!!"<<endl;
cout<<"请选择所需要的功能:";
}
}
}
void menu :: Add()
{
system("cls");
int _id,_price,_num=;
string _type,_name;
// 记录类别信息
cout<<"请选择添加的设备类别(1-3):"<<endl;
cout<<"1.电视机(TV) 2.DVD(DVD) 3.带DVD的电视机(DT)"<<endl;
int i;
while(cin>>i)
{
switch(i)
{
case :
_type="TV";
pro[count].getTYPE(_type);
break;
case :
_type="DVD";
pro[count].getTYPE(_type);
break;
case :
_type="DT";
pro[count].getTYPE(_type);
break;
default:
cout<<"输入有误!!请重新选择!!"<<endl;
}
if(i==||i==||i==)//防止用户非法输入
break;
}
// 记录名称信息
cout<<"请输入设备名称:"<<endl;
cin>>_name;
pro[count].getNAME(_name);
// 记录编号信息
cout<<"请输入设备编号(四位数,以“1”开头,如“1000”)"<<endl;
cin>>_id;
pro[count].getID(_id);
//记录价格信息
cout<<"请输入价格(1-9999):"<<endl;
cin>>_price;
pro[count].getPRICE(_price);
//记录库存信息
pro[count].getNUM(_num);
count++;
}
void menu::Delete()
{
system("cls");
if(count==)
{
error();//输出无产品信息
return ;//如果没有产品则终止删除函数
}
cout<<"欢迎使用删除功能,产品信息如下:"<<endl;
display();//显示产品信息
cout<<"请输入想删除的产品的编号:";
int bian,d,i;
while(cin>>bian)
{
for(i=; i<count; i++)
{
if(pro[i].ID==bian)//如果编号存在
{
cout<<"请问您是否确认删除编号为"<<pro[i].ID<<"的产品?"<<endl;
cout<<"1.是 2.否"<<endl;
cin>>d;
if(d==)//确认删除
{
if(i==count-)//如果是最后一个 无需前移
count--;
else//如果不是最后一个 则后续产品前移
{
while()
{
pro[i].ID=pro[i+].ID;
pro[i].TYPE=pro[i+].TYPE;
pro[i].NAME=pro[i+].NAME;
pro[i].PRICE=pro[i+].PRICE;
pro[i].NUM =pro[i+].NUM;
count--;
i++;
if(i==count)//前移完毕后跳出while循环
break;
}
}
cout<<"删除成功!!"<<endl;
return;//删除成功后 直接终止删除函数
}
else//否认删除 自动返回主菜单
{
return ;
}
}
}
if(i==count)//如果编号不存在
cout<<"您输入的编号有误,请重新输入"<<endl;
}
}
void menu::Find()
{
system("cls");
if(count==)
{
error();//输出无产品信息
return ;//如果没有产品则终止查找函数
}
cout<<"欢迎使用查找功能,请选择查找方式:"<<endl;
cout<<"1.编号 2.名称 "<<endl;
int c;
string s_name;
int bian,i;
while(cin>>c)
{
if(c==)//如果选择编号
{
cout<<"请输入编号:";
while(cin>>bian)
{
for(i=; i<count; i++)
{
if(pro[i].ID==bian)//如果编号存在
{
cout<<"您所输入编号的设备的信息如下:"<<endl;
cout<<" "<<endl;
cout<<"编号:"<<pro[i].ID;
cout<<" 类别:"<<pro[i].TYPE;
cout<<" 名称:"<<pro[i].NAME;
cout<<" 价格:"<<pro[i].PRICE;
cout<<" 库存数量:"<<pro[i].NUM<<endl;
cout<<" "<<endl;
return ;
}
}
if(i==count)//如果编号不存在
{
cout<<"您输入的编号有误,请选择"<<endl;
cout<<"1.继续查找 2.结束查找"<<endl;
int ss;
while(cin>>ss)
{
if(ss==)
{
cout<<"请输入编号:";
break;//跳出之后返回
}
else if(ss==)
return ;//结束查找
else
cout<<"选择错误,请重新选择"<<endl;
}
}
}
}
if(c==)//如果选择名称
{
cout<<"请输入名称:";
while(cin>>s_name)
{
for(i=; i<count; i++)
{
if(pro[i].NAME==s_name)//如果编号存在
{
cout<<"您所输入名称的设备的信息如下:"<<endl;
cout<<" "<<endl;
cout<<"编号:"<<pro[i].ID;
cout<<" 类别:"<<pro[i].TYPE;
cout<<" 名称:"<<pro[i].NAME;
cout<<" 价格:"<<pro[i].PRICE;
cout<<" 库存数量:"<<pro[i].NUM<<endl;
cout<<" "<<endl;
return ;
}
}
if(i==count)//如果编号不存在
{
cout<<"您输入的名称有误,请选择"<<endl;
cout<<"1.继续查找 2.结束查找"<<endl;
int ss;
while(cin>>ss)
{
if(ss==)
{
cout<<"请输入名称:";
break;//跳出之后返回
}
else if(ss==)
return ;//终止要求
else
cout<<"选择错误,请重新选择"<<endl;
}
}
}
}
else
cout<<"选择错误,请重新选择"<<endl;
}
}
void menu::display()
{
if(count==)
{
system("cls");
error();
return ;
}
else
{
int i;
for(i=; i<count; i++)
{
cout<<endl<<"编号:"<<pro[i].ID;
cout<<" 类别:"<<pro[i].TYPE;
cout<<" 名称:"<<pro[i].NAME;
cout<<" 价格:"<<pro[i].PRICE;
cout<<" 库存数量:"<<pro[i].NUM<<endl;
cout<<" "<<endl;
}
}
}
void menu::Modify()
{
system("cls");
if(count==)
{
error();
return ;//如果没有产品则终止查找函数
}
cout<<"欢迎使用修改功能,产品信息如下:"<<endl;
display();
cout<<"请输入想修改的产品的编号:";
int bian,d,i;
string s_name;
int s_price,s_num;
while(cin>>bian)
{
for(i=; i<count; i++)
{
if(pro[i].ID==bian)//如果编号存在
{
cout<<"请输入想要修改的内容:"<<endl;
cout<<"1.名字 2.价格 3.库存数量"<<endl;
while(cin>>d)//输入选项 如非法输入则重新输入
{
switch(d)
{
case :
cout<<"请输入新的名字:";
cin>>s_name;
pro[i].getNAME(s_name);
cout<<endl<<"修改成功,自动返回主菜单"<<endl;
return ;
case :
cout<<"请输入新的价格:";
cin>>s_price;
pro[i].getPRICE(s_price);
cout<<endl<<"修改成功,自动返回主菜单"<<endl;
return ;
case :
cout<<"请输入新的库存数量:";
cin>>s_num;
pro[i].getNUM(s_num);
cout<<endl<<"修改成功,自动返回主菜单"<<endl;
return ;
}
cout<<"选择错误,请重新选择"<<endl;
}
}
}
if(i==count)//如果编号不存在
cout<<"您输入的编号有误,请重新输入"<<endl;
}
}
void menu::Storage()
{
ofstream ofs;
int i;
ofs.open("C:\\information.txt",ios::out|ios::trunc);
if(ofs)//判断是否打开成功
{
for(i=; i<count; i++)
{
ofs<<endl<<"编号:"<<pro[i].ID;
ofs<<" 类别:"<<pro[i].TYPE;
ofs<<" 名称:"<<pro[i].NAME;
ofs<<" 价格:"<<pro[i].PRICE;
ofs<<" 库存数量:"<<pro[i].NUM<<endl;
ofs<<endl;
}
}
ofs.close();
}
void menu::storage()
{
system("cls");
cout<<"储存成功,信息已存在c盘的information.txt下"<<endl<<endl;
}
void menu::Empty()
{
cout<<"请问是否确认清空信息"<<endl;
cout<<"1.是 2.否"<<endl;
int d;
while(cin>>d)
{
if(d==)
{
count=;
cout<<"清空成功,自动返回主菜单"<<endl;
return ;
}
else if(d==)
return ;
else
cout<<"选择错误!! 请重新选择"<<endl;
}
} int main(void)
{
system("color 3E");//设置颜色
//定义菜单类的对象
menu a; b.in();//调用图形类的进入系统图形函数
cout<<"请用你洁白的小手轻轻点击一下回车键"<<endl;
getchar();
system("cls"); a.headdisplay();//调用菜单类继承产品类的显示公司函数
a.Display();//调用菜单类的显示菜单函数
a.use();//使用系统
return ;
}
学校的c++程序课程设计(简单的写法 并无太多c++的特色)的更多相关文章
- c语言程序课程设计题目
<C语言程序设计>课程设计课题表 一.A类 .职工信息管理系统设计 职工信息包括职工号.姓名.性别.年龄.学历.工资.住址.电话等(职工号不重复).试设计一职工信息管理系统,使之能提供以下 ...
- 2017Java课程设计201521123007
1. 课程设计博客链接 项目地址 2. 个人负责模块或任务说明 ps:一个人做的项目 一个登录jsp文件,登录成功转入商品界面, 一个商品jsp文件,显示所有商品信息,数据从MySql数据库导入,可以 ...
- JAVA课程设计——一个简单的教务人事管理系统
大三上学期期末总结,没错,上学期,写在下学期新学期开始,哈哈哈. 上学期学习了面向对象程序设计,课程设计的题目使用JAVA语言完成一个简单的教务人事管理系统,能够实现访问数据库的登录验证,分别按部门和 ...
- Java课程设计——计算数学表达式的程序(201521123051 谢庆圆)
计算数学表达式的程序(201521123051 谢庆圆) 1.团队课程设计博客链接 团队课程设计博客链接 2.个人负责模块或任务说明 1.计算数字表达式中操作按钮的实现(右容器) 2.. 注册监听器以 ...
- 单片机课程设计-四位加法计算器设计参考程序(c语言)
#include<reg52.h> typedef unsigned char uint8; typedef unsigned int uint16; sbit rw=P2^; sbit ...
- 基于mysql和Java Swing的简单课程设计
摘要 现代化的酒店组织庞大.服务项目多.信息量大.要想提高效率.降低成本.提高服务质量和管理水平,进而促进经济效益,必须利用电脑网络技术处理宾馆酒店经营数据,实现酒店现代化的信息管理.本次课程设计运用 ...
- 课程设计之(struts2+Hibernate)航空订票系统
1.题目 课程设计之航空订票系统 为某家机票预订服务商开发一个机票预订和查询管理系统.该系统中的航班和机票信息由多家航空公司负责提供.客户通过上网方式查询航班时间表.机票可用信息.机票折扣信息,可以远 ...
- 嵌入式系统及应用课程设计——基于STM32的温湿度监测系统
大三上学期期末总结,嗯,没错上学期,写在新学期开始,hhh. 上学期学了一门嵌入式系统及应用的课程,期末的课程设计题目是基于STM32的温湿度监测系统. 记得刚开始做课程设计的时候,听说先设计画出原理 ...
- Socket聊天程序——初始设计
写在前面: 可能是临近期末了,各种课程设计接踵而来,最近在csdn上看到2个一样问答(问题A,问题B),那就是编写一个基于socket的聊天程序,正好最近刚用socket做了一些事,出于兴趣,自己抽了 ...
随机推荐
- IdentityServer4 SigningCredential(RSA 证书加密)
IdentityServer4 默认提供了两种证书加密配置: services.AddIdentityServer() .AddDeveloperSigningCredential() .AddTem ...
- 流式计算storm,spark文章
使用Storm实现实时大数据分析!http://www.csdn.net/article/2012-12-24/2813117-storm-realtime-big-data-analysis ...
- kettle介绍
Kettle也叫PDI,在2006年Kettle加入了开源的BI组织Pentaho,正式命名为PDI,英文全称为Pentaho Data Integeration.Kettle是"Kettl ...
- 无阻赛的脚本(js脚本延迟方法)
js脚本的加载与执行 1.延迟脚本(defer属性) 带有defer属性的script标签,可以放置在文档的任何位置,在页面解析到该标签时,会开始下载该脚本,但是不会立即执行,直到dom加载完成(on ...
- PHP面向对象摘要
一.面向对象的三种特性,分别是封装性,继承性和多态性. 1.封装性:封装是面向对象的核心思想,将对象的属性和行为封装起来,不需要让外界知道具体的实现细节,这就是封装思想. 2.继承性:继承性主要是描述 ...
- Django中请求的生命周期
1. 概述 首先我们知道HTTP请求及服务端响应中传输的所有数据都是字符串. 在Django中,当我们访问一个的url时,会通过路由匹配进入相应的html网页中. Django的请求生命周期是指当用户 ...
- 将Excel文件数据导入到SqlServer数据库的三种方案
方案一: 通过OleDB方式获取Excel文件的数据,然后通过DataSet中转到SQL Server,这种方法的优点是非常的灵活,可以对Excel表中的各个单元格进行用户所需的操作. openFil ...
- Python异步处理
回调函数是实现异步操作的常用手法 1.callback版本的示例,其中framework调用logic,在完成某些操作或者接收到信号后,用callback返回异步结果 #!/usr/bin/env p ...
- java 之 简单工厂模式(大话设计模式)
以前只是看设计模式,每次看完都去理解一次,并没有手动去写代码,所以理解的还不是很深刻,最近查看框架源码,发现很多地方用到的都是设计模式,因为对设计模式理解的不够深刻,所以源码查看进度很慢!现在决定来温 ...
- phpcms v9 前台getshell脚本
phpcms v9 前台getshell脚本 用法:python phpcmsv9getshell.py http://baidu.com # -*- coding:utf-8 -*- ''' --- ...