SlideShare a Scribd company logo
1 of 33
BÁO CÁO THỰC TẬP TUẦN 4
ĐỀ TÀI:
PHÁT TRIỂN PHẦN MỀM QUẢ LÍ KHÁCH HÀNG
TRÊN ANDROID TRÊN ĐIỆN THOẠI SỬ DỤNG
ANDROID
Xây Dựng các class liên quan khách
hàng, cơ hội, database
GVHD : Thầy Võ Đỗ Thắng
SVTH : Trương Duy Linh
MSSV : 51101863
- Cấu trúc thư mục
 Trong cấu trúc trên có 3 pakage: com.example.demoqlkh, donhang, sanphamco.
- Class MainActivity
public class MainActivity extends ActionBarActivity {
//Định nghĩa các requestCode, resultCode truyền đi
//trong Intent
public static final int MO_ACTIVITY_THEM_KHACH_HANG=1;
public static final int MO_ACTIVITY_SUA_KHACH_HANG=2;
public static final int THEM_KHACH_HANG_THANHCONG=3;
public static final int SUA_KHACH_HANG_THANHCONG=4;
public static final int XEM_DS_KHACH_HANG=5;
public static final int CAPNHAT_DS_KHACH_HANG_THANHCONG=6;
public static final int MO_ACTIVITY_CHUYEN_LEVEL=9;
public static final int CHUYEN_LEVEL_THANHCONG=10;
public static final int MO_ACTIVITY_THEM_DON_HANG=11;
public static final int THEM_DON_HANG_THANHCONG=12;
public static final int MO_ACTIVITY_SUA_DON_HANG=13;
public static final int SUA_DON_HANG_THANHCONG=14;
public static final int MO_ACTIVITY_DANHSACH_DON_HANG=15;
public static final int MO_ACTIVITY_DANHSACH_SAN_PHAM=20;
public static final int CAPNHAT_DS_SAN_PHAM_THANHCONG=6;
public static final int MO_ACTIVITY_SUA_SAN_PHAM=16;
public static final int SUA_SAN_PHAM_THANHCONG=17;
public static final int MO_ACTIVITY_THEM_SAN_PHAM=18;
public static final int THEM_SAN_PHAM_THANHCONG=19;
public static final int CAPNHAT_DS_DON_HANG_THANHCONG=16;
public static final int MO_DS_COHOI=20;
public static final int CAP_NHAT_DS_CO_HOI_THANHCONG=21;
//lvallkh hiển thị danh sách tất cả các khách hàng
ListView lvallkh;
EditText search;
ArrayList<KhachHang>custo;
ArrayAdapter<KhachHang> adaptercusto;
private static ArrayList<LevelKhachHang>arrlvkh=new ArrayList<LevelKhachHang>();
private int pos=-1;
private Button btnchonlevel;
DatabaseHandler db;
private KhachHang khach;
int posi=-1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lvallkh=(ListView)findViewById(R.id.lvallkh);
search=(EditText)findViewById(R.id.txtsearch);
custo=new ArrayList<KhachHang>();
//tạo truy vấn database
db=new DatabaseHandler(this);
btnchonlevel=(Button)findViewById(R.id.btnxoatt);
KhachHang custom=null;
//khởi tạo 3 level
LevelKhachHang l1=new LevelKhachHang("VIP");
LevelKhachHang l2=new LevelKhachHang("THUONG");
LevelKhachHang l3=new LevelKhachHang("TIMNANG");
//-------------------------------------------------------------
//kiểm tra xam dữ liệu có khách hàng nào hay chưa
//nếu chưa thì thêm vào
// nếu có thì đọc ra từ CSDL
if(db.getKhachHangCount()==0){
Log.d("12345", "6789");
custom=new KhachHang("1","Nam","1","1.@gmail.com","VIP","0",true);
l1.Themkh(custom);
db.addKhachHang(custom);
arrlvkh.add(l1);
custo.add(custom);
//-----------------
custom=new KhachHang("2","Tien","2","2.@gmail.com","TIMNANG","0",true);
l2.Themkh(custom);
db.addKhachHang(custom);
arrlvkh.add(l2);
custo.add(custom);
//-----------------
custom=new KhachHang("3","An","3","3.@gmail.com","THUONG","0",true);
l3.Themkh(custom);
db.addKhachHang(custom);
arrlvkh.add(l3);
custo.add(custom);
}
else{
for(KhachHang kh:db.getAllKhachHang()){
if(kh.getlevel().equals("VIP")){
l1.Themkh(kh);
custo.add(kh);
Log.d("LEVEL1", kh.getlevel());
}
else if(kh.getlevel().equals("THUONG")){
l2.Themkh(kh);
custo.add(kh);
Log.d("LEVEL2", kh.getlevel());
}
else {
l3.Themkh(kh);
custo.add(kh);
Log.d("LEVEL3", kh.getlevel());
}
}
arrlvkh.add(l1);
arrlvkh.add(l2);
arrlvkh.add(l3);
}
them_don_hang_va_tinh_gia();
adaptercusto=new
ArrayAdapter<KhachHang>(this,android.R.layout.simple_list_item_1,custo);
lvallkh.setAdapter(adaptercusto);
adaptercusto.notifyDataSetChanged();
//Đăng kí contextmenu
registerForContextMenu(btnchonlevel);
//Xử lí sự kiện khi gõ từ vào thanh search
search.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
adaptercusto.notifyDataSetChanged();
MainActivity.this.adaptercusto.getFilter().filter(s);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
//xử lí sự kiên click vào item của ListView
//lấy vi trí của khách hàng gọi hiển thị danh sách đơn hàng
lvallkh.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
khach=custo.get(position);
posi=position;
Intent inte=new Intent(MainActivity.this,DanhSachDonHang.class);
Bundle bundle=new Bundle();
bundle.putSerializable("KHACHHANG", khach);
inte.putExtra("DATA", bundle);
startActivityForResult(inte,MainActivity.MO_ACTIVITY_DANHSACH_DON_HANG);
}
});
}
//truy xuất CSDL thêm đơn hàng tương ứng với mỗi khách hàng
// tính coins cho khách hàng dựa trên các đơn hàng
public void them_don_hang_va_tinh_gia(){
for(KhachHang kha:custo){
int gia=0;
for(DonHang don:db.getdsdh_ofkh(Integer.parseInt(kha.getma()))){
kha.Themdh(don);
gia+=Integer.parseInt(don.getsmoney());
}
kha.setcoins(String.valueOf(gia));
db.updateKhachHang(kha);
}
}
//dăng kí contextmenu
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
// TODO Auto-generated method stub
super.onCreateContextMenu(menu, v, menuInfo);
getMenuInflater().inflate(R.menu.context_menu_level, menu);
}
//xử lí sự kiên click vào item menu gồm:
// xem danh sách khác hàng của level VIP, THUONG, TIMNANG
@Override
public boolean onContextItemSelected(MenuItem item){
switch(item.getItemId()){
case R.id.mnuvip:
pos=0;
doDanhSachKhachHang();
break;
case R.id.mnunormal:
pos=1;
doDanhSachKhachHang();
break;
case R.id.mnukhtimnang:
pos=2;
doDanhSachKhachHang();
break;
}
return super.onContextItemSelected(item);
}
//Intent goi Activity DanhSachKhachHang
public void doDanhSachKhachHang()
{
Intent i=new Intent(this, DanhSachKhachHang.class);
Bundle bundle=new Bundle();
bundle.putSerializable("LEVEL", arrlvkh.get(pos));
i.putExtra("DATA", bundle);
startActivityForResult(i,MainActivity.XEM_DS_KHACH_HANG);
}
//Nhận result trả về từ cập nhật danh sách khách hàng,
//cập nhật danh sách đơn hàng thành công
//có 2 cập nhật trên mảng arrlvkh và custo
@Override
public void onActivityResult(int requestCode,int resultCode,Intent data){
super.onActivityResult(requestCode, resultCode, data);
if(resultCode==MainActivity.CAPNHAT_DS_KHACH_HANG_THANHCONG){
Bundle bundle=data.getBundleExtra("DATA");
LevelKhachHang lvk=(LevelKhachHang)bundle.getSerializable("LEVEL");
arrlvkh.get(pos).getListKH().clear();
arrlvkh.get(pos).getListKH().addAll(lvk.getListKH());
custo.clear();
for(KhachHang k:db.getAllKhachHang()){
custo.add(k);
Log.d("KhachHang",k.getten());
}
them_don_hang_va_tinh_gia();
adaptercusto.notifyDataSetChanged();
}
else if(resultCode==MainActivity.CAPNHAT_DS_DON_HANG_THANHCONG){
Bundle bundle=data.getBundleExtra("DATA");
KhachHang k=(KhachHang)bundle.getSerializable("KHACHHANG");
custo.get(posi).getListDH().clear();
custo.get(posi).getListDH().addAll(k.getListDH());
int p=0;
for(DonHang d:custo.get(posi).getListDH()){
p+=Integer.parseInt(d.getsmoney());
}
custo.get(posi).setcoins(String.valueOf(p));
db.updateKhachHang(custo.get(posi));
adaptercusto.notifyDataSetChanged();
}
}
//hàm trả về danh sách khách hàng của mỗi level
public static ArrayList<LevelKhachHang> getListLevel(){
return arrlvkh;
}
}
- Class LevelKhachHang
public class LevelKhachHang implements Serializable {
private static final long serialVersionUID = 1L;
//mãng danh sách khách hàng
private ArrayList<KhachHang> arrkh =new ArrayList<KhachHang>();
//tên level
private String ten;
//hàm tạo với tham số tên
public LevelKhachHang(String ten) {
this.ten=ten;
}
//phương thức get,set tên của level
public String getTenlv(){
return this.ten;
}
public void setTenlv(String ten){
this.ten=ten;
}
//hàm tạo không tham số
public LevelKhachHang() {
super();
}
//hàm thêm khách hàng của mỗi level
public void Themkh(KhachHang kh){
int i=0;
for(;i<arrkh.size();i++){
KhachHang old=arrkh.get(i);
if(old.getma().trim().equalsIgnoreCase(kh.getma().trim())){
break;
}
}
if(i<arrkh.size()){
arrkh.set(i, kh);
}
else{
arrkh.add(kh);
}
}
//get khách hàng tại vị trí index của level
public KhachHang get(int index){
return arrkh.get(index);
}
//lấy số lượng khách hàng của level đó
public int size(){
return arrkh.size();
}
//lấy danh sách khách hàng của level đó
public ArrayList<KhachHang> getListKH(){
return this.arrkh;
}
}
- Class KhachHang chứa các thuộc tính liên quan khách hàng(mã khách hàng, tên, giới
tính, số điện thoại, email, số coins), và các tác vụ get,set.
public class KhachHang implements Serializable{
private static final long serialVersionUID = 1L;
private String ma;
private String ten;
private String sdt;
private String email;
private String level;
private String coins;
private boolean sex;
private ArrayList<DonHang> arrdh= new ArrayList<DonHang>();
//Hàm tạo không tham số
public KhachHang(){
}
//hàm tạo với các tham số mã, tên, sdt, email, level, coins
public KhachHang(String ma,String ten,String sdt,String email,String level,String coins,boolean
sex){
this.ma=ma;
this.ten=ten;
this.sdt=sdt;
this.email=email;
this.sex=sex;
this.coins=coins;
this.level=level;
}
//phương thức get,set cho tên
public String getten(){return ten;}
public void setten(String ten){this.ten=ten;}
//phương thức get,set cho mã
public String getma(){return ma;}
public void setma(String ma){this.ma=ma;}
//phương thức get,set cho sdt
public String getsdt(){return sdt;}
public void setsdt(String sdt){this.sdt=sdt;}
//phương thức get,set cho emial
public String getemail(){return email;}
public void setemail(String email){this.email=email;}
//phương thức get,set cho level
public String getlevel(){return level;}
public void setlevel(String level){this.level=level;}
//phương thức get,set cho coins
public String getcoins(){return coins;}
public void setcoins(String coin){this.coins=coin;}
//phương thức get,set cho sex
public boolean getsex(){return sex;}
public void setsex(boolean sex){this.sex=sex;}
//phương thức thêm đơn hàng của mỗi khách hàng
public void Themdh(DonHang dh){
int i=0;
for(;i<arrdh.size();i++){
DonHang old=arrdh.get(i);
if(old.getmaDH().trim().equalsIgnoreCase(dh.getmaDH().trim())){
break;
}
}
if(i<arrdh.size()){
arrdh.set(i, dh);
}
else{
arrdh.add(dh);
}
}
//phương thức lấy đơn hàng tại index
public DonHang get(int index){
return arrdh.get(index);
}
//lấy số lượng đơn hàng của khách hàng
public int size(){
return arrdh.size();
}
//lấy danh sách đơn hàng của khách hàng
public ArrayList<DonHang> getListDH(){
return this.arrdh;
}
//--------------------------------------------
//viết lại hàm chuyển thành chuổi toString
@Override
public String toString()
{
return this.ma+"---"+"Ten: " +this.ten +"n"
+"Level: "+this.level+"---"+"Coins: "+this.coins;
}
}
- Class DanhSachKhachHang
//Class Danh sách khách hàng hiển thị danh sách khách hàng
//Thiết lập hàm goi các tác vụ thêm,sửa, xóa khách hàng
//chuyển level khách hàng, xem danh sách cơ hội
public class DanhSachKhachHang extends Activity {
ImageButton imgback;
ListView lv;
TextView txtshowlv;
Button btnthemkh;
ArrayList<KhachHang>arrkh =null;
AdapterKhachHang adapter=null;
LevelKhachHang lvkh=null;
private KhachHang cus=null;
int position =-1;
DatabaseHandler db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dskh);
db=new DatabaseHandler(this);
txtshowlv=(TextView)findViewById(R.id.txtlevel);
imgback=(ImageButton)findViewById(R.id.imgback);
btnthemkh=(Button)findViewById(R.id.btnthemkhachhang);
lv=(ListView)findViewById(R.id.lvkhachhang);
getdata();
Event();
registerForContextMenu(lv);
}
//lấy danh sách khách hàng của mỗi level truyền từ class MainActivity
public void getdata(){
Intent i=getIntent();
Bundle b=i.getBundleExtra("DATA");
lvkh=(LevelKhachHang)b.getSerializable("LEVEL");
arrkh=lvkh.getListKH();
them_don_hang_va_tinh_gia();
adapter=new AdapterKhachHang(this,R.layout.item_layout_custom,arrkh);
lv.setAdapter(adapter);
txtshowlv.setText(lvkh.getTenlv());
}
//Xử lí các sự kiện
public void Event(){
//quay lại layout trước đó, truyền gói LEVEL qua MainActivity
imgback.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent i=getIntent();
Bundle b=new Bundle();
b.putSerializable("LEVEL", lvkh);
i.putExtra("DATA", b);
setResult(MainActivity.CAPNHAT_DS_KHACH_HANG_THANHCONG,i);
finish();
}
});
//bắt sự kiện click vào mỗi item
lv.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int arg, long id) {
cus=arrkh.get(arg);
position=arg;
return false;
}
});
//Lấy sư kiện click button thêm khách hàng
btnthemkh.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
doThemKhachHang();
}
});
}
//Đăng kí menu context_menu_kh khi click vào mỗi khách hàng
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
// TODO Auto-generated method stub
super.onCreateContextMenu(menu, v, menuInfo);
getMenuInflater().inflate(R.menu.context_menu_kh, menu);
}
//Bắt sự kiện click các item khi click các memu.
@Override
public boolean onContextItemSelected(MenuItem item){
switch(item.getItemId()){
case R.id.mnuchuyenkh:doChuyenKhachHang();break;
case R.id.mnusuakh:doSuaKhachHang();break;
case R.id.mnuxoakh:doXoaKhachHang();break;
case R.id.mnucohoi:doDanhSachCoHoi();break;
case R.id.mnudsdh:doDanhSachDonHang();break;
}
return super.onContextItemSelected(item);
}
//Intent gọi Activity DanhSachCoHoi
public void doDanhSachCoHoi(){
Intent i=new Intent(this, DanhSachCoHoi.class);
Bundle bundle=new Bundle();
bundle.putSerializable("KHACHHANG", cus);
i.putExtra("DATA", bundle);
startActivityForResult(i,MainActivity.MO_DS_COHOI);
}
//Intent gọi Activity DanhSachDonHang
public void doDanhSachDonHang(){
//for(DonHang don:db.getdsdh_ofkh(Integer.parseInt(cus.getma()))){
// cus.Themdh(don);
//}
Intent i=new Intent(this, DanhSachDonHang.class);
Bundle bundle=new Bundle();
bundle.putSerializable("KHACHHANG", cus);
i.putExtra("DATA", bundle);
startActivityForResult(i,MainActivity.MO_ACTIVITY_DANHSACH_DON_HANG);
}
//Truy xuất vào cơ sở dữ liệu the tính coins của mỗi khách hàng
// dựa trên giá của các đơn hàng của khách hàng đó bằng cách truy suất
//dữ liêu trong cơ sở dữ liệu
public void them_don_hang_va_tinh_gia(){
for(KhachHang kha:arrkh){
int gia=0;
for(DonHang don:db.getdsdh_ofkh(Integer.parseInt(kha.getma()))){
kha.Themdh(don);
gia+=Integer.parseInt(don.getsmoney());
}
kha.setcoins(String.valueOf(gia));
db.updateKhachHang(kha);
}
}
//Xóa khách hàng dùng AlertDialog hiển thị form hỏi xóa
public void doXoaKhachHang() {
AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder.setTitle("XOA");
builder.setMessage("Bạn có chắc muốn xóa");
builder.setIcon(R.drawable.ic_launcher);
builder.setNegativeButton("Không", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.setPositiveButton("Có",new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which) {
arrkh.remove(cus);
db.delete_quanhe_KHDH_tu_KH(cus);
db.deleteKhachHang(cus);
for(DonHang do1:cus.getListDH()){
db.delete_quanhe_DH_SP_tu_DH(do1);
db.deleteDonHang(do1);
}
adapter.notifyDataSetChanged();
}
});
builder.show();
}
//Intent gọi Activity Activity_SuaKhachHang
public void doSuaKhachHang() {
Intent i=new Intent(this,Activity_SuaKhachHang.class);
Bundle b=new Bundle();
cus.setlevel(lvkh.getTenlv());
b.putSerializable("KHACHHANG", cus);
i.putExtra("DATA", b);
startActivityForResult(i,MainActivity.MO_ACTIVITY_SUA_KHACH_HANG);
}
//Intent gọi Activity Activity_ChuyenKhachHang
public void doChuyenKhachHang() {
Intent i=new Intent(this,Activity_ChuyenKhachHang.class);
Bundle b=new Bundle();
b.putSerializable("KHACHHANG", cus);
i.putExtra("DATA", b);
startActivityForResult(i,MainActivity.MO_ACTIVITY_CHUYEN_LEVEL);
}
//Intent goi Activity Activity_ThemKhachHang
public void doThemKhachHang(){
Intent i=new Intent(this, Activity_ThemKhachHang.class);
Bundle b=new Bundle();
b.putSerializable("KHACHHANG", cus);
i.putExtra("DATA", b);
startActivityForResult(i, MainActivity.MO_ACTIVITY_THEM_KHACH_HANG);
}
//Nhận các result từ viêc thêm,sửa,xóa khách hàng, xem danh sách đơn hàng
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(resultCode==MainActivity.SUA_KHACH_HANG_THANHCONG){
Bundle b=data.getBundleExtra("DATA");
KhachHang k=(KhachHang)b.getSerializable("KHACHHANG");
arrkh.set(position, k);
db.updateKhachHang(k);
adapter.notifyDataSetChanged();
}
else if(resultCode==MainActivity.THEM_KHACH_HANG_THANHCONG){
Bundle b=data.getBundleExtra("DATA");
KhachHang k=(KhachHang)b.getSerializable("KHACHHANG");
k.setlevel(lvkh.getTenlv());
arrkh.add(k);
db.addKhachHang(k);
adapter.notifyDataSetChanged();
}
else if(resultCode==MainActivity.CHUYEN_LEVEL_THANHCONG){
arrkh.remove(cus);
adapter.notifyDataSetChanged();
}
else if(resultCode==MainActivity.CAPNHAT_DS_DON_HANG_THANHCONG){
Bundle bundle=data.getBundleExtra("DATA");
KhachHang k=(KhachHang)bundle.getSerializable("KHACHHANG");
arrkh.get(position).getListDH().clear();
arrkh.get(position).getListDH().addAll(k.getListDH());
int p=0;
for(DonHang d:arrkh.get(position).getListDH()){
p+=Integer.parseInt(d.getsmoney());
}
arrkh.get(position).setcoins(String.valueOf(p));
db.updateKhachHang(arrkh.get(position));
adapter.notifyDataSetChanged();
}
}
}
- Class Activity_ChuyenKhachHang
public class Activity_ChuyenKhachHang extends Activity {
//mảng level
private static ArrayList<LevelKhachHang> arrlv=null;
//lvlevel hiển thị các lựa chọn để chuyển level
ListView lvlevel;
ImageButton imgapply;
//adapter chuyển dữ liệu từ ArratList arrlv thành dữ liệu trên ListView lvlevel
ArrayAdapter<LevelKhachHang>adapter;
KhachHang kh=null;
DatabaseHandler db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chuyen_level);
db=new DatabaseHandler(this);
lvlevel=(ListView)findViewById(R.id.lvlevel);
imgapply=(ImageButton)findViewById(R.id.imgapply);
//Intent lấy gói dữ liệu được truyền đi từ danh sách khách hàng
//do đó láy được khách hàng được truyền tới
Intent i=getIntent();
Bundle b=i.getBundleExtra("DATA");
kh=(KhachHang)b.getSerializable("KHACHHANG");
arrlv=MainActivity.getListLevel();
//khai báo adapter với layout danh sách single choose, lấy dữ liệu từ mảng arrlv
adapter=new
ArrayAdapter<LevelKhachHang>(this,android.R.layout.simple_list_item_single_choice,arrlv);
lvlevel.setAdapter(adapter);
//Lấy vị trí sự kiện click trên ListView, nếu CheckView được tick
// thì lấy vị trí level được tick tại position thêm vào level đó
// và thêm khách hàng vào cơ sở dữ liệu
lvlevel.setOnItemClickListener(new OnItemClickListener() {
Boolean somethingChecked=false;
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
if(somethingChecked){
CheckedTextView cv=(CheckedTextView)view;
cv.setChecked(false);
}
CheckedTextView cv=(CheckedTextView)view;
if(!cv.isChecked()){
cv.setChecked(true);
arrlv.get(position).Themkh(kh);
db.chuyenKhachHang(kh,position);
}
somethingChecked=true;
}
});
//Bắt sự kiện khi nhấn button apply,
//thiết lập result thông báo thành công
imgapply.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
setResult(MainActivity.CHUYEN_LEVEL_THANHCONG);
finish();
}
});
}
}
- Class Activity_SuaKhachHang
public class Activity_SuaKhachHang extends Activity {
EditText txtma,txtten,txtsdt,txtemail;
Button btnxoa,btnluu;
RadioButton raNam;
KhachHang khachhang=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Gọi layout activity_them_khach_hang
setContentView(R.layout.activity_them_khach_hang);
//lấy id từ các View,Button của layout
txtma=(EditText)findViewById(R.id.txtma);
txtten=(EditText)findViewById(R.id.txtten);
txtsdt=(EditText)findViewById(R.id.txtsdt);
txtemail=(EditText)findViewById(R.id.txtemail);
btnxoa=(Button)findViewById(R.id.btnxoa);
btnluu=(Button)findViewById(R.id.btnluu);
raNam=(RadioButton)findViewById(R.id.raNam);
setdefault();
btnxoa.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
txtten.setText("");
txtsdt.setText("");
txtemail.setText("");
txtten.requestFocus();
}
});
btnluu.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String ten=txtten.getText()+"";
String sdt=txtsdt.getText()+"";
String email=txtemail.getText()+"";
Boolean sex=!raNam.isChecked();
khachhang.setten(ten);
khachhang.setsdt(sdt);
khachhang.setemail(email);
khachhang.setsex(sex);
//sau khi chỉnh sửa thì đóng gói dữ liệu và thiết lập
//result thành công
Intent i=getIntent();
Bundle b=new Bundle();
b.putSerializable("KHACHHANG",khachhang);
i.putExtra("DATA", b);
setResult(MainActivity.SUA_KHACH_HANG_THANHCONG,i);
finish();
}
});
}
//Thiết lâp các giá trị mặc định
//lấy gói DATA được truyền từ danh sách khách hàng
//thiết lập thông tin khách hàng lên các View
public void setdefault(){
Intent i=getIntent();
Bundle b=i.getBundleExtra("DATA");
khachhang=(KhachHang)b.getSerializable("KHACHHANG");
txtma.setText(khachhang.getma());
txtten.setText(khachhang.getten());
txtsdt.setText(khachhang.getsdt());
txtemail.setText(khachhang.getemail());
raNam.setChecked(true);
if(khachhang.getsex()){
raNam.setChecked(false);
}
}
}
- Class Activity_ThemKhachHang
public class Activity_ThemKhachHang extends Activity {
EditText txtma,txtten,txtsdt,txtemail;
Button btnxoa,btnluu;
RadioButton raNam;
DatabaseHandler db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//gọi layout activity_them_khach_hang
setContentView(R.layout.activity_them_khach_hang);
//Lấy Id các View từ layout
txtma=(EditText)findViewById(R.id.txtma);
txtten=(EditText)findViewById(R.id.txtten);
txtsdt=(EditText)findViewById(R.id.txtsdt);
txtemail=(EditText)findViewById(R.id.txtemail);
btnxoa=(Button)findViewById(R.id.btnxoa);
btnluu=(Button)findViewById(R.id.btnluu);
raNam=(RadioButton)findViewById(R.id.raNam);
//truy vấn vào cơ sở dữ liệu
db=new DatabaseHandler(this);
//thiết lập clear các View khi nhấn xóa
btnxoa.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
txtma.setText("");
txtten.setText("");
txtsdt.setText("");
txtemail.setText("");
txtma.requestFocus();
}
});
//Khi lưu dữ liệu được lưu vào cus
//đóng gói DATA truyền đi,thiết lập result thành công
btnluu.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String ma=txtma.getText()+"";
String ten=txtten.getText()+"";
String sdt=txtsdt.getText()+"";
String email=txtemail.getText()+"";
String tongtien="";
Boolean sex=!raNam.isChecked();
String level="";
if(db.checkTrung(ma,"id","KhachHang")==0){
KhachHang cus= new KhachHang(ma,ten,sdt,email,level,tongtien,sex);
Intent i=getIntent();
Bundle b=new Bundle();
b.putSerializable("KHACHHANG", cus);
i.putExtra("DATA", b);
setResult(MainActivity.THEM_KHACH_HANG_THANHCONG,i);
finish();
}
}
});
}
}
- Class AdapterKhachHang
public class AdapterKhachHang extends ArrayAdapter<KhachHang> {
Activity context;
int layoutId;
ArrayList<KhachHang> arrkhachhang;
public AdapterKhachHang(Activity context,int textViewResourceId, ArrayList<KhachHang>
objects) {
super(context,textViewResourceId, objects);
this.context=context;
this.layoutId=textViewResourceId;
this.arrkhachhang= objects;
}
@Override
public View getView(int position,View convertView,ViewGroup parent){
convertView=context.getLayoutInflater().inflate(layoutId, null);
TextView ten=(TextView)convertView.findViewById(R.id.txttenkh);
TextView coins=(TextView)convertView.findViewById(R.id.txtcoins);
ImageView img=(ImageView)convertView.findViewById(R.id.imageView1);
KhachHang kh=arrkhachhang.get(position);
ten.setText(kh.getten());
coins.setText(kh.getcoins());
img.setImageResource(R.drawable.girlicon);
if(!kh.getsex()){
img.setImageResource(R.drawable.boyicon);
}
return convertView;
}
}
- Class CoHoi tạo các thuộc tính và các tác vu get, set
public class CoHoi {
private String tench;
private String mach;
private String ngaych;
private String makh_of_ch;
//hàm tạo CoHoi không tham số
public CoHoi(){};
//hàm tạo CoHoi có tham số: mã cơ hội, tên, ngày thêm, mã khách hàng của cơ hội
public CoHoi(String mach,String tench,String ngaych,String makh_of_ch)
{
this.mach=mach;
this.tench=tench;
this.ngaych=ngaych;
this.makh_of_ch=makh_of_ch;
}
//các tác vụ get, set cho ten,ma ngay,makh
public String gettench(){return this.tench;}
public String getmach(){return this.mach;}
public String getngaych(){return this.ngaych;}
public String getmakh_of_ch(){return this.makh_of_ch;}
public void setmach(String ma){this.mach=ma;}
public void settench(String ten){this.tench=ten;}
public void setngaych(String ngay){this.ngaych=ngay;}
public void setmakh_of_ch(String makh_of_ch){this.makh_of_ch=makh_of_ch;}
//viết lại hàm toString
@Override
public String toString(){
return this.mach+" "+this.tench+" "+this.ngaych;
}
}
- Class DanhSachCoHoi
//class này thiện danh sách các cơ hội
//thêm các cơ hội, xóa các cơ hội
public class DanhSachCoHoi extends Activity{
private ArrayList<CoHoi> arrch=new ArrayList<CoHoi>();
AdapterChoHoi adapter=null;
ListView listcohoi;
EditText txttench,txtngaych,txtmach1;
Button addch,xoach;
DatabaseHandler db;
int so=0;
KhachHang kh=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dsch);
listcohoi=(ListView)findViewById(R.id.listcohoi);
txttench=(EditText)findViewById(R.id.txttench);
txtngaych=(EditText)findViewById(R.id.txtngaych);
txtmach1=(EditText)findViewById(R.id.txtmach1);
addch=(Button)findViewById(R.id.btnaddch);
xoach=(Button)findViewById(R.id.btnxoach);
db=new DatabaseHandler(this);
getData();
//thiết lập Adapter theo cấu trúc cơ hội
adapter=new AdapterChoHoi(this,R.layout.item_cohoi,arrch);
listcohoi.setAdapter(adapter);
// thực hiện sự kiện thêm cơ hội
addch.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String ma=txtmach1.getText()+"";
String ten=txttench.getText()+"";
String ngay=txtngaych.getText()+"";
if(db.checkTrung(ma,"ma_ch","Cohoi")==0){
CoHoi ch=new CoHoi(ma,ten,ngay,kh.getma());
arrch.add(ch);
db.addCoHoi(ch);
adapter.notifyDataSetChanged();
txttench.setText("");
txtngaych.setText("");
txttench.requestFocus();
}
}
});
//thực hiện sự kiện xóa các cơ hội,có thể xóa 1 hoặc nhiều
xoach.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
for(int i=listcohoi.getChildCount()-1;i>=0;i--){
View t=listcohoi.getChildAt(i);
CheckBox ch=(CheckBox)t.findViewById(R.id.chkitem);
if(ch.isChecked()){
db.deleteCoHoi(arrch.get(i));
arrch.remove(i);
}
}
adapter.notifyDataSetChanged();
}
});
adapter.notifyDataSetChanged();
}
//Lấy khách hàng sẽ thêm cơ hội
public void getData(){
Intent i=getIntent();
Bundle b=i.getBundleExtra("DATA");
kh=(KhachHang)b.getSerializable("KHACHHANG");
for(CoHoi c:db.getAllCoHoi(Integer.parseInt(kh.getma()))){
arrch.add(c);
}
}
}
- Class DatabaseHandle xây dựng cấu trúc các bảng dữ liệu và các hàm insert, update,
delete.
public class DatabaseHandler extends SQLiteOpenHelper {
private static final int DATABASE_VERSION=1;
private static final String DATABASE_NAME="KhachHangManager";
//table khach hang
private static final String TABLE_KHACHHANG="KhachHang";
private static final String ID="id";
private static final String NAME="name";
private static final String PHONE="phone";
private static final String EMAIL="email";
private static final String LEVEL="level";
private static final String COINS="coins";
private static final String SEX="sex";
//table donhang
private static final String TABLE_DONHANG="donhang";
private static final String ID_DH="id_dh";
private static final String NAME_DH="name_dh";
private static final String DATE_DH="date_dh";
private static final String MONEY_DH="sum_money";
//table product
private static final String TABLE_PRODUCT="product";
private static final String ID_SP="ma_sp";
private static final String NAME_SP="ten_sp";
private static final String INFO_SP="info_sp";
private static final String PRICE_SP="price_sp";
//table of_cus
private static final String TABLE_OF_CUS="of_cus";
private static final String ID_KH_OF_CUS="id_kh_of_cus";
private static final String ID_DH_OF_CUS="id_dh_of_cus";
//table bo_bill
private static final String TABLE_OF_BILL="of_bill";
private static final String ID_SP_OF_BILL="id_sp_of_bill";
private static final String ID_DH_OF_BILL="id_dh_of_bill";
//table co hoi
private static final String TABLE_COHOI="Cohoi";
private static final String ID_MA_CH="ma_ch";
private static final String ID_TEN_CH="ten_ch";
private static final String ID_NGAY_CH="ngay_ch";
private static final String ID_MA_KH_CH="ma_kh_ch";
public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
//thiết lập lệnh tạo các table và thực thi các lệnh đó
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
String CREATE_KhachHang_TABLE="CREATE TABLE
"+TABLE_KHACHHANG+" ( "
+ID+" INTEGER PRIMARY KEY, "
+NAME+" TEXT, "
+PHONE+" TEXT, "
+EMAIL+ " TEXT, "
+LEVEL+ " TEXT, "
+COINS+ " TEXT, "
+SEX+" TEXT )";
String CREATE_DonHang_TABLE="CREATE TABLE
"+TABLE_DONHANG+" ("
+ID_DH +" INTEGER PRIMARY KEY, "
+NAME_DH+ " TEXT, "
+DATE_DH+ " TEXT, "
+MONEY_DH+ " TEXT )";
String CREATE_Product_TABLE="CREATE TABLE
"+TABLE_PRODUCT+" ("
+ID_SP +" INTEGER PRIMARY KEY, "
+NAME_SP+ " TEXT, "
+INFO_SP+ " TEXT, "
+PRICE_SP+ " TEXT )";
String CREATE_of_cus_TABLE="CREATE TABLE
"+TABLE_OF_CUS+" ("
+ ID_KH_OF_CUS+ " INTEGER, "
+ ID_DH_OF_CUS+ " INTEGER, "
+" PRIMARY KEY
("+ID_KH_OF_CUS+","+ID_DH_OF_CUS+" )"
+" FOREIGN KEY("+ID_KH_OF_CUS+") REFERENCES "
+TABLE_KHACHHANG+"( "+ID+") ON DELETE CASCADE ON UPDATE
CASCADE,"
+" FOREIGN KEY("+ID_DH_OF_CUS+") REFERENCES "
+TABLE_DONHANG+"( "+ID_DH+") ON DELETE CASCADE ON UPDATE
CASCADE )";
String CREATE_of_bill_TABLE="CREATE TABLE
"+TABLE_OF_BILL +
" ( "+ ID_DH_OF_BILL+" INTEGER, "
+ ID_SP_OF_BILL+" INTEGER, "
+ " PRIMARY KEY
("+ID_DH_OF_BILL+","+ID_SP_OF_BILL+" )"
+" FOREIGN KEY("+ID_DH_OF_BILL+")
REFERENCES " +TABLE_DONHANG+"( "+ID_DH+") ON DELETE CASCADE ON
UPDATE CASCADE,"
+" FOREIGN KEY("+ID_SP_OF_BILL+")
REFERENCES " +TABLE_PRODUCT+"( "+ID_SP+") ON DELETE CASCADE ON
UPDATE CASCADE )";
String CREATE_co_hoi_TABLE="CREATE TABLE "+TABLE_COHOI
+" ( "+ID_MA_CH +" TEXT PRIMARY KEY, "
+ ID_TEN_CH+" TEXT, "
+ ID_NGAY_CH+" TEXT, "
+ ID_MA_KH_CH+" INTEGER, "
+ "FOREIGN KEY("+ID_MA_KH_CH+")
REFERENCES "+TABLE_KHACHHANG+"("+ID+") ON DELETE CASCADE ON
UPDATE CASCADE )";
db.execSQL(CREATE_KhachHang_TABLE);
db.execSQL(CREATE_DonHang_TABLE);
db.execSQL(CREATE_Product_TABLE);
db.execSQL(CREATE_of_cus_TABLE);
db.execSQL(CREATE_of_bill_TABLE);
db.execSQL(CREATE_co_hoi_TABLE);
}
//xóa các table khi version thay đổi
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS "+TABLE_KHACHHANG);
db.execSQL("DROP TABLE IF EXISTS "+TABLE_DONHANG);
db.execSQL("DROP TABLE IF EXISTS "+TABLE_PRODUCT);
db.execSQL("DROP TABLE IF EXISTS "+TABLE_OF_CUS);
db.execSQL("DROP TABLE IF EXISTS "+TABLE_OF_BILL);
db.execSQL("DROP TABLE IF EXISTS "+TABLE_COHOI);
onCreate(db);
}
//add single KhachHang
public void addKhachHang(KhachHang khachhang){
SQLiteDatabase db=this.getWritableDatabase();
ContentValues values=new ContentValues();
values.put(NAME, khachhang.getten());
values.put(PHONE, khachhang.getsdt());
values.put(EMAIL, khachhang.getemail());
values.put(LEVEL, khachhang.getlevel());
values.put(COINS, khachhang.getcoins());
values.put(SEX, khachhang.getsex()?"Nam":"Nu");
//insert row
db.insert(TABLE_KHACHHANG, null, values);
db.close();
}
//read row
public KhachHang getKhachHang(int id){
SQLiteDatabase db=this.getReadableDatabase();
Cursor cursor=db.query(TABLE_KHACHHANG, new String[]
{ID,NAME}, ID +" = ?", new String[]{String.valueOf(id)}, null, null, null,null);
if(cursor!=null)
cursor.moveToFirst();
KhachHang khachhang=new
KhachHang(String.valueOf(cursor.getInt(0)),cursor.getString(1),cursor.getString(2),curs
or.getString(3),cursor.getString(4),cursor.getString(5),cursor.getString(6)=="Nam"?
true:false);
return khachhang;
}
//Trả về danh sách khách hàng đọng từ cơ sở dữ liệu
public ArrayList<KhachHang> getAllKhachHang(){
ArrayList<KhachHang> KhachHanglist=new ArrayList<KhachHang>();
String selectquery="SELECT * FROM "+TABLE_KHACHHANG;
SQLiteDatabase db=this.getReadableDatabase();
Cursor cursor=db.rawQuery(selectquery, null);
if(cursor.moveToFirst()){
do{
KhachHang khachhang=new KhachHang();
khachhang.setma(cursor.getString(0));
khachhang.setten(cursor.getString(1));
khachhang.setsdt(cursor.getString(2));
khachhang.setemail(cursor.getString(3));
khachhang.setlevel(cursor.getString(4));
khachhang.setcoins(cursor.getString(5));
khachhang.setsex((cursor.getString(6)=="Nam"?
true:false));
KhachHanglist.add(khachhang);
}while(cursor.moveToNext());
}
return KhachHanglist;
}
//lấy số lượng khách hàng đọc từ cơ sở dữ liệu
public int getKhachHangCount(){
String countQuery = "SELECT * FROM " + TABLE_KHACHHANG;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(countQuery, null);
int count = 0;
try {
if (cursor.moveToFirst()) {
count = cursor.getCount();
}
return count;
}
finally {
if (cursor != null) {
cursor.close();
db.close();
}
}
}
//cập nhật thông tin khách hàng trong cơ sở dữ liệu
public int updateKhachHang(KhachHang khachhang){
SQLiteDatabase db=this.getWritableDatabase();
ContentValues values=new ContentValues();
values.put(NAME, khachhang.getten());
values.put(PHONE, khachhang.getsdt());
values.put(SEX,khachhang.getsex()?"Nam":"Nu");
values.put(EMAIL, khachhang.getemail());
values.put(LEVEL, khachhang.getlevel());
values.put(COINS, khachhang.getcoins());
return db.update(TABLE_KHACHHANG, values, ID+" = ?", new
String[]{String.valueOf(khachhang.getma())});
}
// thay đổi level khách hàng bằng cách cập nhật lại côt level
//trong table KhachHang
public void chuyenKhachHang(KhachHang k,int i){
SQLiteDatabase db = this.getWritableDatabase();
if(i==0){k.setlevel("VIP");}
else if(i==1){k.setlevel("THUONG");}
else {k.setlevel("TIMNANG");}
updateKhachHang(k);
db.close();
}
//xóa khách hàng
public void deleteKhachHang(KhachHang khachhang){
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_KHACHHANG, ID + " = ?",
new String[] { String.valueOf(khachhang.getma()) });
db.close();
}
//lay Danh sach don hang cua khach hang
public ArrayList<DonHang> getdsdh_ofkh(int id){
ArrayList<DonHang> listdh=new ArrayList<DonHang>();
String query ="SELECT * FROM "+TABLE_OF_CUS +" WHERE
"+ID_KH_OF_CUS+" = "+id;
SQLiteDatabase db=this.getReadableDatabase();
Cursor cursor=db.rawQuery(query,null);
if(cursor.moveToFirst()){
do{
String query2 ="SELECT * FROM
"+TABLE_DONHANG +" WHERE "+ID_DH+" = "+cursor.getString(1);
Cursor cursor2=db.rawQuery(query2,null);
if(cursor2.moveToFirst()){
do{
DonHang dh=new DonHang();
dh.setmaDH(cursor2.getString(0));
dh.settenDH(cursor2.getString(1));
dh.setdate(cursor2.getString(2));
dh.setsmoney(cursor2.getString(3));
listdh.add(dh);
}while(cursor2.moveToNext());
}
}while(cursor.moveToNext());
}
return listdh;
}
//lay danh sach san pham cua don hang
public ArrayList<SanPham> getdssp_ofdh(int id){
ArrayList<SanPham> listsp=new ArrayList<SanPham>();
String query ="SELECT * FROM "+TABLE_OF_BILL +" WHERE
"+ID_DH_OF_BILL+" = "+id;
SQLiteDatabase db=this.getReadableDatabase();
Cursor cursor=db.rawQuery(query,null);
if(cursor.moveToFirst()){
do{
String query2 ="SELECT * FROM "+TABLE_PRODUCT
+" WHERE "+ID_SP+" = "+cursor.getString(1);
Cursor cursor2=db.rawQuery(query2,null);
if(cursor2.moveToFirst()){
do{
SanPham sp=new SanPham();
sp.setmaSP(cursor2.getString(0));
sp.settenSP(cursor2.getString(1));
sp.setthongtinSP(cursor2.getString(2));
sp.setprice(cursor2.getString(3));
listsp.add(sp);
}while(cursor2.moveToNext());
}
}while(cursor.moveToNext());
}
return listsp;
}
//them don hang vao 1 khach hang va vao csdl
public void addSanPham(SanPham sanpham){
SQLiteDatabase db=this.getWritableDatabase();
ContentValues values=new ContentValues();
values.put(ID_SP, sanpham.getmaSP());
values.put(NAME_SP, sanpham.gettenSP());
values.put(INFO_SP, sanpham.getthongtinSP());
values.put(PRICE_SP, sanpham.getprice());
//insert row
db.insert(TABLE_PRODUCT, null, values);
db.close();
}
//them san pham vao 1 don hang
public void addDonHang(DonHang donhang){
SQLiteDatabase db=this.getWritableDatabase();
ContentValues values=new ContentValues();
values.put(ID_DH, donhang.getmaDH());
values.put(NAME_DH, donhang.gettenDH());
values.put(DATE_DH, donhang.getdate());
values.put(MONEY_DH, donhang.getsmoney());
//insert row
db.insert(TABLE_DONHANG, null, values);
db.close();
}
//update don hang
public int updateDonHang(DonHang donhang){
SQLiteDatabase db=this.getWritableDatabase();
ContentValues values=new ContentValues();
values.put(ID_DH, donhang.getmaDH());
values.put(NAME_DH, donhang.gettenDH());
values.put(DATE_DH, donhang.getdate());
values.put(MONEY_DH, donhang.getsmoney());
return db.update(TABLE_DONHANG, values, ID_DH+" = ?", new
String[]{String.valueOf(donhang.getmaDH())});
}
//update san pham
public int updateSanPham(SanPham sanpham){
SQLiteDatabase db=this.getWritableDatabase();
ContentValues values=new ContentValues();
values.put(ID_SP, sanpham.getmaSP());
values.put(NAME_SP, sanpham.gettenSP());
values.put(INFO_SP, sanpham.getthongtinSP());
values.put(PRICE_SP, sanpham.getprice());
return db.update(TABLE_PRODUCT, values, ID_SP+" = ?", new String[]
{String.valueOf(sanpham.getmaSP())});
}
//xoa don hang
public void deleteDonHang(DonHang donhang){
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_DONHANG, ID_DH + " = ?",
new String[] { String.valueOf(donhang.getmaDH()) });
db.close();
}
//xoa delete_quanhe_KHDH_tu_KH
public void delete_quanhe_KHDH_tu_KH(KhachHang khachhang){
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_OF_CUS, ID_KH_OF_CUS + " = ?",
new String[] { String.valueOf(khachhang.getma()) });
db.close();
}
//xoa delete_quanhe_KHHD_tu_DH
public void delete_quanhe_KHDH_tu_DH(DonHang donhang){
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_OF_CUS, ID_DH_OF_CUS + " = ?",
new String[] { String.valueOf(donhang.getmaDH()) });
db.close();
}
//xoa delete_quanhe_DH_SP_tu_DH
public void delete_quanhe_DH_SP_tu_DH(DonHang donhang){
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_OF_BILL, ID_DH_OF_BILL + " = ?",
new String[] { String.valueOf(donhang.getmaDH()) });
db.close();
}
//xoa delete_quanhe_DHSP_tu_SP
public void delete_quanhe_DHSP_tu_SP(SanPham sanpham){
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_OF_BILL, ID_SP_OF_BILL + " = ?",
new String[] { String.valueOf(sanpham.getmaSP()) });
db.close();
}
//xoa san pham
public void deleteSanPham(SanPham sanpham){
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_PRODUCT, ID_SP + " = ?",
new String[] { String.valueOf(sanpham.getmaSP()) });
db.close();
}
//them vao bang of_cus
public void addof_cus(KhachHang khachhang,DonHang donhang){
SQLiteDatabase db=this.getWritableDatabase();
ContentValues values=new ContentValues();
values.put(ID_KH_OF_CUS, khachhang.getma());
values.put(ID_DH_OF_CUS, donhang.getmaDH());
//insert row
db.insert(TABLE_OF_CUS, null, values);
db.close();
}
//them vao bang of_bill
public void addof_bill(DonHang donhang,SanPham sanpham){
SQLiteDatabase db=this.getWritableDatabase();
ContentValues values=new ContentValues();
values.put(ID_DH_OF_BILL, donhang.getmaDH());
values.put(ID_SP_OF_BILL, sanpham.getmaSP());
//insert row
db.insert(TABLE_OF_BILL, null, values);
db.close();
}
public boolean chkDB(){
boolean chk = false;
SQLiteDatabase db = this.getWritableDatabase();
Cursor mCursor = db.rawQuery("SELECT * FROM " + TABLE_KHACHHANG,
null);
if (mCursor != null){
mCursor.moveToFirst();
if (mCursor.getInt(0) == 0){
chk = false;
}
}else{
chk = true;
}
db.close();
return chk;
}
//thêm 1 cơ hội vào CSDL
public void addCoHoi(CoHoi cohoi){
SQLiteDatabase db=this.getWritableDatabase();
ContentValues values=new ContentValues();
values.put(ID_MA_CH, cohoi.getmach());
values.put(ID_TEN_CH, cohoi.gettench());
values.put(ID_NGAY_CH, cohoi.getngaych());
values.put(ID_MA_KH_CH, cohoi.getmakh_of_ch());
//insert row
db.insert(TABLE_COHOI, null, values);
db.close();
}
// xóa cơ hội khỏi CSDL
public void deleteCoHoi(CoHoi cohoi){
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_COHOI, ID_MA_CH + " = ?",
new String[] { String.valueOf(cohoi.getmach()) });
db.close();
}
//Lấy danh sách cơ hội
public ArrayList<CoHoi> getAllCoHoi(int ma){
ArrayList<CoHoi> CoHoilist=new ArrayList<CoHoi>();
String selectquery="SELECT * FROM "+TABLE_COHOI+" WHERE
"+ID_MA_KH_CH+" = "+ma;
SQLiteDatabase db=this.getReadableDatabase();
Cursor cursor=db.rawQuery(selectquery, null);
if(cursor.moveToFirst()){
do{
CoHoi cohoi=new CoHoi();
cohoi.setmach(cursor.getString(0));
cohoi.settench(cursor.getString(1));
cohoi.setngaych(cursor.getString(2));
cohoi.setmakh_of_ch(cursor.getString(3));
CoHoilist.add(cohoi);
}while(cursor.moveToNext());
}
return CoHoilist;
}
//Kiểm tra khi thêm 1 khách hàng, 1 đơn hàng, 1 cơ hội, mã của nó
//có cùng với mã hiện tại hay chưa
public int checkTrung(String i,String column,String table){
String countQuery = "SELECT * FROM " + table+" WHERE
"+column+" = "+i;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(countQuery, null);
int count = 0;
try {
if (cursor.moveToFirst()) {
count = cursor.getCount();
}
return count;
}
finally {
if (cursor != null) {
cursor.close();
db.close();
}
}
}
}
Báo cáo tuần 4- Xây dựng các class liên quan khách hàng, cơ hội, database

