文档库 最新最全的文档下载
当前位置:文档库 › 东北大学数据库实验报告

东北大学数据库实验报告

东北大学数据库实验报告
东北大学数据库实验报告

课程编号:B080109004

数据库应用程序设计实践

报告

东北大学软件学院

1.关系数据库

设计以下三个表:

客户信息表:

?客户号(主码) NUMBER(4)

?客户姓名V ARCHAR2(20)

?客户类型V ARCHAR2(20)

?地址VARCHAR2(20)

?余额NUMBER(7,2)

计费设备表

?计费设备号(主码) NUMBER(4)

?客户号(外码)NUMBER(4)

?设备类别(01,02)Characters(1)

应收费用表

?年月Date

?计费设备号(外码)NUMBER(4)

?基本费用NUMBER(7,2)

?附加费用1 NUMBER(7,2)

?附加费用2 NUMBER(7,2)

?应收违约金NUMBER(7,2)

?实收违约金NUMBER(7,2)

?减免违约金NUMBER(7,2)

?收费标志(0未交费,1已交费)Characters(1)

第一部分:

1.指出你所设计表的各种键值,在选择时不要考虑性能问题。

1)指出每张表是否存在主码,若存在,请指出具体的主码,并说明原因。

CLIENT主码:CLIENTNO

DEVICE主码:DEVICENO

MONTHLYNEDDPAY主码:ID

这些能够作为主码的字段的数据都是唯一的,因此能够进行唯一性标识,能够作为主码来使

用。

2)指出每张表是否存在备用码(除了主码之外的所有候选码),若存在,请指出所有的备用码,

并说明原因。

Client和Device表不存在候选码,

Montthlyneedpay 中的DeviceNo和logdate 可以作为一个候选码。

3)指出各表中存在的外码和完整性约束,并说明原因。

Client表中没有外码,但是clientno不能为空,因为它是主码。

DEVICE:外码是CLIENTNO,Deviceno不能为null,因为它是主码

MONTHLYNEDDPAY:外码有DEVICENO和CLIENTNO。ID不能为空

2.列出各表所有列和各列的域(数据类型和格式),并说明理由。

CLIENT:CLIENTNO是主码

DEVICE: DEVICENO是主码

MONTHLYNEDDPAY: ID是主码

第二部分:

写出如下SQL语句:

1.用DDL语言中的CREATE TABLE语句创建以上三张表,并确定指定了表的主码和备用码;

客户信息表:

createtable CLIENT

(

CLIENTNO NUMBER(4)notnull,

CLIENTNAME VARCHAR2(20),

ADDRESS VARCHAR2(20),

BALANCE VARCHAR2(20)

)

altertable CLIENT

addconstraint PK_CLIENT_CLIENTNO primarykey(CLIENTNO)

usingindex

计费设备表:

createtable DEVICE

(

DEVICENO NUMBER(4)notnull,

CLIENTNO NUMBER(4),

TYPECHAR(1)

)

altertable DEVICE

addconstraint PK_DEVICE_DEVICENO primarykey(DEVICENO)

usingindex

应收费用表:

createtable MONTHLYNEEDPAY

(

IDNUMBER(10)notnull,

DEVICENO NUMBER(4),

CLIENTNO NUMBER(4),

LOGDATE DATE,

SFROM NUMBER(10),

STO NUMBER(10),

BASICFEE NUMBER(7,2),

ADDFEE1 NUMBER(7,2),

ADDFEE2 NUMBER(7,2),

LATEFEE NUMBER(7,2),

NEEDPAY NUMBER(7,2),

ACTUALPAY NUMBER(7,2),

PAYDAY DATE,

PAYSTATUS CHAR(1)

)

altertable MONTHLYNEEDPAY

addconstraint PK_MONTHLYNEEDPAY_ID primarykey(ID)

usingindex

2.利用INSERT语句向客户信息表中插入1条客户记录;

insertinto client(clientno,clientname,address,balance)values(1,'张三','沈阳市和平区东北大学','123.09');

3.利用INSERT语句向计费设备表中为该客户插入2条设备记录。

Insert into device(deviceno,clientno,type) values(1,1001,?1?);

Inser into device(deviceno,clientno,type) values(2,1002,?1?);

4.利用INSERT语句向应收费用表中为该客户插入2个月份的应收费信息。

Insert into monthlyneedpay

(id,deviceno,clientno,logdate,sfrom,sto,basicfee,addfee1,addfee2,latefee,needpay,

actualpay,payday,paystatus)values(1,1,1001,to_date(…2015-1-31?,?YYYY-MM-DD?),

120,150,10,1,2,0,14.7,0,to_date(…2015-2-5?,?yyyy-mm-dd?,),0)

Insert into monthlyneedpay

(id,deviceno,clientno,logdate,sfrom,sto,basicfee,addfee1,addfee2,latefee,needpay,

actualpay,payday,paystatus)values(2,2,1001,to_date(…2015-2-28?,?YYYY-MM-DD?)1

50,180,10,1,2,0,14.7,0,to_date(…2015-3-5?,?yyyy-mm-dd?,),0)

5.在不考虑附加费和违约金的情况下,给定一个客户号,查询该客户号下所有设备累计应收基本费用;

Select sum(needpay)+sum(addfee1)+sum(addfee2)+sum(latefee) from

monthlyneedpay where clientno=1001;

第三部分:(理解关系运算)

1.已知关系表r和s如下:

给出差运算r-s和s-r的结果;

R-S

S-R

2.描述下面查询的结果,如果将UNION用EXCEPT替代,又会有什么样的查询结果?

( SELECT A

FROM r, s

WHERE r.a = s.d

)

UNION

( SELECT A

FROM r, s

WHERE r.c = s.d

);

UNION 这条语句是查询数据库中r表的a字段的值和s表中的d字段的值,r表中c字段的值和s表中d字段的值相等的部分,取出相等的部分后,相同的结果只保留一个。将union 换位EXPECT后得到的结果是只存在表a中和d相等的部分,并且去掉重复行。

2.SQL

请写出针对以下问题的SQL语句(每一问必需用一条SQL语句实现,但该SQL语句可以包含子查询)。

1.查询姓张的所有客户信息

Select * from clinet where clientname like …张%?;

2.查询客户号1001的客户拥有的计费设备个数。

Select count(*) from device where clientno=1001;

3.计算客户号1001在2016年1月产生的附加费用1和附加费用2;

Select addfee1,addfee2 from monthlyneedpay where

to_char(logdate,?yyyy?)=2016 and to_char(logdate,?mm?)=1;

4.查询客户号1001在2016年的历史缴费记录;

Select * from paylog where clientno=1001 and to_char(payday,?yyyyy?)=2016;

5.更新客户号1001在2016年1月份的收费标识为1;

Update monthlyneedpay set paystatus=?1? where to_char(payday,?yyyy?)=2016

and

to_char(payday,?mm?)=1;

6.查询应收费用表,先按照客户号升序排序,再按照年份排序降序排序。

Select * from monthlyneedpay order by clientno asc,payday desc;

3.Advanced SQL

在该练习中,我们根据银行代收费系统的需求,完成以下高级SQL语句的编写:

1.查询前一年所有客户的欠费记录,按照客户编号升序排列。

Select clientno,needpay,payday from monthlyneedpay where paystatus=0 and

to_char(payday,?yyyy?)=2015 order by clientno asc;

2.查询当前年份欠费记录超过5条以上的用户。

select * from (select sum(case PAYSTATUS when '0' then 1 else 0 end) as QU

ANTITY from monthlyneedpay where to_char(LOGDATE,'yyyy')='2016' group

by CLIENTNO)where QUANTITY>=5;

3计算客户号1001的客户,其名下所有设备的应收基本费用之和,附加费用1之和,附加费用2之和。

Select count(needpay),count(addfee1),count(addfee2) from monthlyneedpay

where clientno=1001;

4.计算客户号1001在2016年1月份,计费设备号100的应收违约金。

Select latefee from monthlyneedpay where clientno=1001 and deviceno=100

and to_char(payday,?yyyy?)=2016 and to_char(payday,?mm?)=1;

5.计算银行代号为19的银行在20160130产生的缴费总次数和总金额,冲账的记录不记录总

次数和总金额中。

select banktotalcount,banktotalmoney from checktotal where bank_id=19 and to_cha r(checkdate,,?yyyy?)=2016 and to_char(checkdate,?mm?)=1 and to_char(checkdate,?dd?)=30;

4.Programming with Transactions and Procedure Process

编写存储过程完成以下问题(如果不熟悉存储过程的编写,也可以顺序执行多条SQL语句来实现功能需求):第一部分【查询】:

交易描述:

判断客户号是否存在,然后根据客户号取得客户姓名,地址,应收费用。

其中应收费用的计算:该用户下所有计费设备,计算所有计费设备未交费的所有月份应收费用的和。计费设备应收费用的计算:根据计费设备号取得基本费用,附加费用1,附加费用2,应收违约金,实收违约金,减免违约金后,应收费用=基本费用+附加费用1+附加费用2+应收违约金-减免违约金,依次获取该计费设备收费标志为0的所有月份应收费用的和。修改应收费用表中的应收违约金,附加费用1,附加费用2几个字段,避免执行缴费操作后的重复计算。获取的客户姓名、地址、应收费用等数据返回。

createorreplaceprocedure checkclient(client_no innumber,error outvarchar2, outclientnanme outvarchar2,outaddress outvarchar2,outneedpay outnumber)is

Tclientnanme varchar2(20);

Taddress varchar2(20);

Tneedpay number(7,2);

clientnum number(4);

Taddfee1 number(7,2);

Taddfee2 number(7,2);

Terror varchar2(20);

Tlatefee number(7,2);

begin

selectcount(*)into clientnum from client where clientno=client_no;

if

clientnum=0then

Terror:='没有此客户';

error:=Terror;

else

select clientname,address into Tclientnanme,Taddress from client where clientno=client_no; selectsum(needpay),sum(addfee1),sum(addfee2),sum(latefee)into

Tneedpay ,Taddfee1,Taddfee2,Tlatefee from monthlyneedpay where clientno=client_no and paystatus=0;

outclientnanme:=Tclientnanme;

outaddress:=Taddress;

outneedpay:=Tneedpay+Taddfee1+Taddfee2+Tlatefee;

endif;

end checkclient;

第二部分【缴费】

交易描述:

判断交费金额是否正确,交费金额应该为基本费用,附加费用1,附加费用2,应收违约金的和再减去减免违约金之后的值。如果交费金额不正确,返回交费金额错误的提示信息。缴费金额正确,在应收费用表表中修改收费标志,实收违约金,其中实收违约金应该为应收违约金减去减免违约金。同时用户交费表中增加一条记录,其中操作类型为“存款”。如果客户存在违约金,应计算违约金(这部分可以在其他模块完成的情况下做,具体计算方法见附录)

返回包括姓名,金额,地址,明细费用等详细信息的发票数据。

createorreplaceprocedure checkcharge(client_no innumber,LName outvarchar2, balance outnumber,address outvarchar2,error outvarchar2)is

TName varchar2(20);

Taddress varchar2(20);

Tpay number(7,2);

Tclientnum number(4);

Terror varchar2(20);

Tneedpay number(7,2);

Taddfee1 number(7,2);

Taddfee2 number(7,2);

Tlatefee number(7,2);

Tcharge number(7,2);

len number;

TID number(4);

Tbasicfee number(7,2);

Cursor myCur isselect*from monthlyneedpay where clientno=client_no;

Tend Date;

begin

selectcount(clientno)into Tclientnum from client where clientno=client_no;

if

Tclientnum=0then

Terror:='不存在此用户';

error:=Terror;

endif;

for cur_result in myCur loop

begin

Tend:=cur_result.logdate;

TID:=cur_result.id;

len:=trunc(sysdate)-trunc(Tend)-10;

update monthlyneedpay set latefee=len*0.001where id=TID and clientno=client_no;

end;

endloop;

selectsum(paymoney)into Tpay from paylog where clientno=client_no;

selectsum(needpay),sum(basicfee),sum(addfee1),sum(addfee2),sum(latefee)into Tneedpay,Tbasicfe e,Taddfee1,Taddfee2,Tlatefee from monthlyneedpay where clientno=client_no;

Tcharge:=Tneedpay+Tbasicfee+Taddfee1+Taddfee2+Tlatefee;

if Tpay!=Tcharge then

Terror:='金额错误';

error:=Terror;

else

update monthlyneedpay set paystatus='1'where clientno=client_no;

select clientname,address into Tname,Taddress from client where client_no=clientno;

LName:=TName;

address:=Taddress;

balance:=Tcharge;

endif;

commit;

end checkcharge;

第三部分【冲正】

交易描述

冲正交易为缴费交易的逆向操作,但不能简单的把原记录删除,应该在缴费表中增加一条相当于原记录负值的记录,同时应收费用表中缴费操作产生的数据恢复为未缴费的初始状态。

判断是否能找到原银行流水,客户号,实收金额的收费记录,没找到,返回冲正错误的提示信息。如果找到修改应收费用表中的应收违约金,附加费用1,附加费用2,实收违约金,收费标志几个字段,使这几个字段的值恢复为未缴费前的状态;用户交费表中增加一条记录,其中操作类型为“冲正”,银行流水改为银行交费时产生的原流水号。

createorreplaceprocedure checkpay(banktransfer_id innumber,resultoutvarchar2,balance outnumber)is

num number(4);

Terror varchar2(20);

Tclientno number(4);

Tpayday date;

Tneedpay number(7,2);

Taddfee1 number(7,2);

Taddfee2 number(7,2);

Tlatefee number(7,2);

Trbalance number(7,2);

Tbalance number(7,2);

begin

selectcount(banktransfer_id)into num from chargelog where

banktransferid=banktransfer_id ;

if num=0then

Terror:='冲正错误';

result:=Terror;

endif;

select chargedate,clientno into Tpayday,Tclientno from chargelog where

banktransferid=banktransfer_id;

dbms_output.put_line(Tpayday);

dbms_output.put_line(Tclientno);

select needpay,addfee1,addfee2,latefee into Tneedpay,Taddfee1,Taddfee2,Tlatefee from monthlyneedpay where to_char(payday,'YYYY-MM-DD')=to_char(Tpayday,'YYYY-MM-DD')and

clientno=Tclientno;

select balance into Tbalance from client where clientno=Tclientno;

Tbalance:=Tbalance+Tneedpay+Taddfee1+Taddfee2+Tlatefee;

Trbalance:=Tneedpay+Taddfee1+Taddfee2+Tlatefee;

update client set balance=Tbalance where clientno=Tclientno;

insertinto paylog

(id,clientno,paymoney,payday,paytype)values(seq_pay.nextval,Tclientno,-Trbalance,sysdate,'1' );

update monthlyneedpay set paystatus=0where

to_char(payday,'YYYY-MM-DD')=to_char(Tpayday,'YYYY-MM-DD')and clientno=Tclientno;

result:='冲正成功';

balance:=Trbalance;

end checkpay;

第四部分【对总账】

交易描述

每天凌晨银行会发送所有前一天的总交易金额,总交易笔数,及所有交易金额等明细信息,供企业方核对。银行传来的信息包括:银行代码,总笔数,总金额,对帐日期。

根据银行代码,对帐日期在相关表中查找所有满足当前银行,日期的缴费记录笔数和金额,同银行传来数据做比较,如果总笔数,总金额都相同,可以认为此次对总账成功,否则调用对明细账模块。其中冲正交易和被冲正交易的笔数和金额不计入在内。不需要返回给银行对总账是否成功的信息。

createorreplaceprocedure CheckTotalProcedure(bank_id innumber,resultoutvarchar2)is

ourtotalcount number(4);

ourtotalmoney number(7,2);

banktotalcount number(4);

banktotalmoney number(7,2);

begin

selectcount(*),sum(b.transfermoney)

into ourtotalcount, ourtotalmoney

from banktransferrecord b

where b.bankid = bank_id

and TO_CHAR(b.transferdate,'YYYY-MM')= TO_CHAR(sysdate-1,'YYYY-MM');

selectcount(*),sum(b.transfermoney)

into banktotalcount, banktotalmoney

from banktransferfile b

where b.bankid = bank_id

and TO_CHAR(b.transferdate,'YYYY-MM')= TO_CHAR(sysdate-1,'YYYY-MM');

if ourtotalcount = banktotalcount and ourtotalmoney = banktotalmoney then

insertinto checktotal values(seq_checktotal.nextval, bank_id, banktotalcount, banktotalmoney, ourtotalcount, ourtotalmoney,sysdate,'1');

result:='true';

else

insertinto checktotal values(seq_checktotal.nextval, bank_id, banktotalcount, banktotalmoney, ourtotalcount, ourtotalmoney,sysdate,'0');

result:='false';

endif;

commit;

end CheckTotalProcedure;

第五部分【对明细账】

交易描述

总账不平需要逐笔核对明细账。判断账务不平的原因,并记录到对账异常表中,由其他应用程序来处理。

根据银行传来的银行代码,银行交易流水号,交易日期时间,客户号,交费金额等信息,在业务系统表中查找相应的记录,对账不平的可能性有企业方无此流水号的缴费信息,银行无此流水号的缴费信息,金额不等,把所有对账不平的信息及原因记录到对账异常表。

createorreplaceprocedure checkdetailmoney(bank_id innumber,resultoutvarchar2)is

ourtotalcount number(4);

ourtotalmoney number(7,2);

banktotalcount number(4);

banktotalmoney number(7,2);

cursor recordcursor is

select*from banktransferrecord

where to_char(transferdate,'yyyy-mm-dd')=to_char(sysdate-1,'yyyy-mm-dd')

and bankid=bank_id;

Cursor filecursor is

Select*from banktransferfile

where to_char(transferdate,'yyyy-mm-dd')=to_char(sysdate-1,'yyyy-mm-dd')

and bankid=bank_id;

rc recordcursor%rowtype;

fc filecursor%rowtype;

num number(4);

filemoney number(7,2);

begin

selectcount(*),sum(b.transfermoney)

into ourtotalcount, ourtotalmoney

from banktransferrecord b

where b.bankid = bank_id

and TO_CHAR(b.transferdate,'YYYY-MM-DD')= TO_CHAR(sysdate-1,'YYYY-MM-DD');

selectcount(*),sum(b.transfermoney)

into banktotalcount, banktotalmoney

from banktransferfile b

where b.bankid = bank_id

and TO_CHAR(b.transferdate,'YYYY-MM-dd')= TO_CHAR(sysdate-1,'YYYY-MM-dd');

if ourtotalcount = banktotalcount and ourtotalmoney = banktotalmoney then

insertinto checktotal values(seq_checktotal.nextval, bank_id, banktotalcount, banktotalmoney, ourtotalcount, ourtotalmoney,sysdate,'1');

result:='true';

else

insertinto checktotal values(seq_checktotal.nextval, bank_id, banktotalcount, banktotalmoney, ourtotalcount, ourtotalmoney,sysdate,'0');

result:='false';

open recordcursor;

fetch recordcursor into rc;

while recordcursor%foundloop

selectcount(*)into num from banktransferfile b where rc.banktransferid=b.banktransferid;

if num=0

then

dbms_output.put_line(rc.clientno);

dbms_output.put_line(rc.banktransferid);

dbms_output.put_line(rc.transfermoney);

insertinto checkerrordetail values(seq_errordetail.nextval,bank_id,rc.banktransferid,

rc.clientNo,'',rc.transfermoney,'银行无此流水号',sysdate);

else

select transfermoney into filemoney from banktransferfile b where

rc.banktransferid=b.banktransferid;

if filemoney != rc.transfermoney

then

insertinto checkerrordetail values(seq_errordetail.nextval,bank_id,rc.banktransferid,

rc.clientNo,filemoney,rc.transfermoney,'对账金额有误',sysdate);

endif;

endif;

fetch recordcursor into rc;

endloop;

close recordcursor;

open filecursor;

fetch filecursor into fc;

while filecursor%foundloop

selectcount(*)into num from banktransferrecord b where fc.banktransferid=b.banktransferid;

if num=0

then

insertinto checkerrordetail values(seq_errordetail.nextval,bank_id,fc.banktransferid,

fc.clientNo,fc.transfermoney,'','企业无此流水号',sysdate);

endif;

fetch filecursor into fc;

endloop;

close filecursor;

endif;

commit;

end checkdetailmoney;

5.实验总结

本次实验的重点在于表结构的设计,一个良好的表结构是使得代码的难以性区分明显,在本次试验中遇到的错误有时间函数的使用,在插入数据时需要使用to_char()函数来将时间格式转化为char类型,还有一些sql语句犯的错误,格式不匹配,值重复等等。通过本次实验将课堂上数据库的一些原理应用到了实验上,掌握到的有oracle数据库存储过程的一些语法和原理,比如可以通过循环加游标的方法来逐行的读取数据,这样简化了操作的难度,还有序列的创建,防止在插入数据时主码数据重复。

6.参考文献

[1] 萨师煊,王珊.数据库系统概论(第三版)[M].北京: 高等教育出版社,2002,122-150.

[2] 侯捷.Java编程思想[M].北京:机械工业出版社,2002,22-35.

《数据库应用程序设计实践》实践成绩评定表

数据库实验报告

合肥工业大学实验报告一 课程名称:数据库系统原理及应用学号: 20095382 姓名:魏泽民 专业班级:电子商务09-1班 指导教师:马华伟 二零一一年十月

