图书管理系统VC确定用例图书信息的维护读者信息的维护图书信息的查询读者信息的查询口令管理借书图书管理员还书查询个人基本信息读者查询个人借阅信息数据库选择我们使用access数据库作为系统后台数据库,在设计数据库时,需要注意数据库的主键和外键约束的设置。采用ADO连接数据库,使得应用可以平滑的移植到其他数据库,如SqlServer数据库设计类静态设计图书管理系统是一种典型的信息管理系统,需要与数据库进行大量的操作对于这种系统,一般采用分层的架构模式,将数据访问功能与界面部分分离,做到低耦合,以达到能够方便的移植数据库。ADO封装类CDataAccessLayer在VC中使用ADO比较复杂,我们设计一个类,将所有与ADO交互的操作封装到这个类中。在我们的类中,并没有封装所有的ADO操作,为了简化接口,我们只封装系统中会使用到的操作。我们在这里将所有对于ADO的操作都封装在一个类中了,还可以采用另外一种方法:分别封装ADO的连接,数据集,命令对象。这种分别封装的方法比我们的方法更灵活,效率也会更高,但是需要使用者对于ADO的几个对象间的关系比较熟悉。数据逻辑类封装数据库SQL查询语句的生成操作读者类CBorrower图书编目类CTitle库存类CItem借阅类CLoan读者类Update返回更新资料Sql语句Add返回插入资料的Sql语句Delete返回删除资料的Sql语句Update返回更新资料的Sql语句Find返回查找资料的Sql语句FindByISBN根据ISBN查找图书编目GetDataRow返回CDataAccessLayer对象中数据集当前游标指向的数据,通过函数参数返回+GetDataRow()+Update()+Add()+FindByISBN()+Delete()+Find()+CTitle()+~CTitle()CTitleCTitle::Add函数CStringCTitle::Add(CStringISBN,CStringBookName,CStringAuthor,doubleUnitPrice,CStringPress,COleDateTimePressDate,CStringSearchKey){CStringsql;sql.Format(InsertintoTitlevalues('%s','%s','%s',%.2f,'%s','%s','%s'),ISBN,BookName,Author,UnitPrice,Press,PressDate.Format(),SearchKey);returnsql;}界面设计添加按钮的事件响应函数voidCDlgBookData::OnButtonAdd(){this-UpdateData(true);CTitlet;CDataAccessLayerdal;if(dal.ExecuteCommand(t.Add(m_strBookNo,m_strBookName,m_strAuthor,m_dUnitPrice,m_strPress,m_dtPressDate,m_strSearchKey)))AfxMessageBox(添加了一条记录);elseAfxMessageBox(添加失败,可能是书号冲突);}系统测试测试用例根据需求分析用例设计