More Related Content

Viewers also liked

Trabalho computação e editoração eletrônica
Trabalho computação e editoração eletrônicaTrabalho computação e editoração eletrônica
Trabalho computação e editoração eletrônicaJefferson Andrade
 
Exposicion de informatica grupo # 2
Exposicion de informatica grupo # 2Exposicion de informatica grupo # 2
Exposicion de informatica grupo # 2lilianavilla1989
 
Comenzar
ComenzarComenzar
ComenzarCLADC
 
Como manejar el dinero
Como manejar el dineroComo manejar el dinero
Como manejar el dinerozerausan
 
Niveles de lectura. unidad 3. (zully) copia
Niveles de lectura. unidad 3. (zully)   copiaNiveles de lectura. unidad 3. (zully)   copia
Niveles de lectura. unidad 3. (zully) copiamielesortizangela18
 
0.projecte en power point dolo pere_melina_carme_v4
0.projecte en power point dolo pere_melina_carme_v40.projecte en power point dolo pere_melina_carme_v4
0.projecte en power point dolo pere_melina_carme_v4dolo02
 
Imtroduccion a la comunicacio yajaira villalva
Imtroduccion a la comunicacio yajaira villalvaImtroduccion a la comunicacio yajaira villalva
Imtroduccion a la comunicacio yajaira villalvayjaira
 
PR 3 XM
PR 3 XMPR 3 XM
PR 3 XMunauoc
 
Documento 1(michael jordan powerpoint)
Documento 1(michael jordan powerpoint)Documento 1(michael jordan powerpoint)
Documento 1(michael jordan powerpoint)JudithRubio
 
Presentacion gerencia industrial.juan moreno
Presentacion gerencia industrial.juan morenoPresentacion gerencia industrial.juan moreno
Presentacion gerencia industrial.juan morenojuan angulo
 

Viewers also liked (20)

tjiopuiotjuyiotjot
tjiopuiotjuyiotjottjiopuiotjuyiotjot
tjiopuiotjuyiotjot
 
Sou teu figado
Sou teu figadoSou teu figado
Sou teu figado
 
Trabalho computação e editoração eletrônica
Trabalho computação e editoração eletrônicaTrabalho computação e editoração eletrônica
Trabalho computação e editoração eletrônica
 
Felinos
FelinosFelinos
Felinos
 
Apropiación y uso de la tecnología
Apropiación y uso de la tecnologíaApropiación y uso de la tecnología
Apropiación y uso de la tecnología
 
Presentation_NEW.PPTX
Presentation_NEW.PPTXPresentation_NEW.PPTX
Presentation_NEW.PPTX
 