一、实验目的: (1)熟练掌握数据更新语句,灵活地操作插入数据、修改数据和删除数据; (2)熟练掌握关系数据库中的完整性概念的应用; (3)了解数据录入的方法和过程。 (4)掌握单表查询的基本方法; (5)掌握连接查询的基本方法; (6)熟练掌握以下练习,并进行以下各类查询: ①选择表中的若干列、查询全部列、查询经过计算的值; ②选择表中的若干元组,即消除取值重复的行与查询满足指定条件的元组(包 括:比较大小、确定范围、确定集合、字符匹配、涉及空值和多种条件查询); ③对查询结果排序; ④使用集函数; ⑤对查询结果分组 (7)熟练掌握以下练习,并进行下列各类连接查询: ①等值与非等值连接查询; ②自身连接; ③外连接; ④复合条件连接; (8)掌握嵌套查询的基本方法; (9)掌握集合查询的基本方法; (10)熟练掌握查询视图操作 (11)熟练掌握更新视图操作 (12)熟练关系的完整性概念,领会视图的用途 (13)练习以下各类查询: ①带有IN谓词的子查询; ②带有比较运算符的子查询; ③带有ANY或ALL谓词的子查询; ④带有EXISTS谓词的子查询; ⑤视图查询与更新操作; 二、实验要求: (1)为了便于程序正确性测试,需要对自己建立起来的数据表录入一些模拟数据(模拟数据是指符合数据格式要求的假数据),然后按照教材中结构化查询语言SQL章节例题和习题自己组织SQL语句:

(2)设计的SQL程序应该涵盖数据更新操作的全部内容不,包括插入、修改、删除; (3)综合运用SQL语句实现数据插入、修改、删除等操作的综合运用能力。 (4)按照SQL语言编程要求,实现各类查询和检索操作; (5)利用后台的SQL平台环境,编程验证数据库的控制保护功能。 (6)将查询视图命令等价改写为对数据表的查询操作命令,利用SQL编程设计完成并进行效率分析。 三、实验内容: (1)根据以下给定的数据表信息分别对student, course, score, teacher, teching 表进行数据插入和修改,以完成给定的数据录入,同时要求输入班级同学名录模拟客观真实情况,给student、score表添加30条以上记录,以便以后查询应用方便。 Student表:

分布式计算环境实验报告

分布式计算环境实验报告 实验名称:在虚拟机下安装Linux系统和 Hadoop 专业班级:网络1101 学生学号:3110610007 学生姓名:平淑容

目录 实验目的..............................................................................P 实验仪器...............................................................................P 实验内容和步骤...................................................................P 安装过程的问题以及解决方法............................................P 代码运行以及实验结果.......................................................P 运行过程中的问题................................................................P 实验总结................................................................................P

一、实验目的 在虚拟机上安装CentOS系统并在Linux系统上安装Hadoop单机模式并且执行一个Java程序。 二、实验仪器 硬件:虚拟机CentOS 软件:Windows 7操作系统 三、实验内容及步骤 实验内容 一、安装虚拟机 二、安装Linux操作系统 三、设置静态ip 四、修改主机名 四、绑定ip和主机 五、关闭防护墙 六、关闭防火墙的自动运行 七、设置ssh 八、安装JDK 九、安装Hadoop 十、在单机上运行Hadoop 十一、Hadoop执行Java程序 实验步骤: 一、安装虚拟机 此处安装的虚拟机是VMware Workstation版本,直接从压缩包里面解压安装即可,此处不做过多介绍。 二、安装Linux系统 此处安装的Linux系统使用的是CentOS版本,直接从压缩包里面解压,然后使用VMware Workstation打开,打开之后选择开机输入用户名和密码进入linux系统。 三、Hadoop的伪分布安装步骤 1.设置静态IP ①在centOS桌面的右上角选择图标,右击修改ip值,选择静 态ip,输入需要增加的ip值、默认网关。

[东北大学]18年6月考试《数据库技术及应用Ⅱ》考核作业

东北大学继续教育学院 数据库技术及应用II 试卷(作业考核线上) B 卷学习中心:院校学号:姓名 (共 7 页) 一、单选题(每小题2分,共10小题,20分) [ ] 1.网状数据库中记录与记录之间的联系是通过 A.指针 B.索引 C.公共属性 D.数据项 [ ] 2.在数据库的三级模式结构中,模式有 A.0个 B.1个 C.2个 D.任意多个 [ ] 3.关系数据库中,实现主码标识元组的作用是通过 A.实体完整性规则 B.参照完整性规则 C.用户自定义的完整性 D.属性的值域 [ ] 4.设计ER图,属于数据库设计中的 A.需求分析 B.逻辑设计 C.概念设计 D.物理设计· [ ] 5. 为了使索引键的值在基本表中唯一,在建立索引的语句中应使用保留字 A. UNIQUE B. COUNT C. DISTINCT D. UNION [ ] 6.在数据库的三级模式结构中,外模式可能有 A.1个 B.2个 C.0个 D.任意多个 [ ] 7. 在某个数据库中建立了表person(no,name,sex,birthday),其中No为表的主码,表中已有的记录如下图所示:

以下四个语句中能够正确执行的插入操作是 A. INSERT INTO person VALUES(6,′王中′,′男′,′1964/03/08′) B. INSERT INTO person (name,sex) VALUES(′王中′,′男′) C. INSERT INTO person VALUES(2,′男′,′王中′,′1964/03/08′) D. INSERT INTO person(no,sex) VALUES(2,′男′) [ ] 8.下面的说法不确切的是 A. 索引用来加速数据的访问速度和保证表的实体完整性的。 B. 索引有聚簇和非聚簇索引两种。 C. 聚簇索引使表的物理顺序与索引顺序一致,一个表只能有一个群聚索引。 D. 非聚簇索引与表的物理顺序无关,一个表应该建立多个非聚簇索引。 [ ] 9. 在并发操作中,加锁不能解决的问题是 A. 数据更新丢失 B. 事务故障 C. 读未提交数据 D. 不一致性检索 [ ] 10. 用来记录对数据库中数据进行的每一次更新操作的是 A. 数据字典 B. 后援副本 C. 日志文件 D. 数据库 二、填空题(每小题1分,共10小题,10分) 11.数据模型通常由数据结构、数据操作和()三部分组成。 12.数据操作描述了系统的()特性。 13. 对数据库的操作主要有数据检索和()两大类。 14.将关系模式R分解为3NF,一定可以满足既具有无损连接性,又保持()。15.行列子集视图是指,从单个()导出,只是去掉了其中的某些行和某些列。16.嵌入式SQL引入了()机制,用来协调两种不同的处理方式. 17.系统函数为三类:标量函数、聚合函数和()函数。 18.在SQL Server的建立索引的原则之一,在经常()的字段上最好建立索引。19.一级封锁协议是指任一事务在修改某数据之前,必须先对其加上()锁,直至事务结束才能释放之。 20.触发器能够对数据库中的相关表实现()更改。 三、简答题(每小题5分,共6小题,30分) 21.数据库的三级模式描述。

数据库实验报告

. . 《数据库原理与技术》实验报告 实验一、数据定义及更新语句练习 一、实验容 建立如下mySPJ数据库,包括S,P,J,和SPJ四个基本表(《数据库系统概论》第二章习题5中的四个表),要现关系的三类完整性。 S(SNO,SNAME,STATUS,CITY); P(PNO,PNAME,COLOR,WEIGHT); J(JNO,JNAME,CITY); SPJ(SNO,PNO,JNO,QTY); 二、完成情况

附上按照实验容编写的程序代码。(小四号字,宋体) 三、实验结果 1、插入一条记录 2、①将p表中的所有红色零件的重量增加5。 ②将spj表中所有供应商的QTY属性值减少10。用子查询。

