第一篇:用SQL数据库实现中职生学籍管理系统
用SQL数据库实现中职生学籍管理系统
摘要:中职学生人数多,学籍信息录入、查询、修改、更新等工作非常多,操作也非常频繁,利用Excel等办公工具无法满足当前工作需求,该文提出开发一个中职学生学籍管理系统,利用SQL数据库、程序语言等技术开发自动化软件,提高中职学生学籍管理效率。
关键词:SQL数据库;中职学生学籍管理系统;概念设计;关系设计
中图分类号:TP311 文献标识码:A 文章编号:1009-5039(2018)17-0019-03
Abstract: the number of students,student information input,query,modify and update the work very much,the operation is also very frequent,the use of Excel and other office tools can not meet the current demand,this paper is to develop a vocational school student management system,using SQL programming language,database technology development automation software,improve the secondary vocational school students school management efficiency.Key words: SQL database; student status management system of secondary vocational school students; conceptual design; relationship design 引言
随着互联网、大数据、云计算、数据库等技术的发展,促进了管理系统在政企办公、电子商务、教育科研、金融证券等多个领域应用,实现了数据集中保存、信息共享等。中职学生学籍保存了学生的基本信息、班级信息、专业信息,利用SQL数据库可以实现信息插入、删除、修改、查询,提高了中职学生学籍信息的共享化,确保学籍管理自动化和智能化。中职学生学籍管理系统设计
2.1 学籍管理系统功能分析
学籍管理系统能够实现中职学生基本信息的加工和处理,主要包括学籍信息录入、学籍信息查询、学籍信息修改、学籍信息删除四个方面。
1)学籍信息录入
该功能可以按照中职学生管理需求,录入中职学生的姓名、学号、性别、出生日期、政治面貌、籍贯、民族、班级、专业、生源地、联系方式、备注等信息,将这些信息保存到基本信息表,以便其他功能能够调用。
2)学籍信息查询
该功能可以按照学号、姓名、班级、专业等关键字进行查询,实现中职学生学籍的精准查询、模糊查询。
3)学籍信息修改
中职学生可能存在转班级、转专业、修改成绩等需求,政治面貌也可能是团员改为党员,因此学习信息需要实现动态修改功能。
4)学籍信息删除
中职学生学籍管理系统的数据库容量是有限的,如果学生毕业五年或十年之后,学校就可以把学生的学籍信息删除,以便能够及时的更新数据库。
2.2 学籍管理系统功能设计
中职学生学籍管理系统采用了三层的B/S体系架构和云计算架构,这两个架构能够集成融合在一起使用,实现跨平台、跨语言操作服务模式。集成架构可以将系统总体划分为三层,分别是表示层、逻辑业务处理层、数据业务处理层。表示层直接为学生、教师或教务管理员提供交互操作,可以输入请求信息和查看处理结果。逻辑业务处理层能够实现业务请求数据解析,将这些信息翻译为程序加工内容,构建一个并发处理模型,实现服务处理、数据处理。数据业务处理层能够实现数据分布存储、数据高速通信、高容错处理的功能。学籍管理系统功能设计如图1所示。SQL数据库在学籍管理系统中的应用
3.1 SQL数据库概念设计
SQL数据库概念设计可以从客观现实世界中的物体抽象建模,利用E-R图描述客观世界信息。本文针对中学生学籍信息管理系统进行数据需求分析,归纳了系统数据库实体包括用户、学生、班级、专业、成绩等五个,实体关系如图2所示。
3.2 SQL数据库关系设计
E-R图可以转换为关系表,通过分析之后关系表包括学生信息表、成绩表、用户表、班级表、专业表。
(1)学生信息表
学生信息表的字段分别是学号、姓名、性别、出生日期、政治面貌、籍贯、民族、班级、专业、生源地、联系方式、备注,如表1所示。
(2)成绩表
成绩表的字段分别是学号、课程号、课程名、成绩,如表2所示。
(3)班级表
班级表的字段分别是班级号、班级名、班主任名称,如表3所示。
(4)专业表
专业表的字段分别是专业号、专业名、部主任,如表4所示。
(5)用户表
用户表的字段分别是用户号、用户名、角色名,如表5所示。
3.3 SQL?稻菘馐迪?
SQL数据库实现的功能很多,比如插入功能、删除功能、修改功能、查询功能,具体的数据库实现代码如下:学籍信息插入功能实现代码Insert into 表名称values(值1,值2,....);学生信息删除功能实现代码delete from 表名称 where 列名称=值;学生信息修改功能实现代码update 表名称 set 列名称=新值 where列名称=值;查询功能实现代码select 查询结果 from 表名称。结束语
SQL数据库可以为系统构建一个共享存储平台,其可以减少大量数据重复使用问题,降低数据的冗余度,能够维护数据的一致性,利用结构化查询语言实现数据插入、删除、修改和查询,实现了数据的集中控制和管理。
参考文献:
[1] 杨俊,姜学军.浅谈中职院校教务管理系统的设计与实现[J].黑龙江科技信息,2017(1):186-186.[2] 武怀生,李秀明.基于VB+ACCESS的学生学籍管理系统的设计与实现[J].软件工程,2017,20(4):32-35.[3] 连雁平.基于SSH的高校学生学籍管理系统设计与实现[J].佛山科学技术学院学报(自然科学版),2017(5):54-59.[4] 于雷.关于如何优化SQL数据库的性能的几点分析[J].电脑知识与技术,2016,12(9X):19-20.[5] 刘婷.基于SQL数据库的职业院校学生信息管理系统研究[J].商,2016(26):236-237.
第二篇:数据库课程设计学籍管理系统
学籍管理系统
本次数据库课程设计是以Access数据库作为后台以VB作为前台的应用型设计课程。
综合我们所学的两大课程创建应用型的数据库系统,大大的提高了我们学生的动手能力,作到了理论与实践相结合。一.题目说明:
学生学藉管理系统是典型的学藉管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。
本系统主要完成对学生情况和学生成绩的管理,包括数据库中表的添加、删除等。系统还可以完成对各类信息的浏览、添加、删除、等功能。
系统的核心是数据库中各个表联系,每一个表的修改都将联动的影响其它的表,当完成对数据的操作时系统会自动地完成数据库的修改。查询功能也是系统的核心之一,在系统中即有单条件查询和多条件查询,也有精确查询和模糊查询,系统不仅有静态的条件查询,也有动态生成的条件查询,其目的都是为了方便用户使用。系统有完整的用户添加、删除和密码修改功能,并具备报表打印功能。关键字:窗体、数据库、vb6.0、access2000。
学生学籍管理系统被广泛应用于各类学校的学生学籍管理工作中,要求其具有实用性强、使用方便、效率高和安全可靠等特点。本管理系统正是围绕以上几个方面进行开发的,在开发过程中充分考虑到本系统的应用特点,并进行了大量的检验,证明其的确达到了设计的要求,是一个已具备了实际应用能力的软件。本文主要论述学生学籍管理系统的开发过程,在涉及到VB及Access中的部分知识以举例的方式进行讲解 二.总体设计:
我的总体设计如下:
(1).利用Access建立数据库,并在该数据库下创建五张表格,分别是学生表、课程表、选课表、学生选课表以及口令表。
(2)利用VB来建立界面并对它进行设计和修改,大体框架如下: FORM1 用于首界面
FORM2 用于登陆此系统的登录界面
FORM3 是主窗体,在这上面建立相应的菜单 如:文件——退出、添加用户(FORM4)数据信息——管理使用(FORM5)
基本操作——学生操作、选课操作、课程操作(FORM6、FORM7、FORM8)(3)对以上的界面进行设计以及对所要操作的部件进行编程。
三.常用控件的说明: 所有的Windows应用程序窗口或对话框,都是由诸如文本框、列表框、命令按扭、滚动条、命令菜单等组成的。VB通过控件工具箱提供了它们与用户进行交
互的可视化部件,即控件。程序开发人员只需要通过简单的操作,在窗体上安排所需要的控件,完成应用程序的用户界面设计即可。序号
名称
功能 Label标签
用于说明 Textbox文本框
用于文本输入或显示 3 Frame框架
用于组合控件 Commandbutton命令按扭
单击执行命令 5 Timer计时期
用于定时 Data数据控件
用于访问数据库
三.详细说明:
1.数据库的建立与设计:
数据库是有结构的数据集合,它与一般的数据文件不同,(其中的数据是无结构的)是一串文字或数字流。数据库中的数据可以是文字、图象、声音等。
Access数据库由六种对象组成,它们是表、查询、窗体、报表、宏和模块。
(1).表(Table)——表是数据库的基本对象,是创建其他5种对象的基础。表由记录组成,记录由字段组成,表用来存贮数据库的数据,故又称数据表。
(2).查询(Query)——查询可以按索引快速查找到需要的记录,按要求筛选记录并能连接若干个表的字段组成新表。
(3).窗体(Form)——窗体提供了一种方便的浏览、输入及更改数据的窗口。还可以创建子窗体显示相关联的表的内容。窗体也称表单。
(4).报表(Report)——报表的功能是将数据库中的数据分类汇总,然后打印出来,以便分析。
(5).宏(Macro)——宏相当于DOS中的批处理,用来自动执行一系列操作。Access列出了一些常用的操作供用户选择,使用起来十分方便。
(6).模块(Module)——模块的功能与宏类似,但它定义的操作比宏更精细和复杂,用户可以根据自己的需要编写程序。模块使用Visual Basic编程。
我们利用Access来建立数据库,我们的库中有五张表格,其分别是学生表、课程表、选课表、学生选课表以及口令表。
我们就以学生表为例做一个简单的说明:
我们使用设计器来创建表的,我的这张表有七个字段,每个字段的名称分别是:学号、班级、姓名、性别、出生年月、民族、地址、电话号码,每个字段有七个数据。我并对其字段的属性进行了重新的修改,以做到不浪费其空间。
我具体的实施步骤是:启动数据库管理器——建立数据库——建立数据表结构——输入记录。
最终产生了这样的一个数据库:(如下)
2.VB界面的建立设计以及程序的编写说明:
VB 是在Windows操作平台下,用于开发和创建具有图形用户界面的应用程序的强有力工具之一。VB为开发Windows应用程序不仅提供了全新的相对简单的方式,而且也引进了新的程序设计方法——面向对象的设计方法(00P)。从传统的面向过程的程序设计,转移到更先进的面向对象的程序设计,无论是对老的程序员,还是初学者,都是一个挑战。而学习VB,则是掌握这一新的程序设计方法的一条捷径。
(1).界面的设计和程序的编写:
设计一个像这样的友好的界面,我考虑到它的颜色的配制,界面的大小,界面所载的内容的多少等,在后台我用定时器给其限定时间让它在一定的时间后自动跳到下一个界面。
这个界面是系统的主界面,用户可以在通过系统登录后直接到我们的主界面上来进行相应的操作,我的主界面采用的是一张苏州市职业大学的图片,在这个图片的上面有三个菜单,分别是文件、数据信息和基本操作。在各自的下面还有与之相对应的子菜单,文件下有退出和添加用户,数据信息下有管理使用,基本操作下有学生操作、选课操作和课程操作。我利用FORMn.SHOW命令连接到相对应的界面上。
我们的界面有好几张我就对其中的一张进行详细的分析:
这是一张学生选课浏览表的界面,这也是对应我的主界面菜单中的数据信息下的管理使用子菜单的一张界面,在这张界面中包含了8个LABEL标签控件、7个 TEXTBOX文本框控件、6个COMMANDBUTTON命令按扭控件、1个FRAME框架控件和1个DATA部件。我利用DATA部件将界面与 ACCESS数据库相连接,具体的操作是利用DATABASENAME与数据库连接,在RECORDSOURCE中找到与之对应的表,再用 DATASOURCE、DATAFIELD与个文本框内容对应,从而实现界面与数据库的连接。下面是程序的编写过程:
显示前一个数据: COMMAND1:
Private Sub Command1_Click()If Data1.Recordset.RecordCount = 0 Then MsgBox “没有记录” Else If Data1.Recordset.BOF Then Data1.Recordset.MoveFirst MsgBox “这是第一条记录!” Else Data1.Recordset.MovePrevious If Data1.Recordset.BOF = True Then
Data1.Recordset.MoveFirst MsgBox “这是第一条记录!” End If End If End If End Sub 显示第一个数据: COMMAND2:
Private Sub Command2_Click()If Data1.Recordset.RecordCount = 0 Then MsgBox “没有记录” Else Data1.Recordset.MoveFirst End If End Sub 显示最后一个数据: COMMAND4:
Private Sub Command4_Click()If Data1.Recordset.RecordCount = 0 Then MsgBox “没有记录” Else Data1.Recordset.MoveLast End If End Sub 显示后一个数据: COMMAND3:
Private Sub Command3_Click()If Data1.Recordset.RecordCount = 0 Then MsgBox “没有记录” Else If Data1.Recordset.EOF Then Data1.Recordset.MoveLast MsgBox “这是最后一条记录!” Else Data1.Recordset.MoveNext If Data1.Recordset.EOF = True Then Data1.Recordset.MoveLast MsgBox “这是最后一条记录!” End If End If End If End Sub 添加一个数据:COMMAND6 Private Sub command6_Click()If Command6.Caption = “添加” Then
Command1.Enabled = 0 Command2.Enabled = 0 Command3.Enabled = 0 Command4.Enabled = 0 Command6.Caption = “确定” Command5.Caption = “放弃” If Data1.Recordset.RecordCount > 0 Then Data1.Recordset.MoveLast End If Data1.Recordset.AddNew Text1.SetFocus Else Command1.Enabled =-1 Command2.Enabled =-1 Command3.Enabled =-1 Command4.Enabled =-1 Command6.Caption = “添加” Command5.Caption = “删除” Text2.Enabled = 0 Text5.Enabled = 0 Text3.Enabled = 0 Text4.Enabled = 0 Text6.Enabled = 0 Text7.Enabled = 0 Data1.Recordset.Update Command1.SetFocus End If End Sub 删除一个记录:COMMAND5 Private Sub Command5_Click()If Command5.Caption = “放弃” Then Command4.Enabled =-1 Command5.Enabled =-1 Command6.Enabled =-1 Command3.Enabled =-1 Command1.Caption = “添加” Command2.Caption = “删除” Text2.Enabled = 0 Text5.Enabled = 0 Text6.Enabled = 0 Text7.Enabled = 0 Text1.Enabled = 0
Else If Data1.Recordset.RecordCount = 0 Then MsgBox “没有记录”, 32, “注意” Exit Sub Else str1 = MsgBox(“删除该记录吗?”, 17, “删除”)If str1 = 1 Then Data1.Recordset.Delete Data1.Refresh If Data1.Recordset.RecordCount = 0 Then MsgBox “记录数为零” Data1.Recordset.AddNew End If End If End If End If End Sub
四、在此过程中遇到的问题以及解决方法: 在开始编写程序的时候总是有一些出错,在查找有关书籍和向老师询问后得出了结果。在将界面与数据库相连接的时候,不知道用哪种方法,在老师的帮助下我学会了两种方法:1.DATA、2.ADODC。我最终使用DATA这种方法。
五、心得体会:
在这次的设计过程中,我学到的不仅是知识,我还认识到许多事情。这次设计使我的编程水平提高了一大步,使我充分的认识到合作的可贵。由于这次设计涉及到数据库,我的学到了不少编程工具与数据库连接的知识,对数据库的操作有了进一步的了解。这次设计对我的综合能力是一次很好的锻炼,但是我必须承认自己的能力和知识还很肤浅。所以今后我的学习道路还是很漫长的。最后,在这里我要衷心的感谢我们的指导老师牛丽、程渊,谢谢她的悉心指导和热心帮助。由于我水平有限,加之时间短暂,故学籍管理系统中还有许多不足之处,请老师批评指正,我会在以后的制作中不断改进,不断完善。
第三篇:酒店管理系统 SQL数据库 实验设计
学院名称: 经济管理学院 课程题目: 酒店管理系统 授课教师: 单承戈
小组成员:祝梓惟(组长)潘佳丽 颜政
夏佳玉 杨荇贻 陈雪婷
教师评分:
二零一六年六月七日
概述
1、项目背景:
连锁酒店的兴衰,关键是管理。建设一间现代化的连锁酒店,需要的是钱,而要经营管理好一间连锁酒店,关键是管理。酒店管理是现代酒店的命脉,管理水平的高低,决定着酒店经营的成败。酒店是企业,同样是要重视管理的工作,加强管理。现代管理者即是财富,当代的管理者更是直接的财富。管理的意义,简单地讲,管就是主事,理就是治事,合起来为主管和治理人与事。随着中国加入WTO和经济全球化格局的形成,越来越多的人感到21世纪国际酒店的竞争激烈,从设备豪华到价格竞争发展到人才全方位的竞争。要竞争就必须创新。创新,是酒店的生命。商场如战场,成功的管理者及其管理需要刚柔结合。
现在的酒店管理进入e时代,未来酒店业的竞争必将进入一个新的阶段,伴随着我国旅游业的高速发展,宾馆酒店行业的服务档次迫切需要提高。在宾馆酒店竞争日趋激烈的今天,要成为佼佼者,就必须与高新技术紧密结合。硬件设施落后、管理水平滞后、服务质量低下的酒店将被逐步淘汰,传统的纯手工或简单的计算工具,已经不适应现代经济高速发展的要求,必须运用现代化管理手段,配备完善的自动化设备,提高酒店的服务水平与质量,从而赢得高信誉、强实力、好效益!本系统目地是为了一些酒店还没有使用管理软件,仍靠手工处理业务。
2、编写目的:
为连锁酒店的订房呼叫中心提供一种方便快捷的订房系统
3、软件定义:
酒店管理系统(呼叫中心用)
4、开发工具:
Microsoft SQL Server 2003数据库管理系统、Delphi7开发工具实现系统一、系统定义
酒店客房管理系统是为了在正常运营中需要对客房资源、客人信息、消费信息、结算信息等进行管理,利用酒店客房管理信息系统对客房的各个操作进行管理,能够及时了解各个环节中信息的变更,有利于提高管理的效率。
本项目要设计和实现一个能对酒店客房租住信息,客人信息,预订信息,消费信息,结算信息的管理,实现前台操作流程较方便,清晰,高效的信息管理系统。
二、功能需求分析
酒店管理:加盟酒店名、所在地、详细地址、联系电话、联系人等信息。员工管理:添加用户,修改员工密码。
客户管理:添加客户,查询,删除客户信息。会员系统:酒店会员进行预订时享有一定的优惠。客房管理:查询,修改客房状态和查询相关订单。
客房类型管理:添加客房类型,修改客房类型,删除客房类型。订房:预订客房,取消预订房间,查询订单,入住率。客房登记信息管理:查看客房登记信息。
财务管理:营业额管理、员工工资管理、收入结算。
三、系统设计
(一)逻辑结构设计
1.酒店表(酒店编号,酒店名称,所在城市,详细地址,电话,联系人)2.客房信息表(酒店名,客房号,状态标记,客房等级ROclass(标准、单间、套房),价格)
3.顾客信息表(顾客编号,表单自动编号,顾客姓名,性别,证件类型,证件号,联系电话,通讯地址,会员号)
4.员工信息表(员工号,员工姓名,密码,加入时间,部门)
5.预订表(自动编号,客房号, 顾客编号, 顾客姓名,客房类型,入住时间,离店时间,操作日期)
6.入住表(自动编号, 客房号, 顾客编号, 顾客姓名,客房类型,入住日期,退房日期,操作日期)
7.资金清算表(顾客编号, 顾客姓名,客房号,客房价格)
(二)概念结构设计
1.酒店信息
2.客房信息
3.顾客信息
4.员工信息
5.预定
6.入住
7.资金清算
(三)系统功能模块图
四、详细设计
(一)建立表格
--0酒店信息表 createtableHotel(Hotel_idvarchar(8)ROhotelnamevarchar(8)Hotel_cityvarchar(8)Hotel_addressvarchar(8)Hotel_numbervarchar(8)Hotel_Attnvarchar(8)-1 客房信息表
createtable Room--客房信息表
(ROhotelnamevarchar(8)primary key--酒店名 ROnovarchar(8)primarykey,--客房号 ROflatchar(4)default'空房',--状态标记
ROclassvarchar(20)notnull,--客房等级ROclass(豪华、标准、单间)ROdaypricemoney,--价格)
--2 顾客信息表 createtable Customs(CUnochar(8),CUnumintIDENTITY(1,1),--自动编号,--顾客编号,--触发器回滚--利用存储过程实现 CUnamevarchar(8),--顾客姓名 CUsexchar(4),--性别
CUtypechar(8)notnull,--证件类型 Cucardnochar(20)uniquenotnull,--证件号 CUphonevarchar(20)notnull,--联系电话 CUaddressvarchar(40),--通讯地址 CUflatbitnotnull,--是否为会员 CUVIPnochar(8)defaultnull primarykey(CUno))
--3操作人员表 createtable
Operator
(OPnovarchar(20)primarykey,--员工号 OPnamechar(8),--员工姓名 OPpasschar(10),--密码
OPdatesmalldatetime,--加入时间 OPdepartmentvarchar(30)--部门)--7预订表
createtableBookroom
(BRplannointIDENTITY(1,1),--自动编号 ROnovarchar(8),--客房号 CUnochar(8), CUnamechar(8),ROclassvarchar(20),--客房等级
BRplanentertimedatetime,--预订入住时间 BRleavetimedatetime,--离店时间
BRoper_datedatetime,--操作日期ROoper_date foreignkey(ROno)references room(ROno))--8入住表
createtableEnterroom(ERenternointIDENTITY(1,1),--自动编号 ROnovarchar(8), CUnochar(8), CUnamechar(8),ROclassvarchar(20),--客房等级 ERentertimedatetime,--入住时间 ERleavetimedatetime,--预离店时间
ERoper_datedatetime,--操作日期ROoper_date foreignkey(ROno)references room(ROno), foreignkey(OPno)references Operator(OPno))
--10资金清算表Zjqstable createtableZjqstable(ROnovarchar(8),--客房号 CUnochar(8),CUnamevarchar(8),--客人名称 ROdaypricemoney,--价格 primarykey(ROno,CUno),foreignkey(ROno)references room(ROno), foreignkey(CUno)references Customs(CUno), foreignkey(ROdayprice)referencesRoom(ROdayprice))
--0 insertintoHotel values('001','Sun_hotel','Beijing','Chaoyang 001','010-56561212','Ms.Pan');insertintoHotel values('002','Moon_hotel ','Shanghai','Xuhui 002','021-51513636','Ms.Xia');insertintoHotel values('003','Venus_hotel','Shenzhen','Futian 003','0755-56789000','Ms.Zhu');insertintoHotel values('004','Jupiter_hotel','Guangzhou',Tianhe 004','020-52345678','Ms.Yang');insertintoHotel values('005','Mercury_hotel','Chengdu','Pixian 005','028-83189222','Ms.Chen');insertintoHotel values('006','Mars_hotel','Chongqing','Yubei 006','023-82167676','Mr.Yan');insertintoHotel values('007','Saturn_hotel','Xiamen','Jimei 007','0592-84296666','Mr.Wang');insertintoHotel values('008','Flower_hotel','Wuhan','Hanyang 008','027-88238230','Mr.Li');insertintoHotel values('009','Grass_hotel','Hangzhou','Yuhang 009','0571-56591280','Mr.Su');insertintoHotel values('010','Tree_hotel','Shijiazhuang','Xinhua 010','0311-80082088','Mr.Xu');--1
insertinto Room(ROno,ROclass,ROdayprice)values('101','豪华','500');insertinto Room(ROno,ROclass,ROdayprice)values('102','豪华','500');insertinto Room(ROno,ROclass,ROdayprice)values('103','豪华','500');insertinto Room(ROno,ROclass,ROdayprice)values('104','豪华','500');
insertinto Room(ROno,ROclass,ROdayprice)values('202','标准','300');
insertinto Room(ROno,ROclass,ROdayprice)values('203','标准','300');
insertinto Room(ROno,ROclass,ROdayprice)values('204','标准','300');
insertinto Room(ROno,ROclass,ROdayprice)values('205','标准','300');
insertinto Room(ROno,ROclass,ROdayprice)values('301','单间','100');
insertinto Room(ROno,ROclass,ROdayprice)values('302','单间','100');
insertinto Room(ROno,ROclass,ROdayprice)values('303','单间','100');
insertinto Room(ROno,ROclass,ROdayprice)values('304','单间','100');
insertinto Room(ROno,ROclass,ROdayprice)values('305','单间','100');
insertinto Room(ROno,ROclass,ROdayprice)values('306','单间','100');
--2
select*from Customs
insertinto Customs(CUno,CUname,CUsex,CUtype,Cucardno,CUphone,CUaddress,CUflat,CUVIPno)values('1','张三','男','身份证','030510923434','***','福州',1,'1');
insertinto Customs(CUno,CUname,CUsex,CUtype,Cucardno,CUphone,CUaddress,CUflat,CUVIPno)values('2','李四','男','身份证','030510923435','***','福州',0,null);--3
insertinto Operator values('00001','小红','123456','2000-05-08 ','财务');insertinto Operator values('00002','小白','234567','1992-10-01 ','前台');insertinto Operator values('00003','小黄','345678','2010-10-01 ','前台');--7
insertinto bookroom(ROno,Cuno,CUname,Rolevel,BRplanentertime,BRleavetime,BRoper_date,OPno)values('101','1','张三','豪华', '2010/10/1','2010/10/10',getdate(),'00001');
insertinto bookroom(ROno,Cuno,CUname,Rolevel,BRplanentertime,BRleavetime,BRoper_date,OPno)values('102','2','李四','标准', '2010/10/2','2010/10/11',getdate(),'00002');
insertinto bookroom(ROno,Cuno,CUname,Rolevel,BRplanentertime,BRleavetime,BRoper_date,OPno)values('103','3','王五','单间', '2010/10/3','2010/10/12',getdate(),'00003');
insertinto bookroom(ROno,Cuno,CUname,Rolevel,BRplanentertime,BRleavetime,BRoper_date,OPno)values('104','4','颜宋','豪华', '2010/10/4','2010/10/10',getdate(),'00004');
insertinto bookroom(ROno,Cuno,CUname,Rolevel,BRplanentertime,BRleavetime,BRoper_date,OPno)values('105','5','李华','标准', '2010/10/5','2010/10/10',getdate(),'00005');
insertinto bookroom(ROno,Cuno,CUname,Rolevel,BRplanentertime,BRleavetime,BRoper_date,OPno)values('106','6','韩梅梅','豪华', '2010/10/6','2010/10/10',getdate(),'00006');
insertinto bookroom(ROno,Cuno,CUname,Rolevel,BRplanentertime,BRleavetime,BRoper_date,OPno)values('107','7','于耿耿','豪华', '2010/11/7','2010/11/12',getdate(),'00007');
insertinto bookroom(ROno,Cuno,CUname,Rolevel,BRplanentertime,BRleavetime,BRoper_date,OPno)values('108','8','谭森','标准', '2010/11/8','2010/11/13',getdate(),'00008');--8
insertintoenterroom(ROno,CUno,CUname,ROclass,ERentertime,ERleavetime,ERoper_date)values('101','1','张三,'豪华','2010/10/1','2010/10/10','2010/10/1');
insertintoenterroom(ROno,CUno,CUname,ROclass,ERentertime,ERleavetime,ERoper_date)values('102','2','李四','标准','2010/10/2','2010/10/11' ,'2010/10/1');
insertintoenterroom(ROno,CUno,CUname,ROclass,ERentertime,ERleavetime,ERoper_date)values('103','3','王五','单间','2010/10/3','2010/10/12' ,'2010/10/1');
insertintoenterroom(ROno,CUno,CUname,ROclass,ERentertime,ERleavetime,ERoper_date)values('104','4','颜宋','豪华','2010/10/4','2010/10/10' ,'2010/10/1');
insertintoenterroom(ROno,CUno,CUname,ROclass,ERentertime,ERleavetime,ERoper_date)values('105','5','李华','标准','2010/10/5','2010/10/10' ,'2010/10/1');
insertintoenterroom(ROno,CUno,CUname,ROclass,ERentertime,ERleavetime,ERoper_date)values('106','6','韩梅梅','豪华','2010/10/6','2010/10/10' ,'2010/10/1');
insertintoenterroom(ROno,CUno,CUname,ROclass,ERentertime,ERleavetime,ERoper_date)values('107','7','于耿耿','豪华','2010/11/7','2010/11/12' ,'2010/10/1');
(二)
第四篇:SQL数据库制作考务管理系统实验报告
一、实验目的1. 掌握sql server的基本用法
2. 熟悉掌握asp语言的应用
3. 掌握asp的页面结构和内置对象
4. 掌握asp与sql server数据库的连接和应用
5. 掌握asp 另外一个重要的语言——javascript,并熟悉它的应用
6.制作一个功能完善的考务管理系统
7.能够独立的完成系统策划,系统分析和程序的编写
8.提高发现问题,解决问题的能力
二、实验内容
制作一个考务管理系统,用于从考生报名、产生准考证到录取考生和打印成绩单即对考生考试和录取全过程的考务管理,系统要实现的功能有:考生报名,按报名顺序产生报名号;产生准考证号和打印准考证;输入考生成绩和输入录取合格标准;根据合格标准录取上线考生;打印考生成绩单和录取通知书;设置系统用户和系统初始化。
三、实验环境
1、windows xp或 windows XX;
2、安装 microsoft sql server XX 个人版。
3、iis 5.0及以上版本和浏览器ie5.5及以上版本
4、macromedia dreamwezver8等相关软件
四、实验步骤
首先:配置环境,安装sql server,macromedia dreamwezver8。
第二:对要做的系统进行构思、策划、布局。
第三:建立数据库kaoshi及数据表:学生信息表(student),用户表(yonghu),考生表(biaozhun)。
第四:建立连接数据库的文件conn.asp,其代码如下所示:
<%
set conn=server.createobject(“adodb.connection”)
conn.open “provider=sqloledb;” & “data source=localhost;initial catalog=ksd;user id=sa;password=100200;”
%>
第五:制作各个网页并联接所有需要联接的网页。
第六:运行整个系统,查找是否有错误,并进行修改直至整个系统运行无误。
五、实验过程与分析
(一)系统分析与总体设计
现在用计算机来进行考生的管理及考生的录取已普遍存在。因如果用人来进行这项工作将十分烦琐,系统管理员需要划分很多的时间和精力,而且还不能保证其正确率。
而用考务管理系统可以简化管理员的工作,还会提高工作的正确率。以下将对考务管理系统进行系统分析和设计。
(1)系统的功能描述
考务管理系统包括学生报名管理、考生成绩管理系统维护三大模块。
考生报名管理 包括报名处理、产生准考证、打印准考证和退出系统等4项功能。
考生成绩管理 包括考生成绩录入、合格标准录入、录取考生、打印成绩单和打印录取通知单等5项功能。
系统维护 包括用户设置和系统初始化等2项功能。
用户通过系统菜单执行相应的操作。
(2)数据库设计
本系统以sql server XX作为数据库平台。在sql server XX中设计一个数据库kaoshi,其中包含如下数据表。
1.student表
该表用于存放所有考生记录,包括基本数据.表的结构如图2所示。
2biaozhun表
该表用于存放录取考生的合格标准,其中只有一个记录,该记录指出各门课程的最低分和总分的最低分。只有各门成绩和总分都超过这个标准的考生才能被录取。该表的结构如图3所示。
3.yonghu表
该表用于存放本系统用户的信息。包括用户的用户名、密码和级别(只分“一般操作员”和“系统管理员”两类)。该表结构如图4所示。
六、实验结果与总结
实验中的考务管理系统是经过很多次的测试、修改再测试、再修改才完成的。也就是在多次的测试修改的过程中使我学发现了很多平时上课发现不了的问题,也发现了自己学习这门课程的薄弱的地方和学的不足的地方。通过实验期间的发现问题、分析问题、查找问题原因、解决问题及进一步完善考务管理系统的过程,我的能力和水平有一定程度的提高。经过一次独立完成系统给我以后编程打下了基础,让我面对的不再是茫然和无措,而是有条不紊的思绪和完成的信心。所以这次实验对我来说是一笔极大的财富。
当然,在实验中我也有很多不足的地方,系统也有需要进一步完善的地方,这主要是我对asp与sql server数据库的连接和应用不熟悉和经验不足的原因造成的。所以我还要在以后继续学习,以求做的更好。
第五篇:用mysql数据库实现的C++图书管理系统
#include
#include
#include
#define NONE “ 33[m” #define RED “ 33[0;32;31m” #define GREEN “ 33[0;32;32m” #define BLUE “ 33[0;32;34m” #define YELLOW “ 33[1;33m”
#define LIGHT_RED “ 33[1;31m” #define LIGHT_GREEN “ 33[1;32m” #define LIGHT_BLUE “ 33[1;34m” /* 在编译程序之前,请先开启mysql服务器(命令为 sudo mysqld_safe &),然后再登录mysql客户端(命令为 mysql-u root-p)建立数据库 stu;建立数据表reader,book;具体操作语句如下:
create database stu;
create table reader(stu_name varchar(20),stu_phone varchar(15),stu_password varchar(10),stu_num int,debt float,lend_time double,back_time double,count int);
create table book(book_name varchar(40),book_aut varchar(40),book_pre varchar(40),book_num int,book_mux int,book_con int);
编译时用如下命令:
g++ $(mysql_config--cflags)110.cpp-o t $(mysql_config--libs)*/
//定义mysql数据库变量
MYSQL
mysql;MYSQL_RES * results;
MYSQL_FIELD *fileds;
MYSQL_ROW rows;
char strHost[] = “localhost”;
char strUser[] = “root”;
char strPasswd[] = “3335599”;
char strDb[] = “stu”;char strSQL[200];
unsigned int num_fields;/* 程序导读:
1.程序中对书的操作,可通过书名,编号来进行,flag=0按书名来操作,flag=1按书编号来操作
2.程序中对用户的操作,也可通过姓名,用户ID号或编号两种方式来进行,flag=0按姓名来操作,flag=1按用户ID号或编号来操作
3.本程序分5个部分,具体已标识如(1)图书管理...4.本程序即可实现将数据保存至本地即stu.txt,book.txt,又可将数据保存至mysql数据库,只
需稍加修改,具体如何修改,在此就不做说明 */
using namespace std;class Book { public: string book_name;string book_num;//编号
string book_pre;//出版社
string book_aut;//作者
int book_con;//这样的书还有几本
int book_mux;//这样的书总共有几本
public: Book(){book_con=0;book_mux=0;} void show_book();
};
/****************************************(1)图书管理*******************************************/ void Book::show_book(){ cout<<“书名:”< class BookNode { public: Book book;BookNode *next;};BookNode *headbook=NULL; void savebook(BookNode *p);//保存图书信息到数据库 void del_sql_book(BookNode *p);//将图书信息从数据库中删除 class BookManage { public: int totolbook;public: BookManage(){totolbook=0;} void addbook(); void delbook(string s,int num,int flag);void findbook(string s,int flag);//查询图书 }; void BookManage::addbook(){ string h; cout<<“添加输入0,退出输入-1”< if(h==“-1”)break;else if(h==“0”){ string na,nu,p1,aut;int con;BookNode *p=new BookNode;cout<<“请输入书名:”< cout<<“继续添加输入0,取消添加输入-1”< cin>>h; } else cout< void BookManage::delbook(string s,int num,int flag){ BookNode *p=headbook;if(headbook!=NULL){ switch(flag) { case 0: if(headbook->book.book_name==s) { if(headbook->book.book_con>1) {headbook->book.book_con-=num;headbook->book.book_mux-=num;} else { headbook=p->next;totolbook-=num; del_sql_book(p);//从数据库中删除 //delete p; } } else if(p->next) { for(p=headbook;p->next!=NULL&&p!=NULL;p=p->next) { if(p->next->book.book_name==s) { if(p->next->book.book_con>1) { p->next->book.book_con-=num;headbook->book.book_mux-=num; break; } else { p->next=p->next->next; totolbook-=num; del_sql_book(p->next);//从数据库中删除 //delete p->next; break; } } } if(p->next==NULL) cout< break;case 1: if(headbook->book.book_num==s){ if(headbook->book.book_con>1) {headbook->book.book_con-=num;headbook->book.book_mux-=num;} else { headbook=p->next; totolbook-=num; del_sql_book(p);//从数据库中删除 //delete p; } } else if(p->next) { for(p=headbook;p->next!=NULL&&p!=NULL;p=p->next) { if(p->next->book.book_num==s) { if(p->next->book.book_con>1) { p->next->book.book_con-=num;headbook->book.book_mux-=num; break; } else { p->next=p->next->next; totolbook-=num; del_sql_book(p->next);//从数据库中删除 //delete p->next; break; } } } if(p->next==NULL) cout< } break; default: cout< } } } void BookManage::findbook(string s,int flag){ BookNode *p;int h=0;switch(flag){ case 0: for(p=headbook;p!=NULL;p=p->next)//先查看是否有此书 { if(p->book.book_name==s)break;} if(NULL==p)cout< if(p->book.book_name==s){ p->book.show_book();//显示出图书的基本信息 if(p->book.book_con==0) 打印出来 } cout< cout< } } break;case 1: for(p=headbook;p!=NULL;p=p->next){ if(p->book.book_num==s) { p->book.show_book(); if(p->book.book_con==0) cout< } } if(NULL==p)cout< /****************************************(*******************************************/ class Admin//管理员 { public: string adm_name;//帐号 string adm_passw;//密码 public: Admin(){ adm_name=“adm”; adm_passw=“123”;} }; class LendBook { public: string bookname[3];int count;//借多少本数 time_t lend_time;time_t back_time;LendBook(){count=0;} }; class Stu { public: string stu_name; }; 2)用户管理 string stu_phone;//联系方式 string stu_num;//学号(登录帐号)string password;//密码 float debt;//欠费额 LendBook lendbook;//用户借书信息 public: void show_stu();//把此人所有信息(包括借书)显示出来 void Stu::show_stu(){ cout<<“姓名:”< class StuNode { public: Stu stu;StuNode *next;};StuNode *headstu=NULL; void savestu(StuNode *p);//保存读者信息到数据库 void del_sql_stu(StuNode *p);//将读者信息从数据库中删除 class StuManage:public BookManage { private: int totolstu;//用户总数 public: StuManage(){totolstu=0;} void addstu();//增加用户 void delstu(string s,int flag);//删除用户 void findstu(string s,int flag);//查找用户 void lendbook(string ss,string s,int flag);//借书 void backbook(string ss,string s,int flag);//还书 void paydebt(string s);//还款 void mux_stu_book();//查询图书管总的图书量与总的用户量 }; void StuManage::addstu(){ string h; cout<<“添加输入0,退出输入-1”< if(h==“-1”)break;else if(h==“0”){ string na,num,p1,pa,pa1,pa2; StuNode *p=new StuNode; cout<<“请输入姓名:”< cin>>na; p->stu.stu_name=na; cout<<“请输入联系电话:”< cout<<“请输入六位密码:”< (StuManage::totolstu)++;//用户总数加一 cout<<“继续添加输入0,取消添加输入-1”< } else cout< void StuManage::delstu(string s,int flag){ StuNode *p=headstu;if(headstu!=NULL){ switch(flag) { case 0: if(headstu->stu.stu_name==s)//当要删除的用户位于链表的头结点位置 { headstu=p->next;StuManage::totolstu--;del_sql_stu(p);//从数据库中删除 delete p;} else if(p->next)//非头结点位置 { for(p=headstu;p->next!=NULL&&p!=NULL;p=p->next){ if(p->next->stu.stu_name==s) { p->next=p->next->next; totolstu--; del_sql_stu(p->next);//从数据库中删除 //delete p->next; break; } } if(p->next==NULL) cout< break;case 1: if(headstu->stu.stu_name==s){ headstu=p->next;totolstu--;del_sql_stu(p);//从数据库中删除 delete p;} else if(p->next){ for(p=headstu;p->next!=NULL&&p!=NULL;p=p->next){ if(p->next->stu.stu_name==s) { p->next=p->next->next; totolstu--; del_sql_stu(p->next);//从数据库中删除 //delete p->next; break; } } if(p->next==NULL) cout< } break; default: cout< } } } void StuManage::findstu(string s,int flag){ StuNode *p;int h=0,m=1;switch(flag){ case 0: for(p=headstu;p!=NULL;p=p->next) { if(p->stu.stu_name==s) break; } if(p==NULL) cout< for(p=headstu;p!=NULL;p=p->next) { if(p->stu.stu_name==s)h++;} if(h>0)cout< p->stu.show_stu(); if(p->stu.lendbook.count>=3) { cout< ”NONE< cout<<“所借书的名字为:”< while(i) { cout<<“t(”< } cout< } else { int i=p->stu.lendbook.count; if(i>0) cout<<“所借书的名字为:”< while(i) { cout<<“t(”< } } } break;case 1: } cout<<“您已借了”< stu.lendbook.count<<“本书!”< for(p=headstu;p!=NULL;p=p->next) { if(p->stu.stu_num==s) { p->stu.show_stu(); if(p->stu.lendbook.count>=3) { cout< int i=p->stu.lendbook.count; cout<<“所借书的名字为:”< //输出用户所借书的名字 cout<<“t(”< } cout< } else { int i=p->stu.lendbook.count; cout<<“所借书的名字为:”< while(i) { //输出用户所借书的名字 cout<<“t(”< } cout<<“您已借了”< stu.lendbook.count<<“本书!”< cout<<“您还可以借”<<3-p->stu.lendbook.count<<“本书!”NONE< cout< } break; } } if(p==NULL) cout< break; default: cout< } void StuManage::mux_stu_book(){ StuNode *p;BookNode *q;int i=0,j=0,h=0;for(p=headstu;p!=NULL;p=p->next)i++;cout<<“当前图书馆注册用户数为:”<next){ h+=q->book.book_mux; j+=q->book.book_con;} } cout<<“当前图书馆库存的总书记数为:”< if(q->stu.stu_num==ss) {del_sql_stu(q);break;}//丛数据库中删除 } if(q==NULL){cout< switch(flag){ case 0: for(p=headbook;p!=NULL;p=p->next) { if(p->book.book_name==s) { “NONE< del_sql_book(p);//从数据库中删除 int i=q->stu.lendbook.count;if(i>=3||q->stu.debt>0){ if((i>=3)&&(q->stu.debt==0)){cout< if((i<3)&&(q->stu.debt>0)) {cout< if((i>=3)&&(q->stu.debt>0)) {cout< } else { //记录下所借书的名字存入用户信息中 q->stu.lendbook.bookname[i]=p->book.book_name; time_t now; time(&now); q->stu.lendbook.lend_time=time(&now);//保存借书时间 q->stu.lendbook.count++;//所借书数目加一 p->book.book_con--;//同样的书的个数减一 } break; } } if(p==NULL) cout< break; case 1: for(p=headbook;p!=NULL;p=p->next) { if(p->book.book_num==s) { del_sql_book(p);//从数据库中删除 int i=q->stu.lendbook.count; if(i>=3||q->stu.debt>0) { if((i>=3)&&(q->stu.debt==0)) {cout< if((i<3)&&(q->stu.debt>0)) {cout< if((i>=3)&&(q->stu.debt>0)) {cout< } else { } q->stu.lendbook.bookname[i]=p->book.book_name; time_t now; time(&now); q->stu.lendbook.lend_time=time(&now); q->stu.lendbook.count++; p->book.book_con--;//同样的书的个数减一 } break; } } if(p==NULL) cout< break;default: cout< void StuManage::backbook(string ss,string s,int flag)//还书 { BookNode *p;StuNode *q;for(q=headstu;q!=NULL;q=q->next){ if(q->stu.stu_num==ss) {del_sql_stu(q);break;}//丛数据库中删除 } if(q==NULL){cout< switch(flag){ case 0: for(p=headbook;p!=NULL;p=p->next) { if(p->book.book_name==s) { del_sql_book(p);//从数据库中删除 time_t now; time(&now); q->stu.lendbook.back_time=time(&now); q->stu.lendbook.count--; p->book.book_con++;//同样的书的个数加一 time_t s=difftime(q->stu.lendbook.lend_time,q->stu.lendbook.back_time); if(s>2592000)//2592000为一个月的秒数 { int t=ceil((s-2592000)/86400); q->stu.debt=t*0.1; } break;} } if(p==NULL) cout< break; case 1: for(p=headbook;p!=NULL;p=p->next) { if(p->book.book_num==s) { del_sql_book(p);//从数据库删除 time_t now; time(&now); q->stu.lendbook.back_time=time(&now); q->stu.lendbook.count--; p->book.book_con++;//同样的书的个数加一 //计算借用图书的时间,超过一个月,开始计费 time_t s=difftime(q->stu.lendbook.lend_time,q->stu.lendbook.back_time); } if(s>2592000)//2592000为一个月的秒数 { int t=ceil((s-2592000)/86400); q->stu.debt=t*0.1; } break; } } if(p==NULL)cout< } void StuManage::paydebt(string s){ StuNode *p; for(p=headstu;p!=NULL;p=p->next)//查找用户 { if(p->stu.stu_num==s){ p->stu.debt=0; cout< stream << result;//将string输入流 stream >> stu_str;//从i中抽取前面插入的string值 return stu_str;} void savestu(StuNode *p)//保存读者信息到数据库 { memset((void*)strSQL,0,200);sprintf(strSQL,“insert into reader values(%s,%s,%s,%s,%f,%ld,%ld,%d)”,change_char(p->stu.stu_name),change_char(p->stu.stu_phone),change_char(p->stu.password),change_char(p->stu.stu_num),p->stu.debt,(long)(p->stu.lendbook.lend_time),(long)(p->stu.lendbook.back_time),p->stu.lendbook.count);if(mysql_real_query(&mysql,strSQL,strlen(strSQL))!= 0) printf(“记录插入失败!n”);} void savebook(BookNode *p)//保存图书信息到数据库 { memset((void*)strSQL,0,200);sprintf(strSQL,“insert into book values(%s,%s,%s,%s,%d,%d)”,change_char(p->book.book_name),change_char(p->book.book_aut),change_char(p->book.book_pre),change_char(p->book.book_num),p->book.book_mux,p->book.book_con);if(mysql_real_query(&mysql,strSQL,strlen(strSQL))!= 0) printf(“记录插入失败!n”); } void del_sql_stu(StuNode *p)//将读者信息从数据库中删除 { memset((void*)strSQL,0,200);sprintf(strSQL,“delete from reader where stu_name='%s'”,change_char(p->stu.stu_name));if(mysql_real_query(&mysql,strSQL,strlen(strSQL))!= 0) printf(“记录删除失败!n”);} void del_sql_book(BookNode *p)//将图书信息从数据库中删除 { memset((void*)strSQL,0,200);sprintf(strSQL,“delete from book book_name='%s'”,change_char(p->book.book_name));if(mysql_real_query(&mysql,strSQL,strlen(strSQL))!= 0) printf(“记录删除失败!n”); } /* void savestu()//保存读者信息文件 { ofstream outfile(“./stu.txt”,ios::out); if(!outfile){ cerr<<“open error!”< return;} StuNode *p; for(p=headstu;p!=NULL;p=p->next)//数据写入文件 { outfile< stu.stu_name<<“ ”< stu.stu_phone; outfile<<“ ”< stu.password<<“ ”< stu.stu_num; where outfile<<“ ”< stu.debt; outfile<<“ ”< stu.lendbook.lend_time; outfile<<“ ”< stu.lendbook.back_time; outfile<<“ ”< stu.lendbook.count; outfile<<“ ”< } outfile.close();} void savebook()//保存图书信息文件 { ofstream outfile(“./book.txt”,ios::out); if(!outfile){ cerr<<“open error!”< return;} BookNode *p; for(p=headbook;p!=NULL;p=p->next)//数据写入文件 { outfile< book.book_name<<“ ”< book.book_num; outfile<<“ ”< book.book_pre<<“ ”< book.book_aut; outfile<<“ ”< book.book_mux; outfile<<“ ”< book.book_con; outfile<<“ ”< void loadstu()//从学生数据数据库reader中读取 { int i = 0;memset((void*)strSQL,0,100); strcpy(strSQL,“select * from reader”); mysql_query(&mysql,strSQL); //查询 results = mysql_store_result(&mysql); //获取记录 num_fields = mysql_num_fields(results); //获取字段数 fileds = mysql_fetch_fields(results); //获取字段数组 while((rows = mysql_fetch_row(results))!= NULL) //循环显示 { while(i < num_fields) { StuNode *p=new StuNode; p->stu.stu_name =(rows[i]?rows[i++]:“NULL”); p->stu.stu_phone =(rows[i]?rows[i++]:“NULL”); p->stu.password =(rows[i]?rows[i++]:“NULL”); p->stu.stu_num =(rows[i]?rows[i++]:“NULL”); p->stu.debt = atof(rows[i]?rows[i++]:“NULL”); p->stu.lendbook.lend_time =(time_t)(rows[i]?rows[i++]:“NULL”); p->stu.lendbook.back_time =(time_t)(rows[i]?rows[i++]:“NULL”); p->stu.lendbook.count = atoi(rows[i]?rows[i++]:“NULL”); p->next=headstu;//建立用户链表 headstu=p; } i = 0;} } void loadbook()//从书数据库中读取 { int i = 0;memset((void*)strSQL,0,100); strcpy(strSQL,“select * from book”); mysql_query(&mysql,strSQL); //查询 results = mysql_store_result(&mysql); //获取记录 num_fields = mysql_num_fields(results); //获取字段数 fileds = mysql_fetch_fields(results); //获取字段数组 while((rows = mysql_fetch_row(results))!= NULL) //循环显示 { while(i < num_fields) { BookNode *p=new BookNode; p->book.book_name =(rows[i]?rows[i++]:“NULL”); p->book.book_aut =(rows[i]?rows[i++]:“NULL”); p->book.book_pre =(rows[i]?rows[i++]:“NULL”); p->book.book_num =(rows[i]?rows[i++]:“NULL”); p->book.book_mux = atoi(rows[i]?rows[i++]:“NULL”); p->book.book_con = atoi(rows[i]?rows[i++]:“NULL”); p->next=headbook;//建立用户链表 headbook=p; } i = 0;} } /* void loadstu()//从学生数据文件读取 { ifstream infile(“./stu.txt”,ios::in); if(!infile){ cout< return;} if(infile.eof()){ cout< infile.close();} else { while(infile.peek()!=EOF)//数据从文件读出 { StuNode *p=new StuNode; infile>>p->stu.stu_name>>p->stu.stu_phone; infile>>p->stu.password>>p->stu.stu_num; infile>>p->stu.debt>>p->stu.lendbook.lend_time; infile>>p->stu.lendbook.back_time>>p->stu.lendbook.count; if(p->stu.stu_name!=“") { p->next=headstu;//建立用户链表 headstu=p; } else delete p; } infile.close();} } void loadbook()//从书数据文件读取 { ifstream infile(”./book.txt“,ios::in); if(!infile){ } cout< while(infile.peek()!=EOF)//数据从文件读出 { BookNode *p=new BookNode;infile>>p->book.book_name>>p->book.book_num;infile>>p->book.book_pre>>p->book.book_aut;infile>>p->book.book_mux>>p->book.book_con; if(p->book.book_name!=”“){ p->next=headbook;//建立图书链表 headbook=p;} else delete p; } } */ } infile.close();/****************************************(*******************************************/ void MenuAdmin(){ 4)界面部分 cout< $“NONE< $“NONE< $“NONE< 删除书目 $“NONE< $“NONE< cout< 借书 $“NONE< $“NONE< cout< 还书 $“NONE< $“NONE< 查询图书 $“NONE< $“NONE< $“NONE< $“NONE< $“NONE< $“NONE< 查询用户 $“NONE< $“NONE< 用户交费 $“NONE< $“NONE< $“NONE< $“NONE< 0 退出 $“NONE< $“NONE< void MenuStu(){ 选 择 (输 入 相 应 数 cout< cout< $“NONE< cout< 借书 $“NONE< $“NONE< cout< 还书 $“NONE< $“NONE< 查询图书 $“NONE< $“NONE< 个人信息 $“NONE< $“NONE< 0 退出 $“NONE< $“NONE< int getch()//密码不回显函数1 { int c=0; struct termios org_opts, new_opts; int res=0; //-----store old settings----------- res=tcgetattr(STDIN_FILENO, &org_opts); assert(res==0); //----set new terminal parms-------- memcpy(&new_opts, &org_opts, sizeof(new_opts)); new_opts.c_lflag &= ~(ICANON | ECHO | ECHOE | ECHOK | ECHONL | ECHOPRT | ECHOKE | ICRNL); tcsetattr(STDIN_FILENO, TCSANOW, &new_opts); c=getchar(); //------restore old settings--------- res=tcsetattr(STDIN_FILENO, TCSANOW, &org_opts); assert(res==0); return c;} string set_passwd()//密码不回显函数2 { string result;char pd[128];int i;getch();/* 当帐号和密码一起输入,且刚输完帐号后就要输入密码时,set_passwd会把帐号结束时的回车赋‘n’拿过来作为自己的第一个输入,这样容易造成密码输入的错 误,为避免 这种情况的发生,所以就可以在for循环之前假如了getch()把‘n’吸收掉 */ for(i=0;;i++) { pd[i]=getch(); if(pd[i]=='n') { pd[i]=' '; break; } if(pd[i]==127) { printf(”b b“); i=i-2; } else printf(”*“); if(i<0) pd[0]=' '; } stringstream stream;stream << pd;//将char输入流 stream >> result;//从stream中抽取前面插入的char值 return result;} /****************************************(5)主函数部分*******************************************/ int main(){ mysql_init(&mysql);//数据库初始化 if(!mysql_real_connect(&mysql,strHost,strUser,strPasswd,strDb,0,NULL,0))//连接数据库 { printf(”连接数据库失败!/n“); return 0; } loadstu();loadbook(); mysql_free_result(results);//释放数据库结果集 BookManage bookmanage;StuManage stumanage; Admin admin;int i;string s;int num,flag;string s1,s2,ss;StuNode *p;system(”clear“);//清理屏幕 cout< ~Welecome to come in~“NONE< switch(i){ case 0: break; case 1: while(1) { cout<<”请输入管理员登录名:“< cin>>s1; if(s1==”0“) return 0; cout<<”请输入密码:“< s2=set_passwd(); cout< if(admin.adm_name==s1) { while(1) { if(admin.adm_passw==s2) break; else { cout< s2=set_passwd();cout< if(s2==”0“)return 0; //cin>>s2 } } } if(s1!=admin.adm_name) cout< else break; } while(1){ MenuAdmin();int t;cin>>t;switch(t){ ”< “< case 0: //savestu();savebook(); mysql_close(&mysql);//关闭数据库链接 return 0;break; case 1:bookmanage.addbook();//增加书本 system(”clear“);break;//清理屏幕 case 2: cout<<”按书名删除请输入 0 “< cin>>flag; if(flag==0) {cout<<“请输入书名:”;cin>>s;} else if(flag==1) {cout<<“请输入书编号:”;cin>>s;} else cout< cout<<“请输入要删除书的数目:”< cin>>num; bookmanage.delbook(s,num,flag);//删除书本 system(“clear”);//清理屏幕 break; case 3: cout<<“按书名借书请输入 0 ”< cin>>flag; if(flag==0) {cout<<”请输入书名:“;cin>>s;} else if(flag==1) {cout<<”请输入书编号:“;cin>>s;} else cout< cout<<”请输入借书人的编号:“< cin>>ss; stumanage.lendbook(ss,s,flag); system(”clear“);//清理屏幕 break; case 4: cout<<”按书名还书请输入 0 “< cin>>flag;if(flag==0) {cout<<”请输入书名:“;cin>>s;} else if(flag==1){cout<<”请输入书编号:“;cin>>s;} else ”< “< ”< cout< break;case 5: cout<<“按书名查找请输入 0 ”< else cout< system(”clear“);//清理屏幕 break;case 7: cout<<”按姓名删除请输入 0 “< if(flag==0){cout<<“请输入姓名:”;cin>>s;} else if(flag==1){cout<<“请输入学号:”;cin>>s;} else cout< system(“clear”);//清理屏幕 break;case 8: cout<<“按姓名查找请输入 0 ”<