You are on page 1of 24

I .

Tng quan chung


1.Mc ch, yu cu bi ton:
* Bi ton:
Vit chng trnh qun l mt nh hng .
*Yu cu:
- Qun l nhn vin nh hng, bao gm: tn, qu qun, gii tnh, s in
thoi, lm vic b phn no.
- Qun l khch hng, bao gm: tn, gii tnh, ha n s dng, ngy n
nh hng.
- Qun l ha n, bao gm: ngy, tng chi ph, m t(n mn g, s lng
bao nhiu), nhn vin no phc v, cho khch hng no.
- Qun l thc n, bao gm: tn mn, trng thi(cn hay ht), ngy nhp,
gi, thuc b phn no.
*Mc ch:
- Qun l nhn vin nhm bit thng tin c nhn ca nhn vin, khi cn c
th lin lc, thm, bt nhn vin, sp xp vo cc b phn ph hp vi chc nng
nh hng.
- Qun l khch hng nhm thng k khch hng no s dng dch v nhiu
hay t, t c cc ch u i gi khch. ng thi nm s lng khch
hng trong thng, qu xem lm n c tin trin hay tht li, t iu chnh cc
mt khc ca nh hng nh: lng nhn vin, gi thc n
- Qun l ha n ngoi mc ch lu gi i chiu khi c bt ng vi
khch hng cn dng thng k doanh thu ca nh hng thng qua gi tr ha
n. Ngoi ra qua phn m t c th bit c mn n no c tiu th nhiu hay
t t iu chnh vic nhp thm.
- Qun l thc n thng k trng thi ht cn ca mn n, cng nh
ngy thng nhp xem ht hn hay cha.

II.Hng gii quyt bi ton chung:


1. Lp h qun tr c s d liu(s dng Microsoft Access 2007):
a. Gii thiu Microsoft Access 2007:
MS Access l mt h qun tr c s d liu hng Microsoft chy trn mi trng
Windows, trn c cc cng c hu hiu v tin li t ng sn sinh chng
trnh cho hu ht cc bi ton thng gp trong thc t nh qun l, thng k, k
ton ... Vi MS Access ngi s dng khng phi vit tng cu lnh c th m vn
c c mt chng trnh hon chnh, nu cn lp trnh MS Access c sn ngn
ng Access Basic ta c th lp trnh theo mun ca ngi s dng.
Hu ht cc h qun tr CSDL hin nay u lu tr v x l thng tin bng m
hnh qun tr CSDL quan h. Quan h bt ngun t thc t l mi bn ghi trong
CSDL cha cc thng tin lin quan n mt ch th duy nht. Ngoi ra, cc d liu
ca hai nhm thng tin c th ghp li thnh mt ch th duy nht da trn cc gi
tr d liu quan h. Trong mt h qun tr CSDL quan h, tt c cc d liu c
qun l theo bng, bng lu tr thng tin v mt ch th. Thm tr khi s dng mt
trong cc phng tin ca mt h CSDL rt ra thng tin t mt bng hay nhiu
bng khc (thng c gi l truy vn - Query) th kt qu cng ging nh mt
bng. Th t c th mt truy vn da trn kt qu ca mt truy vn khc.
Cc kh nng ca mt CSDL l cho chng ta quyn kim sot hon ton bng cc
nh ngha d liu, lm vic vi d liu v chia s vi d liu khc. Mt CSDL c
3 kh nng chnh : nh ngha d liu, x l d liu, kim sot d liu.
b.Lm vic vi Microsoft Access 2007:
Tp Access c phn m rng *.accDB (ngoi nhng tp c phn m rng *.DBE
cng m c nhng ch c th thc thi ch khng chnh sa c cu trc). C 5
tp thnh phn chnh trong mt tp :
- Tables : Ni cha ton b cc bng d liu.
- Queries : Ni cha ton b cc truy vn d liu c thit k.
- Form : Ni cha mu giao din phn mm.
- Reports : Ni cha cc mu bo co c thit k.
- Macro : Ni cha cc Macro lnh phc v d n..

- Modules : Ni cha cc khai bo cc th vin chng trnh con phc v d n.