3.利用Delete语句删除p表中的所有红色零件的记录。 附上各个步骤所用的实验用例与结果显示(小四号字,宋体) 四、问题与解决 (小四号字,宋体) 1 .实验中遇到的问题及解决过程 2 .实验中产生的错误及原因分析 首先写出执行语句不成功的时候系统报告的错误信息。然后分析错误原因,并给出解决办法。

实验二简单查询和连接查询 一、实验容 (一)完成下面的简单查询: ①查询所有“”的供应商明细; ②查询所有“红色”的14公斤以上的零件。 ③查询工程名称中含有“厂”字的工程明细。 (二)完成下面的连接查询: ①等值连接:求s表和j表的相同城市的等值连接。 ②自然连接:查询所有的供应明细,要求显示供应商、零件和工程的名称,并按照供应、工程、零件排序。 ③笛卡尔积:求s和p表的笛卡尔积。 ④左连接:求j表和spj表的左连接。 ⑤右连接:求spj表和j表的右连接。 二、完成情况 (一)完成下面的简单查询: ①查询所有“”的供应商明细; ②查询所有“红色”的14公斤以上的零件。

40875][东北大学]20年7月考试《数据结构Ⅱ》考核作业(答案)

东北大学继续教育学院 数据结构II 试卷(作业考核线上1) A 卷 学习中心:奥鹏远程教育沈阳学习中心(直属)[32]院校学号:C09024011930344 姓名何家强 (共 6 页) [ A]1.抽象数据类型的三个组成部分分别为 A.数据对象、数据关系和基本操作 B.数据元素、逻辑结构和存储结构 C.数据项、数据元素和数据类型 D.数据元素、数据结构和数据类型 [ B]2.要求相同逻辑结构的数据元素具有相同的特性,其含义为 A. 数据元素具有同一的特点 B. 不仅数据元素包含的数据项的个数相同,而且其对应数据项的类型要一致 C. 每个数据元素都一样 D. 仅需要数据元素包含的数据项的个数相同 [ D]3.下列各式中,按增长率由小至大的顺序正确排列的是 A.n,n!,2n ,n3/2 B.n3/2,2n,n logn,2100 C.2n,log n,n logn,n3/2 D.2100,logn, 2n, n n [B ]4. 在下列哪种情况下,线性表应当采用链表表示为宜 A.经常需要随机地存取元素 B.经常需要进行插入和删除操作 C.表中元素需要占据一片连续的存储空间 D.表中元素的个数不变 [ C]5.设指针p指向双链表的某一结点,则双链表结构的对称性是 A. p->prior->next=p->next->next; B. p->prior->prior=p->next->prior; C. p->prior->next=p-> next->prior; D. p->next->next= p->prior->prior;

[D ]6. 已知指针p和q分别指向某带头结点的单链表中第一个结点和最后一个结点。假设指 针s指向另一个单链表中某个结点,则在s所指结点之后插入上述链表应执行的语句为 A. s->next=q;p->next=s->next; B. s->next=p;q->next=s->next; C. p->next=s->next;s->next=q; D. q->next=s->next;s->next=p; [A ]7. 栈和队列的共同特点是 A.只允许在端点处插入和删除元素 B.都是先进后出 C.都是先进先出 D.没有共同点 [D ]8. 对于链队列,在进行插入运算时. A. 仅修改头指针 B. 头、尾指针都要修改 C. 仅修改尾指针 D.头、尾指针可能都要修改 [B ]9.设有一个顺序栈的入栈序列是1、2、3,则3个元素都出栈的不同排列个数为 A.4 B.5 C. 6 D. 7 [D ]10.设一个栈的输入序列为A,B,C,D,则借助一个栈所得到的输出序列不可能是 A.A,B,C,D B.D,C,B,A C. A,C,D,B D. D,A,B,C [ C]11.表达式a*(b+c)-d的后缀表达式是 A.abcd*+- B.abc*+d- C.abc+*d- D.-+*abcd [B ]12.某二叉树的先序序列和后序序列正好相反,则该二叉树的特点一定是 A. 空或只有一个结点 B.高度等于其结点数 C. 任一结点无左孩子 D.任一结点无右孩子 [ B]13.下面的说法中正确的是 (1)任何一棵二叉树的叶子结点在种遍历中的相对次序不变。 (2)按二叉树定义,具有三个结点的二叉树共有6种。 A.(1),(2) B.(1) C.(2) D.(1),(2)都错 [ B]14.树有先序遍历和后序遍历,树可以转化为对应的二叉树。下面的 说法正确的是 A.树的后序遍历与其对应的二叉树的先序遍历相同 B.树的后序遍历与其对应的二叉树的中序遍历相同 C.树的先序序遍历与其对应的二叉树的中序遍历相同 D.以上都不对 [D ]15.下列说法正确的是 (1)二又树按某种方式线索化后,任一结点均有前趋和后继的线索 (2)二叉树的先序遍历序列中,任意一个结点均处于其子孙结点前 (3)二叉排序树中任一结点的值大于其左孩子的值,小于右孩子的值 A.(1)(2)(3) B.(1)(2) C.(1)(3) D.都不对 [D ]16. 二叉树的第k层的结点数最多为 A.2k-1 B.2K+1

数据库实验报告完整

华北电力大学 实验报告 | | 实验名称数据库实验 课程名称数据库 | | 专业班级:学生姓名: 学号:成绩: 指导教师:实验日期:2015/7/9

《数据库原理课程设计》课程设计 任务书 一、目的与要求 1.本实验是为计算机各专业的学生在学习数据库原理后,为培养更好的解决问题和实际动手能力 而设置的实践环节。通过这个环节,使学生具备应用数据库原理对数据库系统进行设计的能力。 为后继课程和毕业设计打下良好基础。 2.通过该实验,培养学生在建立数据库系统过程中使用关系数据理论的能力。 3.通过对一个数据库系统的设计,培养学生对数据库需求分析、数据库方案设计、系统编码、界 面设计和软件调试等各方面的能力。是一门考查学生数据库原理、面向对象设计方法、软件工程和信息系统分析与设计等课程的综合实验。 二、主要内容 针对一个具有实际应用场景的中小型系统(见题目附录)进行数据库设计,重点分析系统涉及的实体、实体之间的联系,实现增加、删除、更新、查询数据记录等基本操作。大致分为如下步骤: 1. 理解系统的数据库需求,分析实体及实体间联系,画出E-R图: 1)分析确定实体的属性和码,完成对该实体的实体完整性、用户自定义完整性的定义。 2)设计实体之间的联系,包括联系类型和联系的属性。最后画出完整的E-R图。 2.根据设计好的E-R图及关系数据库理论知识设计数据库模式: 1)把E-R图转换为逻辑模式; 2)规范化设计。使用关系范式理论证明所设计的关系至少属于3NF并写出证明过程;如果不属于3NF则进行模式分解,直到该关系满足3NF为止,要求写出分解过程。 3)设计关系模式间的参照完整性,要求实现级联删除和级联更新。 4)用SQL语言完成数据库内模式的设计。 3.数据库权限的设计: 1)根据系统分析,完成授权操作; 2)了解学习收回权限的操作。 4.完成用户界面的设计,对重要数据进行加密。

数据库应用开发实验报告

学生实验报告 (理工类) 课程名称:数据库应用开发专业班级: 学生学号:学生姓名: 所属院部:国际软件学院指导教师: 2013 ——2014 学年第 2 学期 金陵科技学院教务处制

