Windows 窗體應用程序——圖書管理系統總結(不帶數據庫操作


Windows 窗體應用程序——圖書管理系統總結(不帶數據庫操作)

 

圖書管理系統簡介

 

實現功能:在windows Form平台上實現圖書的添加、修改、刪除功能

 

 

附圖1:

圖書管理系統主界面:

 

 

 

 

附圖2:

圖書管理系統修改圖書界面:

 

 

 

 

 

功能實現:

分析圖書管理系統主界面

對象分析:

Models 實例類

1、 圖書類。圖書對象的屬性:圖書編號、圖書名稱、圖書價格、出版社、出版日期

2、 出版社類。用來存儲出版社下拉框對象。出版社類的屬性:出版社編號、出版社名稱

功能分析:

圖書管理系統主界面:實現按鈕功能:

1、 添加圖書

步驟分析:用戶在控件中輸入內容,點擊按鈕“添加圖書”后。數據同步顯示在下面的DataGridView控件中。

2、 修改圖書  

步驟分析:用戶在DataGridView中選中一條記錄,單擊按鈕“修改圖書”后,跳轉到圖書管理系統修改界面。在修改界面中展示要修改的圖書對象。修改完成之后。點擊按鈕“提交”后,返回主界面顯示修改完的內容。

3、 刪除圖書

步驟分析:用戶在DataGridView中選中一條記錄,單擊按鈕“刪除圖書”,彈出是否刪除提示信息。確認刪除后,該記錄在DataGridView中移除

 

圖書管理系統修改界面:實現按鈕功能:

1、 提交修改

步驟分析:用戶點擊“提交”按鈕后,修改后的圖書內容返回主界面顯示

 

 

具體實現

准備工作:制作兩個窗體。主界面窗體(FrmMainBook.cs)修改界面窗體(FrmEditBook.cs)

注意

1、時間日期控件。修改屬性:Format: 默認是Long 格式:2018年3月31日需要改為 short 格式:2018/3/31

2、 下拉框控件顯示出版社名稱實際存儲出版社編號。具體參照下面出版社下拉框初始化方法

3、 DataGridView控件。添加中文顯示列。並且修改列的屬性與圖書對象屬性對應。綁定數據源為圖書的屬性,詳見附圖3

 

 

 

 

 

 

 

附圖3

 

 

 

 

 

 

一、添加圖書功能

步驟一:構造函數初始化

初始化內容:

1、 出版社下拉框初始化

2、 DataGridView自動生成列屬性修改

 

  public FrmMainBook()

        {

            InitializeComponent();

            //初始化出版社

            InitPublisher();

            this.dgvBookList.AutoGenerateColumns = false;//不允許 DataGridView自動生成列

}

//初始化出版社

private void  InitPublisher()

        {

            //封裝出版社對象,運用集合初始化器和對象初始化器賦予出版社下拉框固定值

            List<Publisher> publisherList = new List<Publisher>()

            {

                new Publisher() {PublisherId=1,PublisherName="北京出版社" },

                new Publisher() {PublisherId=2,PublisherName="上海出版社" },

                new Publisher() {PublisherId=3,PublisherName="南京出版社" },

                new Publisher() {PublisherId=4,PublisherName="山東出版社" },

                new Publisher() {PublisherId=5,PublisherName="天津出版社" },

            };

            //設置數據源

            this.cboxPubliserId.DataSource = publisherList;

            this.cboxPubliserId.DisplayMember = "PublisherName"; //設置下拉框顯示名稱

            this.cboxPubliserId.ValueMember = "PublisherId";  //設置下拉框提交值成員

            this.cboxPubliserId.SelectedIndex = -1; //下拉框開始顯示空

        

 

        }

步驟二;添加圖書按鈕

private void btnAdd_Click(object sender, EventArgs e)

        {

            // [1] 檢查數據、驗證數據

            if(txtBarCode.Text.Trim()==" " || txtBarCode.TextLength == 0)

            {

                MessageBox.Show("圖書編碼不能為空!", "提示");

                txtBarCode.Focus();//將光標移到圖書編碼控件

                return;

            }

            // [2] 封裝對象(將用戶輸入的內容轉換為對象)

            Book book = new Book()

            {

                BarCode = this.txtBarCode.Text,

                BookName = this.txtBookName.Text,

                Price = Convert.ToDouble(this.txtPrice.Text),

                PublisherId =Convert.ToInt32(cboxPubliserId.SelectedValue),//注意獲取下拉框控件的值

                PublishDate=Convert.ToDateTime(this.dtpPublishDate.Text)

            };

            // [3] 將對象保存到數據源(多數情況是數據庫、也可以是其他數據源)

            // [4] 顯示數據

           

            bookList.Add(book);

            //設置數據源

            this.dgvBookList.DataSource = null;

            this.dgvBookList.DataSource = bookList;

 

            //清空數據

            this.txtBarCode.Clear();

            this.txtBookName.Clear();

            this.txtPrice.Clear();

            this.cboxPubliserId.SelectedIndex = -1;

            this.txtBarCode.Focus();

        }

 

 

 

二、修改圖書

 

主界面(FrmMainBook.cs):

private void btnEdit_Click(object sender, EventArgs e)

        {

           

            //[1]驗證 如果當前dgv沒有數據,則不執行任何操作

            if (this.dgvBookList.CurrentRow ==null || this.dgvBookList.RowCount == 0)

            {

                MessageBox.Show("請選擇有效行", "提示");

                return;

            }

            //[2]獲取當前修改的對象,首先找到圖書條碼,然后在dgv中找到當前對象

            String barCode = this.dgvBookList.CurrentRow.Cells["BarCode"].Value.ToString();

            Book objBook = (from b in bookList where b.BarCode.ToString().Equals(barCode) select b).First<Book>();

            //[3]顯示要修改的窗體 把對象傳到修改窗體中,這里不能用show方法要用ShowDialog()方法。注釋:用Show()方法的話點擊關閉也會繼續執行

            FrmEditBook edit = new FrmEditBook(objBook);

            DialogResult result= edit.ShowDialog();

 

            //[4]根據修改是成功來判定是否顯示

            if (result == DialogResult.OK)

            {

                //首先獲取修改后的對象

                Book book =(Book) edit.Tag;

                //重新綁定當前行的值

                Book editBook = (from b in bookList where b.BarCode.ToString().Equals(barCode) select b).First<Book>();

                editBook.BarCode = book.BarCode;

                editBook.BookName = book.BookName;

                editBook.Price = book.Price;

                editBook.PublishDate = book.PublishDate;

                editBook.PublisherId = book.PublisherId;

                //刷新修改窗體

                this.dgvBookList.Refresh();

 

            }

         

        }

 

修改窗體(FrmEditBook.cs)

public partial class FrmEditBook : Form

    {

        public FrmEditBook()

        {

            InitializeComponent();

           

        }

        /// <summary>

        /// 構造方法傳入主界面參數,並顯示要修改的圖書信息

        /// </summary>

        public FrmEditBook(Book objBook)

        {

            InitializeComponent();

            //初始化出版社下拉框

            InitPublisher();

            //顯示圖書信息。把傳過來的圖書對象轉化到控件中

            this.txtBarCode.Text= objBook.BarCode;

            this.txtBookName.Text = objBook.BookName;

            this.txtPrice.Text = objBook.Price.ToString();

            this.dtpPublishDate.Text = objBook.PublishDate.ToShortDateString();//時間要用ToShortDateString()

            //給下拉框賦值

            this.cboxPubliserId.SelectedValue = objBook.PublisherId;

 

 

        }

 

        /// <summary>

        /// 初始化出版社

        /// </summary>

        private void InitPublisher()

        {

            List<Publisher> publisherList = new List<Publisher>()

            {

                new Publisher() {PublisherId=1,PublisherName="北京出版社" },

                new Publisher() {PublisherId=2,PublisherName="上海出版社" },

                new Publisher() {PublisherId=3,PublisherName="南京出版社" },

                new Publisher() {PublisherId=4,PublisherName="山東出版社" },

                new Publisher() {PublisherId=5,PublisherName="天津出版社" },

            };

            //設置數據源

            this.cboxPubliserId.DataSource = publisherList;

            this.cboxPubliserId.DisplayMember = "PublisherName"; //設置下拉框顯示名稱

            this.cboxPubliserId.ValueMember = "PublisherId";  //設置下拉框提交值成員

            //this.cboxPubliserId.SelectedIndex = -1;

 

 

        }

       

       

        /// <summary>

        /// 提交修改並在主界面中展示修改好的內容

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        private void btnCommit_Click(object sender, EventArgs e)

        {

            //提交修改 與添加的方法類似

            // [1] 檢查數據、驗證數據

            if (txtBarCode.Text.Trim() == " " || txtBarCode.TextLength == 0)

            {

                MessageBox.Show("圖書編碼不能為空!", "提示");

                txtBarCode.Focus();

                return;

            }

            // [2] 封裝對象(將修改的內容裝換為對象)

            Book book = new Book()

            {

                BarCode = this.txtBarCode.Text,

                BookName = this.txtBookName.Text,

                Price = Convert.ToDouble(this.txtPrice.Text),

                PublisherId = Convert.ToInt32(cboxPubliserId.SelectedValue),

                PublishDate = Convert.ToDateTime(this.dtpPublishDate.Text)

            };

            // [3] 將對象保存到數據源(多數情況是數據庫、也可以是其他數據源)

 

            // [4] 保存修改的對象

            this.Tag = book;

            this.DialogResult = DialogResult.OK;

            this.Close();

 

        }

}

 

三、 刪除圖書對象

 

private void btnDelete_Click(object sender, EventArgs e)

        {

            //[1]驗證刪除 提示是否確認刪除;如果當前沒有任何數據,則不執行操作

            if (this.dgvBookList.RowCount == 0 || this.dgvBookList.CurrentRow == null)

            {

                MessageBox.Show("沒有選中刪除對象", "提示");

                return;

            }

           // 刪除確認

           

                DialogResult result = MessageBox.Show("確認刪除?", "刪除提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);

                if (result == DialogResult.Cancel)

                {

                    return;

                }

            //[2]獲取當前圖書對象的唯一標識圖書編碼然后找到該對象

            String barCode = this.dgvBookList.CurrentRow.Cells["BarCode"].Value.ToString();

            Book delBook = (from b in bookList where b.BarCode.ToString().Equals(barCode) select b).First<Book>();

            //[3]刪除該對象用remove

            this.bookList.Remove(delBook);

            //[4]同步更新顯示 bookList添加到dgv數據源,先清空數據源

            this.dgvBookList.DataSource = null;

            this.dgvBookList.DataSource = bookList;

        }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM