数据库课程设计报告(VCSQL SERVER)_第1页
数据库课程设计报告(VCSQL SERVER)_第2页
数据库课程设计报告(VCSQL SERVER)_第3页
数据库课程设计报告(VCSQL SERVER)_第4页
数据库课程设计报告(VCSQL SERVER)_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机科学与技术学院课程设计成绩单课程名称:数据库系统原理 指导教师:蒋 旻姓名王云飞性别男学号2班级计科0804综合成绩成绩等级程序运行情况(占总成绩20%)能正确运行 基本能正确运行 能运行但结果不完善(20分) (15分) (10分)程序功能的完善程度(占总成绩10%)完善 基本完善 不完善(10分) (8分) (5分)程序结构的合理性(占总成绩10%)合理 基本合理 不太合理(10分) (8分) (5分)对问题的答辩情况(占总成绩40%)概念正确有创新 能正确回答所有问题 基本能正确回答(40分) (35分) (30分)部分问题回答概念不清晰(20分)学生的工作态度与独立工作能力(占总

2、成绩10%)工作态度认真能独立完成任务 工作态度认真但独立性较差(10分) (8分)工作态度基本认真但缺乏独立性(5分)设计报告的规范性(占总成绩10%)符合规范 基本符合规范 规范性较差(10分) (8分) (5分)优秀:90分100分 良好:80分89分 中等:7079分 及格:6069分 不及格0分59分 武汉科技大学计算机科学与技术学院制表 计算机科学与技术学院 课 程 设 计 报 告课程名称: 数据库系统原理 专 业: 计算机科学与技术 班 级: 级 班 学 号: 2 姓 名: 王云飞 指导老师: 蒋旻 工厂零件进销存及工程管理系统一、 需求分析背景分析:根据工厂规模日益扩增,负责的

3、工程项目也越多且越大,与零件供应商的的交易也越来越繁琐,行业竞争也日益激烈。面对诸多问题,拥有一款优秀的工厂物资及工程的管理系统会大大提高工作的效率;从长期利益来看,一套好的管理系统还可以减少经费开支,增加工厂的利润;此外,还方便了工厂的人员了解和管理相关的业务,使工厂的管理水平跟得上工厂的快速发展,实现工厂管理的高效化。 功能需求:1、 用户在登录应用程序界面时,检查用户的合法性,并在用户连续3次登录失败后自动关闭程序。2、 只有管理员可以通过该程序对工厂相关的全部信息进行管理3、 系统管理员可以通过应用程序对用户信息进行统一管理,修改或删除用户的信息。4、 普通用户只可以修改自己的账号和密

4、码,但是不能更改自己的用户类型。5、 普通客户和系统管理员可以通过应用程序查询与工厂零件相关的信息。用户可以根据查询对象的不同属性查询到想要的信息,而且部分数据能够支持模糊查询6、 应用程序内部要可以通过SQL语句对数据库内的数据进行插入、修改和删除等操作。7、 当系统管理员对相关信息进行操作时,系统要自动检测输入的数据是否合理,并弹出相应的提示信息。8、 存储的各种物资的数量要随零件的供应量或使用量的变化而动态变化,出现不合理数据时通知操作员。9、 应用程序中要有该程序的相关简介和使用说明,帮助系统管理员和用户更好地使用该程序。二、 概念结构设计(E-R图)三、 逻辑结构设计表Employe

5、es的结构编号字段名称数据类型说明1Employee_NoVarchar(5)员工编号,主键2Employee_NameVarchar(20)姓名3Project_NoVarchar(5)负责的工程项目编号4TitleVarchar(20)头衔5AgeDecimal(3)年龄Employee_No (Employee_Name,Project_No,Title,Age),该关系模式满足BCNF,表Providers的结构编号字段名称数据类型说明1Provider_NoVarchar(5)供应商编号,主键2Provider_NameVarchar(20)供应商名称3Provider_PhoneV

6、archar(20)联系方式4Provider_AddressVarchar(40)所在地址5Provider_AccountVarchar(20)银行账号Provider_No (Provider_Name,Provider_Phone,Provider_Address,Provider_Account)该关心模式满足BCNF表Parts的结构编号字段名称数据类型说明1Part_NoVarchar(5)零件编号,主键2Part_NameVarchar(10)零件名称3ColorVachar(10)零件颜色4WeightDecimal(5,1)重量5PriceDecimal(10,1)零件价格

