收藏 分销(赏)

VC--课程设计图书馆管理系统2015.04.15.doc

上传人:天**** 文档编号:3524317 上传时间:2024-07-08 格式:DOC 页数:20 大小:854.50KB 下载积分:10 金币
下载 相关 举报
VC--课程设计图书馆管理系统2015.04.15.doc_第1页
第1页 / 共20页
VC--课程设计图书馆管理系统2015.04.15.doc_第2页
第2页 / 共20页


点击查看更多>>
资源描述
课程设计说明书 NO.20 图书管理系统 1.课程设计目的 VC++程序设计课程设计是计算机科学与技术专业的《VC++程序设计》课程的综合性实践环节。VC++程序设计是一门实用性很强的学科,是进行软件开发的主要工具,只有进行实际操作,才能将理论知识和实际应用有机的结合起来,锻炼学生分析解决实际问题的能力,提高学生实际运用的能力,为学生毕业设计,日后工作中的软件开发打下良好的基础。 具体掌握如下技能: 1 掌握VC++6.0开发环境开发软件的方法; 2 掌握单文档应用程序结构,熟悉多文档和基于对话框应用程序的方法; 3 掌握资源编辑器进行图标、光标、菜单、工具栏、对话框等资源的编辑,熟悉应用程序界面的设计方法; 4 掌握对话框,常用控件和Active控件的使用方法; 5 熟悉文档结构试图,掌握文档和视图,视图与视图的数据传递技巧; 6 熟悉切分窗口及一档多视的编程方法; 7 实现视图和对话框控件等窗口中绘制图形的方法; 8 掌握用MFC编写ODBC数据库应用程序的方法和技巧。 2.系统需求分析 系统开发的总体任务是实现图书信息管理。下面就其系统功能作简单的说明。 主要完成的功能有:登录功能、图书管理、借阅信息、读者查询、新增图书。 图书管理系统 登陆功能 图书管理 借阅信息 读者查询 新增图书 图1.系统总体设计 3.设计方案论证 3.1数据库设计 1)逻辑结构 图书管理系统数据模型: 图书(编号,名称,作者,出版日期,登记日期) 管理员(编号,姓名,性别,年龄,工作时间) 会员(编号,姓名,性别,家庭住址,联系方式) 2)图书信息表 字段名称 数据类型 说明 tno 文本 图书编号 tname 文本 图书名称 twriter 文本 作者姓名 tcbs 文本 出版社名称 Tcbrq 日期/时间 出版日期 tdgrq 日期/时间 登记日期 表1.图书信息 表1为图书信息数据表—图书信息数据表记录了图书的基本信息,图书的编号,名称,作者姓名,出版社名称,出版日期,登记日期。 3)管理员信息表 字段名称 数据类型 说明 gno 数字 管理员编号 gname 文本 姓名 gsex 文本 管理员性别 gage 数字 管理员年龄 ggztime 数字 工作时间 表2管理员信息 表2为管理员信息数据表—管理员信息数据表记录了管理员的基本信息,管理员的编号,姓名,性别,年龄,工作时间。 4)会员信息表 字段名称 数据类型 说明 hno 数字 会员编号 hname 文本 会员姓名 hsex 文本 会员性别 haddress 数字 家庭住址 htel 数字 联系方式 表3.会员信息 表3为会员信息数据表—会员信息数据表记录了会员的基本信息,会员的编号,姓名,性别,家庭住址,联系方式。 3.2模块设计 图2.管理员模块、 图2为管理员模块,在管理员模式下可以进行的修改密码,信箱管理,天家图书,新书入库,还书管理等管理员功能。 图3.用户模块 图3为用户模块,会员模式下用户的功能,如修改密码,信箱管理,个人信息,图书查询等。 4.应用软件的实现与运行结果 4.1显示模块 1.登陆 输入账号密码时显示的界面: 图4.登录界面 2.进入图书管理系统 图5.进入管理系统 其中系统登录可以登录和退出系统,登录后可以查看图书资料、读者资料,进行图书馆里和读者管理;图书资料中可以增加、修改、删除、查询图书信息;读者资料中可以增加、修改、删除、查询读者信息;结束管理中可以借阅相关图书;还书管理可以归还借阅图书。 3.图书信息 图6.图书信息 4.借阅信息 图7.借阅信息 5.借阅查询 图8.借阅查询 6. 读者信息管理 图9.读者信息管理 7.归还图书 图10.归还图书 8. 续借图书 图11.续借图书 9.新增图书 图12.新增图书 10.新增读者 图13.新增读者 4.2具体实现 #include "stdafx.h" #include "LMSystem.h" #include "AddBookManage.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CAddBookManage dialog CAddBookManage::CAddBookManage(CWnd* pParent /*=NULL*/) : CDialog(CAddBookManage::IDD, pParent) { //{{AFX_DATA_INIT(CAddBookManage) m_actorEdit = _T(""); m_bookIDEdit = _T(""); m_bookNameEdit = _T(""); m_bookTypeEdit = _T(""); m_positionEdit = _T(""); m_yearEdit = _T(""); m_ISBNEdit = _T(""); //}}AFX_DATA_INIT } void CAddBookManage::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAddBookManage) DDX_Control(pDX, IDC_POSITIONEDIT, m_ctrPosition); DDX_Control(pDX, IDC_YEAREDIT, m_ctrYear); DDX_Control(pDX, IDC_BOOKTYPEEDIT, m_ctrBookType); DDX_Control(pDX, IDC_BOOKNAMEEDIT, m_ctrBookName); DDX_Control(pDX, IDC_BOOKLIST, m_bookList); DDX_Control(pDX, IDC_BOOKIDEDIT, m_ctrBookIDEdit); DDX_Control(pDX, IDC_ACTOREDIT, m_ctrActorEdit); DDX_Text(pDX, IDC_ACTOREDIT, m_actorEdit); DDX_Text(pDX, IDC_BOOKIDEDIT, m_bookIDEdit); DDX_Text(pDX, IDC_BOOKNAMEEDIT, m_bookNameEdit); DDX_Text(pDX, IDC_BOOKTYPEEDIT, m_bookTypeEdit); DDX_Text(pDX, IDC_POSITIONEDIT, m_positionEdit); DDX_Text(pDX, IDC_YEAREDIT, m_yearEdit); DDX_Text(pDX, IDC_ISBNEDIT, m_ISBNEdit); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAddBookManage, CDialog) //{{AFX_MSG_MAP(CAddBookManage) ON_EN_KILLFOCUS(IDC_BOOKIDEDIT, OnKillfocusBookidedit) ON_BN_CLICKED(IDC_ADDBUTTON, OnAddbutton) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CAddBookManage message handlers BOOL CAddBookManage::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here iFlag=0; DBOpt.DBConnecte(); m_bookList.SetExtendedStyle(LVS_EX_GRIDLINES); m_bookList.InsertColumn(0,"ISBN编号",LVCFMT_LEFT,120); m_bookList.InsertColumn(1,"书名编号",LVCFMT_LEFT,120); // m_bookList.InsertColumn(2,"年代",LVCFMT_LEFT,120); // m_bookList.InsertColumn(3,"作者",LVCFMT_LEFT,120); // m_bookList.InsertColumn(4,"类型",LVCFMT_LEFT,120); // m_bookList.InsertColumn(5,"位置",LVCFMT_LEFT,120); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CAddBookManage::OnKillfocusBookidedit() { // TODO: Add your control notification handler code here UpdateData(TRUE); m_bookList.DeleteAllItems(); CString strSQL; m_bookIDEdit.TrimRight(); strSQL.Format("select * from booktype where ISBN_ID='"+m_bookIDEdit+"'"); DBOpt.BookTypeOperate(strSQL); if (DBOpt.curItem==1) { m_bookNameEdit=DBOpt.strArrayOne.GetAt(0); m_yearEdit=DBOpt.strArrayTwo.GetAt(0); m_actorEdit=DBOpt.strArrayThree.GetAt(0); m_bookTypeEdit=DBOpt.strArrayFour.GetAt(0); // m_bookIDEdit=DBOpt.strArrayFive.GetAt(0); iFlag=1; m_ctrActorEdit.EnableWindow(FALSE); m_ctrBookName.EnableWindow(FALSE); m_ctrBookType.EnableWindow(FALSE); m_ctrYear.EnableWindow(FALSE); m_ctrPosition.EnableWindow(FALSE); } else { iFlag=0; m_ctrActorEdit.EnableWindow(TRUE); m_ctrBookName.EnableWindow(TRUE); m_ctrBookType.EnableWindow(TRUE); m_ctrYear.EnableWindow(TRUE); m_ctrPosition.EnableWindow(TRUE); m_bookNameEdit=""; m_yearEdit=""; m_actorEdit=""; m_bookTypeEdit=""; m_positionEdit=""; } strSQL.Format("select * from bookid where ISBN_ID='"+m_bookIDEdit+"'"); DBOpt.ReadBookID(strSQL); for(int i=0;i<DBOpt.curItem;i++) { m_bookList.InsertItem(i,DBOpt.strArrayTwo.GetAt(i)) ; m_bookList.SetItemText(i,1,DBOpt.strArrayOne.GetAt(i)); } strSQL.Format("select * from position where ISBN_ID='"+m_bookIDEdit+"'"); CString strAddress; strAddress=DBOpt.ReadPosition(strSQL); for( i=0;i<DBOpt.curItem;i++) { m_positionEdit=strAddress; } UpdateData(FALSE); } void CAddBookManage::OnAddbutton() { // TODO: Add your control notification handler code here UpdateData(TRUE); CString strSQL; if (m_ISBNEdit.GetLength()<1||m_ISBNEdit.GetLength()>10) { MessageBox("图书编号为空或长度太长!"); return; } if (m_bookIDEdit.GetLength()<1||m_bookIDEdit.GetLength()>10) { MessageBox("ISBN编号为空或长度太长!"); return; } if(iFlag==0) { if (m_bookNameEdit.GetLength()<1||m_bookNameEdit.GetLength()>20) { MessageBox("书名为空或长度太长,请重新输入!"); return; } if (m_positionEdit.GetLength()<1||m_positionEdit.GetLength()>20) { MessageBox("书名为空或长度太长,请重新输入!"); return; } if (m_yearEdit.GetLength()>10||m_actorEdit.GetLength()>20||m_bookTypeEdit.GetLength()>20) { MessageBox("年代、作者、图书类型或方位长度太长,请重新输入!"); return; } strSQL.Format("insert into booktype(ISBN_ID,book_name,yeartime,actor,book_type,allnumber,lastnumber)values('%s','%s','%s','%s','%s','1','1')",m_bookIDEdit,m_bookNameEdit,m_yearEdit,m_actorEdit,m_bookTypeEdit); DBOpt.ReaderTypeOperate(strSQL); strSQL.Format("insert into position(ISBN_ID,book_position)values('%s','%s')",m_bookIDEdit,m_positionEdit); DBOpt.ReaderTypeOperate(strSQL); } else { strSQL.Format("select * from bookid where book_id='%s'",m_ISBNEdit); DBOpt.ReadBookID(strSQL); if (DBOpt.curItem>0) { MessageBox("此书已经存在!"); return; } strSQL.Format("update booktype set allnumber=allnumber+1,lastnumber=lastnumber+1 where ISBN_ID='%s'",m_bookIDEdit); DBOpt.ReaderTypeOperate(strSQL); } strSQL.Format("insert into bookid(ISBN_ID,book_id)values('%s','%s')",m_bookIDEdit,m_ISBNEdit); DBOpt.ReaderTypeOperate(strSQL); OnKillfocusBookidedit(); } #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // AddBookManage.h : header file // #include "DBOperate.h" ///////////////////////////////////////////////////////////////////////////// // CAddBookManage dialog class CAddBookManage : public CDialog {// Construction public: CAddBookManage(CWnd* pParent = NULL); // standard constructor CDBOperate DBOpt; int iFlag; // Dialog Data //{{AFX_DATA(CAddBookManage) enum { IDD = IDD_ADDBOOKDIALOG }; CEdit m_ctrPosition; CEdit m_ctrYear; CEdit m_ctrBookType; CEdit m_ctrBookName; CListCtrl m_bookList; CEdit m_ctrBookIDEdit; CEdit m_ctrActorEdit; CString m_actorEdit; CString m_bookIDEdit; CString m_bookNameEdit; CString m_bookTypeEdit; CString m_positionEdit; CString m_yearEdit; CString m_ISBNEdit; //}}AFX_DATA // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAddBookManage) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: // Generated message map functions //{{AFX_MSG(CAddBookManage) virtual BOOL OnInitDialog(); afx_msg void OnKillfocusBookidedit(); afx_msg void OnAddbutton(); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_ADDBOOKMANAGE_H__CBF00BEE_87DD_4CD9_8B61_134915710C31__INCLUDED_) #include "stdafx.h" #include "LMSystem.h" #include "AdminManage.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CAdminManage dialog CAdminManage::CAdminManage(CWnd* pParent /*=NULL*/) : CDialog(CAdminManage::IDD, pParent) { //{{AFX_DATA_INIT(CAdminManage) m_editPassward = _T(""); //}}AFX_DATA_INIT } void CAdminManage::DoDataExchange(CDataExchange* pDX) {// Implementation protected: // Generated message map functions //{{AFX_MSG(CAddBookManage) virtual BOOL OnInitDialog(); afx_msg void OnKillfocusBookidedit(); afx_msg void OnAddbutton(); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_ADDBOOKMANAGE_H__CBF00BEE_87DD_4CD9_8B61_134915710C31__INCLUDED_) #include "stdafx.h" #include "LMSystem.h" #include "AdminManage.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CAdminManage dialog CAdminManage::CAdminManage(CWnd* pParent /*=NULL*/) : CDialog(CAdminManage::IDD, pParent) { //{{AFX_DATA_INIT(CAdminManage) m_editPassward = _T(""); //}}AFX_DATA_INIT } void CAdminManage::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAdminManage) DDX_Text(pDX, IDC_EDITPASSWARD, m_editPassward); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAdminManage, CDialog) //{{AFX_MSG_MAP(CAdminManage) ON_BN_CLICKED(IDC_BTNOK, OnBtnok) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CAdminManage message handlers void CAdminManage::OnBtnok() { // TODO: Add your control notification handler code here UpdateData(); if (m_editPassward.GetLength()>10) { MessageBox("密码长度不能超过10个字符!"); return; } if (m_editPassward.GetLength()<=0) { MessageBox("密码不能为空!"); return; } CString strSQL; strSQL.Format("update admin set passward='%s' where userid='%s'",m_editPassward,strID); DBOpt.UpatePassward(strSQL); CDialog::OnOK(); } #if !defined(AFX_ADMINMANAGE_H__433F88A2_8B7D_4ED0_A537_1D4A2485C49B__INCLUDED_) #define AFX_ADMINMANAGE_H__433F88A2_8B7D_4ED0_A537_1D4A2485C49B__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // AdminManage.h : header file // #include "DBOperate.h" ///////////////////////////////////////////////////////////////////////////// // CAdminManage dialog class CAdminManage : public CDialog { // Construction public: CAdminManage(CWnd* pParent = NULL); // standard constructor CDBOperate DBOpt; CString strID; // Dialog Data //{{AFX_DATA(CAdminManage) enum { IDD = IDD_ADMINMANAGE }; CString m_editPassward; //}}AFX_DATA // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAdminManage) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: // Generated message map functions //{{AFX_MSG(CAdminManage) afx_msg void OnBtnok(); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_ADMINMANAGE_H__433F88A2_8B7D_4ED0_A537_1D4A2485C49B__INCLUDED_) 5.设计体会 计算机具有强大的功能,它现已应用于各行各业,在人们生活的各个领域起着非常重要的作用。它的高速运算能力极大的提高了工作效率,把人们从浩瀚的计算中解放出来,并且在高、尖的大型科学计算和大型信息处理及运算需求高的领域发挥着重要的作用。计算机在人们的日常生活中能帮助人们发送邮件,网上购物,远程学习,休闲娱乐,使人们的生活变得快捷方便,它推动了人类社会的发展与进步,对人类社会生产生活的各个领域产生了极其深刻的影响。正是因为计算机有这些强大的功能,学习计算机知识与计算机交流才显得尤为重要。因此学习VC++语言就显得更为重要,VC++语言作为国际上广泛流行的通用程序设计语言,在计算机的研究和应用中已展现出强大的生命力。VC++语言兼顾了诸多高级语言的特点。 通过此次图书管理系统的设计,使我对VC++程序设计有了深一步的了解,对系统设计及开发有了比较全面的思路。首先,通过对系统进行需求分析,确定各个功能函数;然后一个个具体地对他们进行编程,并且仔细检查看是否有错;在完成这一步之后才开始构造主函数,通过主函数把各个功能函数联系起来,编译修改错误和不足之处 在实际编程过程中会遇到很多不同的错误,有时候是一些很明显很细节的语法错误,这些可以通过编译来查找错误的所在,然而那些并不明显难以查找的隐性错误却真让人头痛。同时我翻阅了大量的书籍,也在网上查了很多资料。 总之,此次系统设计给我们提供了一个既动手又动脑、自学、独立实践的机会,使我们养成了勤翻阅各种相关资料的习惯,将书本上的理论知识和实际有机地结合起来,锻炼了实际分析问题和解决问题的能力,提高了适应实际、实践编程的能力,为今后的学习和实践打下了良好的基础。 6.参考文献 [1] 郑阿奇 visual c++实训 [M]. 北京:清华大学出版社,2005 [2] 韩存兵 visual c++数据库编程实战[M]. 北京: 科学出版社, 2003 [3] 原奕 visual c++实践与提高[M]. 北京: 中国铁道出版社, 2006 [4] 求是科技 visual c++数据库通用模块及典型系统开发[M]. 北京: 人民邮电出版社, 2006 合同管理制度 1 范围 本标准规定了龙腾公司合同管理工作的管理机构、职责、合同的授权委托、洽谈、承办、会签、订阅、履行和变更、终止及争议处理和合同管理的处罚、奖励; 本标准适用于龙腾公司项目建设期间的各类合同管理工作,厂内各类合同的管理,厂内所属各具法人资格的部门,参照本标准执行。 2 规范性引用 《中华人民共和国合同法》 《龙腾公司合同管理办法》 3 定义、符号、缩略语 无 4 职责 4.1 总经理:龙腾公司经营管理的法定代表人。负责对厂内各类合同管理工作实行统一领导。以法人代表名义或授权委托他人签订各类合法合同,并对电厂负责。 4.2 工程部:是发电厂建设施工安装等工程合同签订管理部门;负责签订管理基建、安装、人工技术的工程合同。 4.3 经营部:是合同签订管理部门,负责管理设备、材料、物资的订购合同。 4.5 合同管理部门履行以下职责: 4.5.1 建立健全合同管理办法并逐步完善规范; 4.5.2 参与合同的洽谈、起草、审查、签约、变更、解除以及合同的签证、公证、调解、诉讼等活动,全程跟踪和检查合同的履行质量; 4.5.3 审查、登记合同对方单位代表资格及单位资质,包括营业执照、经营范围、技术装备、信誉、越区域经营许可等证件及履约能力(必要时要求对方提供担保),检查合同的履行情况; 4.5.4 保管法人代表授权委托书、合同专用章,并按编号归口使用; 4.5.5 建立合同管理台帐,对合同文本资料进行编号统计管理; 4.5.6 组织对法规、制度的学习和贯彻执行,定期向有关领导和部门报告工作; 4.5.7 在总经理领导下,做好合同管理的其他工作, 4.6 工程技术部:专职合同管理员及材料、燃料供应部兼职合同管理员履行以下职责: 4.6.1 在主任领导下,做好本部门负责的各项合同的管理工作,负责保管“法人授权委托书”; 4.6.2 签订合同时,检查对方的有关证件,对合同文本内容依照法规进行检查,检查合同标的数量、金额、日期、地点、质量要求、安全责任、违约责任是否明确,并提出补充及修改意见。重大问题应及时向有关领导报告,提出解决方案; 4.6.3 对专业对口的合同统一编号、登记、建立台帐,分类整理归档。对合同承办部门提供相关法规咨询和日常协作服务工作; 4.6.4 工程技术部专职合同管理员负责收集整理各类合同,建立合同统计台帐,并负责 沈 阳 大 学
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服