Paraparaprapa
ParaparaprapaParaparaprapa
Paraparaprapa
 
Exposicion de informatica grupo # 2
Exposicion de informatica grupo # 2Exposicion de informatica grupo # 2
Exposicion de informatica grupo # 2
 
Comenzar
ComenzarComenzar
Comenzar
 
Boletín conect@dos octubre n°14
Boletín conect@dos octubre n°14Boletín conect@dos octubre n°14
Boletín conect@dos octubre n°14
 
Como manejar el dinero
Como manejar el dineroComo manejar el dinero
Como manejar el dinero
 
En tic confio
En tic confioEn tic confio
En tic confio
 
Niveles de lectura. unidad 3. (zully) copia
Niveles de lectura. unidad 3. (zully)   copiaNiveles de lectura. unidad 3. (zully)   copia
Niveles de lectura. unidad 3. (zully) copia
 
0.projecte en power point dolo pere_melina_carme_v4
0.projecte en power point dolo pere_melina_carme_v40.projecte en power point dolo pere_melina_carme_v4
0.projecte en power point dolo pere_melina_carme_v4
 
Imtroduccion a la comunicacio yajaira villalva
Imtroduccion a la comunicacio yajaira villalvaImtroduccion a la comunicacio yajaira villalva
Imtroduccion a la comunicacio yajaira villalva
 
Estructura
EstructuraEstructura
Estructura
 
PR 3 XM
PR 3 XMPR 3 XM
PR 3 XM
 
Documento 1(michael jordan powerpoint)
Documento 1(michael jordan powerpoint)Documento 1(michael jordan powerpoint)
Documento 1(michael jordan powerpoint)
 
Concurso TRT SC 2013
Concurso TRT SC 2013Concurso TRT SC 2013
Concurso TRT SC 2013
 
Presentacion gerencia industrial.juan moreno
Presentacion gerencia industrial.juan morenoPresentacion gerencia industrial.juan moreno
Presentacion gerencia industrial.juan moreno
 

Similar to Báo cáo tuần 4- Xây dựng các class liên quan khách hàng, cơ hội, database

Báo cáo tuần 5- Xây dựng các class liên quan Đơn hàng, sản phẩm, database
Báo cáo tuần 5- Xây dựng các class liên quan Đơn hàng, sản phẩm, databaseBáo cáo tuần 5- Xây dựng các class liên quan Đơn hàng, sản phẩm, database
Báo cáo tuần 5- Xây dựng các class liên quan Đơn hàng, sản phẩm, databaseDlinh Truong
 
