Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 21 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
21
Dung lượng
567,05 KB
Nội dung
HƯỚNG DẪN XÂY DỰNG PHẦN MỀM QUẢN LÝ NHÀ SÁCH 1 Yêucầuứngdụng 1.1 Danhsáchcácyêucầu STT Tên yêu cầu Biểu mẫu Qui định Ghi chú 1 Lập phiếu nhập sách BM1 QĐ1 2 Lập hóa đơn bán sách BM2 QĐ2 3 Tra cứu sách BM3 4 Lập báo cáo tháng BM5 5 Thay đổi qui định QĐ6 1.2 Danhsáchcácbiểumẫuvàquiđịnh 1.2.1 Biểumẫu1vàquiđịnh1 BM1: Phiếu Nhập Sách Ngày nhập: STT Sách Thể loại Tác giả Số lượng Đơn giá nhập 1 2 QĐ1: Chỉ nhập các đầu sách có lượng tồn ít hơn 300. 1.2.2 Biểumẫu2vàquiđịnh2 BM2: Hóa Đơn Bán Sách Họ tên khách hàng: Ngày lập hóa đơn: STT Sách Thể loại Số lượng Đơn giá bán 1 2 QĐ2: Chỉ bán cho các khách hàng nợ không quá 20.000 và đầu sách có lượng tồn sau khi bán ít nhất là 20. 1.2.3 Biểumẫu3 BM3: Danh Sách Sách STT Tên Sách Thể Loại Tác Giả Số Lượng 1 2 1.2.4 Biểumẫu5 Biểu mẫu 5.1 BM5.1: Báo Cáo Tồn Tháng: STT Sách Tồn Đầu Phát Sinh Tồn Cuối 1 2 1.2.5 Quiđịnh6 QĐ6: Người dùng có thể thay đổi các qui định như sau : + QĐ1 : Thay đổi số lượng nhập tối thiểu, lượng tồn tối thiểu trước khi nhập. + QĐ2 : Thay đổi tiền nợ tối đa, lượng tồn tối thiểu sau khi bán . + QĐ4 : Sử dụng hay không sử dụng qui định này. 2 XâydựnglớpgiaotiếpCSDL 2.1 Chức năng Lớp Database đảm nhiệm việc giao tiếp với cơ sở dữ liệu cho toàn ứng dụng. Tất cả việc tương tác với CSDL dữ liệu diễn ra ở bất cứ nơi nào trong ứng dụng đều được thực hiện thông qua lớp này. 2.2 Mục đích Sỡ dĩ chúng ta phải xây dựng lớp này là nhằm mang lại tính dễ bảo trì cũng như tính tiến hóa cho hệ thống. Nếu sau này cần thay đổi môi trường ứng dụng (sang Oracle, Access, Db2 ) thì chúng ta chỉ việc chỉnh sửa lớp Database này mà không cần quan tâm đến phần còn lại của ứng dụng. 2.3 Lớp Database 2.3.1 LớpDatabase • Thuộc tính o Sqlconn : SqlConnection • Phương thức o New : Hàm tạo (Constructor) o Execute : Thực thi một câu lệnh truy vấn và trả về kết quả là một DataTable dùng cho các câu lệnh Select * from o ExecuteNonQuery : Thực thi một câu lệnh truy vấn không quan tâm đến kết quả trả về. Dùng cho các câu lệnh Insert, Delete, Update o ExecuteScalar : Thực thi 1 câu lệnh truy vấn trả về 1 giá trị duy nhất 2.3.2 Mãnguồn C# using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.OleDb; using System.Windows.Forms; namespace QLNS { class Database { //Thuoc tinh protected string m_connectionString; protected OleDbConnection connection; protected OleDbDataAdapter da = null; protected OleDbCommand command; //Phuong thuc public Database() { m_connectionString = "Provider = Microsoft.Jet.OleDb.4.0; Data Source=QLNS.mdb"; } //Ket noi public void connect() { try { connection = new OleDbConnection(ConnectionString); connection.Open(); } catch (Exception ex) { MessageBox.Show("Không thể kết nối được với Server\n" + ex.Message, "Lỗi chương trình"); //Application.Exit(); } } //Tat ket noi public void disconnect() { try { connection.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } //Lay ra du lieu ra table public DataTable executeQuery(String sqlString) { connect(); DataSet ds = new DataSet(); da = new OleDbDataAdapter(sqlString, connection); da.Fill(ds); disconnect(); return ds.Tables[0]; } //Dung cho cac thao tac insert, delete, update public void executeNonQuery(string sqlString) { connect(); command = new OleDbCommand(sqlString, connection); command.ExecuteNonQuery(); disconnect(); } //Lay 1 gia tri du lieu ra public object executeScalar(string sqlString) { connect(); command = new OleDbCommand(sqlString, connection); object o = command.ExecuteScalar(); disconnect(); return o; } public string ConnectionString { get { return m_connectionString; } set { m_connectionString = value; } } } } 3 Xây dựng màn hình chính Xây dựng hệ thống menu Menu Hê thống Đăng nhập Đăng xuất Quản lý người dùng Thay đổi qui định Thoát Menu Danh Mục Danh mục sách Danh mục tác giả Danh mục thể loại Danh mục khách hàng Menu Quản lý Lập phiếu nhập sách Lập phiếu bán sách Menu Báo cáo, thống kê Lập báo cáo tháng 4 Xây dựng chức năng danh mục 4.1 Màn hình thể loại sách Xây dựng lớp TheLoai class TheLoai { private int m_maTheLoai; public int MaTheLoai { get { return m_maTheLoai; } set { m_maTheLoai = value; } } private string m_tenTheLoai; public string TenTheLoai { get { return m_tenTheLoai; } set { m_tenTheLoai = value; } } public static DataTable LayDanhSachTheLoai() { string sql; sql = "Select MaTheLoai, TenTheLoai From TheLoai "; Database db = new Database(); DataTable dt; dt = db.executeQuery(sql); return dt; } public void ThemTheLoaiSach() { string sql; sql = "Insert into TheLoai(TenTheLoai) values ("; sql += "'" + m_tenTheLoai + "')"; Database db = new Database(); db.executeNonQuery(sql); } public void XoaTheLoaiSach() { string sql; sql = "Delete From TheLoai Where maTheLoai = " + m_maTheLoai.ToString(); Database db = new Database(); db.executeNonQuery(sql); } public void CapNhatTheLoaiSach() { string sql; sql = "Update TheLoai Set TenTheLoai='" + m_tenTheLoai + "'"; sql += " Where MaTheLoai = " + m_maTheLoai.ToString(); Database db = new Database(); db.executeNonQuery(sql); } public void LayThongTinTheLoaiSach(int maTheLoai) { string sql; DataTable dt = new DataTable(); sql = "Select * From TheLoai Where MaTheLoai = " + maTheLoai.ToString(); Database db = new Database(); dt = db.executeQuery(sql); if (dt != null && dt.Rows.Count > 0) { m_maTheLoai = Convert.ToInt32(dt.Rows[0]["MaTheLoai"]); m_tenTheLoai = Convert.ToString(dt.Rows[0]["TenTheLoai"]); } } } Các hàm xử lý của TheLoaiSach_Form TheLoaiSach_Form_Load private void frmDanhMucTheLoai_Load(object sender, EventArgs e) { HienThiDanhSachTheLoaiSach(); } private void HienThiDanhSachTheLoaiSach() { dgvTheLoaiSach.DataSource = TheLoai.LayDanhSachTheLoai(); SoanLai(); } private void SoanLai() { txtTenTheLoai.Text = ""; } Khi người dùng bấm vào 1 hàng thì hiển thị thông tin chi tiết của thể loại sách ta dùng sự kiện SelectionChanged của dgvTheLoaiSach private void dgvTheLoaiSach_SelectionChanged(object sender, EventArgs e) { if (dgvTheLoaiSach.SelectedRows.Count > 0) { int maTheLoai = Convert.ToInt32(dgvTheLoaiSach.SelectedRows[0].Cells[0].Value); TheLoai tl = new TheLoai(); tl.LayThongTinTheLoaiSach(maTheLoai); //nap thong tin theloai len cac control tren form txtTenTheLoai.Text = tl.TenTheLoai; } } , btnThem, btnXoa, btnSua, btnSoanLai private void btnThem_Click(object sender, EventArgs e) { TheLoai tls = new TheLoai(); tls.TenTheLoai = txtTenTheLoai.Text; tls.ThemTheLoaiSach(); MessageBox.Show("Thêm thể loại mới thành công", "Quản lý nhà sách"); HienThiDanhSachTheLoaiSach(); } private void btnXoa_Click(object sender, EventArgs e) { if (dgvTheLoaiSach.SelectedRows.Count > 0) { int maTheLoai = Convert.ToInt32(dgvTheLoaiSach.SelectedRows[0].Cells[0].Value); TheLoai tl = new TheLoai(); tl.MaTheLoai = maTheLoai; tl.XoaTheLoaiSach(); HienThiDanhSachTheLoaiSach(); } } private void btnSua_Click(object sender, EventArgs e) { if (dgvTheLoaiSach.SelectedRows.Count > 0) { int maTheLoai = Convert.ToInt32(dgvTheLoaiSach.SelectedRows[0].Cells[0].Value); TheLoai tl = new TheLoai(); tl.MaTheLoai = maTheLoai; tl.TenTheLoai = txtTenTheLoai.Text; tl.CapNhatTheLoaiSach(); MessageBox.Show("Cập nhật thông tin thể loạ i thành công", "Quản lý nhà sách"); HienThiDanhSachTheLoaiSach(); } } private void btnSoanLai_Click(object sender, EventArgs e) { SoanLai(); } 4.2 Màn hình danh mục sách 4.2.1 Thiết kế màn hình 4.2.2 Loaddữ liệu cho các ComboBox Sự kiện formload của frmDanhMucSach private void frmDanhMucSach_Load(object sender, EventArgs e) { // load du lieu cho combobox dgvcbTheLoai tren datagridview dgvcbTheLoai.DataSource = TheLoai.LayDanhSachTheLoai(); dgvcbTheLoai.DisplayMember = "TenTheLoai"; dgvcbTheLoai.ValueMember = "MaTheLoai"; // load du lieu cho combobox dgvcbTacGia tren datagridview dgvcbTacGia.DataSource = TacGia.LayDanhSachTacGia(); dgvcbTacGia.DisplayMember = "TenTacGia"; dgvcbTacGia.ValueMember = "MaTacGia"; // load du lieu cho combobox cbTheLoai cbTheLoai.DataSource = TheLoai.LayDanhSachTheLoai(); cbTheLoai.DisplayMember = "TenTheLoai"; cbTheLoai.ValueMember = "MaTheLoai"; // load du lieu cho combobox cbTacGia cbTacGia.DataSource = TacGia.LayDanhSachTacGia(); cbTacGia.DisplayMember = "TenTacGia"; cbTacGia.ValueMember = "MaTacGia"; HienThiDanhSachSach(); } 5 Xâydựng chức năng tra cứu 5.1 Thiết kế màn hình 5.2 Xây dựng hàm tra cứu trong lớp Sach Trong lớp Sach ta xây dựng them hàm tra cứu sách public static DataTable TraCuuSach(string tenSach) { [...]... luong ton Sach s = new Sach(); s.MaSach = cthd.MaSach; s.CapNhatSoLuongTon(-cthd.SoLuong); } MessageBox.Show("Thêm thể loại mới thành công", "Quản lý nhà sách" ); } 7 Xây dựng chức năng báo cáo thống kê Xây dựng báo cáo số lượng sách bán trong tháng 7.1 Xây dựng câu truy vấn SELECT s.TenSach, tl.TenTheLoai, s.Giaban, sum (ct.SoLuong) as SoLuong from chitiethoadon ct, sach s, hoadon hd, theloai tl where... } return dt; 5.3 Thực hiện tra cứu private void btnTraCuu_Click(object sender, EventArgs e) { string tenSach = txtTenSach.Text; dgvSach.DataSource = Sach.TraCuuSach(tenSach); } 6 Xây dựng chức năng quản lý 6.1 Hóa đơn bán sách 6.1.1 Thiết kế màn hình 6.1.2 Lớp HoaDon Hàm them mới hóa đơn public void ThemHoaDon() { string sql; Database db = new Database(); // Tao maHoaDon sql = "Select max(MaHoaDon)... s.TenSach, tl.TenTheLoai, s.Giaban 7.2 Xây dựng report - Project Add new item… chọn Crystal Report Chọn “Using the Report Wizard” Đặt tên “crBaoCaoThang” - Chọn “Create New Connection” Chọn “Add command” Chọn file “QLNS.mdb” “Database File” - Nhập câu truy vấn - Chọn tất cả các trường trong command - Grouping (Bỏ qua) Record Selection (Bỏ qua) Report style Chọn Table 7.3 Xây dựng form để hiển thị báo cáo frmHienThiBaoCao... hiển thị báo cáo frmHienThiBaoCao Trong form này có hàm Gán báo cáo cần hiển thị : public void GanBaoCaoCanHienThi(object cr) { crystalReportViewer1.ReportSource = cr; } 7.4 Xây dựng form báo cáo tháng frmBaoCaoThang Các hàm xử lý private void frmBaoCaoThang_Load(object sender, EventArgs e) { for (int thang = 1; thang = 0) { int maSach = Convert.ToInt32(dgvChiTietHoaDon.Rows[e.RowIndex].Cells[0].Value); . HƯỚNG DẪN XÂY DỰNG PHẦN MỀM QUẢN LÝ NHÀ SÁCH 1 Yêucầuứngdụng 1.1 Danh sách cácyêucầu STT Tên yêu cầu Biểu mẫu Qui định Ghi chú 1 Lập phiếu nhập sách BM1 QĐ1 2 Lập hóa đơn bán sách. loại mới thành công", " ;Quản lý nhà sách& quot;); } 7 Xây dựng chức năngbáocáothốngkê Xây dựng báo cáo số lượng sách bán trong tháng 7.1 Xây dựng câu truy vấn SELECT s.TenSach,. khách hàng Menu Quản lý Lập phiếu nhập sách Lập phiếu bán sách Menu Báo cáo, thống kê Lập báo cáo tháng 4 Xây dựng chức năng danh mục 4.1 Màn hình thể loại sách Xây dựng lớp TheLoai