C#實(shí)現(xiàn)DVD借出歸還管理系統(tǒng)
用C#寫的一個(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á)式來判斷日期格式,所以在使用的時(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: //無選項(xiàng) Console.WriteLine("對(duì)不起,沒有該選項(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ì)不起,沒有該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ì)不起,沒有該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ì)不起,沒有該DVD"); FanHui();//返回 } if (renWu.State == 1) { Console.WriteLine("對(duì)不起,該DVD還沒有借出不可歸還!"); 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 }
代碼展示完畢!
以上就是本文的全部內(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-05C#實(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-06C#利用XML創(chuàng)建Excel文檔的實(shí)現(xiàn)方法
這篇文章主要介紹了C#利用XML創(chuàng)建Excel文檔的實(shí)現(xiàn)方法,需要的朋友可以參考下2014-08-08C#使?XmlReader和XmlWriter操作XML?件
這篇文章介紹了C#使?XmlReader和XmlWriter操作XML?件的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06C#實(shí)體對(duì)象序列化成Json并讓字段的首字母小寫的兩種解決方法
這篇文章主要介紹了C#實(shí)體對(duì)象序列化成Json并讓字段的首字母小寫的兩種方法,在這兩種方法中小編比較推薦使用第二種方法,需要的朋友可以參考下2018-06-06C#獲取存儲(chǔ)過程返回值和輸出參數(shù)值的方法
這篇文章主要介紹了C#獲取存儲(chǔ)過程返回值和輸出參數(shù)值的方法,有需要的朋友可以參考一下2014-01-01