C#实现DVD借出归还管理系统
作者:老明宇. 发布时间:2021-07-02 06:55:38
标签:C#,借出归还,管理系统
用C#写的一个DVD管理器,供大家参考,具体内容如下
(大神勿喷,初学者以借鉴为主)
一共分为三个类分别是:DVD(启动类),XinXi(信息类),GongNeng(功能类)
代码部分(如下):
DVD(启动类):
class DVD
{
static void Main(string[] args)
{
GongNeng gongNeng = new GongNeng();
gongNeng.initial(); //初始化
gongNeng.XianShi(); //遍历初始化信息
gongNeng.CaiDan(); //选项菜单
}
}
XinXi(信息类):
class XinXi
{
private string _name;//名称
private int state;//借出状态
private string date;//时间
//属性封装
public string Name { get => _name; set => _name = value; }//名称
public int State { get => state; set => state = value; }//借出状态
public string Date { get => date; set => date = value; }//时间
}
GongNeng(功能类):
因为功能类使用了正则表达式来判断日期格式,所以在使用的时候头部还需加上:
using System.Text.RegularExpressions; // RegularExpressions为正则表达式,Text为文本
class GongNeng
{
XinXi[] xinxi = new XinXi[10];//对象数组存储数据
//初始化信息
#region 初始化信息
public void initial() {
xinxi[0] = new XinXi();
xinxi[0].Name = "罗马假日";
xinxi[0].State = 0;
xinxi[0].Date = "2010-7-1";
xinxi[1] = new XinXi();
xinxi[1].Name = "风声鹤唳";
xinxi[1].State = 1;
xinxi[1].Date = "";
xinxi[2] = new XinXi();
xinxi[2].Name = "浪漫满屋";
xinxi[2].State = 1;
xinxi[2].Date = "";
}
#endregion
//显示初始化信息
#region 显示初始化信息
public void XianShi() {
Console.WriteLine("********初始化信息如下:********");
foreach (XinXi item in xinxi) {
if (item != null) {
Console.WriteLine(item.Name+"\t"+item.State+"\t"+item.Date);
}
}
Console.WriteLine("********************************");
}
#endregion
//DVD菜单
#region DVD菜单
public void CaiDan()
{
Console.WriteLine("------------欢迎使用明宇迷你DVD管理器------------");
Console.WriteLine("1.新增DVD\n2.查看DVD\n3.删除DVD\n4.借出DVD\n5.归还DVD\n6.退出");
Console.WriteLine("-------------------------------------------------");
Console.Write("请输入您的选择:");
int xuanZe = int.Parse(Console.ReadLine());
switch (xuanZe)
{
case 1:
//新增DVD
XinZeng();
break;
case 2:
//查看DVD
ChaXun();
break;
case 3:
//删除DVD
ShanChu();
break;
case 4:
//借出DVD
JieChu();
break;
case 5:
//归还DVD
GuiHuan();
break;
case 6:
//退出
Console.WriteLine("欢迎下次光临!");
break;
default:
//无选项
Console.WriteLine("对不起,没有该选项!");
break;
}
}
#endregion
//输入0,返回
#region 输入0,返回
public void FanHui() {
do {
Console.WriteLine("输入0,返回:");
string Ling = Console.ReadLine();
if (Ling.Equals("0")) {
CaiDan();
}
} while (true);
}
#endregion
//新增DVD
#region 新增DVD
public void XinZeng() {
bool flag = true;
Console.WriteLine("此处实现新增DVD----->");
Console.WriteLine("请输入DVD名称:");
string dvdName = Console.ReadLine();
for (int i=0; i< xinxi.Length; i++) {
if (xinxi[i] == null) {
flag = false;
xinxi[i] = new XinXi();
xinxi[i].Name = dvdName;
xinxi[i].State = 1;
xinxi[i].Date = "";
Console.WriteLine("名称为{0}的DVD添加成功!", xinxi[i].Name);
break;
}
}
if (flag) {
Console.WriteLine("对不起,存储空间已满");
}
FanHui();//返回
}
#endregion
//查询DVD
#region 查询DVD
public void ChaXun() {
Console.WriteLine("此处实现查询DVD----->");
Console.WriteLine("{0,-8}{1,-10}{2,-8}", "名称","状态","时间");
string zhuangTai = String.Empty;
foreach (XinXi item in xinxi)
{
if (item != null)
{
if (item.State == 0) {
zhuangTai = "以借出";
} else if (item.State == 1) {
zhuangTai = "未借出";
}
Console.WriteLine("{0,-8}{1,-10}{2,-8}",item.Name, zhuangTai, item.Date);
}
}
FanHui();//返回
}
#endregion
//判断对应下标
#region 判断对应下标
public XinXi Duan(string dvdName) {
foreach (XinXi item in xinxi) {
if (item != null && item.Name.Equals(dvdName)) {
return item;
}
}
return null;
}
#endregion
//删除DVD
#region 删除DVD
public void ShanChu() {
Console.WriteLine("此处实现删除DVD----->");
Console.WriteLine("请输入DVD名称:");
string dvdName = Console.ReadLine();
XinXi renWu = Duan(dvdName);
if (renWu == null) {
Console.WriteLine("对不起,没有该DVD");
return;
}
for (int i=0; i< xinxi.Length; i++) {
if (renWu == xinxi[i] && xinxi[i].State == 1) {
for (int j = i; j < xinxi.Length-1; j++) {
xinxi[j] = xinxi[j + 1];
}
int nu = xinxi.Length - 1;
xinxi[nu] = null;
Console.WriteLine("订单删除成功!");
break;
} else if (renWu == xinxi[i] && xinxi[i].State == 0) {
Console.WriteLine("对不起,订单为以借出状态不能删除!");
break;
}
}
FanHui();//返回
}
#endregion
//借出DVD
#region 借出DVD
public void JieChu() {
Console.WriteLine("此处实现借出DVD----->");
Console.WriteLine("请输入DVD名称:");
string dvdName = Console.ReadLine();
XinXi renWu = Duan(dvdName);
if (renWu == null)
{
Console.WriteLine("对不起,没有该DVD");
FanHui();//返回
}
if (renWu.State == 0) {
Console.WriteLine("对不起,该DVD以被人抢先借走了!");
FanHui();//返回
}
Console.WriteLine("请输入借出日期(年-月-日):");
string riQi = Console.ReadLine();
bool flag = Money(riQi);
if (!flag)
{
Console.WriteLine("对不起,您输入的日期不正确!");
FanHui();//返回
}
else {
renWu.State = 0;
renWu.Date = riQi;
Console.WriteLine("借出DVD成功!");
}
FanHui();//返回
}
#endregion
//判断借出日期格式
#region 判断借出日期格式
public bool Money(string riQi)
{
string monval = @"^\d{4}-\d{1,2}-\d{1,2}$";
return Regex.IsMatch(riQi, monval);
}
#endregion
//归还DVD
#region 归还DVD
public void GuiHuan() {
Console.WriteLine("此处实现归还DVD----->");
Console.WriteLine("请输入DVD名称:");
string dvdName = Console.ReadLine();
XinXi renWu = Duan(dvdName);
if (renWu == null)
{
Console.WriteLine("对不起,没有该DVD");
FanHui();//返回
}
if (renWu.State == 1)
{
Console.WriteLine("对不起,该DVD还没有借出不可归还!");
FanHui();//返回
}
Console.WriteLine("请输入归还日期(年-月-日):");
string riQi = Console.ReadLine();
bool flag = Money(riQi);
if (!flag)
{
Console.WriteLine("对不起,您输入的日期不正确!");
FanHui();//返回
}
else
{
string jieChu = renWu.Date;
if (String.Compare(jieChu, riQi) < 0)
{
//字符串转换为日期格式
DateTime dat1 = Convert.ToDateTime(jieChu);//借出
DateTime dat2 = Convert.ToDateTime(riQi);//日期
TimeSpan span = dat2.Subtract(dat1);
//求借出与归还之间的差值
int cha = span.Days + 1;
renWu.State = 1;
renWu.Date = "";
Console.WriteLine("\n归还《{0}》成功!", renWu.Name);
Console.WriteLine("借出日期为:{0}", dat1);
Console.WriteLine("归还日期为:{0}", dat2);
Console.WriteLine("应付租金为:{0}",cha);
}
else {
Console.WriteLine("对不起,归还日期不能小于借出日期!");
FanHui();//返回
}
}
FanHui();//返回
}
#endregion
}
代码展示完毕!
来源:https://blog.csdn.net/qq_44860582/article/details/95031406
0
投稿
猜你喜欢
- 最近一段时间,大家在用 Spring Security OAuth2 时可能发现有很多类过期了。大家在选择 OAuth2 依赖的时候,可能也
- 学习平台微软开发者博客:https://devblogs.microsoft.com/?WT.mc_id=DT-MVP-5003986微软文
- 简介设计模式是软件设计中的一种常见方法,通过定义一系列通用的解决方案,来解决常见的软件设计问题。其中,抽象工厂模式是一种非常常见的设计模式,
- java使用stream实现list中对象属性的合并:根据两个List中的某个相同字段合并成一条List,包含两个List中的字段一、前言为
- 一、SpringMvc概述SpringMVC是一个基于MVC设计模式的WEB层框架。SpringMVC设计模式:MVC,全名是(Model
- 效果展示人脸支付效果视频密码框输入支付效果视频因为密码支付时会调起系统安全键盘,开启自动保护功能,防止泄露,会导致输入密码时录屏黑屏,故使用
- 为什么需要网关呢?我们知道我们要进入一个服务本身,很明显我们没有特别好的办法,直接输入IP地址+端口号,我们知道这样的做法很糟糕的,这样的做
- Beanutils.copyProperties()用法及重写提高效率特别说明本文介绍的是Spring(import org.springf
- Spring框架是一个优秀的多层J2EE系统框架,Spring本身没有提供对系统的安全性支持。Acegi是基于Spring IOC 和 AO
- 本文使用SpringBoot结合Redis进行简单的token鉴权。1.简介刚刚换了公司,所以最近有些忙碌,所以一直没有什么产出,最近朋友问
- ArrayList实现班级信息管理系统,供大家参考,具体内容如下代码如下:import java.util.*;public class D
- 如何传入字符串参数,分割并遍历如前台传入字符串参数 String str = "a,b,c,d,e,f";现需
- 之前的项目中,在Socket通信的时候需要传int类型的值,不过java中outputsteam貌似不能直接传int类型,只能传byte[]
- bean作用域bean的作用域,其实就是设置创建 bean 的实例是属于单实例,还是多实例。1. 默认单实例默认情况下,创建的 bean 是
- 很多时候在进行C#项目的实际开发中,会需要根据条件来设置节点不可勾选,查看DevExpress文档发现通过其CustomDrawNodeCh
- 本文实例分析了Java接口默认方法带来的问题。分享给大家供大家参考,具体如下:一 点睛Java 8中,如果一个类实现两个或多个接口,即“变相
- 一、分步骤集成1.1 整合连接池hikariCP介绍:HikariCP 是一个高性能的 JDBC 连接池组件,可以避免连接频繁建立、关闭的开
- 本文实例讲述了java实现MD5加密的方法。分享给大家供大家参考,具体如下:private String getMD5Str(String
- 本文主要介绍的是通过使用java的相关类可以实现对文件或文件夹的压缩。zlib是一种数据压缩程序库,它的设计目标是处理单纯的数据(而不管数据
- 本文实例为大家分享了java实现单词小游戏的具体代码,供大家参考,具体内容如下介绍公司最近有一个竞技场项目,里面有一个单词小游戏。游戏大概就