已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
管理信息系统课程设计设计内容: 学生班级: 学生姓名: 学 号: 班内序号: 设计日期:一、课设目的通过对图书管理信息系统的系统分析、系统设计、编码和调试等工作的实践,了解管理信息系统的一般设计方法和实现思路,深入了解数据库设计的基本理论及方法。二、系统功能框图该系统主要由四大功能模块组成:用户登录、图书管理、用户管理和借阅查询。各大功能模块又由一些子功能模块构成,其功能框图如下。三、数据库结构1、读者类别表(ReaderType)2、读者信息表(Reader)3、图书信息表(Book)4、借阅信息表(Borrow)四、 功能模块图书管理用户管理借阅查询五、界面设计1、登入窗口2、图书管理窗口3、用户管理窗口4、系统管理窗口5、借阅信息窗口6、图书借阅窗口7、还书窗口8、个人信息修改窗口六、实现代码1、登入代码 int right=1; QSqlDatabase db=QSqlDatabase:addDatabase(QODBC); QString strDatabaseName=QString(DRIVER=SQL Server;SERVER=TERRY;Database=book;uid=tt;pwd=123); db.setDatabaseName(strDatabaseName); db.setPort(1433); bool ok=db.open(); if(ok) QSqlQuery query; query.exec(tr(select 用户编号,用户姓名,用户密码,用户类别 from users); if (!query.isActive() QMessageBox tempMsgBox(QMessageBox:Warning,tr(查找用户失败!),query.lastError().text(),QMessageBox:Ok); tempMsgBox.exec(); else while(query.next() this-rid=query.value(0).toString(); QString name=query.value(1).toString(); QString passward=query.value(2).toString(); this-type=query.value(3).toString(); if(this-lineEdit0-text()=name&this-lineEdit1-text()=passward) right=0; if(type=1) managesystem *w1=new managesystem; w1-rid=this-rid; w1-type=this-type; w1-show(); this-close(); else if(type=2) manageusers *w2=new manageusers; w2-rid=this-rid; w2-type=this-type; w2-show(); this-close(); else if(type=3) managebooks *w3=new managebooks; w3-rid=this-rid; w3-type=this-type; w3-show(); this-close(); else reader *w4=new reader; w4-rid=this-rid; w4-type=this-type; w4-show(); this-close(); if(right) QMessageBox tempMsgBox(QMessageBox:Warning,tr(消息),tr(用户名或密码错误,请重新输入!),QMessageBox:Ok); tempMsgBox.exec(); else QMessageBox tempMsgBox(QMessageBox:Information,tr(消息),tr(欢迎进入图书管理系统!),QMessageBox:Ok); tempMsgBox.exec(); else QMessageBox tempMsgBox(QMessageBox:Warning,tr(消息),tr(数据库连接错误,请重新连接!),QMessageBox:Ok); tempMsgBox.exec(); 2、添加图书代码 /构造sql添加语句QString sqlString(tr(insert into books(图书编号,书名,作者,出版社,出版日期,分类名,语言,页数,价格,入馆日期,内容简介,是否在馆); sqlString.append(QString(values()+this-lineEdit0-text()+QString(,);sqlString.append(QString()+this-lineEdit1-text()+QString(,); sqlString.append(QString()+this-lineEdit2-text()+QString(,); sqlString.append(QString()+this-lineEdit3-text()+QString(,); sqlString.append(QString()+this-lineEdit4-text()+QString(,); sqlString.append(QString()+this-lineEdit5-text()+QString(,); sqlString.append(QString()+this-lineEdit6-text()+QString(,); sqlString.append(QString()+this-lineEdit7-text()+QString(,); sqlString.append(QString()+this-lineEdit8-text()+QString(,); sqlString.append(QString()+this-lineEdit9-text()+QString(,); sqlString.append(QString()+this-lineEdit10-text()+QString(,) sqlString.append(QString()+this-lineEdit11-text()+QString()/执行添加QSqlQuery query;query.exec(sqlString);/显示QSqlTableModel *model=new QSqlTableModel;model-setTable(books);model-select();this-tableView-setModel(model);/判断添加是否成功if (!query.isActive() QMessageBox tempMsgBox(QMessageBox:Warning,tr(添加失败),query.lastError().text(),QMessageBox:Ok); tempMsgBox.exec();else QMessageBox tempMsgBox(QMessageBox:Information,tr(消息),tr(添加成功!),QMessageBox:Ok); tempMsgBox.exec();3、删除图书代码 /构造sql删除语句 QString sqlString(tr(delete from books where 图书编号=); sqlString.append(this-lineEdit0-text()+QString(); QSqlQuery query; query.exec(sqlString); /显示 QSqlTableModel *model=new QSqlTableModel; model-setTable(books); model-select(); this-tableView-setModel(model); /判断删除是否成功 if(!query.isActive() QMessageBox tempMsgBox(QMessageBox:Warning,tr(删除失败!),query.lastError().text(),QMessageBox:Ok); tempMsgBox.exec(); else QMessageBox tempMsgBox(QMessageBox:Information,tr(消息),tr(删除成功!),QMessageBox:Ok); tempMsgBox.exec(); 4、查询图书代码 /构造sql查询语句 QString sqlString(tr(select 书名,作者,出版社,出版日期,分类名,语言,页数,价格,入馆日期,内容简介,是否在馆 from books where 图书编号=); sqlString.append(this-lineEdit0-text()+QString(); QSqlQuery query; query.exec(sqlString); if (!query.isActive() QMessageBox tempMsgBox(QMessageBox:Warning,tr(查找图书失败!),query.lastError().text(),QMessageBox:Ok); tempMsgBox.exec(); else while(query.next() this-lineEdit1-setText(query.value(0).toString(); this-lineEdit2-setText(query.value(1).toString(); this-lineEdit3-setText(query.value(2).toString(); this-lineEdit4-setText(query.value(3).toString(); this-lineEdit5-setText(query.value(4).toString(); this-lineEdit6-setText(query.value(5).toString(); this-lineEdit7-setText(query.value(6).toString(); this-lineEdit8-setText(query.value(7).toString(); this-lineEdit9-setText(query.value(8).toString(); this-lineEdit10-setText(query.value(9).toString(); this-lineEdit11-setText(query.value(10).toString(); 5、修改图书代码 /构造sql更新语句 QString sqlString(tr(update books); sqlString.append(QString(tr( set 书名 = )+this-lineEdit1-text()+QString(,); sqlString.append(QString(tr(作者 = )+this-lineEdit2-text()+QString(,); sqlString.append(QString(tr(出版社 = )+this-lineEdit3-text()+QString(,); sqlString.append(QString(tr(出版日期 = )+this-lineEdit4-text()+QString(,); sqlString.append(QString(tr(分类名 = )+this-lineEdit5-text()+QString(,); sqlString.append(QString(tr(语言 = )+this-lineEdit6-text()+QString(,); sqlString.append(QString(tr(页数 = )+this-lineEdit7-text()+QString(,); sqlString.append(QString(tr(价格 = )+this-lineEdit8-text()+QString(,); sqlString.append(QString(tr(入馆日期 = )+this-lineEdit9-text()+QString(,); sqlString.append(QString(tr(内容简介 = )+this-lineEdit10-text()+QString(,); sqlString.append(QString(tr(是否在馆 = )+this-lineEdit11-text()+QString( ); sqlString.append(QString(tr(where 图书编号 = )+this-lineEdit0-text()+QString(;); /执行更新 QSqlQuery query; query.exec(sqlString); /显示 QSqlTableModel *model=new QSqlTableModel; model-setTable(books); model-select(); this-tableView-setModel(model); /判断更新是否成功 if (!query.isActive() QMessageBox tempMsgBox(QMessageBox:Warning,tr(更新失败!),query.lastError().text(),QMessageBox:Ok); tempMsgBox.exec(); else QMessageBox tempMsgBox(QMessageBox:Information,tr(消息),tr(更新成功!),QMessageBox:Ok); tempMsgBox.exec(); 6、借阅图书代码 int right,isin,haveborrownum,canborrownum,canborrowdays; right=1; /构造sql查询语句 QString sqlString(tr(select 是否在馆 from books where 图书编号 =); sqlString.append(this-lineEdit0-text()+QString(); QSqlQuery query; query.exec(sqlString); if(!query.isActive() right=0; QMessageBox tempMsgBox(QMessageBox:Warning,tr(数据库连接失败!),query.lastError().text(),QMessageBox:Ok); tempMsgBox.exec(); else while(query.next()isin=query.value(0).toInt(); /构造sql查询语句1 QString sqlString1(tr(select 已借书数量 from users where 用户编号 =); sqlString1.append(rid+QString(); QSqlQuery query1; query1.exec(sqlString1); if(!query1.isActive() right=0; QMessageBox tempMsgBox(QMessageBox:Warning,tr(数据库连接失败!),query1.lastError().text(),QMessageBox:Ok); tempMsgBox.exec(); else while(query1.next()haveborrownum=query1.value(0).toInt(); /构造sql查询语句2 QString sqlString2(tr(select 可借书数量,可借书天数 from usertype where 用户类别 =); sqlString2.append(type+QString(); QSqlQuery query2; query2.exec(sqlString2); if(!query2.isActive() right=0; QMessageBox tempMsgBox(QMessageBox:Warning,tr(数据库连接失败!),query2.lastError().text(),QMessageBox:Ok); tempMsgBox.exec(); else while(query2.next() canborrownum=query2.value(0).toInt(); canborrowdays=query2.value(1).toInt(); if(isin=0) right=0; QMessageBox tempMsgBox(QMessageBox:Information,tr(消息),tr(本图书已经借出,请借阅其他书籍!),QMessageBox:Ok); tempMsgBox.exec(); if(haveborrownum=canborrownum) right=0; QMessageBox tempMsgBox(QMessageBox:Information,tr(消息),tr(您图书已经借满,请还书后再借!),QMessageBox:Ok); tempMsgBox.exec(); if(right) QDateTime dateTime = QDateTime:currentDateTime(); QDateTime dateTime1; dateTime1=dateTime.addDays(canborrowdays); QString strtime=dateTime1.time().toString(); int y=dateTime.date().year(); int m=dateTime.date().month(); int d=dateTime.date().day(); int y1=dateTime1.date().year(); int m1=dateTime1.date().month(); int d1=dateTime1.date().day(); QString date1(QString:number(y)+-+QString:number(m)+-+QString:number(d)+ +strtime); QString date2(QString:number(y1)+-+QString:number(m1)+-+QString:number(d1)+ +strtime); /this-lineEdit1-setText(date1); /构造sql添加语句3 QString sqlString3(tr(insert into borrow(图书编号,用户编号,续借次数,借书日期,应还日期,超期天数,超期金额); sqlString3.append(QString(values()+this-lineEdit0-text()+QString(,); sqlString3.append(QString()+rid+QString(,0,); sqlString3.append(QString()+QString(date1)+QString(,); sqlString3.append(QString()+QString(date2)+QString(,0,0);sqlString3.append(QString()+date2+QString(,0,0) ); /执行添加 QSqlQuery query3; query3.exec(sqlString3); /判断添加是否成功 if (!query3.isActive() QMessageBox tempMsgBox(QMessageBox:Warning,tr(借阅失败!),query3.lastError().text(),QMessageBox:Ok); tempMsgBox.exec(); else QMessageBox tempMsgBox(QMessageBox:Information,tr(消息),tr(借阅成功!),QMessageBox:Ok); tempMsgBox.exec(); isin=0; haveborrownum+=1; /构造sql更新语句 QString sqlString(tr(update books); sqlString.append(QString(tr( set 是否在馆 = )+QString:number(isin)+QString(); sqlString.append(QString(tr(where 图书编号 = )+this-lineEdit0-text()+QString(;); /执行更新 QSqlQuery query; query.exec(sqlString); /显示 this-lineEdit11-setText(0); QSqlTableModel *model=new QSqlTableModel; model-setTable(books); model-select(); this-tableView-setModel(model); /判断更新是否成功 if (!query.isActive() QMessageBox tempMsgBox(QMessageBox:Warning,tr(更新图书失败!),query.lastError().text(),QMessageBox:Ok); tempMsgBox.exec(); else /构造sql更新语句 QString sqlString(tr(update users); sqlString.append(QString(tr( set 已借书数量 = )+QString:number(haveborrownum)+QString(); sqlString.append(QString(tr(where 用户编号 = )+rid+QString(;); /执行更新 QSqlQuery query; query.exec(sqlString); /判断更新是否成功 if (!query.isActive() QMessageBox tempMsgBox(QMessageBox:Warning,tr(更新用户失败!),query.lastError().text(),QMessageBox:Ok); tempMsgBox.exec(); 7、续借图书代码 int right=1; int borrowtimes,canborrowtimes,canborrowdays; QString shouldreturndays; /构造sql查询语句 QString sqlString(tr(select 续借次数,可续借的次数,可借书天数,应还日期 from borrowagainview where 图书编号 =); sqlString.append(this-lineEdit0-text()+QString( ); QSqlQuery query; query.exec(sqlString); if (!query.isActive() right=0; QMessageBox tempMsgBox(QMessageBox:Warning,tr(续借失败!),query.lastError().text(),QMessageBox:Ok); tempMsgBox.exec(); else while(query.next() borrowtimes=query.value(0).toInt(); canborrowtimes=query.value(1).toInt(); canborrowdays=query.value(2).toInt(); shouldreturndays=query.value(3).toString(); if(borrowtimes=canborrowtimes) right=0; QMessageBox tempMsgBox(QMessageBox:Information,tr(续借失败),tr(续借次数已满,不能续借!),QMessageBox:Ok); tempMsgBox.exec(); if(right) QDateTime dateTime = QDateTime:currentDateTime(); QDateTime dateTime1; dateTime1=dateTime.addDays(canborrowdays); QString strtime=dateTime1.time().toString(); int y1=dateTime1.date().year(); int m1=dateTime1.date().month(); int d1=dateTime1.date().day(); QString date2(QString:number(y1)+-+QString:number(m1)+-+QString:number(d1)+ +strtime); borrowtimes+=1; /构造sql更新语句 QString sqlString(tr(update borrowagainview); sqlString.append(QString(tr( set 续借次数 = )+QString:number(borrowtimes)+QString(,); sqlString.append(QString(tr( 应还日期 = )+QString(date2)+QString(); sqlString.append(QString(tr(where 图书编号 = )+this-lineEdit0-text()+QString(); /执行更新 QSqlQuery query; query.exec(sqlString); /显示 QSqlTableModel *model=new QSqlTableModel; model-setTable(borrowedview); model-select(); this-tableView-setModel(model); /判断更新是否成功 if (!query.isActive() QMessageBox tempMsgBox(QMessageBox:Warning,tr(续借失败!),query.lastError().text(),QMessageBox:Ok); tempMsgBox.exec(); else QMessageBox tempMsgBox(QMessageBox:Information,tr(消息),tr(续借成功!),QMessageBox:Ok); tempMsgBox.exec(); 8、还书代码 int haveborrownum; /构造sql查询语句 QString sqlString1(tr(select 已借书数量 from borrowagainview where 图书编号 = ); sqlString1.append(this-lineEdit0-text()+QString(); QSqlQuery query1; query1.exec(sqlString1); if (!query1.isActive() QMessageBox tempMsgBox(QMessageBox:Warning,tr(查询失败!),query1.lastError().text(),QMessageBox:Ok); tempMsgBox.exec(); else while(query1.next()haveborrownum=query1.value(0).toInt(); haveborrownum-=1; /构造sql更新语句 QString sqlString(tr(update books); sqlString.append(QString(tr( set 是否在馆 = )+1+QString(); sqlString.append(QString(tr(where 图书编号 = )+this-lineEdit0-text()+QString(;); /执行更新 QSqlQuery query; query.exec(sqlString); /判断更新是否成功 if (!query.isActive() QMessageBox tempMsgBox(QMessageBox:Warning,tr(更新图书失败!),query.lastError().text(),QMessageBox:Ok); tempMs
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中生安全教育课件下载
- 风电建设安全课件
- 幼儿安全主题教育课件
- 一级建造师之一建矿业工程实务练习题(一)及答案
- 关于纺织厂安全的课件
- 2025年安全环保知识竞赛题库
- 07月高等教育自学考试《劳动社会学》历年试题及答案
- 下半年黑龙江C类安全员证书考试题
- 国家开放大学电大专科《生产管理》期末题库及答案
- 2025年导游资格考试真题汇编及答案详解指南
- 【2025年】人防工程测试题及答案
- 北京师范大学本科生毕业论文(设计)开题报告
- 2025年中国沉香行业分析报告
- 2022年湖北省药品监督管理局审评中心招聘笔试备考题库及答案解析
- 小区游泳池经营承包合同
- 在职申硕(同等学力)临床医学学科综合普通外科-试卷1
- 离职手续委托书范本
- JJF 1099-2018表面粗糙度比较样块校准规范
- GB/T 5095.2-1997电子设备用机电元件基本试验规程及测量方法第2部分:一般检查、电连续性和接触电阻测试、绝缘试验和电压应力试验
- 2023年版毛概知识点归纳
- klar乐莱原材料成份与功效 图文课件
评论
0/150
提交评论