实验报告书写要求 实验报告原则上要求学生手写,要求书写工整。若因课程特点需打印的,要遵照以下字体、字号、间距等的具体要求。纸张一律采用A4的纸张。 实验报告书写说明 实验报告中一至四项内容为必填项,包括实验目的和要求;实验仪器和设备;实验内容与过程;实验结果与分析。各院部可根据学科特点和实验具体要求增加项目。 填写注意事项 (1)细致观察,及时、准确、如实记录。 (2)准确说明,层次清晰。 (3)尽量采用专用术语来说明事物。 (4)外文、符号、公式要准确,应使用统一规定的名词和符号。 (5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。 实验报告批改说明 实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用百分制,具体评分标准由各院部自行制定。 实验报告装订要求 实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。 实验项目名称: SQL Server概述及体系架构实验学时: 3 实验地点: B407 实验日期: 2014.4.3 实验成绩: 批改教师:罗扬批改时间: 一、实验目的和要求 1、熟悉Microsoft SQL Server 2005系统环境,包括发展历史、版本与组件及新特性; 2、了解客户/服务器、浏览器/服务器体系结构; 3、掌握系统数据库对象及构成、SQL Server 2005的常用管理工具; 4、熟悉SQL Server 2005 Management Studio平台及组件。

东北大学软件学院数据库系统概论期末复习题

这是数据库期末复习题1 1.用SQL的有关语句定义 1)学生关系Student,包括学号Sno、姓名SN、年龄SA; 2)课程关系Course,包括课程号Cno、课程名CN、任课教师CT; 3)学生选课关系,包括Sno、Cno和成绩G。 注意:说明主键码和外键码(如果有的话),并在键码属性上建立索引。(12分) 1.参考答案 1) CREATE TABLE Student( Sno INT PRIMARY KEY, SN CHAR(30), SA INT ); 2) CREATE TABEL Course( Cno INT PRIMARY KEY, CN CHAR(30), CT CHAR(30) ); 3) CREATE TABEL SC( Sno INT, Cno INT, G INT, PRIMAYR KEY(Sno,Cno), FOREIGN KEY(Sno) REFERENCES Student(Sno), FOREIGN KEY(Cno) REFERENCES Course(Cno) ); 1.按题1的学生关系模式,用SQL的有关语句 1)授予赵华对学生关系Student的插入和修改权限; 2)插入任意3个学生的完整信息; 3)修改所有学生的年龄(加1)。(12分) 2.参考答案 1) GRANT INSERT, UPDATE, ON Student TO 赵华; 2) INSERT INTO Student (TABLE (01001,’赵华’,19),

(01002,’李芳’,18), (01003,’刘红’,20), ); 3)UPDATE Student SET SA=SA+1; 2.结合题1定义的学生选课数据库,用SQL语句查询计算机系学生数据库课的成绩,输出学生姓名和成绩,按成绩排序(降序),若成绩相同,再按 学号排序(升序)。(6分) 3.参考答案 SELECT SN,G FROM Student,Course,SC WHERE = AND = AND =’数据库’ ORDER BY G DESC,Sno; 4.已知关系R、S如下所示,求域演算表达式的结果。 R A B C S D E F a c 5 4 d 8 b d 3 5 a 1 m e 4 3 e 2 (4分) 4参考答案 4. R1 X Y Z a c 5 b d 3 m e 4 4 d 8 5.按嵌入式SQL的格式插入任意一个学生的学号、姓名、系别和年龄。(6分)5.参考答案 1)说明: EXEC SQL BEGIN DECLARE SECTION; int sno; char sname[30]; int sage; char SQLSTATE[6]; EXEC SQL END DECLARE SECTION; 赋值: sno:=01001; sname:=’赵华’; sage:=19; 4)插入: EXEC SQL INSERT INTO Student

数据结构实验-互联网域名查询实验报告

实验报告 实验课程:数据结构 实验项目:实验三互联网域名查询 专业:计算机科学与技术 班级: 姓名: 学号: 指导教师:

目录一、问题定义及需求分析 (1)问题描述 (2)实验任务 (3)需求分析 二、概要设计: (1)抽象数据类型定义 (2)主程序流程 (3) 模块关系 三、详细设计 (1)数据类型及存储结构 (2)模块设计 四、调试分析 (1)调试分析 (2)算法时空分析 (3)经验体会 五、使用说明 (1)程序使用说明 六、测试结果 (1)运行测试结果截图 七、附录 (1)源代码

一、问题定义及需求分析 (1)实验目的 互联网域名查询 互联网域名系统是一个典型的树形层次结构。从根节点往下的第一层是顶层域,如cn、com等,最底层(第四层)是叶子结点,如www等。因此,域名搜索可以看成是树的遍历问题。 (2)实验任务 设计搜索互联网域名的程序。 (3)需求分析: 1)采用树的孩子兄弟链表等存储结构。 2)创建树形结构。 3)通过深度优先遍历搜索。 4)通过层次优先遍历搜索。 二、概要设计: 采用孩子兄弟链表存储结构完成二叉树的创建; 主程序流程: 创建根节点域名输入域名拆分根据孩子兄弟链表表示的树进行插入调用层次优先遍历输出遍历结果调用深度优先遍历输出遍历结果结束程序 模块关系: 输入域名 创建孩子兄弟树 层次优先遍历输出结果 深度优先遍历输出结果 结束 三、详细设计 孩子兄弟链表结构: typedef struct CSNode{ ElemType data[10]; struct CSNode *firstchild, *nextsibling; }*CSTree;

分布式系统导论实验报告

分布式系统导论 实验报告 实验(3)名称面向连接的流模式Socket 实验(4)名称三层C/S结构 实验人学号 1007XXX姓名 XXX 实验日期 2013年5月20日 报告完成日期 2013年5月21日 成绩指导教师签字 年月日

目录: 一、实验3面向连接的流模式Socket (2) 二、实验4三层C/S结构 (4) 2.1 任务一:通过无连接数据报socket实现C/S应用 (4) 2.2任务二:通过面向连接的流模式socket实现C/S应用 (6) 三、实验心得 (8)

一、实验3面向连接的流模式Socket 1、实验目标:尝试通过面向流模式的socket实现通信。 2、实验原理: 2.1、socket通常也称作"套接字",用于描述IP地址和端口,是一个 通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。Socket和ServerSocket类库位于https://www.wendangku.net/doc/4c8325060.html,包中。 ServerSocket用于服务器端,Socket是建立网络连接时使用的。 在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。 2.2、面向连接的操作使用TCP协议.一个这个模式下的socket必须 在发送数据之前与目的地的socket取得一个连接.一旦连接建立了,sockets就可以使用一个流接口:打开-读-写-关闭.所有的发送的信息都会在另一端以同样的顺序被接收.面向连接的操作比无连接的操作效率更低,但是数据的安全性更高. 3、实验内容: 创建一个服务端的程序,以接受一个连接并用流模式socket接受一个消息。创建一个名为客户端程序。此程序可以请求一个连接,并使用流模式socket。 实验所用到的基本函数解释: 1)serverSocket(int port)指定的IP和端口创建一ServerSocket 对象 2)socket accept()服务端和客户端握手

东北大学数据库应用程序设计实践报告

课程编号:B080109004 数据库应用程序设计实践 报告 东北大学软件学院