y chng ta ch quan tm ti Cc thnh phn sau:
- Bng (Table) :
- L thnh phn c bn quan trng ca c s d liu, n dng ghi nhn cc s
liu cn thit. C th ni tt c qu trnh x l d liu u da trn c s cc d
liu th c lu tr trong cc Table.
- Trong 1 Table s liu c t chc thnh cc ct (fields or columns) v dng
(records). Mi ct tng ng vi mt mc d liu cn lu tr, mi dng cha d
liu mt ngi hay vt c th m ta cn lu tr. Khi thit k cc ct cho Table ta c
th rng buc iu kin Access kim tra cc record nhp vo khng b sai.
- Chnh nh nhng Table ny m xy dng nn c nhng mi quan h trong h
thng (relationship).
Cu trc logic ca Table :
- Table c t chc thnh cc ct hay cn gi l trng (file hay colum) v cc
dng gi l mu tin (Record).
- Mi ct tng ng vi mt mc d liu m ta cn lu tr. Mi ct c mt tn v
thuc v mt kiu d liu.
- Mi dng cha d liu v mt ngi hay vt c th m ta cn

lu tr.

Ta c th to mi mt bng theo 3 cch sau :


+ To vi s hng dn ca Access (Table wizard).
+ T thit k theo ring trn mt mu bng trong kim xem bng d liu
(Datasheet View).
+ To trn mt mu thit k (Datasheet View).

