实验报告 班级:网络Z091 学号:094552 姓名:李丹
一、
1. 2. 二、
1. 2. 三、
1.
实验目的
掌握数据库的基本知识、ODBC程序设计 掌握列表框和组合框控件 实验内容
在VC++6.0中编写程序
数据库应用程序基本设计和购物表设计 编程序 数据库
步骤:设置->控制面板->管理工具->数据源->添加->MicroSoft Access Driver(*mdb) 选择(刚建好的数据库)、数据源名(comp) 定义的变量:CCompanySet m_set;(CCompanySet自己添加的类,基类为CRecordSet) CListCtrl m_list; CString m_chax; ⑴初始化:
void CCompanyView::OnInitialUpdate() {
m_list.InsertColumn(0,\"num\"); m_list.InsertColumn(1,\"sex\"); m_list.InsertColumn(2,\"age\"); m_list.InsertColumn(3,\"wage\"); m_list.SetColumnWidth(0,100); m_list.SetColumnWidth(1,100); m_list.SetColumnWidth(2,100); m_list.SetColumnWidth(3,100); CString sql=\"select * from comp\";
m_set.Open(AFX_DB_USE_DEFAULT_TYPE,sql);//打开记录集 int i=0; while(!m_set.IsEOF()) { m_list.InsertItem(i,m_set.m_num); m_list.SetItemText(i,1,m_set.m_sex); CString str; str.Format(\"%d\ m_list.SetItemText(i,2,str); m_list.SetItemText(i,3,m_set.m_wage); m_set.MoveNext(); i++; }
m_set.Close(); }
⑵“添加”调出新对话框(IDD_DIALOG1)
创建一个新类CCompDlg,并添加头文件” #include \"CompDlg.h\"”
及成员变量(CString m_num; int m_sex; CString m_wage; int m_age;)
void CCompanyView::OnAdd() { CCompDlg dlg;
if(dlg.DoModal()==IDOK) { m_set.Open(AFX_DB_USE_DEFAULT_TYPE,NULL); m_set.AddNew(); m_set.m_num=dlg.m_num; if(dlg.m_sex==0) m_set.m_sex=\"男\"; else m_set.m_sex=\"女\"; m_set.m_age=dlg.m_age; m_set.m_wage =dlg.m_wage; m_set.Update(); m_set.Close(); } }
⑶“删除”
void CCompanyView::OnDel() { int i=m_list.GetSelectionMark(); if(i<0) this->MessageBox(\"先选取记录\"); else { CString xnum1; char xnum[10]; int x=m_list.GetItemText(i,0,xnum,10); xnum1.Format(\"%s\ CString sql=\"select * from comp where num='\"+xnum1+\"'\"; m_set.Open(AFX_DB_USE_DEFAULT_TYPE,sql); m_set.Delete(); m_set.Close(); } }
⑷“浏览”
void CCompanyView::OnScan() {
m_list.DeleteAllItems();
CString sql=\"select * from comp\";
m_set.Open(AFX_DB_USE_DEFAULT_TYPE,sql); int i=0;
while(!m_set.IsEOF())
{
m_list.InsertItem(i,m_set.m_num); m_list.SetItemText(i,1,m_set.m_sex); CString str; str.Format(\"%d\ m_list.SetItemText(i,2,str); m_list.SetItemText(i,3,m_set.m_wage); m_set.MoveNext(); i++; }
m_set.Close(); }
⑸“修改”
void CCompanyView::OnEdit() { CCompDlg dlg; int i=m_list.GetSelectionMark(); if(i<0) { this->MessageBox(\"先选取记录\"); return; }
CString xnum0,xnum1; char xnum[10];
int x=m_list.GetItemText(i,0,xnum,10); xnum1.Format(\"%s\ dlg.m_num=xnum1; xnum0=xnum1;
CString str=\"select * from comp where num='\"+xnum0+\"'\"; m_set.Open(AFX_DB_USE_DEFAULT_TYPE,str); dlg.m_num=m_set.m_num; dlg.m_age=m_set.m_age; dlg.m_wage=m_set.m_wage; if(m_set.m_sex==\"男\") dlg.m_sex=0; else dlg.m_sex=1; dlg.DoModal(); m_set.Edit(); m_set.m_num=dlg.m_num; m_set.m_age=dlg.m_age; m_set.m_wage=dlg.m_wage; if(dlg.m_sex==0) m_set.m_sex=\"男\";
else m_set.m_sex =\"女\"; m_set.Update(); m_set.Close(); }
⑹“查询”
void CCompanyView::OnQuery() {
this->UpdateData(); CString sql;
sql=\"select * from comp where num='\"+m_chax+\"'\"; m_set.Open(AFX_DB_USE_DEFAULT_TYPE,sql); m_set.Requery (); if(m_set.IsEOF()) { AfxMessageBox(\"ERROR\"); return ; }
m_list.DeleteAllItems(); int i=0;
while(!m_set.IsEOF()) {
m_list.InsertItem(i,m_set.m_num); m_list.SetItemText(i,1,m_set.m_sex); CString str; str.Format(\"%d\ m_list.SetItemText(i,2,str);
m_list.SetItemText(i,3,m_set.m_wage); m_set.MoveNext(); i++; }
m_set.Close(); }
2. 购物表设计
添加了两个结构体 struct GoodsType {
char * type; char * name; int price; }goods[]={
\"日常用品\牙刷\\"日常用品\牙膏\\"日常用品\毛巾\
\"日常用品\脸盆\\"日常用品\香皂\
\"文具\铅笔\\"文具\圆珠笔\\"文具\钢笔\\"文具\水彩笔\\"文具\签字笔\
\"球类\篮球\\"球类\足球\\"球类\羽毛球\\"球类\网球\\"球类\乒乓球\};
struct suoxuan {CString name; int shuliang; CString danjia; }choose[100]; 添加的变量: int total; int count; int j; CListBox m_isSelGoods; CListBox m_isName;
CComboBox m_cmbType; CString m_Type; CString m_Name; CString m_singleprice; CString m_totalprice; int m_count; CString m_SelGoods; ⑴ 初始化
BOOL CShoppingDlg::OnInitDialog() {
m_singleprice=\"单价\"; m_totalprice=\"共计:\"; total=0; count=0;
m_cmbType.AddString (\"日常用品\"); m_cmbType.AddString (\"文具\"); m_cmbType.AddString (\"球类\"); m_Type=\"日常用品\";
for(int i=0;i<5;i++) { m_isName.AddString(goods[i].name); }
UpdateData(0); } ⑵ 左侧列表框
void CShoppingDlg::OnSelchangeSaleList1() {
UpdateData(); for(int i=0;i<15;i++) { if(m_Name==goods[i].name ) { char x[100]; sprintf(x,\"单价:%d元\型转换成字符串型 m_singleprice=x; UpdateData(0); break; } } }
⑶ 组合框
void CShoppingDlg::OnSelchangeSaleType() {
int start;
int x=m_cmbType.GetCurSel();//组合框中选取当前商品类型 m_cmbType.GetLBText(x,m_Type);//传到列表框中 if(m_Type==\"日常用品\") { start=0; }
else if(m_Type==\"文具\") { start=5; } else start=10;
m_isName.ResetContent();//重置列表框1的内容 for(int i=start;i void CShoppingDlg::OnShop() { UpdateData(); for(int i=0;i<15;i++) { if(m_Name==goods[i].name) { total=total+goods[i].price*m_count; break; } } m_isSelGoods.AddString(m_Name); char x[100]; sprintf(x,\"共计: %d元\ m_totalprice=x; UpdateData(0); choose[j].name=m_Name; choose[j].shuliang=m_count; choose[j].danjia=m_singleprice; j++; UpdateData(); } ⑸ 取消选择 void CShoppingDlg::OnCansel() { UpdateData(); for(int i=0;i<15;i++) { if(m_Name==goods[i].name) { total-=goods[i].price*m_count; break; } } int s=m_isSelGoods.GetCurSel(); m_isSelGoods.DeleteString(s); char x[100]; sprintf(x,\"共计: %d元\ m_totalprice=x; UpdateData(0); } ⑹ 取消 void CShoppingDlg::OnCancel() { CDialog::OnCancel(); } ⑺ 右侧列表框 void CShoppingDlg::OnSelchangeSaleList2() { UpdateData(); m_isSelGoods.GetCurSel(); for(int i=0;i<15;i++) { if(m_SelGoods==choose[i].name) { m_count=choose[i].shuliang; m_singleprice=choose[i].danjia; } } UpdateData(0); } 四、 运行结果 1.数据库 2.购物表设计 五、 实验总结 通过此次课程设计的学习,对数据库的基本知识、ODBC程序设计以及列表框和组合框控件的编写有了一定程度的了解,希望对以后的学习有所帮助。 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务