7、6NumberDecimal(9)零件数目7DescriptionVarchar(300)相关描述Part_No (Part_Name,Color,Weight,Price,Number,Description),该关系模式满足BCNF表Projects的结构编号字段名称数据类型说明1Project_NoVarchar(5)工程编号,主键2Project_NameVarchar(20)工程名称3Start_TimeDate开工日期4BudgetDecimal(10,1)预算资金Project_No (Project_Name,Start_Time,Budget),该关系模式满足BCNF表Dea

8、l的结构编号字段名称数据类型说明1Deal_NoVarchar(5)供应编号,主键2Provider_NoVarchar(5)供应商编号3Part_NoVarchar(5)零件编号4Deal_DateDate供应日期5Deal_NumberDecimal(7)供应数量Deal_No (provider_No,Part_No,Deal_Date,Deal_Number),该关系模式满足BCNF表Used的结构编号字段名称数据类型说明1Used_NoVarchar(5)零件使用编号,主键2Project_NoVarchar(5)使用零件的过程编号3Part_NoVarchar(5)被使用的零件编号

9、4Used_DateDate使用日期5Used_NumberDecimal(8)使用的零件数量Used_No (Project_No,Part_No,Used_Date,Used_Number),该关系模式满足BCNF外键定义关系名主键表主键字段外键表外键字段FK_Deal_to_ProvidersProvidersProvider_NoDealProvider_NoFK_Deal_to_PartsPartsPart_NoDealPart_NoFK_Used_to_PartsPartsPart_NoUsedPart_NoFK_Used_to_ProjectsProjectsProject_No

10、UsedProject_NoFK_Employees_to_ProjectsProjectsProject_NoEmployeesProject_No四、 物理设计创建Users(系统的用户)表create TABLE Users( User_No varchar(10) not null, PassWord varchar(10) , User_Type varchar(1), Constraint PK_Users Primary Key(User_No) ); 创建Providers(零件供应商)表CREATE TABLE Providers( Provider_No Varchar(5

11、) not null, Provider_Name varchar(20), Provider_Phone varchar(20), Provider_Address varchar(40), Provider_Account varchar(30), Constraint PK_Providers Primary Key(Provider_No) );Provider_No是常用于查询且更新较少的列,故建一个唯一索引CREATE UNIQUE INDEX ProvidersNO ON Providers(Provider_No);创建Projects(工程项目)表 CREATE TABLE

12、Projects ( Project_No varchar(5) not null, Project_Name varchar(20), Start_Time varchar(20), Budget decimal(10,1), Constraint PK_Projects Primary Key(Project_No) );Project_No是常用于查询且更新较少的列,故建一个唯一索引CREATE UNIQUE INDEX ProjectNO ON Projects(Project_No);创建Employees(工程负责人)表CREATE TABLE Employees ( Employ

13、ee_No varchar(5) not null, Employee_Name varchar(20), Age decimal(3), Title varchar(20), Project_No varchar(5), Constraint PK_Employees Primary Key(Employee_No), Constraint FK_Employees_to_Projects Foreign Key(Project_No) References Projects(Project_No) );Employee_No是常用于查询且更新较少的列,故建一个唯一索引CREATE UNIQ

14、UE INDEX EmployeeNO ON Employees(Employee_No); 创建Parts(零件)表 CREATE TABLE Parts ( Part_No varchar(5) not null, Part_Name varchar(30), Color varchar(10), Weight decimal(5,1), Price decimal(10,1), Description varchar(300),Number decimal(9), Constraint PK_Parts Primary Key(Part_No) );Part_No是常用于查询且更新较少的

15、列,故建一个唯一索引CREATE UNIQUE INDEX PartNO ON Parts(Part_No); 创建Deal(供应信息)表 CREATE TABLE Deal ( Deal_No varchar(5) not null, Provider_No varchar(5), Part_No varchar(5), Deal_Date varchar(20), Deal_Number decimal(7), Constraint PK_Provider Primary Key(Deal_No), Constraint FK_Provide_to_Providers Foreign Ke

16、y(Provider_No) References Providers(Provider_No), Constraint FK_Provide_to_Parts Foreign Key(Part_No) References Parts(Part_No) ); 创建Used(零件使用信息表) CREATE TABLE Used ( Used_No varchar(5) not null, Project_No varchar(5), Part_No varchar(5), Used_Number decimal(8), Used_Date varchar(20), Constraint PK_

17、Used Primary Key(Used_No), Constraint FK_Used_to_Projects Foreign Key(Project_No) References Projects(Project_No), Constraint FK_Used_to_Parts Foreign Key(Part_No) References Parts(Part_No) ); 五、 数据库的实施和维护本系统的运行环境为Visual C+ 6.0,1程序执行后弹出系统的登录界面,如下图所示:用数据库中存储的用户信息登录系统,如图所示若用户输入的用户信息错误,会弹出警告,登录3次失败后系统自