1.问题定义 银行代收费系统给电力公司开发的一套缴费系统,方便用户通过网银支付电费。 主要的用例图: 图1 银行代收费系统用例图 根据用例图得出主要的业务需求: (1)抄表 系统管理员把抄表记录录入系统,抄表记录包括当前电表数、抄表日期、抄表人等信息,根据抄表记录,系统自动计算每个计费设备当月的应收电费。每个计费设备有唯一编号。 (2)查询 用户随时查询欠费金额。一个用户名下可能多个计费设备,查询欠费时,将所有计费设备欠费总和输出。需要考虑设备的余额问题。如果余额大于欠费,则欠费为0,更新余额,修改receivable中flag标志。 (3)缴费 在当月电费清单生成完毕后,用户可进行电费缴纳,缴纳金额可是任意金额。系统将缴费金额存入设备余额中,再次查询则欠费应该减少。 (4)冲正 用户在缴费过程中如果给其他用户缴费了,在当日0点前可以冲正,即把钱收回,放入余额,向payfee表中添加一个负数金额、相同银行流水号的记录。并且修改设备余额,此时查询欠费应该有改变。 (5)对帐 每个银行每日凌晨给电力公司的代缴费系统发送对账信息,代缴费系统记录对账结果,对账明细,对账异常信息进行存储。错误信息为100银行没有此记录。101企业没有此流水号.102银行企业金额不等。 2.数据库设计

(1)ER图设计: 自己设计的ER图: 经过老师修正统一的ER图: (2)建表语句 -- Create table create table Bank ( id number(4), name varchar2(20), code char(2) )

东北大学数据结构上机实验报告3

实验三树和图应用 一、实验目的 光纤管道铺设施工问题 问题描述 设计校园内有N个教学楼及办公楼,要铺设校园光纤网,如何设计施工方案使得工程总的造价为最省。 二、实验要求 设计校园光纤网铺设的最小生成树模拟程序。 1)采用邻接表或邻接矩阵存储结构。 2)分别采用普利姆算法和克鲁斯卡尔算法实现。 输入形式 对应的教学楼、办公楼数目n,各边权值即每栋楼之间的距离 输出形式 最小生成树,即总路程最小的路 程序功能 设计校园光纤网铺设的最小生成树模拟程序 三、设计概要 流程图 抽象数据类型的定义 class prims { private:

int n; //节点的个数 int graph_edge[99][4]; //图的边 int g; //图中边的个数 int tree_edge[99][4]; //树的边 int t; //树的边的个数 int s; //源节点 int T1[50],t1; // 第一部分 int T2[50],t2; //第二部分 public: void input(); int findset(int); void algorithm(); void output(); }; 各程序模块之间的调用关系 四、详细设计 定义prims类 private中进行对图的创建 public: void input(); int findset(int); void algorithm();

void output(); 开始界面 实现prims类中图的初始化 分别输入图中的顶点个数、图的边及其权值 算法构造 t=0;//初始化边的个数为0 t1=1; T1[1]=1; //资源节点 t2=n-1; int i; for(i=1;i<=n-1;i++) T2[i]=i+1; cout<<"\n\n*****运算开始*****\n\n\n"; while(g!=0 && t!=n-1) { int min=99; int p; int u,v,w; for(i=1;i<=g;i++) { if(findset(graph_edge[i][1])!=findset(graph_edge[i][2])) //如果u和v在不同的部分{ if(min>graph_edge[i][3]) { min=graph_edge[i][3]; u=graph_edge[i][1]; v=graph_edge[i][2]; w=graph_edge[i][3]; p=i; } } } for(int l=p;l

东北大学数据库期末试卷样例

东北大学数据库期末试 卷样例 -CAL-FENGHAI.-(YICAI)-Company One1

2)R2 =σB > 2(R) 3)R3 = R S 4)R4 = Aɡsum(B)

4) Create a view BusyFaculty that records the ids and names of faculties who teach more than 3 classes. 5) Find the names of all students that enroll in a class where students meet in room R128 (i.e., Class.room = R128) or a class in which five or more than five students enroll. 6) Find the names of all students who are enrolled in two classes that meet at the same time

E→F}holds on R. 1) Give all candidate keys of this relation, motivate. (3 points) 2) Indicate all extraneous attributes in F, motivate. (3 points) 3) Is this relation in 3NF?If it is not, decompose it into relations in 3NF. (6 points)

数据结构实验二-

实 验 报 告 一、实验目的 1) 加深对图的表示法和图的基本操作的理解,并可初步使用及操作; 2) 掌握用图对实际问题进行抽象的方法,可以解决基本的问题; 3) 掌握利用邻接表求解非负权值、单源最短路径的方法,即利用Dijkstra 算法求最短 路径,同时掌握邻接表的建立以及使用方法,能够解决相关的问题; 4) 学会使用STL 中的map 抽象实际问题,掌握map ,List,,priority_queue 等的应 用。 二、实验内容与实验步骤 (1) 实验内容: 使用图这种抽象的数据结构存储模拟的欧洲铁路路线图,通过Dijkstra 算法求出欧洲旅行最少花费的路线。该实验应用Dijkstra 算法求得任意两个城市之间的最少路费,并给出路费最少的路径的长度和所经过的城市名。 (2) 抽象数据类型及设计函数描述 1) 抽象数据类型 class City : 维护一个城市的信息,包括城市名name ,是否被访问过的标记visted ,从某个城市到达该城市所需的总费用total_fee 和总路径长度total_distance ,求得最短路径后路径中到达该城市的城市名from_city 。 class RailSystem : 用邻接表模拟欧洲铁路系统,该邻接表使用数据结构map 实现,map 的key-value 课程名称:数据结构 班级: 实验成绩: 实验名称:欧洲旅行 学号: 批阅教师签字: 实验编号:实验二 姓名: 实验日期:2013 年6 月 18 日 指导教师: 组号: 实验时间:

值对的数据类型分别为string和list<*Service>,对应出发城市名和该城市与它能 够到达的城市之间的Service链表。 class Service: 为铁路系统模拟了两个城市之间的直接路线,包括两个城市之间直接到达的费用 fee,两城市之间的直接距离distance。 部分设计函数描述 ●RailSystem(const string& filename) 构造函数,调用load_services(string const &filename)函数读取数据 ●load_services(string const &filename) 读取传入的文件中的数据并建立上述两个map以模拟欧洲铁路路线图 ●reset(void) 遍历cities图,初始化所有城市的信息:visted未访问,total_distance最大 值,total_fee费用最大值,from_city为空 ●~RailSystem(void) 析构函数,用delete将两个map中所有使用new操作符开辟的空间删除 ●void output_cheapest_route(const string& from, const string& to, ostream& out); 输出两城市间的最少费用的路径,调用calc_route(string from, string to)函 数计算最少费用 ●calc_route(string from, string to) 使用Dijkstra算法计算from和to两个城市间的最少费用的路径 (3)采用的存储结构 1)map > outgoing_services 用来保存由一个城市出发可以直接到达的城市名及这两个城市之间的路径信息。 2)list 以service为指针的list表,保存两城市间的路径。 3)map cities 用来保存所有城市信息,通过城市名查找该城市有关信息。 4)priority_queue, Cheapest> candidates 存储候选的遍历城市,City*是优先队列存储的对象类型,vector是该对象的向量集合,Cheapest是比较规则。 三、实验环境 操作系统:Windows 8 调试软件:Microsoft visual studio 2012 上机地点:综合楼311 机器台号:笔记本

数据库实验报告4

