C#實(shí)現(xiàn)DVD借出歸還管理系統(tǒng)
用C#寫(xiě)的一個(gè)DVD管理器,供大家參考,具體內(nèi)容如下
(大神勿噴,初學(xué)者以借鑒為主)
一共分為三個(gè)類分別是:DVD(啟動(dòng)類),XinXi(信息類),GongNeng(功能類)
代碼部分(如下):
DVD(啟動(dòng)類):
class DVD
{
static void Main(string[] args)
{
GongNeng gongNeng = new GongNeng();
gongNeng.initial(); //初始化
gongNeng.XianShi(); //遍歷初始化信息
gongNeng.CaiDan(); //選項(xiàng)菜單
}
}
XinXi(信息類):
class XinXi
{
private string _name;//名稱
private int state;//借出狀態(tài)
private string date;//時(shí)間
//屬性封裝
public string Name { get => _name; set => _name = value; }//名稱
public int State { get => state; set => state = value; }//借出狀態(tài)
public string Date { get => date; set => date = value; }//時(shí)間
}
GongNeng(功能類):
因?yàn)楣δ茴愂褂昧苏齽t表達(dá)式來(lái)判斷日期格式,所以在使用的時(shí)候頭部還需加上:
using System.Text.RegularExpressions; // RegularExpressions為正則表達(dá)式,Text為文本
class GongNeng
{
XinXi[] xinxi = new XinXi[10];//對(duì)象數(shù)組存儲(chǔ)數(shù)據(jù)
//初始化信息
#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 = "風(fēng)聲鶴唳";
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("請(qǐng)輸入您的選擇:");
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:
//無(wú)選項(xiàng)
Console.WriteLine("對(duì)不起,沒(méi)有該選項(xiàng)!");
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("此處實(shí)現(xiàn)新增DVD----->");
Console.WriteLine("請(qǐng)輸入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("對(duì)不起,存儲(chǔ)空間已滿");
}
FanHui();//返回
}
#endregion
//查詢DVD
#region 查詢DVD
public void ChaXun() {
Console.WriteLine("此處實(shí)現(xiàn)查詢DVD----->");
Console.WriteLine("{0,-8}{1,-10}{2,-8}", "名稱","狀態(tài)","時(shí)間");
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
//判斷對(duì)應(yīng)下標(biāo)
#region 判斷對(duì)應(yīng)下標(biāo)
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("此處實(shí)現(xiàn)刪除DVD----->");
Console.WriteLine("請(qǐng)輸入DVD名稱:");
string dvdName = Console.ReadLine();
XinXi renWu = Duan(dvdName);
if (renWu == null) {
Console.WriteLine("對(duì)不起,沒(méi)有該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("對(duì)不起,訂單為以借出狀態(tài)不能刪除!");
break;
}
}
FanHui();//返回
}
#endregion
//借出DVD
#region 借出DVD
public void JieChu() {
Console.WriteLine("此處實(shí)現(xiàn)借出DVD----->");
Console.WriteLine("請(qǐng)輸入DVD名稱:");
string dvdName = Console.ReadLine();
XinXi renWu = Duan(dvdName);
if (renWu == null)
{
Console.WriteLine("對(duì)不起,沒(méi)有該DVD");
FanHui();//返回
}
if (renWu.State == 0) {
Console.WriteLine("對(duì)不起,該DVD以被人搶先借走了!");
FanHui();//返回
}
Console.WriteLine("請(qǐng)輸入借出日期(年-月-日):");
string riQi = Console.ReadLine();
bool flag = Money(riQi);
if (!flag)
{
Console.WriteLine("對(duì)不起,您輸入的日期不正確!");
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("此處實(shí)現(xiàn)歸還DVD----->");
Console.WriteLine("請(qǐng)輸入DVD名稱:");
string dvdName = Console.ReadLine();
XinXi renWu = Duan(dvdName);
if (renWu == null)
{
Console.WriteLine("對(duì)不起,沒(méi)有該DVD");
FanHui();//返回
}
if (renWu.State == 1)
{
Console.WriteLine("對(duì)不起,該DVD還沒(méi)有借出不可歸還!");
FanHui();//返回
}
Console.WriteLine("請(qǐng)輸入歸還日期(年-月-日):");
string riQi = Console.ReadLine();
bool flag = Money(riQi);
if (!flag)
{
Console.WriteLine("對(duì)不起,您輸入的日期不正確!");
FanHui();//返回
}
else
{
string jieChu = renWu.Date;
if (String.Compare(jieChu, riQi) < 0)
{
//字符串轉(zhuǎn)換為日期格式
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("應(yīng)付租金為:{0}",cha);
}
else {
Console.WriteLine("對(duì)不起,歸還日期不能小于借出日期!");
FanHui();//返回
}
}
FanHui();//返回
}
#endregion
}
代碼展示完畢!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
使用DateTime的ParseExact方法實(shí)現(xiàn)特殊日期時(shí)間的方法詳解
本篇文章是對(duì)使用DateTime的ParseExact方法實(shí)現(xiàn)特殊日期時(shí)間的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
C#實(shí)現(xiàn)判斷操作系統(tǒng)是否為Win8以上版本
這篇文章主要介紹了C#實(shí)現(xiàn)判斷操作系統(tǒng)是否為Win8以上版本,本文講解了利用C#獲取OS的版本號(hào)、利用反射獲取當(dāng)前正在運(yùn)行的程序的版本信息、 利用C#判斷當(dāng)前操作系統(tǒng)是否為Win8系統(tǒng)等內(nèi)容,需要的朋友可以參考下2015-06-06
C#利用XML創(chuàng)建Excel文檔的實(shí)現(xiàn)方法
這篇文章主要介紹了C#利用XML創(chuàng)建Excel文檔的實(shí)現(xiàn)方法,需要的朋友可以參考下2014-08-08
C#使?XmlReader和XmlWriter操作XML?件
這篇文章介紹了C#使?XmlReader和XmlWriter操作XML?件的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06
C#實(shí)體對(duì)象序列化成Json并讓字段的首字母小寫(xiě)的兩種解決方法
這篇文章主要介紹了C#實(shí)體對(duì)象序列化成Json并讓字段的首字母小寫(xiě)的兩種方法,在這兩種方法中小編比較推薦使用第二種方法,需要的朋友可以參考下2018-06-06
C#獲取存儲(chǔ)過(guò)程返回值和輸出參數(shù)值的方法
這篇文章主要介紹了C#獲取存儲(chǔ)過(guò)程返回值和輸出參數(shù)值的方法,有需要的朋友可以參考一下2014-01-01