18、动退出2登录成功后进入系统的主界面,入下图点击菜单栏上的“数据操作”、“查询信息”、“系统用户管理”、“帮助”可进行相应的操作。如下图所示。如果使用本系统的是系统管理员,则该用户可以参与数据的相关操作,如插入、修改、和删除;如果只是普通用户,系统会设置权限,使得普通用户只有查看相关信息和修改自己的用户信息的权力,确保了数据库中信息的安全性。3检索相关信息 如果要查询零件信息,则点击“查询信息”“零件信息”,弹出零件信息列表,如下图若要根据零件的某些特定属性查询信息,可在“零件查询条件”的组合框中选中相应的条件并输入相关的信息。例如查询有高强度性质的零件,选中“描述”,输入“高强度”,点击“查询

19、”按钮,如图:出现相应的查询结果,如下图:其余的查询操作与上述的操作类似,这里不再赘述。4数据操作 如果想要修改零件供应的信息,点击“数据操作”“零件供应情况”,弹出当前的零件供应信息,如下图所示:如果要添加零件供应信息,点击“添加”按钮,弹出零件供应信息的编辑框,输入相应的数据;如果输入的供应商编号或者零件编号还未存进数据库,系统会弹出供应商或零件信息的编辑框,要求操作员先完善数据库中供应商或零件的信息;如果要删除某一行记录,选中相应的元组,点击“删除”(若表中的某些数据项被其他对象引用,系统会弹出警告,告知用户删除该项记录后,其他引用该数据项的记录也会被删除);若要修改每个元组的信息,则选

20、中该元组后点击“修改”,弹出相应的编辑框,如下图: (供应编号为00007的零件供应量减少了200)修改成功后数据自动刷新,如下图 (供应编号00007的205号零件变成了2000) 然后来看看零件信息中的数据吧,如下图 (与上面的零件信息截图比较,发现205号零件数量减少了200,说明零件信息随供应信息变化自动修改数据成功)其余的数据操作也与上面说讲的类似,这里就不再多说了5用户管理与信息的修改点击“系统用户管理”“用户管理”(只有管理员有此权限),弹出系统用户的信息列表,如下图管理员可以查询到所有用户的信息,并能够修改用户的账户、密码和用户类型,添加新用户,删除用户信息点击修改,出现用户信

21、息的编辑框,如下图:(普通用户没有权限修改自己的用户类型,只能修改账号和密码)6系统帮助用户点击菜单栏上的帮助,可以查询到系统的简介和使用说明六、 总结系统优缺点的分析:这个系统相对于某个工厂的信息管理系统来说,真的只能算是一辆卡车上的一颗螺丝。系统可以完成的功能还远远不能满足实际生活中的需要,而且系统的操作界面很呆板,风格也比较单一。不能导出图片、音频或视频文件。不过我相信如果有更多的时间,我会把这个系统做得更好!该系统使用比较简单,操作人员只需要有基本的计算机知识即可。系统中对各种可能出现的错误操作(如重复输入具有唯一性的数据项、将零件的数目变成负数等)考虑得比较全面,在操作过程中系统会自

22、动弹出相应的提示,比较人性化。个人感想:这是我第一次将编程语言和数据库结合起来使用,刚开始做一点把握都没有。本次课程设计使我真正的学到了不少知识,由于之前对MFC的知识积累不够,尤其是在数据库与VC+连接上存在很大漏洞,使得本次课程设计遇到了许多困难。但正是伴随着这些困难得一个个的被解决,我学到了许多知识,每次解决一个问题都会收获不少的知识,第一次感受到数据库与编程语言的结合实在是太完美了。本次课程设计让我有机会能把之前学的数据库知识系统的串联起来。尤其是对数据库的建立与操作都上了一个台阶,包括怎么建立更简洁且没有冗余又很完备的数据库系统,怎样对数据库结构模型的进行设计,更重要的是前期对概念模

23、型也就是E-R图的规划。深刻的体会到前期工作的重要性,只有正确详尽的对系统进行分析以后,才能更高效率的完成系统的开发。做课程设计的过程中,没有老师辅导我,向老师发邮件求助也没有得到回应。我就买了好几本书,自己慢慢看,然后试着自己做,在引用书中的部分方法的同时也融入自己的思考,灵活地应用多种方法,遇到难题就上网查看解决的方法,真的收获不少。我相信只要是自己做了就一定会有收获的!细节决定一个程序的好坏与成败!七、 附录程序中用于操作数据库的接口ADOConn类代码/ 初始化连接数据库void ADOConn:OnInitADOConn():CoInitialize(NULL);/ 初始化OLE/C

