Windows 窗體應用程序——圖書管理系統總結(不帶數據庫操做)數據庫
圖書管理系統簡介windows
實現功能:在windows Form平臺上實現圖書的添加、修改、刪除功能函數
附圖1:this
圖書管理系統主界面:編碼
附圖2:orm
圖書管理系統修改圖書界面:對象
功能實現:blog
分析圖書管理系統主界面rem
對象分析:同步
Models 實例類
一、 圖書類。圖書對象的屬性:圖書編號、圖書名稱、圖書價格、出版社、出版日期
二、 出版社類。用來存儲出版社下拉框對象。出版社類的屬性:出版社編號、出版社名稱
功能分析:
圖書管理系統主界面:實現按鈕功能:
一、 添加圖書
步驟分析:用戶在控件中輸入內容,點擊按鈕「添加圖書」後。數據同步顯示在下面的DataGridView控件中。
二、 修改圖書
步驟分析:用戶在DataGridView中選中一條記錄,單擊按鈕「修改圖書」後,跳轉到圖書管理系統修改界面。在修改界面中展現要修改的圖書對象。修改完成以後。點擊按鈕「提交」後,返回主界面顯示修改完的內容。
三、 刪除圖書
步驟分析:用戶在DataGridView中選中一條記錄,單擊按鈕「刪除圖書」,彈出是否刪除提示信息。確認刪除後,該記錄在DataGridView中移除
圖書管理系統修改界面:實現按鈕功能:
一、 提交修改
步驟分析:用戶點擊「提交」按鈕後,修改後的圖書內容返回主界面顯示
具體實現
準備工做:製做兩個窗體。主界面窗體(FrmMainBook.cs)修改界面窗體(FrmEditBook.cs)
注意:
一、時間日期控件。修改屬性:Format: 默認是Long 格式:2018年3月31日須要改成 short 格式:2018/3/31
二、 下拉框控件顯示出版社名稱實際存儲出版社編號。具體參照下面出版社下拉框初始化方法
三、 DataGridView控件。添加中文顯示列。而且修改列的屬性與圖書對象屬性對應。綁定數據源爲圖書的屬性,詳見附圖3
附圖3
1、添加圖書功能
步驟一:構造函數初始化
初始化內容:
一、 出版社下拉框初始化
二、 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();
}
2、修改圖書
主界面(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();
}
}
3、 刪除圖書對象
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;
}