安阳师范学院计算机与信息工程学院期末作品报告书指导教师:题目:图书管理系统一、试验目的、试验环境、设计思路:1.实验目的:计算机网络的发展为人们打开了一种新的视野,促成了一个新领域新产业的产生。
网络的发展试图用一种全新的概念冲击各个传统的商业模式,改变人们的生活方式。
新的需求产生了,人们想通过网络进行个人通信、媒体传播、商业运作、办公、教学等。
总之网络技术的发展促进了社会经济结构的变革。
反之,社会经济对网络发展提出的新的需求又大大的促进了网络的发展,计算机网络及其所涉及的一系列技术成为计算机领域新的研究热点。
在计算机日益普及的今天,对个人而言若采用一套行之有效的图书管理系统来管理自己的书籍,会方便许多。
对图书管理部门而言,以前单一的手工检索已不能满足人们的要求,为了便于图书资料的管理需要有效的图书管理软件。
而采用功能强大的数据库软件开发工具进行图书管理软件开发,具有很好的可移植性,可在应用范围较广的WINDOWS系列等操作系统上使用。
除此以外,图书馆管理系统已成为方便了广大师生、学校与外界之间的沟通架起了一座桥梁。
2.实验环境:操作系统:Windows XP以上实验工具:Visual C++6.0数据库:SQL Server 20053.设计思路:1.系统登录对登录系统的人进行身份的验证,增强系统的安全性,有效防止了数据的丢失。
2.图书信息管理对图书信息中的书籍名称、助记码、条形码、作者等信息的添加、修改、删除等功能的实现。
3.操作员信息管理对操作员名称、密码、等级等信息的添加、修改、删除等功能的实现。
4.图书销售管理能有效的了解书籍的详细信息,并将原来的价格和打完折的价格反映给购书者,节省了购书的时间,方便了顾客。
5.关于系统对系统进行大致的说明,方便了用户的使用。
二、功能模块及结构描述(函数功能和数据结构类型的定义。
)1.系统登录模块对登录系统的人进行身份的验证,增强系统的安全性,有效防止了数据的丢失。
2.图书信息模块对图书信息中的书籍名称、助记码、条形码、作者等信息的添加、修改、删除等功能的实现。
3.操作员信息模块对操作员名称、密码、等级等信息的添加、修改、删除等功能的实现。
4.图书销售模块能有效的了解书籍的详细信息,并将原来的价格和打完折的价格反映给购书者,节省了购书的时间,方便了顾客。
5.关于系统对系统进行大致的说明,方便了用户的使用。
三、流程描述:(函数流程图)图书管理系统图书信息管理操作员信息管理图书销售管理登录界面.添加功能流程图查询功能流程图四、源代码:1.登录验证信息代码void SysReg::OnBUTTONConfirm(){// TODO: Add your control notification handler code hereCString c_user,c_password;m_username1.GetWindowText(c_user);m_password1.GetWindowText(c_password);if (c_user.IsEmpty() || c_password.IsEmpty()){MessageBox("用户名称或密码不能为空", "用户登录信息");return;}CString sql;sql.Format("select * from tb_operator where name = '%s' and password = '%s'",c_user,c_password);m_pRs->raw_Close();m_pRs->Open((_variant_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);if (m_pRs->RecordCount>0){Flag = true;username = m_pRs->GetCollect("name").bstrVal;password = m_pRs->GetCollect("password").bstrVal;//PostMessage(WM_CLOSE,0,0);//EndDialog(0);BookManMenu dlg;dlg.DoModal();}else{username = "";password = "";MessageBox("用户名或密码不正确.","提示",64);return;}EndDialog(0);// CDialog::OnCancel();}2.添加信息代码void OperatorDlg::OnAdd(){// TODO: Add your control notification handler code hereif (!InfoIsNull()){CString c_operator,c_password,c_level;m_opename1.GetWindowText(c_operator);m_opepwd1.GetWindowText(c_password);m_level.GetWindowText(c_level);int level= atoi(c_level);CString sql;sql.Format("insert into tb_operator values ('%s','%s',%d)",c_operator,c_password,level);if (m_pRs->State ==adStateOpen)m_pRs->raw_Close();try{m_pRs->Open((_bstr_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);LoadOperatorInfo();ClearInterface();MessageBox("操作成功.","提示",MB_OK);}catch(_com_error){MessageBox("操作失败.","提示",MB_OK|MB_ICONERROR);}}elseMessageBox("基础信息不能为空.","提示",MB_OK+MB_ICONINFORMATION);}3.修改信息代码void OperatorDlg::OnChangeope(){// TODO: Add your control notification handler code hereif (!InfoIsNull()){if (m_list.GetSelectionMark()!=-1){if (MessageBox("确实要修改数据吗?","提示",MB_YESNO|MB_ICONINFORMATION)==IDYES){CString c_operator,c_password,c_level;m_opename1.GetWindowText(c_operator);m_opepwd1.GetWindowText(c_password);m_level.GetWindowText(c_level);int level= atoi(c_level);int i = m_list.GetSelectionMark();CString c_name = m_list.GetItemText(i,0);CString sql;sql.Format("update tb_operator set name = '%s',password = '%s',[level] = %d where name = '%s'",c_operator,c_password,level,c_name);m_pRs->raw_Close();try{m_pRs->Open((_variant_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);ClearInterface();LoadOperatorInfo();MessageBox("操作成功.","提示",64);}catch(...){MessageBox("操作失败.","提示",MB_OK|MB_ICONERROR);}}}elseMessageBox("请选择欲修改的信息.","提示",MB_OK|MB_ICONINFORMATION);}elseMessageBox("基础信息不完整.","提示",MB_OK|MB_ICONINFORMATION);}4.删除信息代码void OperatorDlg::OnDelope(){// TODO: Add your control notification handler code hereif (m_list.GetSelectionMark()!=-1){if (MessageBox("确实要删除数据吗?","提示",MB_YESNO|MB_ICONINFORMATION)==IDYES){int i = m_list.GetSelectionMark();CString c_name = m_list.GetItemText(i,0);CString sql;sql.Format("delete tb_operator where name= '%s'",c_name);m_pRs->raw_Close();try{m_pRs->Open((_variant_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);ClearInterface();LoadOperatorInfo();MessageBox("操作成功.","提示",64);}catch(...){MessageBox("操作失败.","提示",MB_OK|MB_ICONERROR);}}}elseMessageBox("请选择欲删除的信息.","提示",MB_OK|MB_ICONINFORMATION);}5.图片显示代码void BookManDlg::OnPaint(){CPaintDC dc(this); // device context for paintingCRect rect;GetClientRect(&rect);CDC dcMem;dcMem.CreateCompatibleDC(&dc);CBitmap bmpBackground;bmpBackground.LoadBitmap(IDB_BITMAP1); //IDB_BITMAP是自己的图对应的IDBITMAP bitmap;bmpBackground.GetBitmap(&bitmap);CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground);dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);// TODO: Add your message handler code here// Do not call CDialog::OnPaint() for painting messages }五、使用说明:1.系统登录2.图书管理系统界面3.图书信息管理4.操作员信息管理5.图书销售管理六、问题及解决方法问题:在作品编写中遇到了很多的困难,比如:动态链接库无法链接,数据库中的信息无法映射进MFC界面中,还有使用时的类之间和界面之间的调用等等。