24、OM库环境 try/m_pConnection为指向Connection对象的指针:/ 创建Connection对象 m_pConnection.CreateInstance(ADODB.Connection);/ 设置连接字符串,必须是BSTR型或者_bstr_t类型/该系统使用的是文件数据源 m_pConnection-Open(FILEDSN=D:工厂物资管理工厂物资管理ODBC文件数据源.dsn;PageTimeout=5,uid=飞鱼, pwd=,adModeUnknown);/ 捕捉异常catch(_com_error e)/ 显示错误信息AfxMessageBox(e.Descr

25、iption();/ 执行查询_RecordsetPtr& ADOConn:GetRecordSet(_bstr_t bstrSQL)try/ 连接数据库,如果Connection对象为空,则重新连接数据库if(m_pConnection=NULL)OnInitADOConn();/ 创建记录集对象m_pRecordset.CreateInstance(_uuidof(Recordset);/ 取得表中的记录m_pRecordset-Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmd

26、Text);/ 捕捉异常catch(_com_error e)/ 显示错误信息AfxMessageBox(e.Description();/ 返回记录集return m_pRecordset; / 执行SQL语句,Insert ,Update ,DeleteBOOL ADOConn:ExecuteSQL(_bstr_t bstrSQL)try/ 是否已经连接数据库if(m_pConnection = NULL)OnInitADOConn();/ Connection对象的Execute方法:(_bstr_t CommandText, VARIANT * RecordsAffected, lon

27、g Options ) / 其中CommandText是命令字串,通常是SQL命令。/ 参数RecordsAffected是操作完成后所影响的行数, / 参数Options表示CommandText的类型:adCmdText-文本命令;adCmdTable-表名adCmdProc-存储过程;adCmdUnknown-未知m_pConnection-Execute(bstrSQL,NULL,adCmdText);return true;catch(_com_error e)AfxMessageBox(e.Description();return false;void ADOConn:ExitCo

28、nnect()/ 关闭记录集和连接if (m_pRecordset != NULL)m_pRecordset-Close();m_pConnection-Close();/ 释放环境:CoUninitialize();CDeal类面向Deal表,下面的函数用于向Deal表插入数据void CDeal:sql_insert()/声明一个ADOConn类,并连接数据库ADOConn m_AdoConn;m_AdoConn.OnInitADOConn();/设置SQL语句,由CString向_bstr_t类型转换CString str;str.Format(INSERT INTO Deal(Deal

29、_No,Provider_No,Part_No,Deal_Date,Deal_Number) VALUES(%s,%s,%s,%s,%f),Deal_No,Provider_No,Part_No,Deal_Date,Deal_Number);_bstr_t vSQL;vSQL=_bstr_t(str);m_AdoConn.ExecuteSQL(vSQL);/执行SQL语句m_AdoConn.ExitConnect();/断开与数据库的连接注:用于其它表的插入、删除、和修改的函数大体相同,只是SQL语句有点变化,故不再一一列出下面是工程负责人管理对话框函数void CEmpManagementD

30、lg:OnButtonAdd() /添加信息/ TODO: Add your control notification handler code hereUpdateData(TRUE);CEmpEditDlg dlg;/声明一个负责人编辑对话框变量/buttonflag是CEmpEditDlg类中的一个标志,为1时表示要把输入/的数据插入Employees表,为-0时表示更新Employees表中的数据dlg.buttonflag=1;if (dlg.DoModal() = IDOK)RefreshData();void CEmpManagementDlg:OnButtonModify()

31、/修改信息/ TODO: Add your control notification handler code hereUpdateData(TRUE);CEmpEditDlg dlg;/将DataGrid控件中要修改的信息读到编辑框中dlg.m_Employee_No=m_DataGrid.GetItem(0);dlg.m_Employee_Name = m_DataGrid.GetItem(1);dlg.m_Age = m_DataGrid.GetItem(2); dlg.m_Project_No = m_DataGrid.GetItem(4);if (dlg.DoModal() = IDOK)RefreshData();void CEmpManagementDlg:OnButtonDelete() /删除信息/ TODO: Add your control notification handler code hereCString str=m_DataGrid.GetItem(0);/获取负责人的编号 CEmployees emp;if (MessageBox(是否删除当前记录?,请确认, MB_YESNO) = IDYES)/如果确认删除则删掉相应信息

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论