Query - Truy vn :
- Query l cng c dng tnh ton v x l d liu t cc table v cc
Query khc c sn trong c s d liu.
- Dng Query thng c s dng nhiu nht l Select Query. Bng loi
Query ny ta c th lc ra nhng thng tin cn quan tm t nhiu bng d
liu khc nhau cua c s d liu, c th phn tch v hiu chnh d liu
ngay trn bn thn Query hay s dng lm c s cho cng vic khc.
- Ngoi ra cn c cc loi Query khc nh Update Query cp nht,
chnh sa d liu cho Table, crosstab Query tng hp d liu, Make
Table Query, Crosstab Query tng hp d liu, Make Table Query nhm
phc hi d liu c s st xy ra cho Table. Rp ni d liu vo table c
Append Query xa d liu Delete Query. Query nh mt nn tng to
ra cc bo biu c c tnh nh dng cao hn Table.
* Khi nim :
- + Query l cng c khai thc v s l d liu ca Microsoft Access, n c
th p ng cc nhu cu tra cu v d liu v ca cc bng d liu thuc
c s d liu.
- + Query cn dng to ra ngun s liu c s cho cc cng c khc nh :
Form, Report, k c cho mt Query khc, thm tr to ra mt table khc.
Vi nhng thng tin la chn c ca Query cng c th trc tip in ra
giy p ng yu cu cao hn table mt mc.
2. Vit chng trnh giao din ngi dng:
a. Phn mm Microsoft Visual Studio 2008, gii thiu chung:
Microsoft Visual Studio l mi trng pht trin tch hp chnh (Integrated
Development Environment (IDE) c pht trin t Microsoft. y l mt sn
phm phn mm my tnh c cng dng gip cc lp trnh vin trong vic pht
trin phn mm.
Cc mi trng pht trin hp nht thng bao gm:
- Mt trnh son tho m (source code editor): dng vit m.
- Trnh bin dch (compiler) v/hoc trnh thng dch (interpreter).
- Cng c xy dng t ng: khi s dng s bin dch (hoc thng dch) m ngun,
thc hin lin kt v c th chy chng trnh mt cch t ng.
-Trnh g li (debugger): h tr d tm li.

- Ngoi ra, cn c th bao gm h thng qun l phin bn v cc cng c nhm


n gin ha cng vic xy dng giao din ngi dng ha (GUI).
- Nhiu mi trng pht trin hp nht hin i cn tch hp trnh duyt lp (class
browser), trnh qun l i tng (object inspector), lc phn cp lp (class
hierarchy diagram),... s dng trong vic pht trin phn mm theo hng i
tng.
Nh vy, Microsoft Visual Studio c dng pht trin console (thit b u
cui bn giao tip ngi my) v GUI (giao din ngi dng ha) cng vi
cc trnh ng dng nh Windows Forms, cc web sites, cng nh ng dng, dch
v wed (web applications, and web services). Chng c pht trin da trn mt
m ngn ng gc (native code ) cng nh m c qun l (managed code) cho
cc nn tng c c h tr Microsoft Windows, Windows Mobile, .NET
Framework, .NET Compact Framework v Microsoft Silverlight.
Visual Studio h tr rt nhiu ngn ng lp trnh, c th k tn nh sau: C/C++
( Visual C++), VB.NET (Visual Basic .NET), va C# (Visual C#) cng nh h tr
cc ngn ng khc nh F#, Python, v Ruby; ngoi ra vn m bo h
tr XML/XSLT, HTML/XHTML, JavaScript v CSS
b. Lm vic vi Visual Studio 2008:
Cc chc nng chnh ca Visual Studio:
+ Son tho m ( code editor)
+ Trnh g li (debugger)
+ Thit k (Designer) : mt trong nhng im nhn ca Microsoft Visual Studio
2008
y chng ta ch quan tm ti:
- WinForms Designer: y l cng c to giao din ha dng WinForms. im
c bit y l giao din vi ngi dng sinh ng, d nm bt. N bao gm cc
phm bm, thanh tc v, hay cc box a dng (textbox, list box, grid view). Bn
c th di chuyn, ko ra, nhng th chng mt cch d dng.

- Class designer: y l cng c dng thc thi v chnh sa lp. N c th dng


m C# v VB.NET
- Ngn ng c s dng trong bi tp ln l C# hay cn gi l C-sharp

III. Phn tch bi ton, thit k chng trnh c th:


1. Xy dng h qun tr c s d liu trn Microsoft Access 2007:
a.Xy dng bng:
nhanvien (manv, hoten, quequan, gioitinh, mabophan, sodienthoai)
khachhang (makhachhang, tenkhachhang, gioitinh, ngay an, mahoadon)
hoadon (mahoadon, ngay, chiphi, mota, manv, makhachhang)
thucdon (madoan, tendoan, trangthai, ngaynhap, gia, mabophan)
bophan (mabophan, tenbophan, truongbophan, diachi)
Trong cc t gch chn l kha chnh
Cc trng trong cc bng c xy dng tha mn yu cu v mc ch t ra ca
bi ton:
- qun l nhn vin
- qun l khch hng
- qun l ha n
- qun l thc n
C th:

Nhn vin:

Tn trng

Kiu d liu

Kch thc

M t

manv

Text

225

M nhn vin

hoten

Text

225

H tn

quequan

Text

225

Qu qun

gioitinh

Text

225

Gii tnh

mabophan

Text

225

M b phn

sodienthoai

Text

225

S in thoi

Khch hng:

Tn trng

Kiu d liu

Kch thc

M t

makhachhang

Text

225

M khch hng

tenkhachhang

Text

225

Tn khch hng

gioitinh

Text

225

Gii tnh

ngayan

Text

225

Ngy n

mahoadon

Text

225

M ha n

Ha n:

Tn trng

Kiu d liu

Kch thc

M t

mahoadon

Text

225

M ha n

ngay

Text

225

Ngy

chiphi

Text

225

Chi ph

mota

Text

225

M t

manv

Text

225

M nhn vin

makhachhang

Text

225

M khch hng

Thc n:

Tn trn
madoan
tendoan
trangthai
ngaynhap
gia
mabophan

B phn:

Tn trng

Kiu d liu

Kch thc

M t

mabophan

Text

225

M b phn

tenbophan

Text

225

Tn b phn

truongbophan

Text

225

Trng b phn

diachi

Text

b. M hnh quan h c s d liu:

225

a ch

2.Xy dng giao din ngi dng vo truy vn (query) trn Visual Studio 2008:

a.Thit k, cc bc thao tc c th:


Truy cp phn mm Visual Studio 2008, to project mi:

Chn tn v ni lu project:

Giao din lm vic :

T form1 ta xy dng giao din bng u tin, s dng thanh cng c toolbox

Sau khi thao tc vi cc cng c ca toolbox ta c giao din bng khch hng :

Tin hnh t tn cho cc thnh phn tin cho vic lp trnh sau ny, v d :
Textbox c label m khch hnh t l txtmakhachhang hoc
Datagridview t l datakhachhang

Lm tng t vi cc bng cn li.


thm form hoc class, ta lm nh sau:

+ thm form, ta chn


WindowsForm

+ thm class ta chn

Lu tn form v class tng ng


b. Vit chng trnh cho form to(cc nt chc nng, hin th):
*Chng trnh cho class csdl:
using
using
using
using
using

System;
System.Collections.Generic;
System.Text;
System.Data;
System.Data.OleDb;

namespace quanlynhahang
{
class csdl
{
public static OleDbConnection Ole;
//ket noi
public static void ketnoi()
{
string conn = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source
=quanlynhahang.accdb";
Ole = new OleDbConnection(conn);
Ole.Open();
}

Vi bng Khch hng c button Thm, Sa, Xa trong class csdl phi c
chng trnh:
// them khach hang
public void themkhachhang(string makhachhang, string hoten, string
ngayan, string mahoadon, string gioitinh)
{
try
{
csdl.ketnoi();
string sql = "INSERT INTO khachhang VALUES('" + makhachhang +
"','" + hoten + "','" + ngayan + "','" + mahoadon + "','" + gioitinh + "')";
OleDbCommand cmd = new OleDbCommand(sql, Ole);
cmd.ExecuteNonQuery();
}
catch
{
throw new Exception("Lu khng thnh cng");
}
}
//sua khach hang

public void suakhachhang(string makhachhang, string hoten, string


ngayan, string mahoadon, string gioitinh)
{
try
{
csdl.ketnoi();
string sql = "UPDATE khachhang SET tenkhachhang='" + hoten +
"',ngayan='" + ngayan + "',mahoadon='" + mahoadon + "',gioitinh='" + gioitinh
+ "' Where makhachhang= '" + makhachhang + "'";
// string sql = "UPDATE nhanvien SET
hoten='huhu',quequan='sdf',gioitinh='nam',mabophan='PV',sodienthoai=4545656
Where manv=18";
OleDbCommand cmd = new OleDbCommand(sql, Ole);
cmd.ExecuteNonQuery();
}
catch
{
throw new Exception("Lu thay i khng thnh cng");
//throw new Exception(ex.Message);
}
}
//xoa khach hang
public void xoakhachhang(string makhachhang)
{
try
{
string sql = "Delete * From khachhang Where makhachhang= '" +
makhachhang + "'";
OleDbCommand cmd = new OleDbCommand(sql, Ole);
cmd.ExecuteNonQuery();
}
catch
{
throw new Exception("Khng Th Xo !");
}
}

*Chng trnh cho form


Quay li vi form Khch hng, click p vo form tin hnh lp trnh cho form:
C th l thm, sa, xa:
public khach_hang()
{
InitializeComponent();
string[] gioitinh = { "nam", "nu" };
cbgioitinh.Items.AddRange(gioitinh);

}
csdl obj = new csdl();

private void themkhachhang1()


{
try

//csdl.ketnoi();
obj.themkhachhang(txtmakhachhang.Text.ToString(),
txthoten.Text.ToString(), datetimengayan.Text.ToString(),
txtmahoadon.Text.ToString(), cbgioitinh.Text.ToString());
string sql = "SELECT * FROM khachhang";
OleDbCommand hien = new OleDbCommand(sql, csdl.Ole);
OleDbDataAdapter adap = new OleDbDataAdapter(hien);
DataSet ds = new DataSet();
adap.Fill(ds);
datakhachhang.DataSource = ds.Tables[0];
MessageBox.Show("Lu d liu thnh cng", "Thng Bo",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void suakhachhang1()
{
try
{
// csdl.ketnoi();
if (txtmakhachhang.Text.Length != 0)
{
obj.suakhachhang(txtmakhachhang.Text.ToString(),
txthoten.Text.ToString(),datetimengayan.Text.ToString(),txtmahoadon.Text.ToStr
ing(), cbgioitinh.Text.ToString());
string sql = "SELECT * FROM khachhang";
OleDbCommand hien = new OleDbCommand(sql, csdl.Ole);
OleDbDataAdapter adap = new OleDbDataAdapter(hien);
DataSet ds = new DataSet();
adap.Fill(ds);
datakhachhang.DataSource = ds.Tables[0];
// MessageBox.Show("Tong so luong la:" +
ds.Tables[0].Rows[0][0].ToString());
MessageBox.Show("Sua d liu thnh cng", "Thng Bo",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("Xin Hay Nhap ma nhan vien");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

Click p vo button v gi chng trnh con tng ng ta s c cc nt chc


nng, v d:
Nt Thm
private void button1_Click(object sender, EventArgs e)
{
themkhachhang1();
}

hin th d liu bng Access Khch hng ln Datagridview ca WinForm, ta


dng on code sau:
private void khach_hang_Load(object sender, EventArgs e)
{
csdl.ketnoi();
string sql = "SELECT * FROM khachhang";
OleDbCommand hien = new OleDbCommand(sql, csdl.Ole);
OleDbDataAdapter adap = new OleDbDataAdapter(hien);
DataSet ds = new DataSet();
adap.Fill(ds);
datakhachhang.DataSource = ds.Tables[0];
}

c. Truy vn (Query)
C th lm trn Microsoft Access 2007 nhng y ta lm trc tip trn Visual
Studio tin cho vic sa code cng nh debug:
*Lit k cc query c trong chng trnh:
- bng khach_hang c 3 query nm 2 buttons: s lng khch hng,
chi ph khch trong 1 thng, tm kim
- bng nhan_vien c 1 query nm button tm nhn vin
- bng hoa_don c 2 query nm 2 buttons: xem chi ph ca ha n,
tng doanh thu:
- bng thuc_don c 1 query nm button tm kim
*Code cc query:
Bng khach_hang
- s lng khch hng:
private void button5_Click(object sender, EventArgs e)
{
//csdl.ketnoi();

string sql = "SELECT Count(khachhang.[tenkhachhang]) AS


CountOftenkhachhang FROM khachhang";
OleDbCommand hien = new OleDbCommand(sql, csdl.Ole);
OleDbDataAdapter adap = new OleDbDataAdapter(hien);
DataSet ds = new DataSet();
adap.Fill(ds);
//datakhachhang.DataSource = ds.Tables[0];
MessageBox.Show("tng s khch hng:" + ds.Tables[0].Rows[0]
[0].ToString(),"thng bo");
}

-chi ph trong 1 thng:


private void button7_Click(object sender, EventArgs e)
{
csdl.ketnoi();
if (txthoten.Text.Length == 0)
{
MessageBox.Show("nhp tn khch hng ", "thng bo",
MessageBoxButtons.OK);
txthoten.Focus();
}
else
{
string sql = "SELECT Sum(hoadon.chiphi) AS SumOfchiphi FROM
khachhang INNER JOIN hoadon ON khachhang.makhachhang = hoadon.makhachhang
WHERE khachhang.tenkhachhang like '%" + txthoten.Text + "%'";
OleDbCommand hien = new OleDbCommand(sql, csdl.Ole);
OleDbDataAdapter adap = new OleDbDataAdapter(hien);
DataSet ds = new DataSet();
adap.Fill(ds);
//datakhachhang.DataSource = ds.Tables[0];
MessageBox.Show("chi ph ca khch hng ny trong thng va
qua l:" + ds.Tables[0].Rows[0][0].ToString(), "thng bo");
}
}

-tm kim theo m khch hng trong bng khach_hang:


private void button6_Click(object sender, EventArgs e)
{
csdl.ketnoi();
if (txtmakhachhang.Text.Length == 0)
{
MessageBox.Show("nhp m khch hng ", "thng bo",
MessageBoxButtons.OK);
txtmakhachhang.Focus();
}
else
{
string sql = "SELECT khachhang.makhachhang,
khachhang.tenkhachhang, khachhang.ngayan, khachhang.mahoadon,
khachhang.gioitinh FROM khachhang WHERE khachhang.tenkhachhang like '%" +
txthoten.Text + "%'";
OleDbCommand hien = new OleDbCommand(sql, csdl.Ole);
OleDbDataAdapter adap = new OleDbDataAdapter(hien);

DataSet ds = new DataSet();


adap.Fill(ds);
datakhachhang.DataSource = ds.Tables[0];
//MessageBox.Show("tng s khch hng:" + ds.Tables[0].Rows[0]
[0].ToString(), "thng bo");
}
}

Bng nhan_vien:
-tm nhn vin theo m nhn vin:
private void button5_Click(object sender, EventArgs e)
{
if (txtmnv.Text.Length == 0)
{
MessageBox.Show("nhp m nhn vin ", "thng bo",
MessageBoxButtons.OK);
txtmnv.Focus();
}
else
{
string sql = "SELECT nhanvien.[manv], nhanvien.[hoten],
nhanvien.[quequan], nhanvien.[gioitinh], nhanvien.[mabophan], nhanvien.
[sodienthoai] FROM nhanvien WHERE nhanvien.manv like '%" +
int.Parse(txtmnv.Text) + "%'";
OleDbCommand hien = new OleDbCommand(sql, csdl.Ole);
OleDbDataAdapter adap = new OleDbDataAdapter(hien);
DataSet ds = new DataSet();
adap.Fill(ds);
datanv.DataSource = ds.Tables[0];
}
}

Bng hoa_don:
-xem chi ph ha n theo m ha n
private void button5_Click_1(object sender, EventArgs e)
{
csdl.ketnoi();
if (txtmahoadon.Text.Length == 0)
{
MessageBox.Show("hy nhp m ha n", "thong bao",
MessageBoxButtons.OK);
txtmahoadon.Focus();
}
else
{
string sql = "SELECT hoadon.[mahoadon], hoadon.[ngay], hoadon.
[chiphi], hoadon.[mota], hoadon.[manv], hoadon.[makhachhang]FROM nhanvien
INNER JOIN (khachhang INNER JOIN hoadon ON khachhang.makhachhang =
hoadon.makhachhang) ON nhanvien.manv = hoadon.manv WHERE hoadon.mahoadon like
'%" + txtmahoadon.Text + "%'";

OleDbCommand hien = new OleDbCommand(sql, csdl.Ole);


OleDbDataAdapter adap = new OleDbDataAdapter(hien);
DataSet ds = new DataSet();
adap.Fill(ds);
//datahoadon.DataSource = ds.Tables[0];
MessageBox.Show("chi ph ht:" + ds.Tables[0].Rows[0]
[2].ToString());
}
}

-tng doanh thu ca tt c cc ha n:


private void button6_Click(object sender, EventArgs e)
{
string sql = "SELECT Sum(hoadon.chiphi) AS SumOfchiphi FROM
hoadon;";
OleDbCommand hien = new OleDbCommand(sql, csdl.Ole);
OleDbDataAdapter adap = new OleDbDataAdapter(hien);
DataSet ds = new DataSet();
adap.Fill(ds);
//datahoadon.DataSource = ds.Tables[0];
MessageBox.Show("tng doanh thu:" + ds.Tables[0].Rows[0]
[0].ToString());
}

Bng thuc_don:
-tm kim n theo m n:
private void button4_Click(object sender, EventArgs e)
{
csdl.ketnoi();
if (txtmadoan.Text.Length == 0)
{
MessageBox.Show("nhp m n", "thong bao",
MessageBoxButtons.OK);
txtmadoan.Focus();
}
else
{
string sql = "SELECT thucdon.[madoan], thucdon.[tendoan],
thucdon.[trangthai], thucdon.[ngaynhap], thucdon.[gia], thucdon.[mabophan]FROM
thucdon WHERE thucdon.madoan like '%" + txtmadoan.Text + "%'";
OleDbCommand hien = new OleDbCommand(sql, csdl.Ole);
OleDbDataAdapter adap = new OleDbDataAdapter(hien);
DataSet ds = new DataSet();
adap.Fill(ds);
//datahoadon.DataSource = ds.Tables[0];
MessageBox.Show("trng thi sn phm trong kho:" +
ds.Tables[0].Rows[0][2].ToString(),"thng bo");
}
}

IV. Kt lun:
1. Kt qu thu c:
2. Hn ch ca chng trnh:
3. Hng pht trin chng trnh

You might also like