C++ mfc 图书馆管理系统 设计说明.docx
- 文档编号:20135966
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:17
- 大小:68.10KB
C++ mfc 图书馆管理系统 设计说明.docx
《C++ mfc 图书馆管理系统 设计说明.docx》由会员分享,可在线阅读,更多相关《C++ mfc 图书馆管理系统 设计说明.docx(17页珍藏版)》请在冰豆网上搜索。
C++mfc图书馆管理系统设计说明
东南大学自动化学院
《计算机综合课程设计》
设计说明
小组编号:
___07__________________
小组成员:
学号
姓名
角色
08007236
梁文卓
程序员
08007201
孟玉静
程序员
08007202
王璐婷
测试员
设计时间:
2007年8月20日–2007年9月14日
评定成绩:
评阅教师:
李骏扬
目录
一、项目背景
……………………………………………………3
二、系统总体设计
……………………………………………………3
三、各子系统设计
……………………………………………………3
四、详细设计
………………………………………………………5
五、数据设计
……………………………………………………10
六、技术难点
……………………………………………………11
课程设计的内容如下:
一.项目背景
随着人们知识层次的提高,图书馆成为日常生活中不可缺少的一部分。
而图书馆的存书量和业务量庞大,仅仅靠传统的记账式管理是不可行的。
图书馆管理系统应运而生,并逐渐成为信息化建设的重要组成部分。
图书馆管理系统为学校或社会型图书馆的管理员提供所有借阅者的详细信息,以及馆内库存的详细情况,对借书和还书两大功能进行合理操纵并登记,在很大程度上方便了图书馆管理工作。
于是我们选择图书馆管理系统作为我们课程设计的课题。
二.系统总体设计
整个图书馆管理系统分为四个模块。
分别为书库管理模块、借阅管理模块、读者管理模块和系统管理模块。
各模块的主要功能如下:
三.各子系统设计
(一)书库管理
1.新书登记:
由管理员登记新书的相关信息,并添加到表Book_Info中。
新书信息主要包括图书ID、书名、作者、出版社、定价、入库时间、图书数量、现存量,其中图书ID号是图书的基本属性,可以作为查询图书相关信息的依据,是不可修改的。
2.书籍查询:
包括一本书籍的信息查询(输入图书的ID后按“查询”按钮)和全部书籍信息的查询(直接单击“查询全部”按钮)两部分。
查询的主要内容包括书籍ID号、书名、作者、出版社、定价、存储总量、状态(可借、遗失或已借)等。
3.书籍信息修改
通过输入书籍的ID号显示出书籍的全部信息,再由管理员在需要修改的编辑框等控件里修改相关信息,并将修改后的内容保存到表Book_Info的相关记录中。
4.旧书处理
通过输入书籍的ID号在表Book_Info中找到要处理书籍的记录,删除此条记录。
5.书籍挂失
通过输入书籍的ID号在表Book_Info中找到要挂失书籍的记录,修改书籍的状态为“遗失”。
(二)借阅管理
1.图书借阅
通过输入图书的ID号和借阅卡的ID号,登记借阅时间,完成借阅过程,并在表Borrow_Info中添加一条记录。
同时,在表Book_Info中修改此书的状态为“已借”,并将现存量减一;在表Proof_Info中将此位读者的现借书总量加一。
在这里,我们人为规定,每人所允许的最大借书量为九本。
2.图书归还
通过输入图书的ID号和借阅卡的ID号,登记还书时间,完成借阅过程,并在表Borrow_Info中添加此条记录的还书时间。
同时,在表Book_Info中修改此书的状态为“可借”,并将现存量加一;在表Proof_Info中将此位读者的现借书总量减一。
3.逾期罚款
如果此位读者的借阅时间超过30天,我们将对其进行罚款。
具体罚款方式为:
逾期一天罚款0.1元。
(三)读者管理
1.读者注册
登记读者的基本信息,并添加到表Proof_Info中。
读者信息主要包括:
读者ID(即借阅卡ID)、姓名、性别、出生日期、联系方式、地址、身份证号码、现借书总量,并将现借书总量初始化为0。
2.读者信息查询
包括一位读者的信息查询(输入读者的ID后按“查询”按钮)和全部读者信息的查询(直接单击“查询全部”按钮)两部分。
查询的主要内容包括借阅卡ID、姓名、性别、出生日期、联系方式、地址、身份证号码、现借书总量及罚金等。
3.读者信息修改
通过输入借阅卡的ID号显示出此位读者的全部信息,再由管理员在需要修改的编辑框等控件里修改相关信息,并将修改后的内容保存到表Proof_Info的相关记录中。
4.借阅证删除
通过输入借阅卡的ID号在表Proof_Info中找到要删除借阅卡的记录,删除此条记录。
5.借阅证挂失
通过输入书籍的ID号在表Book_Info中找到要挂失的借阅卡的记录,删除此条记录。
(四)系统管理
1.注册
在注册模块中,我们采用了加密算法,对用户名和密码进行了加密。
将注册者输入的用户ID、用户名和密码(加密以后的)添加到表Admin_Info中。
2.登录
将输入的用户ID与表Admin_Info中的记录相比较,找到用户所在的记录。
将用户名和密码经加密后与此条记录中的用户名和密码相比对,看是否相同。
如果相同就进入系统。
如果不同,系统会给出提示,让用户重新输入,在这里,为了保护密码安全,我们设置了密码登录次数限制,每个用户ID只允许尝试登录四次。
3.管理员信息查询
此模块用于查询全部管理员的信息,包括ID号和姓名(加密后的)。
单击“查询全部”按钮,列表框中就会显示出全部管理员的相关信息。
4.密码修改
输入要修改密码的帐号,在表Admin_Info中找到对应记录。
输入旧密码,并与记录集中的密码相比对,如果相同,则可以密码修改。
用户可以在编辑框中输入新的密码,新密码将会被保存到对应记录中。
这样做保证了用户的信息安全。
5.删除帐号
通过输入用户的ID号在表Admin_Info中找到要删除用户的记录,删除此条记录。
6.注销系统
用于退出此次登录。
7.退出系统
用于退出整个系统。
四.详细设计
本系统定义了十七个类:
CLibDBSApp、CLibDBSDlg(主对话框类)、CMD5(加密)、Register、CLogin、CnewBooksDlg、CCheckBook、Clost、OLDBOOK、CNewProof、CheckProof、CheckAllAdmin、CheckBorrowInfo、CBoR、ProofLost、EditKey、DeleteID。
1.CLibDBSApp中定义了用户访问权限m_Level和连接集指针的对象m_pConnection,并调用open函数连接数据库。
m_Level初始化值为0,如果用户登录系统,m_Level变为1。
2.CLibDBSDlg作为主对话框类,在程序中调用了类Clogin、Register、CNewBooksDlg、OLDBOOK、CLost、CNewProof、ProofLost、DeleteID、EditKey、CheckAllAdmin、CBoR。
3.Register作为注册对话框类。
在程序中调用了MD5加密类。
主要的数据成员分别为:
CEditm_EditUser;
CEditm_EditPassword;
CStringm_Password;
CStringm_PasswordC;
CStringm_User;
longm_UserID;
主要的函数成员为:
voidOnOK();
该函数的功能是将注册者输入的用户ID、用户名和密码(加密以后的)添加到表Admin_Info中。
4.Clogin作为登录对话框类。
主要的数据成员分别为:
CEditm_Password;
CEditm_UserName;
longm_nUserID;
主要的函数成员是:
voidOnOK();
voidOnCancel();
BOOLOnInitDialog();
Clogin登录对话框类函数的功能是将输入的用户ID与表Admin_Info中的记录相比较,找到用户所在的记录。
将用户名和密码经加密后与此条记录中的用户名和密码相比对,看是否相同。
如果相同就进入系统。
如果不同,系统会给出提示,让用户重新输入,在这里,为了保护密码安全,我们设置了密码登录次数限制,每个用户ID只允许尝试登录四次。
5.CnewBooksDlg作为书库管理对话框类。
主要的数据成员分别为:
CStringm_BookName;
CStringm_BookNumber;
longm_Now;
CStringm_Press;
doublem_Price;
intm_Total;
CStringm_Writer;
CTimem_Time;
CStringm_State;
主要的函数成员有
voidOnButtonIn();
voidOnButtonCheckBooks();
voidOnButtonBack();
voidOnButtonShow();
voidOnButtonEdit();
其中OnButtonIn()的功能是将用户输入新书的信息加入到表Book_Info中。
OnButtonCheckBooks()的功能是弹出查询书籍对话框;
OnButtonBack()的功能是退出;
OnButtonShow()的功能是根据用于输入书籍ID号,在编辑框中显示书籍信息,以便修改;
OnButtonEdit()的功能是修改书籍信息,并把新信息放到表Book_Info中。
6.CheckBook作为查询书籍相关信息的类。
主要的数据成员有:
CListCtrlm_ctrList;
CStringm_BookID;
主要的函数成员有:
afx_msgvoidOnButtonCheck();
afx_msgvoidOnButtonCheckall();
afx_msgvoidOnButtonCancel();
virtualBOOLOnInitDialog();
其中,OnInitDialog()的功能是初始化对话框信息,其中包括修改组合框的参数。
OnButtonCheck()的功能是根据输入图书的ID号,在组合框中显示该图书的所有信息。
OnButtonCheckall()的功能是查询全部书籍的所有信息。
OnButtonCancel()的功能是退出。
7.MD5是一个用于加密的类。
主要的函数成员有:
voidMD5Final(BYTEdigest[16],MD5*context);
voidMD5_memset(BYTE*output,intvalue,DWORDlen);
voidMD5_memcpy(BYTE*output,BYTE*input,DWORDlen);
voidDecode(DWORD*output,BYTE*input,DWORDlen);
voidEncode(BYTE*output,DWORD*input,DWORDlen);
voidMD5Update(MD5*context,BYTE*input,DWORDinputLen);
voidMD5Init(MD5*context);
voidMD5Transform(DWORDstate[4],BYTEblock[64]);
8.OLDBOOK作为处理旧书对话框类。
主要的成员数据有
CStringm_OldBook;
OLDBOOK类里面有2个函数,分别是
OnButtonDelete();
OnButtonCancel();
其中OnButtonDelete()的功能是根据用户输入书籍的ID号,把书记的信息从表Book_Info中删除。
OnButtonCancel()的功能是退出。
9.Clost作为书记挂失对话框类。
主要的数据成员有
CStringm_Lost;
主要的成员函数有
OnButtonLost();
它的作用是把书籍的State字段中的信息改为“遗失”。
10.CNewProof作为读者注册对话框类。
主要的数据成员有
CStringm_strTel;
CStringm_strProofID;
CStringm_strName;
CStringm_strID;
CStringm_strAddress;
intm_Book;
CTimem_Time;
intm_sex;
主要的函数成员有
afx_msgvoidOnButtonReturn();
afx_msgvoidOnButtonCheck();
afx_msgvoidOnButtonOk();
afx_msgvoidOnButtonShow();
afx_msgvoidOnButtonEdit();
其中OnButtonReturn()的功能是返回;
OnButtonCheck()的功能是弹出CheckProof对话框;
OnButtonOk()的功能是将读者输入的信息加入到表Proof_Info中去;
OnButtonShow()的功能是根据读者输入的ID号,在编辑框中显示该借阅证的所有信息,以便作出修改。
OnButtonEdit()的功能是修改借阅证信息,并将新信息加入到表Proof_Info中去。
11.CheckProof作为查询借阅证对话框类。
主要的数据成员有
CListCtrlm_ctrList;
CStringm_ReaderID;
主要的成员函数有
afx_msgvoidOnButtonCheck();
virtualBOOLOnInitDialog();
afx_msgvoidOnButtonCheckall();
afx_msgvoidOnButtonCancel();
其中OnButtonCheck()的功能是根据读者输入Proof的ID号,在组合框中显示该Proof的所有信息。
OnInitDialog()的功能是初始化对话框信息,其中包括修改组合框的参数;
OnButtonCheckall()的功能是将表Proof_Info中的所有信息全部显示在组合框中;
OnButtonCancel()的功能是退出。
12.ProofLost作为挂失借阅证对话框类。
主要的数据成员有
CStringm_ProofID;
主要的成员函数有
afx_msgvoidOnButtonProoflost();
afx_msgvoidOnButtonCancel();
OnButtonProoflost()的功能是根据用户输入借阅证ID号,删除该ID号在表Proof_Info中所有的信息。
OnButtonCancel()的功能是退出。
13.DeleteID作为删除帐号对话框类。
主要的数据成员有
longm_DeleteID;
主要的成员函数有
afx_msgvoidOnButtonCancel();
afx_msgvoidOnButtonDelete();
OnButtonCancel()的作用是退出;
OnButtonDelete()的作用是根据用户输入ADMIN的ID号,在表Admin_Info中删除它的所有信息。
14.EditKey作为修改密码对话框类。
主要的数据成员有
CEditm_Password;
longm_ProofID;
CStringm_password;
CStringm_Pkey;
CStringm_Key;
主要的成员函数有
afx_msgvoidOnButtonEdit();
afx_msgvoidOnButtonCancel();
其中OnButtonEdit()的作用是修改密码,并将新密码放到表Admin_Info中。
OnButtonCancel()的作用是退出。
15.CheckAllAdmin作为查询全部管理员信息对话框类。
主要的成员数据有
CListCtrlm_ctrList;
主要的成员函数有
afx_msgvoidOnButtonCheckall();
virtualBOOLOnInitDialog();
afx_msgvoidOnButtonCancel();
OnButtonCheckall()的作用是将表Admin_Info的所有信息显示到组合框中;
OnInitDialog()的功能是初始化对话框信息,其中包括修改组合框的参数;
OnButtonCancel()的功能是退出。
16.CheckBorrowInfo作为查询借阅记录对话框类。
主要的成员数据有
CListCtrlm_ctrList;
CStringm_ProofID;
主要的成员函数有
virtualBOOLOnInitDialog();
afx_msgvoidOnButtonReset();
afx_msgvoidOnButtonReturn();
voidOnOK();
其中,OnInitDialog()的功能是初始化对话框信息,其中包括修改组合框的参数;
OnButtonReset()的功能是将编辑框里面的内容清空;
OnButtonReturn()的功能是返回;
OnOK()的功能是将借阅记录显示在组合框中;
17.CboR作为借/还书对话框。
主要的成员数据有
CTimem_Time;
CStringm_BookID;
CStringm_ProofID;
doublem_PunishAmount;
主要的成员数据有
afx_msgvoidOnButtonBorrow();
afx_msgvoidOnButtonReturn();
afx_msgvoidOnButtonReset();
afx_msgvoidOnButtonBorrowinfo();
afx_msgvoidOnButtonCheckbook();
afx_msgvoidOnButtonReturnbook();
其中,OnButtonBorrow()的功能是从表Book_Info调出要借的书籍,然后修改它的State为“已借”。
在表Proof_Info中添加所借书籍的ID号、借出时间,修改借阅总量;在表Borrow_Info中添加借书记录.
OnButtonReturnbook()的功能是从表Book_Info调出要借的书籍,然后修改它的State为“可借”。
在表Proof_Info中添加所借书籍的ID号、还书时间,修改借阅总量;在表Borrow_Info中添加还书记录.
OnButtonReset()的功能是重置所有信息。
OnButtonBorrowinfo()的功能是弹出查询结束记录对话框;
OnButtonCheckbook()的功能是弹出查询书籍对话框;
OnButtonReturn()的功能是退出。
五.数据设计
数据库设计:
•数据库类型——ACCESS
•数据表——Admin_Info(管理员基本信息)、Book_Info(书籍信息)、Borrow_Info(借阅信息)、Proof_Info(读者信息)
•关系
•数据文件格式——.mdb
关系图:
六.技术难点
1.数据库连接
ADO是目前在Windows环境中比较流行的数据库编程技术,是基于OLEDB的访问接口,它继承了OLEDB技术的优点,并且,ADO对OLEDB的接口做了封装,定义了ADO对象,使程序开发得到简化,ADO技术属于数据库访问的高层接口。
在VC中使用ADO有3中不同的方法
(1)直接使用ADOData控件。
(2)使用智能指针操作。
(3)使用VCExtensionsforADO。
•由于使用智能指针进行操作比较普遍,故我们经过深思熟虑之后,一致决定使用该方法进行数据库连接。
•ADO库包含3种智能指针,即连接对象指针_ConnectionPtr、命令对象指针_CommandPtr、记录集对象指针_RecordsetPtr。
•用Connection对象连接数据库时,首先需要添加一个指向Connection对象的指针,然后调用CreatInstance()来创建对象的一个实例,最后通过Connection对象的Open方法进行连接。
例如:
•_ConnectionPtrm_pConnection;
•m_pConnection.CreateInstance("ADODB.Connection");
•m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=Library.mdb","","",adModeUnknown);
•如果使用记录集,可以直接用Recordset对象进行查询取得记录集,然后进行添加、删除、修改和查询等操作。
2.字符转换
由于ADO是基于若干COM接口实现的,因此COM使用其特定的数据类型。
我接触的比较多的数据类型是_variant_t和_bstr_t两种。
在遇到表和控件定义的变量格式不一致的情况时,我们通常会先定义_variant_t或者_bstr_t类型的变量,再进行相应的转换。
通过查阅相关资料,并运用网络搜索,我们进一步了解了这两种数据类型。
_variant_t是Variant的封装类,而Variant是一个结构化的数据类型,包含了一个成员值及其数据类型的表示。
Variant可以表示相当多的数据类型,甚至另一个Variant,BSTR指针。
对于Variant变量的赋值,首先给Variant成员赋值,指明数据类型,再对联合结构中相同数据类型的变量赋值。
_bstr_t也是一个结构化的数据类型,是32位指针,但并不直接指向字串的缓冲区。
COM提供了方法进行串的空间分配、操作、释放。
还有,我们也采用了CString的变量,通过Format()函数进行相应的数据类型转换。
参考书目:
[1]侯其锋李晓华李莎,《VisualC++数据库通用模块开发与系统移植》,北京,清华大学出版社,2007年
[2]魏亮李春葆,《VisualC++程序设计例学与实践》,北京,清华大学出版社,2007年
[3]王晟,韩泽坤,《Access数据库开发经典案例解析》,北京,清华大学出版社2006年
[4]刘凯奎,王永皎,《VisualC+++SQLServer数据库开发与实例》,北京,清华大学出版社2006年
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ mfc 图书馆管理系统 设计说明 图书馆 管理 系统 设计 说明