数据库-实验报告4 学号:11122604 姓名:陆亮 第4周(第四章:数据更新、视图、嵌入式SQL部分自学) 一、实验课: 1.建立计算机学院总评不及格成绩学生的视图,包括学生学号、姓名、性别、手机、所选 课程和成绩。 2.在E表中插入记录,把每个学生没学过的课程都插入到E表中,使得每个学生都选修每 门课。 3.求年龄大于所有女同学年龄的男学生姓名和年龄。 4.在E表中修改08305001课程的平时成绩,若成绩小于等于75分时提高5%,若成绩大于 75分时提高4%。 5.删除没有开课的学院。//删除记录而不是表。删除表要用其他。 6.查询优、良、中、及格、不及格学生人数 二,代码: create view student_fail(xh,xm,xb,sjhm,kh,zpcj)as(select distinct S.xh,S.xm,S.xb,S.sjhm,E.kh,E.zpcj from S,E where S.xh=E.xh and E.zpcj<'60'); insert into E select distinct S.xh,O.xq,O.kh,O.gh ,null,null,null from S,O where not exists(select*from E where E.xh =S.xh and E.kh =O.kh ); select S.xm,S.csrq from S where S.csrq<(select min(csrq)from S group by S.xb having xb ='女') update E set pscj = pscj*1.04 where pscj>75; update E set pscj = pscj*1.05 where pscj<75; delete from D where yxh not in(select yxh from T ,O where T.gh = O.gh)

电商实验报告

《电子商务》实验报告一 开课实验室:电子商务实验室 学院班级学号姓名成绩 课程名称电子商务 实验项目 名称 网络检索工具的使用指导教师 一、实验目的 掌握利用网络检索工具检索商务信息的基本方法 二、实验内容 1、通过搜索引擎实现网络商务信息的采集。 2、通过图书馆专业数据库检索电子商务研究文献 三、实验步骤及要求 1、登录主要搜索引擎网站,如谷歌、百度,使用其高级检索工具检索: B2B、B2C、C2C、B2B2B、B2B2C网站的主要功能、类型、代表网站、发展现状、最新资讯。 2、登录校图书馆的专业期刊数据库,如:清华同方数据库、维普数据库、万方数据库使用检索工具检索下列资料:“我国农业电子商务的模式”“电子商务的盈利模式”。要求每个题目检索资料不少于十篇,并根据检索文献回答:(要求原创、每题不少于400字),在观点之后列出参考文献(至少10篇)。 (1)我国农业电子商务的模式有哪些? (2)目前电子商务又有哪些新的盈利模式? 3、登录并熟悉以下网站:(专科生不用作此题) 工业和信息化部网站 中国互联网信息中心 中国行业研究网 艾瑞市场咨询网 通过以上网站,查找我国电子商务发展相关的最新统计数据。 中国调查网 问道调查网 调查网 通过以上三个网络了解开展网上调查问卷的方法 四、注意事项: 1、利用搜索引擎检索商务信息时,选择恰当的关键词和检索组合,有助于得到较好的检索结果。 2、检索文献前,请先在专业数据库网站上下载阅读器。 3、格式要求: 字体:宋体小四 行间据:单倍 参考文献格式:1、作者“文章名”期刊名 ****年第几期 五、实验报告内容: 『一』答: 一、B2B网站

东北大学数据结构实验报告

. / 实验报告 课程名称:数据结构班级:实验成绩: 实验名称:顺序表和链表的应用学号:批阅教师签字: 实验编号:实验一:实验日期:2017-11-25 指导教师:组号:实验时间:18:30~22:30 一、实验目的 (1)掌握线性表的基本操作(插入、删除、查找)以及线性表合并等运算在顺序存储结构、链式存储结构上的实现。重点掌握链式存储结构实现的各种操作。 (2)掌握线性表的链式存储结构的应用。 二、实验内容与实验步骤 (1)实验内容: 实现约瑟夫环,约瑟夫环(Joseph)问题的一种描述是:编号为1、2、3……n的n个人按照顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数的上限值m,从第一个人开始按照顺时针的方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他的顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。设计一个程序求出出列顺序。 (2)抽象数据类型和设计的函数描述,说明解决设想。 首先定义一个链表,用其中的data项存储每个人的编号,用password项存储每个人所持有的密码,并且声明一个指针。之后使用CreatList_CL函数来创建一个循环链表,在其中的data和password中存入编号和密码,最后使最后一个节点的next指向L,使其能够形成循环队列。定义了函数Display来显示链表当中的内容,以确定存储的数据没有错误。定义了函数Delete_L来实现约瑟夫环中依次删除的功能,依次比较,如果某个人所持的密码和m值相等,则删除这个结点,并且输出此时该结点的编号和密码,实现出列的功能。 (3)简短明确地写出实验所采用的存储结构,并加以说明。 该实验我主要采用的是线性表的链式存储结构,首先定义了链表的结构,其中包括data 项和password项,分别存储每个人的编号和所持密码,还声明了指向下一个结点的指针,该指针可以连接各个结点,并且将最后一个结点的指针指向第一个结点使之成为一个循环链表。 三、实验环境 操作系统:Windows 7 调试软件名称:Visio Studio2017 上机地点:信息楼B405 四、实验过程与分析 (1)主要的函数或操作内部的主要算法,分析这个算法的时、空复杂度,并说明设计的巧妙之处。

数据库原理实验报告四(有答案)

南京晓庄学院 《数据库原理与应用》课程实验报告 实验四查询设计实验 所在院(系):数学与信息技术学院 班级: 学号: 姓名:

1.实验目的 (1)了解查询的目的,掌握SELECT语句的基本语法和查询条件的表示方法。 (2)掌握数据排序和数据联接查询的方法。 (3)掌握SQL Server查询分析器的使用方法。 2.实验要求 (1)针对“TM”数据库,在SQL Server查询分析器中,用T-SQL语句实现以下单表查询 操作,并将将调试成功的T-SQL命令,填入实验报告中。 a)查询所有课程的详细情况。 b)查询来自江苏或山东的学生学号和姓名,并以中文名称显示输出的列名。 c)查询选修了课程的学生学号(一人选了多门课程的话,学号只显示一次)。 d)查询选修课程号为07253001的学号和成绩,并要求对查询结果按成绩降 序排列,如果成绩相同则按学号升序排列。 e)查询所有学生的学号、姓名和年龄。 f)查询选修课程号为07253001的成绩在85-95之间的学生学号和成绩,并 将成绩乘以0.7输出。 g)查询数学与信息技术学院(DEPT_ID为07)或物理与电子工程学院 (DEPT_ID为09)姓张的学生的信息。。 h)查询所有核心课程(课程名中带*的)的情况。 i)查询缺少了成绩的学生的学号和课程号,查询结果按课程号升序排列。 (2)在SQL Server查询分析器中,用T-SQL语句实现下列数据联接查询操作: a)查询每个学生的情况以及他(她)所选修的课程。 b)查询学生的学号、姓名、选修的课程名及成绩。 c)查询选修C语言程序设计且成绩为85分以上的学生学号、姓名及成绩。 d)查询和学生柏文楠是同一个民族的学生(用自身联接实现)。 e)分别用等值联接和内联接查询有授课记录的老师的姓名。 f)用外联接查询所有老师的授课情况,输出老师的工号、姓名、职称、院 系、担任的课程号和授课的学期,结果按院系和职称升序排列。如果该 老师没有授课历史,在课程号和授课的学期中显示空值 (3)在SQL Server Management Studio中新建查询,完成以上查询命令的同时,熟悉SQL编 辑器工具栏中各快捷按钮的作用。 (4)按要求完成实验报告。

相关文档