数据库课程设计题目
- 格式:docx
- 大小:385.87 KB
- 文档页数:15
数据库课程设计任务书计算机科学与技术系《数据库系统》课程设计项目《数据库系统》课程设计任务书设计题目:物资管理系统背景资料:1)一个存放商品的仓库,每天都有商品出库和入库。
2)种商品都有名称、生产厂家、型号、规格等。
3)出入库时必须填写出入库单据,单据包括商品名称、生产厂家、型号、规格、数量、日期、时间、入库单位(或出库单位)名称、送货(或提货)人姓名。
设计要求:1)进行需求分析,编写数据字典。
2)设计E-R图。
3)设计出入库单据的录入。
4)实现按商品名称、出入库日期的查询。
5)实现分别按日、月和年对出入库商品数量的统计。
任务安排:1、每个学生选择一个题目,独立完成设计任务。
2、提交完整的设计报告和源程序清单(以附录形式)。
3、设计报告要求,设计报告按照以下提纲书写:1)摘要。
2)需求分析。
3)数据库概念结构设计。
4)数据库逻辑结构设计。
5)数据流图及程序结构框图。
6)程序原代码及其说明。
7)总结。
数据库课程设计指导书计算机科学与技术系目录1、学生成绩管理系统简介 (3)2、课程设计选题 (10)3、VFP课程设计难点分析之一——主界面和退出表单的设计 (12)4、VFP课程设计难点分析之二——浏览成绩表单的设计 (16)5、VFP课程设计难点分析之三——浏览学生表单的设计 (21)6、VFP课程设计难点分析之四——设置口令表单集的设计 (24)1、学生成绩管理系统简介1. 系统组成本系统由1个数据库、3个查询,14个表单、3个报表、1个菜单、6个程序和2个自由表组成。
数据库组成:(1)数据表3个:学生表(5个字段:xh, xm, xb, csrq, bj),其中有4个班各5名学生的记录课程表(4个字段:kch,kcm, js, xf),其中有4门课程的记录;成绩表(3个字段:xh, kch, cj),其中有80条学生成绩的记录。
(2)本地视图1个:基于以上3张表创建,输出字段为:xh, xm, xb, bj, kcm, cj查询组成:查询学生、按班级查询成绩、按课程查询成绩表单组成:主界面表单、退出表单、学生表单、课程表单、成绩表单(可按学号分类和按课程分类)、查询学生表单、查询成绩表单、总浏览表单、浏览学生表单、浏览成绩表单、系统信息表单、设置口令表单集、修改表单界面。
数据库应用课程设计作业一、教学目标本课程旨在让学生掌握数据库应用的基本原理和操作技能,培养学生独立设计和开发数据库应用系统的能力。
具体目标如下:1.知识目标:•理解数据库的基本概念、原理和技术。
•掌握关系型数据库的设计和操作。
•了解数据库应用系统的设计与开发流程。
2.技能目标:•能够使用数据库管理系统进行数据库设计和操作。
•具备简单数据库应用系统的设计和开发能力。
•能独立解决数据库应用过程中的常见问题。
3.情感态度价值观目标:•培养学生的团队合作意识和沟通能力。
•培养学生对数据库技术领域的兴趣,激发其进一步学习的动力。
二、教学内容本课程的教学内容主要包括以下几个部分:1.数据库基本概念:数据库、数据库管理系统、数据库系统等。
2.关系型数据库:表、查询、视图、索引等。
3.数据库设计:需求分析、概念设计、逻辑设计、物理设计等。
4.数据库操作:数据插入、修改、删除、查询等。
5.数据库应用系统设计与开发:系统分析、系统设计、系统实施等。
三、教学方法为了提高教学效果,将采用多种教学方法相结合的方式进行教学:1.讲授法:用于讲解基本概念、原理和技术。
2.案例分析法:通过分析实际案例,让学生更好地理解数据库应用系统的设计和开发过程。
3.实验法:让学生动手实践,提高其实际操作能力。
4.小组讨论法:鼓励学生进行团队合作,培养其沟通能力和团队协作精神。
四、教学资源为了支持教学内容和教学方法的实施,将准备以下教学资源:1.教材:《数据库应用教程》。
2.参考书:提供相关领域的经典教材和论文,供学生深入研究。
3.多媒体资料:制作课件、教学视频等,以丰富教学手段。
4.实验设备:提供计算机实验室,让学生进行实际操作。
五、教学评估为了全面、客观地评估学生的学习成果,将采用以下评估方式:1.平时表现:占比30%,包括课堂参与度、提问回答、小组讨论等。
2.作业:占比30%,包括课后练习、项目作业等。
3.考试:占比40%,包括期中考试和期末考试,内容涵盖本课程的全部知识点。
课程设计一学校的教务数据库设计如下:学生表1 T_STUDENT考试成绩表4 T_SCORET_COURSE1)创建以上几张表,并给表中输入数据。
2)查询T_STUDENT中所有的数据select *from T_Student3)查询T_STUDENT中所有学生的姓名和性别select STUNAME,STUSEXFROM T_Student4)将学号和姓名显示,其中,姓名的格式为:“姓名:xxx”SELECT '姓名:' bb,STUNAME ,stunofrom T_Student5)为了更好地体现各个学生的考试情况,将T_SCORE中的信息显示,分数显示为与60分的差。
select Score-60 AS "分数"FROM T_SCORE6)将学号和姓名显示,其中,列名分别显示为“学生”和姓名。
SELECT STUNAME AS "姓名:",stuno as "学号"from T_Student7)将学号和姓名显示在一个列中,列名显示为:信息。
SELECT STUNO AS "信息"FROM T_STUDENTUNION ALLSELECT StunameFROM T_STUDENT8)查询教师的职称种类SELECT TEATITLEFROM T_Teacher9)查询女生的姓名SELECT STUNAMEFROM T_STUDENTWHERE Stusex='女'10)查询女生的姓名SELECT STUNAMEFROM T_STUDENTWHERE Stusex='女'11)查询课程VB的信息SELECT *FROM T_COURSEWHERE COURSENAME='VB'12)显示所有期中考试及格的记录SELECT *FROM T_SCOREWHERE TYPE='期中'13)为了找出考试尖子,需要显示所有期末考试在90-100的考试记录(使用<,>)SELECT *FROM T_SCORE,T_STUDENTWHERE =AND >9014)学校要举行一帮一活动,让高分学生帮助低分学生。
《数据库系统概论》课程设计报告设计题目:银行储蓄管理系统姓名:学号:班级:设计起止时间:需求分析:在对软件工程相关知识学习之后,我们对设计软件有了基本的认识和一些应用技能。
在数据库的课程设计中,我们计划做一个小型的银行储蓄管理系统,包括了基本的存取转,和管理员对日常工作的管理功能。
功能设计:(1).客户:包括存款,取款,转账,查询余额,查看流水,密码修改功能(2).管理员:新增用户,删除用户,查看用户,员工绩效,VIP用户判别,储备金预警分析。
3.功能流程图:银行管理系统登陆管理员客户销户查看员工绩效VIP判别资金储备金判别开户存款取款转账余额显示查看流水修改密码详细设计:1.E-R图模型operatecustombankstaffCphoneCtimeCpassCRmoneyCnameCidBidSphoneSnameSidSpassSItimeBname BmoneyBid1112.根据E-R 图设计关系表 (1).银行信息表(bank )字段名 字段类型及长度 允许空 主键说明 Bid nchar (9) no PK 银行号 Bname nchar (20) no银行名 Bmoney numeric (20,3) no 银行余额(2).客户信息表(custom )字段名 字段类型及长度 允许空主键说明 Cid nchar (9) noPK 客户ID Cname nchar (10) no 客户姓名 Cpass nchar (10) no 密码 Ctime nchar (20) no注册时间Bid nchar (9) no 所在银行行号 外码(Bank (Bid )) Crmoney numeric (10,3) no账户余额 Cphone nchar (11) no 客户电话 (3).员工(管理员)表(staff ) 字段名 字段类型及长度 允许空主键 说明 Sid nchar (9) noPK 员工ID Sname nchar (10) no 员工姓名 Spass nchar (10) no 登陆密码 SItime nchar (20) no入行时间Sphone nchar(11) no 联系电话(4).流水信息表字段名字段类型及长度允许空主键说明Oid nchar(9) no PK 流水号Cid nchar(9) no 客户ID 外码(Custom(Cid))Bid nchar(9) no 银行ID 外码(Bank(Bid))Sid nchar(9) no 员工ID 外码(Staff(Sid))Otype smallint no 操作类型Otime nchar(20) no 操作时间Omoney numeric(10,3) yes 交易金额OBmoney numeric(10,3) yes 上次余额OAmoney numeric(10,3) yes 账户余额三个实体:bank,staff,custom一个联系:operate关系图:SQL语句:/*建表*/create table Bank(Bid nchar(9) primary key,Bname nchar(20) not null,Bmoney numeric(20,3) not null)create table Custom( Cid nchar(9) not null,Cname nchar(10) not null,Cpass nchar(10) not null,Ctype smallint not null,Ctime nchar(20) not null,Ccode nchar(18) not null,Bid nchar(9) not null,Crmoney numeric(10,3) not null,Cphone nchar(11) not null,primary key(Cid),foreign key(Bid) references Bank(Bid) /*在客户表中以Bank表的主码作为一个外键,并对他进行级联更新*/on update cascade,)create table Staff(Sid nchar(9) primary key, /*在列级定义主码*/Sname nchar(10) not null,Spass nchar(10) not null,SItime nchar(20) not null,Sphone nchar(11) not null)create table Operate(Oid nchar(9) not null,Cid nchar(9) not null,Bid nchar(9) not null,Sid nchar(9) not null,Otype nchar(10) not null,Otime nchar(20) not null,Oflag smallint not null,Omoney numeric(10,3),OBmoney numeric(10,3),OAmoney numeric(10,3),primary key(Oid,Cid,Sid),foreign key (Cid) references Custom(Cid) /*以用户表主码为一个外键,进行级联删除*/on delete cascade,foreign key(Sid) references Staff(Sid) /*以员工表的主码作为外键,当删除引起冲突的时候,拒绝删除*/on delete no action,foreign key (Bid) references Bank(Bid)on update cascade)insert into Bank values('00001','中国银行小寨分行',10000)update Bank set Bname='中国银行经开分行' where Bid='00002'select * from Bank;delete from Bank where Bid='1' or Bid='2';insert into Custom values('6505001','花花','111',0,'2012/12/10/08:26:00','610424************','00001','1500','14345678912')insert into Staff values('7985000','自助服务','111','2002/01/07','12331654613')delete from Custom where Bid='2';insert into Operate values('2406002','6505001','00001','7985001','哈哈','2012年12月18日14时12分',0,0,2900,2900)insert into Operate values('2406005','6505007','00001','7985001','嘿嘿','2012年12月18日14时12分',0,0,2900,2900)select * from Custom;select * from Operate;select * from Staff;select * from Bank;delete from Operatedrop table Customdrop table Bankdrop table Staff;drop table Operate;select * from Bank;delete from Operate where Oid='6505001'drop view BMoney;create view BMoneyasselect Omoneyfrom Operatewhere Oflag = 0 and Omoney>2000 and Otype = '取款';create view BInMoneyasfrom Operatewhere Oflag = 0 and Omoney>2000 and Otype='存款';create view VIPasselect Ctypefrom Customwhere Ctype=1;select count(*) from BMoney;select count(*) from BInMoney;select count(*) from VIP;update Bank set Bmoney='10000' where Bid='00001';update Bank set Bmoney='+bmoney' where Bid='"+Bid+"'";update Bank set Bmoney='10200.000000' where Bid='00001'程序代码:客户部分:a.void CClientDlg::OnButtonIn() //存款函数{// TODO: Add your control notification handler code hereCInDlg InDlg;if (InDlg.DoModal()==IDOK){double temp,temp1;ADOConn ado;CString sql = "select * from Custom where Cname='"+Cname+"'";_RecordsetPtr ResultSet = ado.GetRecordSet((_bstr_t)sql);CString str = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Crmoney");CString bid = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Bid");CString str4 = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Cid");CString str2= str; //将交易前钱数暂存temp=atof(str);temp1=(double)InDlg.m_InNum;temp+=temp1;str.Format("%f",temp);CString str3 = str; //暂存交易后金额sql = "update Custom set Crmoney='"+str+"' "+"where Cname='"+Cname+"'";ado.ExecuteSQL((_bstr_t)sql);sql = "select count(*) num from Operate";ResultSet = ado.GetRecordSet((_bstr_t)sql);int num = atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("num"));str = "240600";CString Oid,Cid,Sid,Bid,Otime,Omoney,OAmoney,OBmoney;Oid.Format("%d",++num); Oid=str+Oid;Sid="7985001";Bid = bid; double temp2;sql = "select * from Bank where Bid='"+Bid+"'";ResultSet = ado.GetRecordSet((_bstr_t)sql);CString bmoney = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Bmoney");temp2 = atof(bmoney); temp2+=temp1; bmoney.Format("%f",temp2);sql = "update Bank set Bmoney='"+bmoney+"' where Bid='"+Bid+"'";ado.ExecuteSQL((_bstr_t)sql);CString Otype = "存款";CString m_time; CTime time;time = CTime::GetCurrentTime();m_time = time.Format("%Y年%m月%d日%X");Otime = m_time; int flag = 0;Omoney.Format("%f",temp1); OAmoney = str2;OBmoney = str3;sql.Format("insert into Operate values('%s','%s','%s','%s','%s','%s',%d,%s,%s,%s)",Oid,str4,Bid,Sid,Otype,m_ time,flag,Omoney,OAmoney,OBmoney);ado.ExecuteSQL((_bstr_t)sql);ado.E xitConnect(); }}b.v oid CClientDlg::OnButtonGet() //取款函数{// TODO: Add your control notification handler code hereCGetDlg GetDlg;;if (GetDlg.DoModal()==IDOK){double temp,temp1;ADOConn ado;CString sql = "select * from Custom where Cname='"+Cname+"'";_RecordsetPtr ResultSet = ado.GetRecordSet((_bstr_t)sql);CString str = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Crmoney");CString bid = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Bid");CString str4 = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Cid");CString str2= str;//将交易前钱数暂存temp=atof(str);temp1=(double)GetDlg.m_GetNum;if (temp>temp1){temp-=temp1; str.Format("%f",temp); CString str3 = str;//暂存交易后金额sql = "update Custom set Crmoney='"+str+"' "+"whereCname='"+Cname+"'";ado.ExecuteSQL((_bstr_t)sql);sql = "select count(*) num from Operate";ResultSet = ado.GetRecordSet((_bstr_t)sql) int num= atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("num"));str = "240600";CString Oid,Cid,Sid,Bid,Otime,Omoney,OAmoney,OBmoney;Oid.Format("%d",++num);Oid=str+Oid; Sid="7985001"Bid = bid; double temp2;sql = "select * from Bank where Bid='"+Bid+"'";ResultSet = ado.GetRecordSet((_bstr_t)sql);CString bmoney = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Bmoney");temp2 = atof(bmoney); temp2-=temp1;bmoney.Format("%f",temp2);sql = "update Bank set Bmoney='"+bmoney+"' whereBid='"+Bid+"'";ado.ExecuteSQL((_bstr_t)sql);CString Otype = "取款";CString m_time; CTime time;time = CTime::GetCurrentTime();m_time = time.Format("%Y年%m月%d日%X");Otime = m_time; int flag = 0;Omoney.Format("%f",temp1);OAmoney = str2;OBmoney = str3; sql.Format("insert into Operate values('%s','%s','%s','%s','%s','%s',%d,%s,%s,%s)",Oid,str4,Bid,Sid,Otype,m_time,flag,Omoney,OAmoney,OBmoney); ado.ExecuteSQL((_bstr_t)sql);ado.ExitConnect();}else{AfxMessageBox("账户余额不足!"); }}}c.void CClientDlg::OnButtonTurn(){/ TODO: Add your control notification handler code hereCTurnDlg TurnDlg;if (TurnDlg.DoModal()==IDOK){ADOConn ado;CString sql = "select * from Custom";_RecordsetPtr ResultSet = ado.GetRecordSet((_bstr_t)sql);int flag = 0;while (!ResultSet->adoEOF)CString TCusId = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Cid");CString TCusMon = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Crmoney"); //收钱客户在操作前的余额CString str5 = TCusMon; TCusId.Remove(' ');if (TCusId==TurnDlg.m_TurnId){double temp,temp1;sql = "select * from Custom where Cname='"+Cname+"'";ResultSet = ado.GetRecordSet((_bstr_t)sql);CString str = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Crmoney");CString bid = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Bid");CString str4 = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Cid");CString str2= str; //将交易前钱数暂存temp=atof(str);temp1=(double)TurnDlg.m_TurnNum; if (temp>temp1){flag = 1;temp-=temp1; //住客户钱数减少str.Format("%f",temp);CString str3 = str; //暂存交易后金额sql = "update Custom set Crmoney='"+str+"' "+"where Cname='"+Cname+"'";do.ExecuteSQL((_bstr_t)sql); temp=atof(TCusMon);//收钱客户钱数增加temp+=temp1;TCusMon.Format("%f",temp); sql = "update Custom set Crmoney='"+TCusMon+"' "+"where Cid='"+TCusId+"'";ado.ExecuteSQL((_bstr_t)sql); sql = "select count(*) num from Operate";ResultSet = ado.GetRecordSet((_bstr_t)sql);int num = atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("num"));str = "240600";CString Oid,Cid,Sid,Bid,Otime,Omoney,OAmoney,OBmoney;int Otype; Oid.Format("%d",++num); Oid=str+Oid;Sid="7985001";Bid = bid; Otype = 2; CString m_time; CTime time;time = CTime::GetCurrentTime();m_time = time.Format("%Y年%m月%d 日%X");Otime = m_time; Omoney.Format("%f",temp1);OAmoney = str2; OBmoney = str3;sql.Format("insert into Operate values('%s','%s','%s','%s',%d,'%s',%s,%s,%s)",Oid,str4,Bid,Sid,Otype,m_time ,Omoney,OAmoney,OBmoney); ado.ExecuteSQL((_bstr_t)sql);sql.Format("insert into Operate values('%s','%s','%s','%s',%d,'%s',%s,%s,%s)",TCusId,str4,Bid,Sid,Otype,m_t ime,Omoney,str5,TCusMon); ado.ExecuteSQL((_bstr_t)sql);ado.ExitConnect();break; }else{AfxMessageBox("账户余额不足!");break; }}ResultSet->MoveNext();}if(flag==0){AfxMessageBox("该账户不存在!"); }}}d.v oid CClientDlg::OnButtonHistoy() //历史记录查询{// TODO: Add your control notification handler code hereCShowHistory showDlg;ame = Cname;showDlg.DoModal();}e.v oid CClientDlg::OnButtonAlter(){// TODO: Add your control notification handler code hereCAlterDlg alteDlg;if(alteDlg.DoModal()==IDOK){ if (alteDlg.m_AItem==0){if (alteDlg.m_Alter1==alteDlg.m_Alter2) {ADOConn ado; CString sql = "update Custom set Cname='"+alteDlg.m_Alter1+"' where Cname='"+Cname+"'";ado.ExecuteSQL((_bstr_t)sql);AfxMessageBox("姓名修改成功!"); }else {AfxMessageBox("两次姓名输入不一致,请重新输入!"); }}else if(alteDlg.m_AItem==1){if (alteDlg.m_Alter1==alteDlg.m_Alter2) { ADOConn ado;CString sql = "update Custom set Cpass='"+alteDlg.m_Alter1+"' whereCname='"+Cname+"'";ado.ExecuteSQL((_bstr_t)sql); AfxMessageBox("密码修改成功!"); }else{AfxMessageBox("两次密码输入不一致,请重新输入!"); }elseif (alteDlg.m_Alter1==alteDlg.m_Alter2){if (alteDlg.m_Alter1.GetAt(0)=='1'&&alteDlg.m_Alter1.GetLength()==11)ADOConn ado; CString sql = "update Custom setCphone='"+alteDlg.m_Alter1+"' where Cname='"+Cname+"'";ado.ExecuteSQL((_bstr_t)sql); AfxMessageBox("电话号码修改成功!"); }else {AfxMessageBox("电话号码格式不对!");} } else{AfxMessageBox("两次电话输入不一致,请重新输入!"); } }}}管理员部分:a.void CStaffDlg::OnButtonInsert() //添加新成员{// TODO: Add your control notification handler code hereCInsertDlg insertDlg;if (insertDlg.DoModal()==IDOK){if (insertDlg.m_Phone.GetAt(0)=='1'&&insertDlg.m_Phone.GetLength()==11){ADOConn ado;CString sql = "select count(*) Num from Custom whereCcode='"+insertDlg.m_Code+"'";_RecordsetPtr ResultSet = ado.GetRecordSet((_bstr_t)sql);int Num = atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("Num"));if (Num==0){CString str = "650500";sql = "select count(*) num from Custom";ResultSet = ado.GetRecordSet((_bstr_t)sql);Num = atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("num"));CString Cid,Cpass,Bid,Pmoney; double dou;Cid.Format("%d",++Num); Cid = str+Cid;Cpass = "000000";CString m_time; Bid= "00001";CTime time; time = CTime::GetCurrentTime();m_time = time.Format("%Y年%m月%d日%X");dou = (double)insertDlg.m_Pmoney;Pmoney.Format("%f",dou);// Otime = m_time; sql.Format("insert into Custom values('%s','%s','%s','%s',%s,'%s',%s,%s)",Cid,insertDlg.m_Name,Cpass,m_time,insertDlg.m_Code,Bid,Pmoney,insertDlg.m_Phone);ado.ExecuteSQL((_bstr_t)sql);sql = "select count(*) num from Operate";ResultSet = ado.GetRecordSet((_bstr_t)sql);Num = atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("num"));CString Oid,OAmoney,Otype; Otype = "新注册";Oid.Format("%d",++Num);str = "240600";Oid = str+Oid; Bid= "00001";int flag = 0; OAmoney = "0";sql.Format("insert into Operatevalues('%s','%s','%s','%s','%s','%s',%d,%s,%s,%s)",Oid,Cid,Bid,Sid,Otype,m_time,flag,Pmoney,OAmoney,Pmoney); ado.ExecuteSQL((_bstr_t)sql);AfxMessageBox("新增客户成功!"); }else{AfxMessageBox("该证件号已经注册!"); }}}b.void CStaffDlg::OnButtonDelete() //注销客户{// TODO: Add your control notification handler code hereCDelDlg delDlg;if (delDlg.DoModal()==IDOK){if (delDlg.m_DelId1==delDlg.m_DelId2){ADOConn ado;count(*) Num from Custom where Cid='"+delDlg.m_DelId1+"'";_RecordsetPtr ResultSet = ado.GetRecordSet((_bstr_t)sql);int Num = atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("Num"));if (Num!=0){CString str = "650500";sql = "delete from Custom whereCid='"+delDlg.m_DelId1+"'";ado.ExecuteSQL((_bstr_t)sql); CString Bid,Cid;Cid = "6505000";CString m_time;CTime time; time = CTime::GetCurrentTime();m_time = time.Format("%Y年%m月%d日%X");sql = "select count(*) numfrom Operate";ResultSet = ado.GetRecordSet((_bstr_t)sql);Num = atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("num"));CString Oid,OAmoney,Otype; Otype = "注销用户";Oid.Format("%d",++Num);tr = "240600";Oid = str+Oid; Bid= "00001";int flag = 2; OAmoney = "0";sql.Format("insert into Operatevalues('%s','%s','%s','%s','%s','%s',%d,%s,%s,%s)",Oid,Cid,Bid,Sid,Otype,m_time,flag,OAmoney,OAmoney,OAmoney); ado.ExecuteSQL((_bstr_t)sql);AfxMessageBox("注销客户成功!"); }else{AfxMessageBox("不存在该用户!"); }}else {AfxMessageBox("两次输入用户ID不一致,请重新输入!"); }}}c.void CStaffDlg::OnButtonResher() 查询客户{// TODO: Add your control notification handler code hereCAlterDlg altDlg; if (altDlg.DoModal()==IDOK){if (altDlg.m_AItem==0) {if (altDlg.m_Alter1==altDlg.m_Alter2) {ADOConn ado;CString sql = "update Staff set Sname='"+altDlg.m_Alter1+"' whereSname='"+Sname+"'";ado.ExecuteSQL((_bstr_t)sql);AfxMessageBox("姓名修改成功!");}else{AfxMessageBox("两次姓名输入不一致,请重新输入!"); }} else if(altDlg.m_AItem==1){if (altDlg.m_Alter1==altDlg.m_Alter2){ADOConn ado;CString sql = "update Custom set Spass='"+altDlg.m_Alter1+"' where Sname='"+Sname+"'";ado.ExecuteSQL((_bstr_t)sql); AfxMessageBox("密码修改成功!"); }else{AfxMessageBox("两次密码输入不一致,请重新输入!"); }}else{if (altDlg.m_Alter1==altDlg.m_Alter2){if (altDlg.m_Alter1.GetAt(0)=='1'&&altDlg.m_Alter1.GetLength()==11){ADOConn ado;CString sql = "update Custom set Sphone='"+altDlg.m_Alter1+"' where Sname='"+Sname+"'";ado.ExecuteSQL((_bstr_t)sql);AfxMessageBox("电话号码修改成功!"); }else{AfxMessageBox("电话号码格式不对!");} }else{AfxMessageBox("两次电话输入不一致,请重新输入!"); } } }d.void CStaffDlg::OnButtonMoneyctrl() //资金管理{// TODO: Add your control notification handler code hereCSerchDlg serDlg;if (serDlg.DoModal()==IDOK){ADOConn ado;CString sql = "select count(*) Num from Custom where Cid='"+serDlg.m_Cid+"'";_RecordsetPtr ResultSet = ado.GetRecordSet((_bstr_t)sql);int Num = atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("Num"));if (Num!=0){CCusInfoDlg cusDlg;cusDlg.Cid = serDlg.m_Cid ADOConn ado;CString sql = "select * from Custom where Cid='"+cusDlg.Cid+"'";_RecordsetPtr ResultSet = ado.GetRecordSet((_bstr_t)sql);cusDlg.m_Cname = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Cname");cusDlg.m_Cid = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Cid");cusDlg.m_Code = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Ccode");cusDlg.m_Phone = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Cphone");cusDlg.m_Rmoney = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Crmoney");cusDlg.DoModal();ado.ExitConnect();}else{AfxMessageBox("不存在该客户!"); }}}e.void CStaffDlg::OnButtonAlter() //信息修改{CMoneyDlg monDlg; ADOConn ado;CString sql = "select count(*) Num from BMoney ";_RecordsetPtr ResultSet = ado.GetRecordSet((_bstr_t)sql);monDlg.m_GetNum = atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("Num"));sql = "select count(*) Num from BInMoney";ResultSet = ado.GetRecordSet((_bstr_t)sql);monDlg.m_InNum = atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("Num"));sql = "select count(*) Num from VIP";ResultSet = ado.GetRecordSet((_bstr_t)sql);monDlg.m_VIPNum= atoi((LPCTSTR)(_bstr_t)ResultSet->GetCollect("Num"));sql = "select * from Bank where Bid='00001'";ResultSet = ado.GetRecordSet((_bstr_t)sql);monDlg.m_Cash = (LPCTSTR)(_bstr_t)ResultSet->GetCollect("Bmoney");ado.ExitConnect();monDlg.DoModal();}f.void CStaffDlg::OnButtonAnyse() //员工业绩分析{// TODO: Add your control notification handler code hereCStaffIDlg staDlg;staDlg.DoModal();}心得体会:这次课程设计体会非常深刻,首先在团队合作方面,我觉得自己作为队长没有两道好我的小队,这是我的失职。
数据库课程设计大作业一、教学目标本课程的教学目标是使学生掌握数据库的基本概念、原理和设计方法,能够运用数据库技术解决实际问题。
具体目标如下:1.理解数据库的基本概念,如数据、数据库、表、关系等。
2.掌握数据库的设计原理,如实体-关系模型、E-R图等。
3.熟悉数据库的操作语言,如SQL语句。
4.了解数据库的性能优化和事务管理。
5.能够使用数据库管理系统(如MySQL、Oracle等)进行数据库的创建、表的设计、数据的增删改查等操作。
6.能够运用实体-关系模型和E-R图进行数据库的设计。
7.能够编写简单的SQL语句进行数据库的操作。
8.能够对数据库的性能进行简单的优化。
情感态度价值观目标:1.培养学生的团队合作意识,能够协同完成数据库的设计和操作。
2.培养学生对数据库技术的兴趣,认识到数据库在现代社会中的重要性。
3.培养学生认真负责的学习态度,养成良好的编程习惯。
二、教学内容根据课程目标,教学内容主要包括以下几个方面:1.数据库的基本概念:数据、数据库、表、关系等。
2.数据库的设计原理:实体-关系模型、E-R图、关系模型等。
3.数据库的操作语言:SQL语句的编写和应用。
4.数据库的性能优化:索引、分区、事务管理等。
5.数据库的实际应用案例:关系型数据库和非关系型数据库的使用场景。
6.数据库的基本概念(2课时)–数据的定义和分类–数据库的概念和功能–表的概念和基本操作7.数据库的设计原理(4课时)–实体-关系模型–E-R图的绘制和转换–关系模型的概念和性质8.数据库的操作语言(6课时)–SQL语句的编写和应用–数据库的增删改查操作–数据库的高级查询功能9.数据库的性能优化(2课时)–索引的使用和优化–分区和分表的概念及应用–事务管理的基本原理10.数据库的实际应用案例(2课时)–关系型数据库(如MySQL)的使用场景–非关系型数据库(如MongoDB)的使用场景三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法相结合的方式进行教学。
数据库课程设计设计题目:工资管理系统班级:学号:姓名:任务分配表目录一绪论 (3)二需求分析 (3)三概要设计 (4)四物理设计 (5)五详细设计 (6)六调试分析 (9)七小结 (16)八附件 (16)一、绪论随着计算机技术的飞速发展和经济体制改革的不断深入,传统企业管理方法、手段以及工作效率已不能适应新的发展需要,无法很好地完成员工工资管理工作。
提高公司企业管理水平的主要途径是更新管理者的思想,增强对管理活动的科学认识。
基于C#与SQL server数据库技术建立一个通用工资管理系统,该系统为提供了查询、增加记录、删除等功能,功能比较的齐全,并对工资进行了统计如津贴管理、报表统计等。
基本上能满足管理员和公司的要求。
此次数据库课程设计的主要设计如下:原理分析、程序设计过程、程序实现和程序调试以及数据库的设计。
需求分析、概要结构设计、逻辑结构设计、物理结构设计和数据库的实施和维护。
主要包括两大大功能模块:1.管理员管理界面设计。
2.员工管理界面设计。
二、需求分析功能需求分析:该通用工资管理系统具备下列功能:管理员通过输入用户名和密码进下该系统后,可以进行一些基本查询(员工信息查询、工资奖金信息查询)、工资管理(计算总工资、奖金管理);通过输入密码,可以进行查询员工的数据(工资,奖金,税收等)。
具体功能的详细描述如下1、在首页进行选择,员工与管理员通道2、点击[管理员登陆]3、用户名和密码即可进入 [工资管理]功能窗体,在此可以选择功能,添加,查询,人员列表4、点击[添加]功能窗体,添加员工工资信息。
5、点击[查询]功能窗体,输入员工号即可查询员工信息。
6、点击[人员列表]功能窗体,可查看所有员工的列表,这界面内可以进行删除操作。
7、点击[员工登陆]8、用户名和密码即可进入 [员工工资查询]功能窗体,在此可以选择查询基本信息,查询工资信息。
9、在[查询基本信息],员工可自己查看自己的信息。
10、在[查询工作信息],员工可自己查看自己的工作信息。
数据库课程设计--图书馆管理系统数据库系统概论课程设计设计题目:图书管理系统学院:计算机信息与科学学院专业:计算机科学与技术学号:20110514323姓名:刘静指导教师:潘林森目录1.引言 .................................. 错误!未定义书签。
2. 需求分析阶段......................... 错误!未定义书签。
2.1任务概述(目标)………………………………………..错误!未定义书签。
2.2数据需求:..................................3 概念设计阶段.......................... 错误!未定义书签。
3.1 任务与目标……………………………………….错误!未定义书签。
3.2 各阶段的结果…………………………………………3.3各E-R图中联系的属性4.逻辑设计阶段 (12)4.1逻辑设计的任务和目标 (12)4.2数据组织 (12)4.2.1将E-R图转换为关系模型 (12)4.2.2模型优化 ............................................. 错误!未定义书签。
4.3具体的基本E-R图向关系模型转化5.物理设计阶段 (15)5.1物理设计阶段的目标与任务 (15)5.2数据存储方面 (15)5.3系统功能模块 (16)5.3.1 读者基本信息的查询和更新模块 (16)5.3.2 图书基本信息的查询和更新模块 (16)6.数据库实施阶段 (17)6.1建立数据库、数据表、视图、索引 (17)6.1.1 建立数据库 (17)6.1.2 建立数据表 (17)6.1.3 建立视图 (21)6.1.4 建立索引 (23)6.1.5 建立触发器 (23)6.2数据入库............................................................. 错误!未定义书签。
数据库课程设计新颖选题一、教学目标本课程旨在通过新颖选题的设计,使学生掌握数据库的基本概念、原理和方法,培养学生的数据库设计能力和实际操作技能,提高学生运用数据库技术解决实际问题的能力。
1.了解数据库的基本概念、发展历程和分类。
2.掌握关系型数据库的基本原理,包括数据模型、关系操作和事务处理。
3.熟悉数据库设计的基本步骤和方法,包括需求分析、概念设计、逻辑设计和物理设计。
4.能够使用数据库管理系统进行基本的数据操作。
5.能够根据实际需求进行简单的数据库设计和优化。
6.能够运用数据库技术解决实际问题,如信息管理系统、数据分析等。
情感态度价值观目标:1.培养学生的团队合作意识和沟通能力,提高学生解决实际问题的能力。
2.培养学生对数据库技术的兴趣和好奇心,激发学生继续学习的动力。
二、教学内容根据课程目标,本课程的教学内容主要包括以下几个部分:1.数据库基本概念:介绍数据库的定义、发展历程和分类,使学生了解数据库的基本概念。
2.关系型数据库:讲解关系型数据库的基本原理,包括数据模型、关系操作和事务处理,使学生掌握关系型数据库的基本操作。
3.数据库设计:介绍数据库设计的基本步骤和方法,包括需求分析、概念设计、逻辑设计和物理设计,培养学生进行数据库设计的能力。
4.数据库应用案例:通过实际案例的分析,使学生了解数据库技术在实际问题中的应用,提高学生运用数据库技术解决实际问题的能力。
三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法,如讲授法、讨论法、案例分析法和实验法等。
1.讲授法:通过教师的讲解,使学生掌握数据库的基本概念和原理。
2.讨论法:通过小组讨论,培养学生的团队合作意识和沟通能力。
3.案例分析法:通过实际案例的分析,使学生了解数据库技术在实际问题中的应用。
4.实验法:通过实际操作,使学生掌握关系型数据库的基本操作和数据库设计的方法。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备以下教学资源:1.教材:选用权威、实用的数据库教材,如《数据库原理与应用》。
《数据库系统概论》课程设计课程设计题目人事管理系统设计一.摘要为了完善全面的人事管理功能,使人事企业管理流程合理化和自动化处理和分析各种有价值的信息,以支持决策者制定人事企业管理战略发展计划。
该系统采用了SQLServer2000数据库开发环境,使用专用数据库接口连接,其存取速度快、安全性好,便于管理和操作。
整个系统从符合操作简便、界面友好、灵活、实用、安全的要求出发,完成人事管理全过程,包括员工的基本信息、学历和任职信息、家庭状况、奖惩信息、员工各种信息的修改、对于转出、辞职、退休员工信息的删除等管理工作。
经过实际使用证明,该文所设计的人事管理系统可以满足公司人事管理方面的需要。
二、前言随着计算机技术的飞速发展,计算机在企业管理中应用的普及,利用计算机实现企业人事档案的管理势在必行。
人事管理系统是现代企业管理工作不可缺少的一部分,是适应现代企业制度要求、推动企业劳动人事管理走向科学化、规范化的必要条件。
人事管理系统可以用于支持企业完成劳动人事管理工作,有如下3个方面的目标。
1.支持企业实现规范化的管理。
2.支持企业高效率完成劳动人事管理的日常业务,包括新员工加入时人事档案的建立,老员工转出、辞职、退休等。
3.支持企业进行劳动人事管理及其相关方面的科学决策,如企业领导根据现有的员工数目决定招聘的人数等。
三、系统设计3.1设计思想尽量采用学校现有软硬件环境,及先进的管理系统开发方案,从而达到充分利用学校现有资源,提高系统开发水平和应用的目的。
1.系统应符合学校人事管理的规定,满足学校日常人事管理工作需要,并达到操作过程中的直观、方便、实用、安全等要求。
2.系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充、维护。
3.系统应具备数据库维护功能,及时根据用户需求进行数据的添加、删除、修改、备份等操作。
3.2 系统功能分析该系统需要完成如下功能:1. 实现部门、职务、职称等信息的管理;2. 实现职工信息的管理:3. 实现职工学习经历和任职经历的管理;4. 实现职工家庭关系的管理;5. 实现奖惩信息的管理;6. 创建存储过程查询各部门各种职称的职工数量;7. 创建视图查询各职工的工号、姓名、部门、职务信息;8.创建触发器当增加、删除职工和修改职工部门信息时自动修改相应部门的职工人数;9.建立数据库相关表之间的参照完整性约束。
数据库课程设计题目11、某商业集团的销售管理系统数据库中有三个实体集。
一是“商店”实体集,属性有商店编号、商店名、地址等;二是“商品”实体集,属性有商品号、商品名、规格、单价等;三是“职工”实体集,属性有职工编号、姓名、性别、业绩等。
商店与商品间存在“销售”联系,每个商店可销售多种商品,每种商品也可放在多个商店销售,每个商店销售一种商品,有月销售量;商店与职工间存在着“聘用”联系,每个商店有许多职工,每个职工只能在一个商店工作,商店聘用职工有聘期和月薪。
(1)试画出ER图,并在图上注明属性、联系的类型。
(2)将ER图转换成关系模型,并注明主键和外键。
解:(1) ER图如图5.1所示。
月销售量 M 商店 1 月薪销售聘用聘期商店编号商店名地址 N 商品N 职工商品号商品名规格单价姓名性别业绩图5.1 职工编号(2)这个ER图可转换4个关系模式:商店(商店编号,商店名,地址)职工(职工编号,姓名,性别,业绩,商店编号,聘期,月薪)商品(商品号,商品名,规格,单价)销售(商店编号,商品号,月销售量)2、设某商业集团的仓库管理系统数据库有三个实体集。
一是“公司”实体集,属性有公司编号、公司名、地址等;二是“仓库”实体集,属性有仓库编号、仓库名、地址等;三是“职工”实体集,属性有职工编号、姓名、性别等。
公司与仓库间存在“隶属”联系,每个公司管辖若干仓库,每个仓库只能属于一个公司管辖;仓库与职工间存在“聘用”联系,每个仓库可聘用多个职工,每个职工只能在一个仓库工作,仓库聘用职工有聘期和工资。
(1) 试画出ER图,并在图上注明属性、联系的类型。
(2) 将ER图转换成关系模型,并注明主键和外键。
解:(1) ER图如图5.2所示。
公司 1 隶属仓库编号N 仓库 1 聘用工资N 职工公司编号公司名地址仓库名地址聘期图5.2职工编号姓名性别(2)这个ER图可转换3个关系模式:公司(公司编号,公司名,地址)仓库(仓库编号,仓库名,地址,公司编号)职工(职工编号,姓名,性别,仓库编号,聘期,工资)3、设某商业集团的商品供应管理系统数据库有三个实体集。
ER 模型目录14. 高校社团信息管理系统的ER 模型及转换 P16 15.物资库存信息管理系统的 ER 模型 P17 16.中学教务管理信息系统的 ER 模型 P18 17.固定资产管理信息系统的 ER 模型 P19 18.学校图书管理信息系统的 ER 模型P20 19. 进销存管理信息系统的 ER 模型P2113. P14 原材料和产品信息管理系统的 ER 模型及转换 1.库存管理信息系统的 2. 人事管理信息系统的 3. 住院管理信息系统的 4. 公司车队信息系统的 5. 证券业务管理系统的 6.ER 模型及转换 P2 ER 模型 P3 ER 模型 P4 ER 模型 P5 ER 模型及转换P6 勺 ER 模型及转换P77.电脑销售信息管理系统的 8.图书发行信息管理系统的 ER 模型 P99. 库存销售信息管理系统的ER 模型及转换P10 10. 旅游管理信息系统的 ER 模型及转换 P1111. 医疗和药品信息管理系统的ER 模型及转换P1212. 车辆信息管理系统的 ER 模型及转换 P13 ER 模型 P8ER 模型某公司设计了人事管理信息系统,其中涉及到职工、部门、 惩记录等信息。
其 ER 图如图2所示。
图2人事管理信息系统的这个ER 图有7个实体类型,其属性如下:职工 部门 岗位 技能奖惩培训课程(课程号,课程名,教材,学时)工资(工号,基本工资,级别工资,养老金,失业金,公积金,纳税)这个ER 图有7个联系类型,其中1个1:1联系,2个1:N 联系,4个M:N 联系。
联系类 型的属性如下:选课 设置 考核 接受 试把这个岗位、技能、 培训课程、奖(工号,姓名,性别,年龄,学历) (部门号,部门名称,职能)(岗位编号,岗位名称,岗位等级) (技能编号,技能名称,技能等级) (序号,奖惩标志,项目,奖惩金额)口. 号, (时间,成绩) (人数)(时间,地点,级别)(奖惩时间)ER 图转换成关系模型。
并指出各个关系模式的主键和外键。
ER 模型ER模型某学员为医院“住院管理信息系统”设计了数据库的ER模型,对医生、护士、病人、病房、诊断、手术、结账等有关信息进行管理,其ER图如图3所示。
这个ER图有8个实体类型,其属性如下:(住院号,姓名,性别,地址)(医生工号,姓名,职称)(护士工号,姓名,职称)(病床编号,床位号,类型,空床标志)病人医生护士病床手术室(手术室编号,类型)手术(手术标识号,类型,日期,时间,费用)诊断书(诊断书编号,科别,诊断)收据(收据编号,项目,金额,收款员,日期)这个ER图有11个联系类型,其中1个是1:1联系,8个1 : N联系,2个是M N联系。
联系的属性如下:协助处方入住试把这个4.公司车队信息系统的ER模型某货运公司设计了车队信息管理系统,对车辆、司机、维修、保险、报销等信息和业务活动进行管理。
其ER图如图4所示。
(角色)(处方单号,序号,药品名称,规格,数量,费用)(入院日期,出院日期)ER图转换成关系模型。
并指出各个关系模式的主键和外键。
该ER 图有8个实体类型,其结构如下:(部门号,名称,负责人) (车队号,名称,地址)(司机号,姓名,执照号,电话,工资) (车牌号,车型,颜色,载重)保险公司(保险公司号,名称,地址) 维修公司(维修公司号,名称,地址) 开销(顺序号,费用类型,费用,日期,经手人) 制造商(制造商编号,名称,地址)实体之间有9个联系,其中7个是1:N 联系,2个是M:N 联系。
其中联系的属性如下: 调用(出车编号,出车日期,车程,费用,车辆数目) 保险1 (投保日期,保险种类,费用)保险2 (投保日期,保险种类,费用) 出车(派工单号,起点,终点,日期,辅助人员) 进而,读者可以很容易地转换成关系模式集。
6.社区物业信息管理系统的ER 模型及转换某学员为社区物业信息管理系统设计了数据库的ER 图,对房屋、业主、投诉、缴费、违规、维修等信息进行了管理,其部门 车队 司机 车辆 ER 图如图6所示。
图6社区物业信息管理系统的 ER 图该ER 图有7个实体类型,其结构如下: 业主(业主编号,姓名,性别,电话,身份证号) 房屋(房屋编号,房型,建筑面积,使用面积) 缴费单 违规单 投诉单 维修单 维修员 该ER 图有6个联系类型,其中 购买(购买日期,缴费方式,根据ER 图和转换规则,7个实体类型转换成 7个关系模式,2个M:N 联系转换成2个关 系模式。
因此,图6的ER 图可转换成9个关系模式,如下:业主(业主编号,姓名,性别,电话,身份证号) 房屋(房屋编号,房型,建筑面积,使用面积) 缴费单 违规单 投诉单 维修单 维修员购买(业主编号,房屋编号,购买日期,缴费方式, 投诉(投诉单号,房屋编号}—7.电脑销售信息管理系统的某学员为电脑专卖店设计开发了“电脑销售信息管理系统” 供应商、仓库、营业员、门店的有关信息进行了管理,其 这个ER 图有7个实体类型,其属性如下:商品(商品编号,名称,类别,单位,单价) 供应商(供应商编号,名称,账号,地址) 仓库(仓库编号,地址,负责人) 门店(门店编号,名称,地址)(单据编号,项目,金额,交费方式,日期,收费人员) (违规单号,内容,处理日期,处理结果,罚款数,经办人)(投诉单号,日期,内容,处理日期,处理结果,经办人)(维修单号,维修内容,维修日期,完成日期,费用,经办人) 地址,电话) 4个是1:N 联系,2个是M:N 联系。
其联系的属性如下: 已付金额,欠款数,使用状况)(工号,姓名,工种,(单据编号,项目,金额,交费方式,日期,收费人员,房屋编号) (违规单号,内容,处理日期,处理结果,罚款数,经办人,房屋编号) (投诉单号,日期,内容,处理日期,处理结果,经办人) (维修单号,维修内容,维修日期,完成日期,费用,经办人,房屋编号, 维修员工号)(工号,姓名,工种,地址,电话) 已付金额,欠款数,使用状况)ER 模型,数据库的ER 模型对商品、ER 图如图7所示。
采购员(采购员编号,姓名,业绩)管理员(管理员编号,姓名,业绩)营业员(营业员编号,姓名,业绩)这个ER图有7个联系类型,其中2个是1 : N联系,1个M N联系,4个是M N: P 联系。
联系的属性如下:采购进货配送图7电脑销售信息管理系统的ER图10.旅游管理信息系统的ER模型及转换某学员为旅行社设计了一个小型的国内旅游管理信息系统,其中涉及到与业务有关的信息有旅游线路、班次、团体、旅客、保险员、导游、宾馆、交通工具等。
其ER图如图10所示。
这个ER图有8个实体类型,其属性如下:(采购单号,数量,日期)(进货单号,数量,日期)(配送单号,数量,日期)(销售单号,数量,日期)(库存量,日期,安全库存量)ER图转换成关系模型。
并指出各个关系模式的主键和外键。
存储试把这个地址,电话) 身份证号码,住址, 身份证号码,住址, 交通工具(旅游班次号,出发工具,出发日期,出发班次, 回程日期,回程班次,回程时间) 宾馆(宾馆编号,宾馆名,城市,星级,标准房价,联系人,职务,地址,电话) 保险单(保险单编号,保险费,投保日期) 这个ER 图有7个联系类型,其中2个1:1联系,3个1:N 联系,根据ER 图和转换规则,系模式。
因此,图10的ER 图可转换成10个关系模式,如下:旅游线路(路线号,起点,终点,天数,主要景点)旅游班次(班次号,路线号,出发日期,回程日期,旅游标准,报价) 旅游团(团号,旅游班次号,团旅游线路(路线号,起点,终点,天数,主要景点)旅游班次(班次号,出发日期,回程日期,旅游标准,报价) 旅游团(团号,团名,人数,联系人, 游客(游客编号,姓名,性别,年龄, 导游(导游编号,姓名,性别,年龄,电话)电话,语种,业绩) 出发时间,回程工具,2个M:N 联系。
图10旅游管理信息系统的 ER 模型8个实体类型转换成 8个关系模式,2个M:N 联系转换成2个关名,人数,联系人,地址,电话)游客(游客编号,团号一,姓名,性别,年龄,身份证号码,住址,电话)导游(导游编号,姓名,性别,年龄,身份证号码,住址,电话,语种,业绩)交通工具(旅游班次号,出发工具,出发日期,出发班次,出发时间,回程工具, 回程日期,回程班次,回程时间)(宾馆编号,宾馆名,城市,星级,标准房价,联系人,职务,地址,电话)(保险单编号,团号,人数,保险费,投保日期)(旅游班次号,导游编号)宾馆保险陪同食宿(旅游班次号,宾馆编号)11.医疗和药品信息管理系统的 ER 模型及 转换某学员为小型医院设计的医疗和药品信息管理系统, 供应商和业务活动进行了管理,其对疾病、病人、药品、医生、 处方、 ER 图如图11所示。
该ER 图有7个实体类型,其结构如下: (疾病编号,名称,类别,潜伏期) (医生编号,姓名,职称,性别, (病人编号,姓名,性别,年龄, (药品绸号L 名称,规格,类别,疾病 医生 病人 药品 年龄) 工作单位) 副作用,单价,安全库存量,库存量)处方总价) 地址,电话) 数量,价值,报损原因)这个ER 图有7个联系类型,其中1个1:N 联系,1个1:1:N 联系,5个M:N 联系。
联系的属性如下:(副作用)(开始日期)(数量,服法)处方单(处方单编号,日期, 供应商(供应商编号,名称, 报损单(报损单编号,日期, 其中, 治病患病发药根据ER 图和转换规则,7个实体类型转换成 7个关系模式,5个M:N 联系转换成 系模式。
因此, 疾病 医生 病人 药品 5个关 图11的ER 图可转换成12个关系模式,如下: (疾病编号,名称,类别,潜伏期) (医生编号,姓名,职称,性别, (病人编号,姓名,性别,年龄, (药品编号,名称,规格,类别,年龄) 工作单位) 副作用,单价,安全库存量,库存量)处方单(处方单编号,病人编号,医生编号,日期,处方总价)供应商(供应商编号,名称,地址,电话)报损单(报损单编号,药品编号,日期,数量,价值,报损原因)治病(药品编号,疾病编号,副作用)患病(病人编号,疾病编号,开始日期)发药(处方单编号,药品编号,数量,服法)入库(入库单编号,供应商编号,药品编号,入库日期,数量,进货价)专长(医生编号,疾病编号,)14.高校社团信息管理系统的ER模型及转涣某学员为高校社团信息管理系统设计了数据库的ER图,对学生、社团、社团成员、社团活动、主管老师、对活动和成员的评价等信息进行了管理,其学生(学号,姓名,性别,出生年月,政治面貌)社团(社团编号,类别,名称,成员数,组织描述,活动概览)社团成员(成员编号,在社职务,证件编号,发放日期)主管老师(教师工号,姓名,性别,政治面貌,职称,电话)ER图如图14所示。