Lớp kết nối csdl dùng jdbc trong java
Lớp kết nối csdl dùng jdbc trong javaLớp kết nối csdl dùng jdbc trong java
Lớp kết nối csdl dùng jdbc trong javaANHMATTROI
 
Thuc hanh ado.net_bai_03
Thuc hanh ado.net_bai_03Thuc hanh ado.net_bai_03
Thuc hanh ado.net_bai_03Thanh Điền
 
Cq lt hdt-th2011-02-tuan04
Cq lt hdt-th2011-02-tuan04Cq lt hdt-th2011-02-tuan04
Cq lt hdt-th2011-02-tuan04. .
 
The Art of Readable Code - DongPV
The Art of Readable Code - DongPVThe Art of Readable Code - DongPV
The Art of Readable Code - DongPVĐông Đô
 
Jniについて
JniについてJniについて
JniについてChu Chu
 
Speaker dang minh tuan javascript for php developer
Speaker dang minh tuan   javascript for php developerSpeaker dang minh tuan   javascript for php developer
Speaker dang minh tuan javascript for php developerAiTi Education
 
Javascript for php developer
Javascript for php developerJavascript for php developer
Javascript for php developerDang Tuan
 
Tu dong dat hang tu he thong ban le lon nhat trung quoc
Tu dong dat hang tu he thong ban le lon nhat trung quocTu dong dat hang tu he thong ban le lon nhat trung quoc
Tu dong dat hang tu he thong ban le lon nhat trung quochazzaz
 
Thuc tap tuan 4
Thuc tap tuan 4Thuc tap tuan 4
Thuc tap tuan 4Trần Nam
 
Thuc tap tuan 4
Thuc tap tuan 4Thuc tap tuan 4
Thuc tap tuan 4Trần Nam
 
Net06 asp.net applications & state management
Net06 asp.net applications & state managementNet06 asp.net applications & state management
Net06 asp.net applications & state managementhoangnguyentien
 
Phan thai trung tu dong dat hang tu he thong ban le lon nhat trung quoc
Phan thai trung   tu dong dat hang tu he thong ban le lon nhat trung quocPhan thai trung   tu dong dat hang tu he thong ban le lon nhat trung quoc
Phan thai trung tu dong dat hang tu he thong ban le lon nhat trung quocTrung Phan Thai
 

Similar to Báo cáo tuần 4- Xây dựng các class liên quan khách hàng, cơ hội, database (20)

Php day4
Php day4Php day4
Php day4
 
Báo cáo tuần 5- Xây dựng các class liên quan Đơn hàng, sản phẩm, database
Báo cáo tuần 5- Xây dựng các class liên quan Đơn hàng, sản phẩm, databaseBáo cáo tuần 5- Xây dựng các class liên quan Đơn hàng, sản phẩm, database
Báo cáo tuần 5- Xây dựng các class liên quan Đơn hàng, sản phẩm, database
 
Lớp kết nối csdl dùng jdbc trong java
Lớp kết nối csdl dùng jdbc trong javaLớp kết nối csdl dùng jdbc trong java
Lớp kết nối csdl dùng jdbc trong java
 
Thuc hanh ado.net_bai_03
Thuc hanh ado.net_bai_03Thuc hanh ado.net_bai_03
Thuc hanh ado.net_bai_03
 
Cq lt hdt-th2011-02-tuan04
Cq lt hdt-th2011-02-tuan04Cq lt hdt-th2011-02-tuan04
Cq lt hdt-th2011-02-tuan04
 
Aspnet 3.5 _05
Aspnet 3.5 _05Aspnet 3.5 _05
Aspnet 3.5 _05
 
Dsd05 02a-xml-rpca
Dsd05 02a-xml-rpcaDsd05 02a-xml-rpca
Dsd05 02a-xml-rpca
 
chuong_02.ppt
chuong_02.pptchuong_02.ppt
chuong_02.ppt
 
The Art of Readable Code - DongPV
The Art of Readable Code - DongPVThe Art of Readable Code - DongPV
The Art of Readable Code - DongPV
 
Jniについて
JniについてJniについて
Jniについて
 
Speaker dang minh tuan javascript for php developer
Speaker dang minh tuan   javascript for php developerSpeaker dang minh tuan   javascript for php developer
Speaker dang minh tuan javascript for php developer
 
Javascript for php developer
Javascript for php developerJavascript for php developer
Javascript for php developer
 
Tu dong dat hang tu he thong ban le lon nhat trung quoc
Tu dong dat hang tu he thong ban le lon nhat trung quocTu dong dat hang tu he thong ban le lon nhat trung quoc
Tu dong dat hang tu he thong ban le lon nhat trung quoc
 
Thuc tap tuan 4
Thuc tap tuan 4Thuc tap tuan 4
Thuc tap tuan 4
 
Thuc tap tuan 4
Thuc tap tuan 4Thuc tap tuan 4
Thuc tap tuan 4
 
Net06 asp.net applications & state management
Net06 asp.net applications & state managementNet06 asp.net applications & state management
Net06 asp.net applications & state management
 
Phan thai trung tu dong dat hang tu he thong ban le lon nhat trung quoc
Phan thai trung   tu dong dat hang tu he thong ban le lon nhat trung quocPhan thai trung   tu dong dat hang tu he thong ban le lon nhat trung quoc
Phan thai trung tu dong dat hang tu he thong ban le lon nhat trung quoc
 
Thuc tap tuan 4
Thuc tap tuan 4Thuc tap tuan 4
Thuc tap tuan 4
 
Ung dung web chuong 5
Ung dung web  chuong 5Ung dung web  chuong 5
Ung dung web chuong 5
 
Bai th08 php voi csdl
Bai th08 php voi csdlBai th08 php voi csdl
Bai th08 php voi csdl
 

Báo cáo tuần 4- Xây dựng các class liên quan khách hàng, cơ hội, database

  • 1. BÁO CÁO THỰC TẬP TUẦN 4 ĐỀ TÀI: PHÁT TRIỂN PHẦN MỀM QUẢ LÍ KHÁCH HÀNG TRÊN ANDROID TRÊN ĐIỆN THOẠI SỬ DỤNG ANDROID Xây Dựng các class liên quan khách hàng, cơ hội, database GVHD : Thầy Võ Đỗ Thắng SVTH : Trương Duy Linh MSSV : 51101863
  • 2. - Cấu trúc thư mục
  • 3.  Trong cấu trúc trên có 3 pakage: com.example.demoqlkh, donhang, sanphamco. - Class MainActivity public class MainActivity extends ActionBarActivity { //Định nghĩa các requestCode, resultCode truyền đi //trong Intent public static final int MO_ACTIVITY_THEM_KHACH_HANG=1; public static final int MO_ACTIVITY_SUA_KHACH_HANG=2; public static final int THEM_KHACH_HANG_THANHCONG=3; public static final int SUA_KHACH_HANG_THANHCONG=4; public static final int XEM_DS_KHACH_HANG=5; public static final int CAPNHAT_DS_KHACH_HANG_THANHCONG=6; public static final int MO_ACTIVITY_CHUYEN_LEVEL=9; public static final int CHUYEN_LEVEL_THANHCONG=10; public static final int MO_ACTIVITY_THEM_DON_HANG=11; public static final int THEM_DON_HANG_THANHCONG=12; public static final int MO_ACTIVITY_SUA_DON_HANG=13; public static final int SUA_DON_HANG_THANHCONG=14; public static final int MO_ACTIVITY_DANHSACH_DON_HANG=15; public static final int MO_ACTIVITY_DANHSACH_SAN_PHAM=20; public static final int CAPNHAT_DS_SAN_PHAM_THANHCONG=6; public static final int MO_ACTIVITY_SUA_SAN_PHAM=16; public static final int SUA_SAN_PHAM_THANHCONG=17; public static final int MO_ACTIVITY_THEM_SAN_PHAM=18; public static final int THEM_SAN_PHAM_THANHCONG=19; public static final int CAPNHAT_DS_DON_HANG_THANHCONG=16; public static final int MO_DS_COHOI=20; public static final int CAP_NHAT_DS_CO_HOI_THANHCONG=21; //lvallkh hiển thị danh sách tất cả các khách hàng ListView lvallkh; EditText search; ArrayList<KhachHang>custo; ArrayAdapter<KhachHang> adaptercusto; private static ArrayList<LevelKhachHang>arrlvkh=new ArrayList<LevelKhachHang>(); private int pos=-1; private Button btnchonlevel; DatabaseHandler db; private KhachHang khach; int posi=-1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lvallkh=(ListView)findViewById(R.id.lvallkh); search=(EditText)findViewById(R.id.txtsearch); custo=new ArrayList<KhachHang>();
  • 4. //tạo truy vấn database db=new DatabaseHandler(this); btnchonlevel=(Button)findViewById(R.id.btnxoatt); KhachHang custom=null; //khởi tạo 3 level LevelKhachHang l1=new LevelKhachHang("VIP"); LevelKhachHang l2=new LevelKhachHang("THUONG"); LevelKhachHang l3=new LevelKhachHang("TIMNANG"); //------------------------------------------------------------- //kiểm tra xam dữ liệu có khách hàng nào hay chưa //nếu chưa thì thêm vào // nếu có thì đọc ra từ CSDL if(db.getKhachHangCount()==0){ Log.d("12345", "6789"); custom=new KhachHang("1","Nam","1","1.@gmail.com","VIP","0",true); l1.Themkh(custom); db.addKhachHang(custom); arrlvkh.add(l1); custo.add(custom); //----------------- custom=new KhachHang("2","Tien","2","2.@gmail.com","TIMNANG","0",true); l2.Themkh(custom); db.addKhachHang(custom); arrlvkh.add(l2); custo.add(custom); //----------------- custom=new KhachHang("3","An","3","3.@gmail.com","THUONG","0",true); l3.Themkh(custom); db.addKhachHang(custom); arrlvkh.add(l3); custo.add(custom); } else{ for(KhachHang kh:db.getAllKhachHang()){ if(kh.getlevel().equals("VIP")){ l1.Themkh(kh); custo.add(kh); Log.d("LEVEL1", kh.getlevel()); } else if(kh.getlevel().equals("THUONG")){ l2.Themkh(kh); custo.add(kh); Log.d("LEVEL2", kh.getlevel()); } else { l3.Themkh(kh); custo.add(kh); Log.d("LEVEL3", kh.getlevel()); } } arrlvkh.add(l1);
  • 5. arrlvkh.add(l2); arrlvkh.add(l3); } them_don_hang_va_tinh_gia(); adaptercusto=new ArrayAdapter<KhachHang>(this,android.R.layout.simple_list_item_1,custo); lvallkh.setAdapter(adaptercusto); adaptercusto.notifyDataSetChanged(); //Đăng kí contextmenu registerForContextMenu(btnchonlevel); //Xử lí sự kiện khi gõ từ vào thanh search search.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub adaptercusto.notifyDataSetChanged(); MainActivity.this.adaptercusto.getFilter().filter(s); } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub } }); //xử lí sự kiên click vào item của ListView //lấy vi trí của khách hàng gọi hiển thị danh sách đơn hàng lvallkh.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub khach=custo.get(position); posi=position; Intent inte=new Intent(MainActivity.this,DanhSachDonHang.class); Bundle bundle=new Bundle(); bundle.putSerializable("KHACHHANG", khach); inte.putExtra("DATA", bundle); startActivityForResult(inte,MainActivity.MO_ACTIVITY_DANHSACH_DON_HANG); } }); }
  • 6. //truy xuất CSDL thêm đơn hàng tương ứng với mỗi khách hàng // tính coins cho khách hàng dựa trên các đơn hàng public void them_don_hang_va_tinh_gia(){ for(KhachHang kha:custo){ int gia=0; for(DonHang don:db.getdsdh_ofkh(Integer.parseInt(kha.getma()))){ kha.Themdh(don); gia+=Integer.parseInt(don.getsmoney()); } kha.setcoins(String.valueOf(gia)); db.updateKhachHang(kha); } } //dăng kí contextmenu @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { // TODO Auto-generated method stub super.onCreateContextMenu(menu, v, menuInfo); getMenuInflater().inflate(R.menu.context_menu_level, menu); } //xử lí sự kiên click vào item menu gồm: // xem danh sách khác hàng của level VIP, THUONG, TIMNANG @Override public boolean onContextItemSelected(MenuItem item){ switch(item.getItemId()){ case R.id.mnuvip: pos=0; doDanhSachKhachHang(); break; case R.id.mnunormal: pos=1; doDanhSachKhachHang(); break; case R.id.mnukhtimnang: pos=2; doDanhSachKhachHang(); break; } return super.onContextItemSelected(item); } //Intent goi Activity DanhSachKhachHang public void doDanhSachKhachHang() { Intent i=new Intent(this, DanhSachKhachHang.class); Bundle bundle=new Bundle(); bundle.putSerializable("LEVEL", arrlvkh.get(pos)); i.putExtra("DATA", bundle); startActivityForResult(i,MainActivity.XEM_DS_KHACH_HANG); } //Nhận result trả về từ cập nhật danh sách khách hàng, //cập nhật danh sách đơn hàng thành công
  • 7. //có 2 cập nhật trên mảng arrlvkh và custo @Override public void onActivityResult(int requestCode,int resultCode,Intent data){ super.onActivityResult(requestCode, resultCode, data); if(resultCode==MainActivity.CAPNHAT_DS_KHACH_HANG_THANHCONG){ Bundle bundle=data.getBundleExtra("DATA"); LevelKhachHang lvk=(LevelKhachHang)bundle.getSerializable("LEVEL"); arrlvkh.get(pos).getListKH().clear(); arrlvkh.get(pos).getListKH().addAll(lvk.getListKH()); custo.clear(); for(KhachHang k:db.getAllKhachHang()){ custo.add(k); Log.d("KhachHang",k.getten()); } them_don_hang_va_tinh_gia(); adaptercusto.notifyDataSetChanged(); } else if(resultCode==MainActivity.CAPNHAT_DS_DON_HANG_THANHCONG){ Bundle bundle=data.getBundleExtra("DATA"); KhachHang k=(KhachHang)bundle.getSerializable("KHACHHANG"); custo.get(posi).getListDH().clear(); custo.get(posi).getListDH().addAll(k.getListDH()); int p=0; for(DonHang d:custo.get(posi).getListDH()){ p+=Integer.parseInt(d.getsmoney()); } custo.get(posi).setcoins(String.valueOf(p)); db.updateKhachHang(custo.get(posi)); adaptercusto.notifyDataSetChanged(); } } //hàm trả về danh sách khách hàng của mỗi level public static ArrayList<LevelKhachHang> getListLevel(){ return arrlvkh; } } - Class LevelKhachHang public class LevelKhachHang implements Serializable { private static final long serialVersionUID = 1L; //mãng danh sách khách hàng private ArrayList<KhachHang> arrkh =new ArrayList<KhachHang>(); //tên level private String ten; //hàm tạo với tham số tên
  • 8. public LevelKhachHang(String ten) { this.ten=ten; } //phương thức get,set tên của level public String getTenlv(){ return this.ten; } public void setTenlv(String ten){ this.ten=ten; } //hàm tạo không tham số public LevelKhachHang() { super(); } //hàm thêm khách hàng của mỗi level public void Themkh(KhachHang kh){ int i=0; for(;i<arrkh.size();i++){ KhachHang old=arrkh.get(i); if(old.getma().trim().equalsIgnoreCase(kh.getma().trim())){ break; } } if(i<arrkh.size()){ arrkh.set(i, kh); } else{ arrkh.add(kh); } } //get khách hàng tại vị trí index của level public KhachHang get(int index){ return arrkh.get(index); } //lấy số lượng khách hàng của level đó public int size(){ return arrkh.size(); } //lấy danh sách khách hàng của level đó public ArrayList<KhachHang> getListKH(){ return this.arrkh; } }
  • 9. - Class KhachHang chứa các thuộc tính liên quan khách hàng(mã khách hàng, tên, giới tính, số điện thoại, email, số coins), và các tác vụ get,set. public class KhachHang implements Serializable{ private static final long serialVersionUID = 1L; private String ma; private String ten; private String sdt; private String email; private String level; private String coins; private boolean sex; private ArrayList<DonHang> arrdh= new ArrayList<DonHang>(); //Hàm tạo không tham số public KhachHang(){ } //hàm tạo với các tham số mã, tên, sdt, email, level, coins public KhachHang(String ma,String ten,String sdt,String email,String level,String coins,boolean sex){ this.ma=ma; this.ten=ten; this.sdt=sdt; this.email=email; this.sex=sex; this.coins=coins; this.level=level; } //phương thức get,set cho tên public String getten(){return ten;} public void setten(String ten){this.ten=ten;} //phương thức get,set cho mã public String getma(){return ma;} public void setma(String ma){this.ma=ma;} //phương thức get,set cho sdt public String getsdt(){return sdt;} public void setsdt(String sdt){this.sdt=sdt;} //phương thức get,set cho emial public String getemail(){return email;} public void setemail(String email){this.email=email;} //phương thức get,set cho level public String getlevel(){return level;} public void setlevel(String level){this.level=level;} //phương thức get,set cho coins public String getcoins(){return coins;} public void setcoins(String coin){this.coins=coin;} //phương thức get,set cho sex public boolean getsex(){return sex;}
  • 10. public void setsex(boolean sex){this.sex=sex;} //phương thức thêm đơn hàng của mỗi khách hàng public void Themdh(DonHang dh){ int i=0; for(;i<arrdh.size();i++){ DonHang old=arrdh.get(i); if(old.getmaDH().trim().equalsIgnoreCase(dh.getmaDH().trim())){ break; } } if(i<arrdh.size()){ arrdh.set(i, dh); } else{ arrdh.add(dh); } } //phương thức lấy đơn hàng tại index public DonHang get(int index){ return arrdh.get(index); } //lấy số lượng đơn hàng của khách hàng public int size(){ return arrdh.size(); } //lấy danh sách đơn hàng của khách hàng public ArrayList<DonHang> getListDH(){ return this.arrdh; } //-------------------------------------------- //viết lại hàm chuyển thành chuổi toString @Override public String toString() { return this.ma+"---"+"Ten: " +this.ten +"n" +"Level: "+this.level+"---"+"Coins: "+this.coins; } } - Class DanhSachKhachHang //Class Danh sách khách hàng hiển thị danh sách khách hàng //Thiết lập hàm goi các tác vụ thêm,sửa, xóa khách hàng //chuyển level khách hàng, xem danh sách cơ hội public class DanhSachKhachHang extends Activity { ImageButton imgback; ListView lv;
  • 11. TextView txtshowlv; Button btnthemkh; ArrayList<KhachHang>arrkh =null; AdapterKhachHang adapter=null; LevelKhachHang lvkh=null; private KhachHang cus=null; int position =-1; DatabaseHandler db; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_dskh); db=new DatabaseHandler(this); txtshowlv=(TextView)findViewById(R.id.txtlevel); imgback=(ImageButton)findViewById(R.id.imgback); btnthemkh=(Button)findViewById(R.id.btnthemkhachhang); lv=(ListView)findViewById(R.id.lvkhachhang); getdata(); Event(); registerForContextMenu(lv); } //lấy danh sách khách hàng của mỗi level truyền từ class MainActivity public void getdata(){ Intent i=getIntent(); Bundle b=i.getBundleExtra("DATA"); lvkh=(LevelKhachHang)b.getSerializable("LEVEL"); arrkh=lvkh.getListKH(); them_don_hang_va_tinh_gia(); adapter=new AdapterKhachHang(this,R.layout.item_layout_custom,arrkh); lv.setAdapter(adapter); txtshowlv.setText(lvkh.getTenlv()); } //Xử lí các sự kiện public void Event(){ //quay lại layout trước đó, truyền gói LEVEL qua MainActivity imgback.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent i=getIntent(); Bundle b=new Bundle(); b.putSerializable("LEVEL", lvkh); i.putExtra("DATA", b); setResult(MainActivity.CAPNHAT_DS_KHACH_HANG_THANHCONG,i); finish(); } }); //bắt sự kiện click vào mỗi item lv.setOnItemLongClickListener(new OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int arg, long id) { cus=arrkh.get(arg); position=arg;
  • 12. return false; } }); //Lấy sư kiện click button thêm khách hàng btnthemkh.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub doThemKhachHang(); } }); } //Đăng kí menu context_menu_kh khi click vào mỗi khách hàng @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { // TODO Auto-generated method stub super.onCreateContextMenu(menu, v, menuInfo); getMenuInflater().inflate(R.menu.context_menu_kh, menu); } //Bắt sự kiện click các item khi click các memu. @Override public boolean onContextItemSelected(MenuItem item){ switch(item.getItemId()){ case R.id.mnuchuyenkh:doChuyenKhachHang();break; case R.id.mnusuakh:doSuaKhachHang();break; case R.id.mnuxoakh:doXoaKhachHang();break; case R.id.mnucohoi:doDanhSachCoHoi();break; case R.id.mnudsdh:doDanhSachDonHang();break; } return super.onContextItemSelected(item); } //Intent gọi Activity DanhSachCoHoi public void doDanhSachCoHoi(){ Intent i=new Intent(this, DanhSachCoHoi.class); Bundle bundle=new Bundle(); bundle.putSerializable("KHACHHANG", cus); i.putExtra("DATA", bundle); startActivityForResult(i,MainActivity.MO_DS_COHOI); } //Intent gọi Activity DanhSachDonHang public void doDanhSachDonHang(){ //for(DonHang don:db.getdsdh_ofkh(Integer.parseInt(cus.getma()))){ // cus.Themdh(don); //} Intent i=new Intent(this, DanhSachDonHang.class); Bundle bundle=new Bundle(); bundle.putSerializable("KHACHHANG", cus); i.putExtra("DATA", bundle); startActivityForResult(i,MainActivity.MO_ACTIVITY_DANHSACH_DON_HANG); }
  • 13. //Truy xuất vào cơ sở dữ liệu the tính coins của mỗi khách hàng // dựa trên giá của các đơn hàng của khách hàng đó bằng cách truy suất //dữ liêu trong cơ sở dữ liệu public void them_don_hang_va_tinh_gia(){ for(KhachHang kha:arrkh){ int gia=0; for(DonHang don:db.getdsdh_ofkh(Integer.parseInt(kha.getma()))){ kha.Themdh(don); gia+=Integer.parseInt(don.getsmoney()); } kha.setcoins(String.valueOf(gia)); db.updateKhachHang(kha); } } //Xóa khách hàng dùng AlertDialog hiển thị form hỏi xóa public void doXoaKhachHang() { AlertDialog.Builder builder=new AlertDialog.Builder(this); builder.setTitle("XOA"); builder.setMessage("Bạn có chắc muốn xóa"); builder.setIcon(R.drawable.ic_launcher); builder.setNegativeButton("Không", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); builder.setPositiveButton("Có",new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { arrkh.remove(cus); db.delete_quanhe_KHDH_tu_KH(cus); db.deleteKhachHang(cus); for(DonHang do1:cus.getListDH()){ db.delete_quanhe_DH_SP_tu_DH(do1); db.deleteDonHang(do1); } adapter.notifyDataSetChanged(); } }); builder.show(); } //Intent gọi Activity Activity_SuaKhachHang public void doSuaKhachHang() { Intent i=new Intent(this,Activity_SuaKhachHang.class); Bundle b=new Bundle(); cus.setlevel(lvkh.getTenlv()); b.putSerializable("KHACHHANG", cus); i.putExtra("DATA", b); startActivityForResult(i,MainActivity.MO_ACTIVITY_SUA_KHACH_HANG);
  • 14. } //Intent gọi Activity Activity_ChuyenKhachHang public void doChuyenKhachHang() { Intent i=new Intent(this,Activity_ChuyenKhachHang.class); Bundle b=new Bundle(); b.putSerializable("KHACHHANG", cus); i.putExtra("DATA", b); startActivityForResult(i,MainActivity.MO_ACTIVITY_CHUYEN_LEVEL); } //Intent goi Activity Activity_ThemKhachHang public void doThemKhachHang(){ Intent i=new Intent(this, Activity_ThemKhachHang.class); Bundle b=new Bundle(); b.putSerializable("KHACHHANG", cus); i.putExtra("DATA", b); startActivityForResult(i, MainActivity.MO_ACTIVITY_THEM_KHACH_HANG); } //Nhận các result từ viêc thêm,sửa,xóa khách hàng, xem danh sách đơn hàng protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if(resultCode==MainActivity.SUA_KHACH_HANG_THANHCONG){ Bundle b=data.getBundleExtra("DATA"); KhachHang k=(KhachHang)b.getSerializable("KHACHHANG"); arrkh.set(position, k); db.updateKhachHang(k); adapter.notifyDataSetChanged(); } else if(resultCode==MainActivity.THEM_KHACH_HANG_THANHCONG){ Bundle b=data.getBundleExtra("DATA"); KhachHang k=(KhachHang)b.getSerializable("KHACHHANG"); k.setlevel(lvkh.getTenlv()); arrkh.add(k); db.addKhachHang(k); adapter.notifyDataSetChanged(); } else if(resultCode==MainActivity.CHUYEN_LEVEL_THANHCONG){ arrkh.remove(cus); adapter.notifyDataSetChanged(); } else if(resultCode==MainActivity.CAPNHAT_DS_DON_HANG_THANHCONG){ Bundle bundle=data.getBundleExtra("DATA"); KhachHang k=(KhachHang)bundle.getSerializable("KHACHHANG"); arrkh.get(position).getListDH().clear(); arrkh.get(position).getListDH().addAll(k.getListDH()); int p=0; for(DonHang d:arrkh.get(position).getListDH()){ p+=Integer.parseInt(d.getsmoney()); } arrkh.get(position).setcoins(String.valueOf(p)); db.updateKhachHang(arrkh.get(position)); adapter.notifyDataSetChanged();
  • 15. } } } - Class Activity_ChuyenKhachHang public class Activity_ChuyenKhachHang extends Activity { //mảng level private static ArrayList<LevelKhachHang> arrlv=null; //lvlevel hiển thị các lựa chọn để chuyển level ListView lvlevel; ImageButton imgapply; //adapter chuyển dữ liệu từ ArratList arrlv thành dữ liệu trên ListView lvlevel ArrayAdapter<LevelKhachHang>adapter; KhachHang kh=null; DatabaseHandler db; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_chuyen_level); db=new DatabaseHandler(this); lvlevel=(ListView)findViewById(R.id.lvlevel); imgapply=(ImageButton)findViewById(R.id.imgapply); //Intent lấy gói dữ liệu được truyền đi từ danh sách khách hàng //do đó láy được khách hàng được truyền tới Intent i=getIntent(); Bundle b=i.getBundleExtra("DATA"); kh=(KhachHang)b.getSerializable("KHACHHANG"); arrlv=MainActivity.getListLevel(); //khai báo adapter với layout danh sách single choose, lấy dữ liệu từ mảng arrlv adapter=new ArrayAdapter<LevelKhachHang>(this,android.R.layout.simple_list_item_single_choice,arrlv); lvlevel.setAdapter(adapter); //Lấy vị trí sự kiện click trên ListView, nếu CheckView được tick // thì lấy vị trí level được tick tại position thêm vào level đó // và thêm khách hàng vào cơ sở dữ liệu lvlevel.setOnItemClickListener(new OnItemClickListener() { Boolean somethingChecked=false; @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub if(somethingChecked){ CheckedTextView cv=(CheckedTextView)view; cv.setChecked(false); } CheckedTextView cv=(CheckedTextView)view; if(!cv.isChecked()){ cv.setChecked(true); arrlv.get(position).Themkh(kh); db.chuyenKhachHang(kh,position); } somethingChecked=true; }
  • 16. }); //Bắt sự kiện khi nhấn button apply, //thiết lập result thông báo thành công imgapply.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub setResult(MainActivity.CHUYEN_LEVEL_THANHCONG); finish(); } }); } } - Class Activity_SuaKhachHang public class Activity_SuaKhachHang extends Activity { EditText txtma,txtten,txtsdt,txtemail; Button btnxoa,btnluu; RadioButton raNam; KhachHang khachhang=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //Gọi layout activity_them_khach_hang setContentView(R.layout.activity_them_khach_hang); //lấy id từ các View,Button của layout txtma=(EditText)findViewById(R.id.txtma); txtten=(EditText)findViewById(R.id.txtten); txtsdt=(EditText)findViewById(R.id.txtsdt); txtemail=(EditText)findViewById(R.id.txtemail); btnxoa=(Button)findViewById(R.id.btnxoa); btnluu=(Button)findViewById(R.id.btnluu); raNam=(RadioButton)findViewById(R.id.raNam); setdefault(); btnxoa.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub txtten.setText(""); txtsdt.setText(""); txtemail.setText(""); txtten.requestFocus(); } }); btnluu.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) {
  • 17. String ten=txtten.getText()+""; String sdt=txtsdt.getText()+""; String email=txtemail.getText()+""; Boolean sex=!raNam.isChecked(); khachhang.setten(ten); khachhang.setsdt(sdt); khachhang.setemail(email); khachhang.setsex(sex); //sau khi chỉnh sửa thì đóng gói dữ liệu và thiết lập //result thành công Intent i=getIntent(); Bundle b=new Bundle(); b.putSerializable("KHACHHANG",khachhang); i.putExtra("DATA", b); setResult(MainActivity.SUA_KHACH_HANG_THANHCONG,i); finish(); } }); } //Thiết lâp các giá trị mặc định //lấy gói DATA được truyền từ danh sách khách hàng //thiết lập thông tin khách hàng lên các View public void setdefault(){ Intent i=getIntent(); Bundle b=i.getBundleExtra("DATA"); khachhang=(KhachHang)b.getSerializable("KHACHHANG"); txtma.setText(khachhang.getma()); txtten.setText(khachhang.getten()); txtsdt.setText(khachhang.getsdt()); txtemail.setText(khachhang.getemail()); raNam.setChecked(true); if(khachhang.getsex()){ raNam.setChecked(false); } } } - Class Activity_ThemKhachHang public class Activity_ThemKhachHang extends Activity { EditText txtma,txtten,txtsdt,txtemail; Button btnxoa,btnluu; RadioButton raNam; DatabaseHandler db; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //gọi layout activity_them_khach_hang setContentView(R.layout.activity_them_khach_hang); //Lấy Id các View từ layout
  • 18. txtma=(EditText)findViewById(R.id.txtma); txtten=(EditText)findViewById(R.id.txtten); txtsdt=(EditText)findViewById(R.id.txtsdt); txtemail=(EditText)findViewById(R.id.txtemail); btnxoa=(Button)findViewById(R.id.btnxoa); btnluu=(Button)findViewById(R.id.btnluu); raNam=(RadioButton)findViewById(R.id.raNam); //truy vấn vào cơ sở dữ liệu db=new DatabaseHandler(this); //thiết lập clear các View khi nhấn xóa btnxoa.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub txtma.setText(""); txtten.setText(""); txtsdt.setText(""); txtemail.setText(""); txtma.requestFocus(); } }); //Khi lưu dữ liệu được lưu vào cus //đóng gói DATA truyền đi,thiết lập result thành công btnluu.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String ma=txtma.getText()+""; String ten=txtten.getText()+""; String sdt=txtsdt.getText()+""; String email=txtemail.getText()+""; String tongtien=""; Boolean sex=!raNam.isChecked(); String level=""; if(db.checkTrung(ma,"id","KhachHang")==0){ KhachHang cus= new KhachHang(ma,ten,sdt,email,level,tongtien,sex); Intent i=getIntent(); Bundle b=new Bundle(); b.putSerializable("KHACHHANG", cus); i.putExtra("DATA", b); setResult(MainActivity.THEM_KHACH_HANG_THANHCONG,i); finish(); } } }); } } - Class AdapterKhachHang public class AdapterKhachHang extends ArrayAdapter<KhachHang> { Activity context; int layoutId; ArrayList<KhachHang> arrkhachhang; public AdapterKhachHang(Activity context,int textViewResourceId, ArrayList<KhachHang>
  • 19. objects) { super(context,textViewResourceId, objects); this.context=context; this.layoutId=textViewResourceId; this.arrkhachhang= objects; } @Override public View getView(int position,View convertView,ViewGroup parent){ convertView=context.getLayoutInflater().inflate(layoutId, null); TextView ten=(TextView)convertView.findViewById(R.id.txttenkh); TextView coins=(TextView)convertView.findViewById(R.id.txtcoins); ImageView img=(ImageView)convertView.findViewById(R.id.imageView1); KhachHang kh=arrkhachhang.get(position); ten.setText(kh.getten()); coins.setText(kh.getcoins()); img.setImageResource(R.drawable.girlicon); if(!kh.getsex()){ img.setImageResource(R.drawable.boyicon); } return convertView; } } - Class CoHoi tạo các thuộc tính và các tác vu get, set public class CoHoi { private String tench; private String mach; private String ngaych; private String makh_of_ch; //hàm tạo CoHoi không tham số public CoHoi(){}; //hàm tạo CoHoi có tham số: mã cơ hội, tên, ngày thêm, mã khách hàng của cơ hội public CoHoi(String mach,String tench,String ngaych,String makh_of_ch) { this.mach=mach; this.tench=tench; this.ngaych=ngaych; this.makh_of_ch=makh_of_ch; } //các tác vụ get, set cho ten,ma ngay,makh public String gettench(){return this.tench;} public String getmach(){return this.mach;} public String getngaych(){return this.ngaych;} public String getmakh_of_ch(){return this.makh_of_ch;} public void setmach(String ma){this.mach=ma;} public void settench(String ten){this.tench=ten;} public void setngaych(String ngay){this.ngaych=ngay;} public void setmakh_of_ch(String makh_of_ch){this.makh_of_ch=makh_of_ch;} //viết lại hàm toString @Override public String toString(){
  • 20. return this.mach+" "+this.tench+" "+this.ngaych; } } - Class DanhSachCoHoi //class này thiện danh sách các cơ hội //thêm các cơ hội, xóa các cơ hội public class DanhSachCoHoi extends Activity{ private ArrayList<CoHoi> arrch=new ArrayList<CoHoi>(); AdapterChoHoi adapter=null; ListView listcohoi; EditText txttench,txtngaych,txtmach1; Button addch,xoach; DatabaseHandler db; int so=0; KhachHang kh=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_dsch); listcohoi=(ListView)findViewById(R.id.listcohoi); txttench=(EditText)findViewById(R.id.txttench); txtngaych=(EditText)findViewById(R.id.txtngaych); txtmach1=(EditText)findViewById(R.id.txtmach1); addch=(Button)findViewById(R.id.btnaddch); xoach=(Button)findViewById(R.id.btnxoach); db=new DatabaseHandler(this); getData(); //thiết lập Adapter theo cấu trúc cơ hội adapter=new AdapterChoHoi(this,R.layout.item_cohoi,arrch); listcohoi.setAdapter(adapter); // thực hiện sự kiện thêm cơ hội addch.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub String ma=txtmach1.getText()+""; String ten=txttench.getText()+""; String ngay=txtngaych.getText()+""; if(db.checkTrung(ma,"ma_ch","Cohoi")==0){ CoHoi ch=new CoHoi(ma,ten,ngay,kh.getma()); arrch.add(ch); db.addCoHoi(ch); adapter.notifyDataSetChanged(); txttench.setText(""); txtngaych.setText(""); txttench.requestFocus(); } } });
  • 21. //thực hiện sự kiện xóa các cơ hội,có thể xóa 1 hoặc nhiều xoach.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub for(int i=listcohoi.getChildCount()-1;i>=0;i--){ View t=listcohoi.getChildAt(i); CheckBox ch=(CheckBox)t.findViewById(R.id.chkitem); if(ch.isChecked()){ db.deleteCoHoi(arrch.get(i)); arrch.remove(i); } } adapter.notifyDataSetChanged(); } }); adapter.notifyDataSetChanged(); } //Lấy khách hàng sẽ thêm cơ hội public void getData(){ Intent i=getIntent(); Bundle b=i.getBundleExtra("DATA"); kh=(KhachHang)b.getSerializable("KHACHHANG"); for(CoHoi c:db.getAllCoHoi(Integer.parseInt(kh.getma()))){ arrch.add(c); } } } - Class DatabaseHandle xây dựng cấu trúc các bảng dữ liệu và các hàm insert, update, delete. public class DatabaseHandler extends SQLiteOpenHelper { private static final int DATABASE_VERSION=1; private static final String DATABASE_NAME="KhachHangManager"; //table khach hang private static final String TABLE_KHACHHANG="KhachHang"; private static final String ID="id"; private static final String NAME="name"; private static final String PHONE="phone"; private static final String EMAIL="email"; private static final String LEVEL="level"; private static final String COINS="coins"; private static final String SEX="sex"; //table donhang
  • 22. private static final String TABLE_DONHANG="donhang"; private static final String ID_DH="id_dh"; private static final String NAME_DH="name_dh"; private static final String DATE_DH="date_dh"; private static final String MONEY_DH="sum_money"; //table product private static final String TABLE_PRODUCT="product"; private static final String ID_SP="ma_sp"; private static final String NAME_SP="ten_sp"; private static final String INFO_SP="info_sp"; private static final String PRICE_SP="price_sp"; //table of_cus private static final String TABLE_OF_CUS="of_cus"; private static final String ID_KH_OF_CUS="id_kh_of_cus"; private static final String ID_DH_OF_CUS="id_dh_of_cus"; //table bo_bill private static final String TABLE_OF_BILL="of_bill"; private static final String ID_SP_OF_BILL="id_sp_of_bill"; private static final String ID_DH_OF_BILL="id_dh_of_bill"; //table co hoi private static final String TABLE_COHOI="Cohoi"; private static final String ID_MA_CH="ma_ch"; private static final String ID_TEN_CH="ten_ch"; private static final String ID_NGAY_CH="ngay_ch"; private static final String ID_MA_KH_CH="ma_kh_ch"; public DatabaseHandler(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } //thiết lập lệnh tạo các table và thực thi các lệnh đó @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub String CREATE_KhachHang_TABLE="CREATE TABLE "+TABLE_KHACHHANG+" ( " +ID+" INTEGER PRIMARY KEY, " +NAME+" TEXT, " +PHONE+" TEXT, " +EMAIL+ " TEXT, " +LEVEL+ " TEXT, " +COINS+ " TEXT, " +SEX+" TEXT )";
  • 23. String CREATE_DonHang_TABLE="CREATE TABLE "+TABLE_DONHANG+" (" +ID_DH +" INTEGER PRIMARY KEY, " +NAME_DH+ " TEXT, " +DATE_DH+ " TEXT, " +MONEY_DH+ " TEXT )"; String CREATE_Product_TABLE="CREATE TABLE "+TABLE_PRODUCT+" (" +ID_SP +" INTEGER PRIMARY KEY, " +NAME_SP+ " TEXT, " +INFO_SP+ " TEXT, " +PRICE_SP+ " TEXT )"; String CREATE_of_cus_TABLE="CREATE TABLE "+TABLE_OF_CUS+" (" + ID_KH_OF_CUS+ " INTEGER, " + ID_DH_OF_CUS+ " INTEGER, " +" PRIMARY KEY ("+ID_KH_OF_CUS+","+ID_DH_OF_CUS+" )" +" FOREIGN KEY("+ID_KH_OF_CUS+") REFERENCES " +TABLE_KHACHHANG+"( "+ID+") ON DELETE CASCADE ON UPDATE CASCADE," +" FOREIGN KEY("+ID_DH_OF_CUS+") REFERENCES " +TABLE_DONHANG+"( "+ID_DH+") ON DELETE CASCADE ON UPDATE CASCADE )"; String CREATE_of_bill_TABLE="CREATE TABLE "+TABLE_OF_BILL + " ( "+ ID_DH_OF_BILL+" INTEGER, " + ID_SP_OF_BILL+" INTEGER, " + " PRIMARY KEY ("+ID_DH_OF_BILL+","+ID_SP_OF_BILL+" )" +" FOREIGN KEY("+ID_DH_OF_BILL+") REFERENCES " +TABLE_DONHANG+"( "+ID_DH+") ON DELETE CASCADE ON UPDATE CASCADE," +" FOREIGN KEY("+ID_SP_OF_BILL+") REFERENCES " +TABLE_PRODUCT+"( "+ID_SP+") ON DELETE CASCADE ON UPDATE CASCADE )"; String CREATE_co_hoi_TABLE="CREATE TABLE "+TABLE_COHOI +" ( "+ID_MA_CH +" TEXT PRIMARY KEY, " + ID_TEN_CH+" TEXT, " + ID_NGAY_CH+" TEXT, " + ID_MA_KH_CH+" INTEGER, " + "FOREIGN KEY("+ID_MA_KH_CH+") REFERENCES "+TABLE_KHACHHANG+"("+ID+") ON DELETE CASCADE ON UPDATE CASCADE )";
  • 24. db.execSQL(CREATE_KhachHang_TABLE); db.execSQL(CREATE_DonHang_TABLE); db.execSQL(CREATE_Product_TABLE); db.execSQL(CREATE_of_cus_TABLE); db.execSQL(CREATE_of_bill_TABLE); db.execSQL(CREATE_co_hoi_TABLE); } //xóa các table khi version thay đổi @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub db.execSQL("DROP TABLE IF EXISTS "+TABLE_KHACHHANG); db.execSQL("DROP TABLE IF EXISTS "+TABLE_DONHANG); db.execSQL("DROP TABLE IF EXISTS "+TABLE_PRODUCT); db.execSQL("DROP TABLE IF EXISTS "+TABLE_OF_CUS); db.execSQL("DROP TABLE IF EXISTS "+TABLE_OF_BILL); db.execSQL("DROP TABLE IF EXISTS "+TABLE_COHOI); onCreate(db); } //add single KhachHang public void addKhachHang(KhachHang khachhang){ SQLiteDatabase db=this.getWritableDatabase(); ContentValues values=new ContentValues(); values.put(NAME, khachhang.getten()); values.put(PHONE, khachhang.getsdt()); values.put(EMAIL, khachhang.getemail()); values.put(LEVEL, khachhang.getlevel()); values.put(COINS, khachhang.getcoins()); values.put(SEX, khachhang.getsex()?"Nam":"Nu"); //insert row db.insert(TABLE_KHACHHANG, null, values); db.close(); } //read row public KhachHang getKhachHang(int id){ SQLiteDatabase db=this.getReadableDatabase(); Cursor cursor=db.query(TABLE_KHACHHANG, new String[] {ID,NAME}, ID +" = ?", new String[]{String.valueOf(id)}, null, null, null,null); if(cursor!=null)
  • 25. cursor.moveToFirst(); KhachHang khachhang=new KhachHang(String.valueOf(cursor.getInt(0)),cursor.getString(1),cursor.getString(2),curs or.getString(3),cursor.getString(4),cursor.getString(5),cursor.getString(6)=="Nam"? true:false); return khachhang; } //Trả về danh sách khách hàng đọng từ cơ sở dữ liệu public ArrayList<KhachHang> getAllKhachHang(){ ArrayList<KhachHang> KhachHanglist=new ArrayList<KhachHang>(); String selectquery="SELECT * FROM "+TABLE_KHACHHANG; SQLiteDatabase db=this.getReadableDatabase(); Cursor cursor=db.rawQuery(selectquery, null); if(cursor.moveToFirst()){ do{ KhachHang khachhang=new KhachHang(); khachhang.setma(cursor.getString(0)); khachhang.setten(cursor.getString(1)); khachhang.setsdt(cursor.getString(2)); khachhang.setemail(cursor.getString(3)); khachhang.setlevel(cursor.getString(4)); khachhang.setcoins(cursor.getString(5)); khachhang.setsex((cursor.getString(6)=="Nam"? true:false)); KhachHanglist.add(khachhang); }while(cursor.moveToNext()); } return KhachHanglist; } //lấy số lượng khách hàng đọc từ cơ sở dữ liệu public int getKhachHangCount(){ String countQuery = "SELECT * FROM " + TABLE_KHACHHANG; SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.rawQuery(countQuery, null); int count = 0; try { if (cursor.moveToFirst()) { count = cursor.getCount(); }
  • 26. return count; } finally { if (cursor != null) { cursor.close(); db.close(); } } } //cập nhật thông tin khách hàng trong cơ sở dữ liệu public int updateKhachHang(KhachHang khachhang){ SQLiteDatabase db=this.getWritableDatabase(); ContentValues values=new ContentValues(); values.put(NAME, khachhang.getten()); values.put(PHONE, khachhang.getsdt()); values.put(SEX,khachhang.getsex()?"Nam":"Nu"); values.put(EMAIL, khachhang.getemail()); values.put(LEVEL, khachhang.getlevel()); values.put(COINS, khachhang.getcoins()); return db.update(TABLE_KHACHHANG, values, ID+" = ?", new String[]{String.valueOf(khachhang.getma())}); } // thay đổi level khách hàng bằng cách cập nhật lại côt level //trong table KhachHang public void chuyenKhachHang(KhachHang k,int i){ SQLiteDatabase db = this.getWritableDatabase(); if(i==0){k.setlevel("VIP");} else if(i==1){k.setlevel("THUONG");} else {k.setlevel("TIMNANG");} updateKhachHang(k); db.close(); } //xóa khách hàng public void deleteKhachHang(KhachHang khachhang){ SQLiteDatabase db = this.getWritableDatabase(); db.delete(TABLE_KHACHHANG, ID + " = ?", new String[] { String.valueOf(khachhang.getma()) }); db.close();
  • 27. } //lay Danh sach don hang cua khach hang public ArrayList<DonHang> getdsdh_ofkh(int id){ ArrayList<DonHang> listdh=new ArrayList<DonHang>(); String query ="SELECT * FROM "+TABLE_OF_CUS +" WHERE "+ID_KH_OF_CUS+" = "+id; SQLiteDatabase db=this.getReadableDatabase(); Cursor cursor=db.rawQuery(query,null); if(cursor.moveToFirst()){ do{ String query2 ="SELECT * FROM "+TABLE_DONHANG +" WHERE "+ID_DH+" = "+cursor.getString(1); Cursor cursor2=db.rawQuery(query2,null); if(cursor2.moveToFirst()){ do{ DonHang dh=new DonHang(); dh.setmaDH(cursor2.getString(0)); dh.settenDH(cursor2.getString(1)); dh.setdate(cursor2.getString(2)); dh.setsmoney(cursor2.getString(3)); listdh.add(dh); }while(cursor2.moveToNext()); } }while(cursor.moveToNext()); } return listdh; } //lay danh sach san pham cua don hang public ArrayList<SanPham> getdssp_ofdh(int id){ ArrayList<SanPham> listsp=new ArrayList<SanPham>(); String query ="SELECT * FROM "+TABLE_OF_BILL +" WHERE "+ID_DH_OF_BILL+" = "+id; SQLiteDatabase db=this.getReadableDatabase(); Cursor cursor=db.rawQuery(query,null); if(cursor.moveToFirst()){ do{ String query2 ="SELECT * FROM "+TABLE_PRODUCT +" WHERE "+ID_SP+" = "+cursor.getString(1); Cursor cursor2=db.rawQuery(query2,null); if(cursor2.moveToFirst()){
  • 28. do{ SanPham sp=new SanPham(); sp.setmaSP(cursor2.getString(0)); sp.settenSP(cursor2.getString(1)); sp.setthongtinSP(cursor2.getString(2)); sp.setprice(cursor2.getString(3)); listsp.add(sp); }while(cursor2.moveToNext()); } }while(cursor.moveToNext()); } return listsp; } //them don hang vao 1 khach hang va vao csdl public void addSanPham(SanPham sanpham){ SQLiteDatabase db=this.getWritableDatabase(); ContentValues values=new ContentValues(); values.put(ID_SP, sanpham.getmaSP()); values.put(NAME_SP, sanpham.gettenSP()); values.put(INFO_SP, sanpham.getthongtinSP()); values.put(PRICE_SP, sanpham.getprice()); //insert row db.insert(TABLE_PRODUCT, null, values); db.close(); } //them san pham vao 1 don hang public void addDonHang(DonHang donhang){ SQLiteDatabase db=this.getWritableDatabase(); ContentValues values=new ContentValues(); values.put(ID_DH, donhang.getmaDH()); values.put(NAME_DH, donhang.gettenDH()); values.put(DATE_DH, donhang.getdate()); values.put(MONEY_DH, donhang.getsmoney()); //insert row db.insert(TABLE_DONHANG, null, values); db.close(); } //update don hang public int updateDonHang(DonHang donhang){ SQLiteDatabase db=this.getWritableDatabase();
  • 29. ContentValues values=new ContentValues(); values.put(ID_DH, donhang.getmaDH()); values.put(NAME_DH, donhang.gettenDH()); values.put(DATE_DH, donhang.getdate()); values.put(MONEY_DH, donhang.getsmoney()); return db.update(TABLE_DONHANG, values, ID_DH+" = ?", new String[]{String.valueOf(donhang.getmaDH())}); } //update san pham public int updateSanPham(SanPham sanpham){ SQLiteDatabase db=this.getWritableDatabase(); ContentValues values=new ContentValues(); values.put(ID_SP, sanpham.getmaSP()); values.put(NAME_SP, sanpham.gettenSP()); values.put(INFO_SP, sanpham.getthongtinSP()); values.put(PRICE_SP, sanpham.getprice()); return db.update(TABLE_PRODUCT, values, ID_SP+" = ?", new String[] {String.valueOf(sanpham.getmaSP())}); } //xoa don hang public void deleteDonHang(DonHang donhang){ SQLiteDatabase db = this.getWritableDatabase(); db.delete(TABLE_DONHANG, ID_DH + " = ?", new String[] { String.valueOf(donhang.getmaDH()) }); db.close(); } //xoa delete_quanhe_KHDH_tu_KH public void delete_quanhe_KHDH_tu_KH(KhachHang khachhang){ SQLiteDatabase db = this.getWritableDatabase(); db.delete(TABLE_OF_CUS, ID_KH_OF_CUS + " = ?", new String[] { String.valueOf(khachhang.getma()) }); db.close(); } //xoa delete_quanhe_KHHD_tu_DH public void delete_quanhe_KHDH_tu_DH(DonHang donhang){ SQLiteDatabase db = this.getWritableDatabase(); db.delete(TABLE_OF_CUS, ID_DH_OF_CUS + " = ?",
  • 30. new String[] { String.valueOf(donhang.getmaDH()) }); db.close(); } //xoa delete_quanhe_DH_SP_tu_DH public void delete_quanhe_DH_SP_tu_DH(DonHang donhang){ SQLiteDatabase db = this.getWritableDatabase(); db.delete(TABLE_OF_BILL, ID_DH_OF_BILL + " = ?", new String[] { String.valueOf(donhang.getmaDH()) }); db.close(); } //xoa delete_quanhe_DHSP_tu_SP public void delete_quanhe_DHSP_tu_SP(SanPham sanpham){ SQLiteDatabase db = this.getWritableDatabase(); db.delete(TABLE_OF_BILL, ID_SP_OF_BILL + " = ?", new String[] { String.valueOf(sanpham.getmaSP()) }); db.close(); } //xoa san pham public void deleteSanPham(SanPham sanpham){ SQLiteDatabase db = this.getWritableDatabase(); db.delete(TABLE_PRODUCT, ID_SP + " = ?", new String[] { String.valueOf(sanpham.getmaSP()) }); db.close(); } //them vao bang of_cus public void addof_cus(KhachHang khachhang,DonHang donhang){ SQLiteDatabase db=this.getWritableDatabase(); ContentValues values=new ContentValues(); values.put(ID_KH_OF_CUS, khachhang.getma()); values.put(ID_DH_OF_CUS, donhang.getmaDH()); //insert row db.insert(TABLE_OF_CUS, null, values); db.close(); } //them vao bang of_bill public void addof_bill(DonHang donhang,SanPham sanpham){ SQLiteDatabase db=this.getWritableDatabase();
  • 31. ContentValues values=new ContentValues(); values.put(ID_DH_OF_BILL, donhang.getmaDH()); values.put(ID_SP_OF_BILL, sanpham.getmaSP()); //insert row db.insert(TABLE_OF_BILL, null, values); db.close(); } public boolean chkDB(){ boolean chk = false; SQLiteDatabase db = this.getWritableDatabase(); Cursor mCursor = db.rawQuery("SELECT * FROM " + TABLE_KHACHHANG, null); if (mCursor != null){ mCursor.moveToFirst(); if (mCursor.getInt(0) == 0){ chk = false; } }else{ chk = true; } db.close(); return chk; } //thêm 1 cơ hội vào CSDL public void addCoHoi(CoHoi cohoi){ SQLiteDatabase db=this.getWritableDatabase(); ContentValues values=new ContentValues(); values.put(ID_MA_CH, cohoi.getmach()); values.put(ID_TEN_CH, cohoi.gettench()); values.put(ID_NGAY_CH, cohoi.getngaych()); values.put(ID_MA_KH_CH, cohoi.getmakh_of_ch()); //insert row db.insert(TABLE_COHOI, null, values); db.close(); } // xóa cơ hội khỏi CSDL public void deleteCoHoi(CoHoi cohoi){ SQLiteDatabase db = this.getWritableDatabase(); db.delete(TABLE_COHOI, ID_MA_CH + " = ?", new String[] { String.valueOf(cohoi.getmach()) }); db.close(); }
  • 32. //Lấy danh sách cơ hội public ArrayList<CoHoi> getAllCoHoi(int ma){ ArrayList<CoHoi> CoHoilist=new ArrayList<CoHoi>(); String selectquery="SELECT * FROM "+TABLE_COHOI+" WHERE "+ID_MA_KH_CH+" = "+ma; SQLiteDatabase db=this.getReadableDatabase(); Cursor cursor=db.rawQuery(selectquery, null); if(cursor.moveToFirst()){ do{ CoHoi cohoi=new CoHoi(); cohoi.setmach(cursor.getString(0)); cohoi.settench(cursor.getString(1)); cohoi.setngaych(cursor.getString(2)); cohoi.setmakh_of_ch(cursor.getString(3)); CoHoilist.add(cohoi); }while(cursor.moveToNext()); } return CoHoilist; } //Kiểm tra khi thêm 1 khách hàng, 1 đơn hàng, 1 cơ hội, mã của nó //có cùng với mã hiện tại hay chưa public int checkTrung(String i,String column,String table){ String countQuery = "SELECT * FROM " + table+" WHERE "+column+" = "+i; SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.rawQuery(countQuery, null); int count = 0; try { if (cursor.moveToFirst()) { count = cursor.getCount(); } return count; } finally { if (cursor != null) { cursor.close(); db.close(); } } } }