文档视界 最新最全的文档下载
当前位置:文档视界 › 东北大学数据库应用程序设计实践报告

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

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

课程编号: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)

)

;

-- Create/Recreate primary, unique and foreign key constraints

alter table Bank

add constraint PK_BANK_ID primary key (ID);

alter table BANK

add constraint PK_BANK_CODE unique (CODE);

-- Create table

create table client

(

id number(4),

name varchar2(20),

address varchar2(80),

tel varchar2(20)

)

;

-- Create/Recreate primary, unique and foreign key constraints

alter table client

add constraint PK_CLIENT_ID primary key (ID);

-- Create table

create table device

(

deviceid number(4),

clientid number(4),

type char(2),

balance number(7,2)

)

;

-- Create/Recreate primary, unique and foreign key constraints

alter table device

add constraint PK_DEVICE_DEVICEID primary key (DEVICEID); alter table device

add constraint FK_DEVICE_CLIENTID foreign key (CLIENTID) references client (ID);

-- Create table

create table electricity

(

id number(4),

deviceid number(4),

yearmonth char(6),

snum number(10)

)

;

-- Create/Recreate primary, unique and foreign key constraints

alter table electricity

add constraint PK_ELECTRICITY_ID primary key (ID);

alter table electricity

add constraint FK_ELECTRICITY_DEVICEID foreign key (DEVICEID) references device (DEVICEID);

-- Create table

create table RECEIVABLES

(

id number(4),

yearmonth char(6),

deviceid number(4),

basicfee number(7,2),

flag char(1)

)

;

-- Create/Recreate primary, unique and foreign key constraints

alter table RECEIVABLES

add constraint PK_RECEIVABLES_ID primary key (ID);

alter table RECEIVABLES

add constraint FK_RECEIVABLES_DEVICEID foreign key (DEVICEID) references device (DEVICEID);

-- Create table

create table PAYFEE

(

id number(4),

deviceid number(4),

paymoney number(7,2),

paydate date,

bankcode char(2),

type char(4),

bankserial varchar2(20)

)

;

-- Create/Recreate primary, unique and foreign key constraints

alter table PAYFEE

add constraint PK_PAYFEE_ID primary key (ID);

alter table PAYFEE

add constraint FK_PAYFEE_DEVICEID foreign key (DEVICEID) references device (DEVICEID);

alter table PAYFEE

add constraint FK_PAYFEE_BANKCODE foreign key (BANKCODE) references BANK (CODE);

-- Create table

create table BANKRECORD

(

id number(4),

payfee number(7,2),

bankcode char(2),

bankserial varchar2(20)

)

;

-- Create/Recreate primary, unique and foreign key constraints

alter table BANKRECORD

add constraint PK_BANKRECORD_ID primary key (ID);

alter table BANKRECORD

add constraint FK_BANKRECORD_BANKCODE foreign key (BANKCODE) references BANK (CODE);

-- Create table

create table CHECKRESULT

(

id number(4),

checkdate date,

bankcode char(2),

banktotalcount number(4),

banktotalmoney number(10,2),

ourtotalcount number(4),

ourtotalmoney number(10,2)

)

;

-- Create/Recreate primary, unique and foreign key constraints

alter table cHECKRESULT

add constraint PK_CHECKRESULT_ID primary key (ID);

alter table CHECKRESULT

add constraint FK_CHECKRESULT_BANKCODE foreign key (BANKCODE)

references BANK (CODE);

-- Create table

create table check_exception

(

id number(4),

checkdate date,

bankcode char(2),

bankserial varchar2(20),

bankmoney number(7,2),

ourmoney number(7,2),

exceptiontype char(3)

)

;

-- Create/Recreate primary, unique and foreign key constraints

alter table check_exception

add constraint PK_CHECKEXCEPTION_ID primary key (ID);

alter table CHECK_EXCEPTION

add constraint FK_CHECKEXCEPTION_BANKCODE foreign key (BANKCODE)

references BANK (CODE);

3.数据库端的系统实现

1.十条sql语句

(1)查询出所有欠费用户。(为了使测试方便,修改添加了一些数据,见附录)

select a.clientid,https://www.docsj.com/doc/2617887673.html,,a.deviceid,b.yearmonth

from device a join receivables b on a.deviceid=b.deviceid join client c on a.clientid=c.id where b.flag=0

order by1,3,4

(2)查询出拥有超过2个设备的用户

SELECT clientid,name

FROM(SELECT clientid,COUNT(*) CT FROM device GROUP BY clientid)join client on client.id=clientid

WHERE CT >2

(3)统计电力企业某个月的总应收费用,实收费用

select month,sum(paymoney)

from(

select to_char(paydate,'yyyymm')as Month,paymoney

from payfee p

where to_char(paydate,'yyyymm')='201608'

)

group by month

--实收费用

select yearmonth ,sum(basicfee)as receivableMoney

from receivables

group by yearmonth

having yearmonth='201608'

--应收费用

(4)查询出所有欠费超过半年的用户

with s as(

select b.deviceid ,count(b.deviceid)

from receivables b

where flag=0

group by b.deviceid

having count(b.deviceid)>1--我将题目修改成超过一个月

)

select device.clientid,device.deviceid

from device join s on device.deviceid=s.deviceid

order by1,2

(5)查询任意用户的欠费总额

select clientid,sum(b.basicfee)

from device a join receivables b on a.deviceid=b.deviceid where clientid=1

group by clientid ,flag

having flag=0

(6)查询出某个月用电量最高的3名用户

with s as(

select sum(b.snum)as sum_num, a.clientid

from device a

inner join electricity b on a.deviceid = b.deviceid

where b.yearmonth ='201608'-- 月份条件

group by a.clientid

)

select s0.*

from(

select s.clientid, s.sum_num

from s

order by s.sum_num desc)s0

where rownum<=3

(7)查询出电力企业某个月哪天的缴费人数最多

select day,num

from

(select count(id)as num,to_char(paydate,'yyyymmdd')as day from payfee

where to_char(paydate,'yyyymm')='201608'

group by to_char(paydate,'yyyymmdd')

order by count(bankserial)desc

)

where rownum<2;--查询8月份付款人数最多的一天

(8)按设备类型使用人数从高到低排序查询列出设备类型,使用人数。

select device.type,count(*)as num

from device

group by device.type

order by count(*)desc

(9)统计每个月各银行缴费人次,从高到低排序。

select to_char(paydate,'yyyymm') yearmonth,https://www.docsj.com/doc/2617887673.html,,count(payfee.id)num from bank join payfee on bank.code = payfee.bankcode

group by to_char(paydate,'yyyymm'),https://www.docsj.com/doc/2617887673.html,

order by yearmonth,num desc;

--增加了一条记录,修改了两条记录

(10)查询出电力企业所有新增用户(使用设备不足半年)。

select client.id,device.deviceid

from client join device on client.id = device.clientid

join electricity on device.deviceid = electricity.deviceid

group by client.id,device.deviceid

having count(yearmonth)<6;

--如果某个设备的抄表记录数小于6,则其使用不足半年

附录:

添加修改的数据:

1.在device表下,加入数据如图:

2.在receivables表中,加入四个设备两个月的应收记录如图:

3.在payfee里加入1201设备201609的付款记录

4.向electricity中插入数据,如下图,比较用户。

5.将payfee中的部分记录的bankcode更改,订单日期也进行更改

6.增加记录到bank表中。

2.事物存储过程

(1)查询

代码1:(按设备号进行查询,在代码2中被调用)

create or replace procedure queryfee1(deviceno in number, smoney out number)is

basicfee number(7,2);

yearmonth receivables.yearmonth%type;

dtype device.type%type;

days number;

days2 number;

d_balance number;

rid number;

chargedate date;

cursor temp_cursor is

select r.basicfee,r.yearmonth,d.type,r.id

from device d, receivables r

where d.deviceid = r.deviceid

and r.flag =0

and d.deviceid=deviceno;

begin

smoney:=0;

open temp_cursor;

loop

fetch temp_cursor into basicfee,yearmonth,dtype,rid;

exit when temp_cursor%notfound;

smoney:=smoney+basicfee;

smoney:=smoney+basicfee*0.08;

if dtype ='01'then

smoney:= smoney + basicfee*0.1;

else

smoney:=smoney + basicfee*0.15;

end if;

select round(sysdate- add_months(to_date(yearmonth,'yyyymm'),1))

into days

from dual;

select TO_CHAR(SYSDATE,'DDD')into days2 from dual;

if days >0then

if dtype='01'then--居民违约金跨年与不跨年违约金比例相同

smoney:=smoney+basicfee*0.001*days;

else

if days

smoney:=smoney+basicfee*0.002*days;

else--其他,跨年

smoney:=smoney+basicfee*0.002*(days-days2)+basicfee*0.003*(days2);

end if;

end if;

end if;

end loop;

select balance into d_balance from device where deviceid=deviceno;

if(smoney<=d_balance and smoney!=0)then--如果设备余额大于欠费余额更新、欠费置0 select trunc(sysdate)into chargedate from dual;--截取到日

insert into devicerecord values(deviceno,smoney,rid,chargedate);--把设备扣费记录保存保存

update device set balance=balance-smoney where deviceid=deviceno;

update receivables set flag=2where id=rid;

smoney:=0;

elsif(smoney!=0)then--设备余额不够缴费

smoney:=smoney-d_balance;

end if;

end queryfee1;

代码2:(按用户号获得设备号,将设备号传入代码1的存储过程中) create or replace procedure QueryFee(clientno in client.id%type, smoney out number)is

deviceno number;

d_smoney number;

cursor temp_cursor is

select d.deviceid

from client c, device d

where c.id = d.clientid

and c.id = clientno;

begin

smoney:=0;

open temp_cursor;

loop

fetch temp_cursor into deviceno;

exit when temp_cursor%notfound;

queryfee1(deviceno,d_smoney);

smoney:=smoney+d_smoney;

end loop;

end QueryFee;

测试截图:

设备6的应收费用表:

查询设备6的欠费金额:

主要创新点:

1.我将修改标志位flag和扣费的过程写在了此存储过程中。查询时如果设备余额大于欠费数,则用余额对设备进行缴费,更新flag=2(第二天凌晨所有的flag=2更改为1)是为了标志是今天的扣费修改过程,方便冲正。

2.我新设置了一个表,bankrecord 用来记录扣费记录,方便冲正的时候将设备金额变回来。

3.在计算跨年费用时,我使用了select TO_CHAR(SYSDATE,'DDD')into days2 from dual;

首先判断当前时间是一年中的第几天,再根据老师的代码,设备欠费天数days作比较。

如果days>days2 ,说明存在跨年的欠费,否则不存在。

2.缴费

代码:(添加记录到payfee表中,并更改设备余额)

create or replace procedure payfee1(deviceno in number,paymoney in number,results out varchar) is

paydate date;

begin

if paymoney>0then

select trunc(sysdate)into paydate from dual;--截取到日

insert into payfee

values(paysequence.nextval,deviceno,paymoney,paydate,19,2001,bankserial.nextval);

update device set balance=balance+paymoney where deviceid=deviceno;

results:='成功';

else

results:='缴费失败,缴费金额不能少于0';

end if;

end payfee1;

测试截图

缴费之后的payfee表:(增加了一条付费记录)

再次查询欠费金额:(欠费金额为0)

缴费之后的设备表:(余额由3变成58.8)

设备6应收费用表:(flag=2用来标志是今天刚刚缴费的,方便冲正。)

主要创新点:

按照设备号进行缴费,向payfee中添加记录。

使用序列来控制流水号,和id。

3.冲正

代码

create or replace procedure Reverse(re_bankserial in payfee.bankserial%type,results out varchar) is

deviceno number;

re_money number;--冲正钱数

d_balance number;--设备余额

d_smoney number;--设备扣费前的余额

re_bankcode char(2);

re_date date;

paydate date;

cursor temp_cursor is

select p.deviceid,p.paymoney,p.bankcode,p.paydate

from payfee p

where p.bankserial=re_bankserial and p.bankserial in(

select bankserial

from payfee

group by bankserial

having count(*)=1);--没被冲正过的记录

begin

open temp_cursor;

fetch temp_cursor into deviceno,re_money,re_bankcode,paydate;

select trunc(sysdate)into re_date from dual;--截取到日

if temp_cursor%NOTFOUND--判断有无数据

then results :='失败,没有找到此流水号';

elsif paydate!=re_date then

results:='失败,不是本日记录。';

else

insert into payfee

values(paysequence.nextval,deviceno,0-re_money,re_date,re_bankcode,2000,re_bankserial);

select balance into d_balance from device where deviceid=deviceno;--取出设备的余额

if(d_balance>re_money)then--设备余额大于充值钱数说明充值的钱数不够,flag不变update device set balance=balance-re_money where deviceid=deviceno;

results :='成功';

else--设备余额小于充值钱数,说明充值之后够了,并且扣费成功了

update receivables set flag =0where deviceid=deviceno and flag=2;

select distinct money into d_smoney from devicerecord where deviceid=deviceno and chargedate=paydate;

update device set balance=balance+d_smoney-re_money where deviceid=deviceno; results :='成功';

end if;

end if;

end Reverse;

测试截图

将刚刚为6的缴费冲正。

此时的payfee表:(增加了一条冲正记录)

应收费用表:(flag标志为变成0)

设备表:(回到缴费前3元状态)

查询设备6的欠费情况:(回到缴费前的状态,仍然欠费141.2)

主要创新点:

实验的主要思路是主要确定有一致的缴费记录,并且流水号记录只有一次,说明没有冲正过,然后进行冲正。

冲正过程中,读取设备此时余额与缴费金额(或者说是冲正金额)作对比,根据“设备初始金额+缴费金额-扣费金额=设备此时余额”,如果设备此时余额<缴费金额,这说明执行了扣费过程,需要进行receivable中标志位的更改,也需要修改device表中的设备余额,这时候用到了扣费记录表(自己建的)找到扣费金额。那么设备此时的余额+扣费金额-缴费金额=设备初始金额 . 如果设备此时余额>缴费金额,这说明缴费之后依然欠费,没有进行扣费。这时候只需要向payfee中添加记录,并修改设备金额;

4.对总账

代码

create or replace procedure checkmoney(check_bankcode in char,total_count in number,

total_money in number,check_date in varchar,results out varchar)is

bankcode1 varchar(2);

paydate1 date;

total_money1 number;

total_count1 number;

实训报告总结10篇免费下载

《实训报告总结》 实训报告总结(一): 透过实训中心老师的课堂讲解与企业化标准的培训,使我加深了对自己专业的认识。从而确定自己以后的努力方向。要想在短暂的实训时间内,尽可能多的学到东西,就需要我们跟老师或同学进行很好的沟通,加深彼此的了解。只有我们跟老师多沟通,让老师更了解我们,才能跟真切的对我们进行培训工作。由此,班级的文化共享就在生活中慢慢构成了。 纸上得来终觉浅,绝知此事要躬行!在这短短的时间里,让我深深的感觉到自己在实际应用中所学专业知识的匮乏。让我真真领悟到学无止境这句话的涵义。而老师在专业认识周中所讲的,都是课本上没有而对我们又十分实用的东西,这又给我们的实训增加了浓墨淡采的光辉。我懂得了实际生活中,专业知识是怎样应用与实践的。在这些过程中,我不仅仅明白了职业生涯所需具备的专业知识,而且让我深深体会到一个团队中各成员合作的重要性,要善于团队合作,善于利用别人的智慧,这才是大智慧。靠单一的力量是很难完成一个大项目的,在进行团队合作的时候,还要耐心听取每个成员的意见,使我们的组合到达更加完美。 这次实训带给我太多的感触,它让我明白工作上的辛苦,事业途中的艰辛。让我明白了实际的工作并不像在学校学习那样简单。 人非生而知之,虽然我此刻的知识结构还很差,但是我明白要学的知识,一靠努力学习,二靠潜心实践。没有实践,学习就是无源之水,无本之木。这次实训让我在一瞬间长大:我们不可能永远呆在象牙塔中,过着一种无忧无虑的生活,我们总是要走上社会的,而社会,就是要靠我们这些年轻的一代来推动。这就是我们不远千里来实训的心得和感受,而不久后的我,面临是就业压力,还是继续深造,我想我都就应好好经营自己的时间,充实、完善自我,不要让自己的人生留下任何空白! 实训中除了学到不少专业知识,也了解一些社会的现实性,包括人际交往,沟通方式及相关礼节方面的资料,对于团队开发来说,团结一致使我深有体会。团队的合作注重沟通和信任,不能不屑于做小事,永远都要持续亲和诚信,把专业理论运用到具体实践中,不仅仅加深我对理论的掌握和运用,还让我拥有了一次又一次难忘的开发经理,这是也是实训最大的收获。 此刻我对一个人最大的财富是他的人生经历和关系网络这句话十分的有感情,因为它确实帮了我们不少。除此课本上的知识毕竟有限。透过实训,我班同学都有这样一个感觉,课本上的理论知识与实际工作有很大差距,只有知识是远远不够的,专业技能急需提高。从最初的笨手笨脚,到此刻能够熟练的按照流程开发软件,这都与我班每个人的努力是分不开的。十个月的实训,教会了我们很多东西,同时也锻炼了大家踏实、稳重的潜力,每个人都很珍惜这来之不易的实训机会。

软件实训心得体会3篇

软件实训心得体会3篇 软件实训心得体会一: 今天的实训结束了,今天做的是纸牌游戏软件和趣味打字游戏。今天的东西对我来说有点难度,最后没有能过完全做完。但是我还是觉得这是一个不错的实训,在这种集体的环境里和同学们一起学习,每天的生活过的也是非常的充实。 此次实践课我的收获很多。我和同学们这一次真正自己动手制作了一个小软件,虽然还存在很多的问题,而且我做的软件在使用起来还是很不可行的,但是我们从中受到了很多知识,不仅是专业的知识,更让我明白了一个软件从设计到实现的每一个环节真的很不容易,不仅需要扎实的专业知识,更需要一个团队的配合,这才是一个软件成功的关键。这就告诉我们,一个人的出色不算什么,一个团队的出色才是真正有用的。 刚开始拿到题目我们组员都不知如何下手,经过小组成员一起查找资料,并且开会讨论,我们确定了设计的设计目标以及具体实现方式,包括如何将Java的思想运用到实际系统的详细设计之中。 在实验课上,我学会了很多学习的方法。而这是日后最实用的。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我的将来也有很大的帮助。以后,不管有多苦,我想我都能变苦为乐,找寻有趣的事情,发现其中

珍贵的事情。就像中国提倡的艰苦奋斗一样,我都可以在实验结束之后变的更加成熟,会面对需要面对的事情,以及学会遇到问题,不急不慌,慢慢解决它。 虽然过程辛苦是不可避免,但收获还是令人感到尤其的欣慰。在这次的软件设计中不仅检验了我所学习的知识,也培养了我的实践能力,让我知道遇到一个问题,如何去寻找思路,如何去解决问题,最终完成整个事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。学会了合作,学会了宽容,学会了理解,也学会了做人与处世。课程设计是我们专业课程知识综合应用的实践训练,是我们迈向社会,从事职业工作前一个必不少的过程。实验过程中,也十分感谢实验指导老师陈中育老师的指点与教导。这次软件设计不仅是对这学期所学知识的一种综合检验,而且也是对自己动手能力的一种提高,增强了自己实践能力。通过这次课程设计使我明白了自己知识还比较欠缺,只是学习书本知识还是远远不够的,自己不会的东西还有太多,学习需要自己长期的积累,在以后的学习、工作中都应该不断的学习,将课本的理论知识与生活中的实践知识相结合,不断提高自己文化知识和实践能力。 软件实训心得体会二: 经过长时间对国贸软件的的使用,在不断练习操作的过程中,我对国贸软件的最深刻感觉是:学以致用、有趣、必须细心耐心反应迅速。 1.学以致用

[东北大学]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.数据库的三级模式描述。

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

东软集团实习报告-实习报告

东软集团实习报告-实习报告 1.实习的目的意义 对高校项目实践的补充,完成从理论知识到工程实践能力的顺利转化,全面提高学生的动手能力和工程实践能力。 通过心智和行为模式训练、新技术讲座、行业趋势分享、企业级应用类项目实践、业务实习等,全面提高学生的职业竞争力,保障学生就业质量的提升,达到软件开发领域的“工作层”水平。 自我认知,快速完成从学校人向企业人的角色转变;提高个人职业素养,建立对目标与成就的积极追求;培养健康、责任、奋斗的心态,追求个人目标的不断实现;了解软件企业工程实践标准过程与技术架构;能够胜任Java与Oracle数据库环境下的行业解决方案信息系统的设计与开发。 2.实习单位简介 (1)东软睿道教育信息技术有限公司东软睿道教育信息技术有限公司(简称东软睿道)由东软创办,是东软基于20年来对IT产业实践的理解和对IT教育实践的洞察,整合国内外众多优秀合作伙伴的教育资源和产品,依托信息与通信技术,通过线上与线下服务模式的组合,基于互联网和云计算来实现交互式与实践式学习的教育与人才服务提供商。 东软睿道倡导“信息技术服务教育未来”的经营理念,将科学的学习方法与先进的信息通信技术相结合,致力于成为中国领先的工程

教育服务的提供者。目前,公司在沈阳、大连、南京、成都、无锡、天津、郑州、南昌、青岛、广州建立了10个分布式的人才基地,与全球500所高校、400家企业建立了持续稳定的深度合作。东软睿道工程教育是大学生及大学后提高职业技能的平台。我们面向高校、个人、政府提供以东软知识体系为核心的人才培养解决方案;面向企业构建以“高绩效金字塔”为基础,以建立高绩效组织为目标的解决方案,并提供咨询、培训、人才服务及IT信息系统等产品和服务。 (2)东软集团(NEUSOFT) 1991年,年轻的东北大学教授刘积仁在中国东北大学创立了东软。目前,公司拥有员工23000余名,在中国建立了8个区域总部,16个软件开发与技术支持中心,6个软件研发基地,在40多个城市建立营销与服务网络,在大连、南海、成都和沈阳分别建立3所东软学院和1所生物医学与信息工程学院;在美国、欧洲、日本、中东、中国香港、印度都设有子公司。东软是中国最大的离岸软件外包提供商。 东软将“超越技术”作为公司的经营思想和品牌承诺。作为一家以软件技术为核心的公司,东软通过开放式创新、卓越运营管理、人力资源发展等战略的实施,全面构造公司的核心竞争力,创造客户和社会的价值,从而实现技术的价值。 3.实习的内容 (1)第一周 3月3日,上午,宋健老师给我们讲解了一些有关本次实习的事

实训报告心得体会5篇

实训报告心得体会5篇 实训报告心得体会一:实训心得体会 实训,就是把我们在学校所学的理论知识,运用到客观实际中去,是自己所学到的理论知识有用武之地,只学不实践,那么所学的就等于零。理论应该与时间相结合。另一方面,实践卡可以为以后找工作打基础。通过这段时间的实习,学到一些在学校里学不到的东西。因为环境不同,接触的人与事不同,从中学到的东西自然就不一样。要学会从实践中学习,从学习中时间。而且中国的紧急飞速发展,在拥有越来越多的机会的同是,也有了更多的挑战。对于人才的要求就会越来越高,我们不只要学号学校所学到的知识,好药不断充生活中,实践中学其他知识,不断从各方面武装自己,才能在竞争中突出自己,表现自己。 短短两个月的工作过程是我受益很大。不仅让我开阔了眼界,最主要的是懂得了如何更好的为人处事。 第一要真诚:你可以伪装自己的面孔,但绝不可以忽略真诚的力量。记得第一天来这里时,心里不可避免的有些疑惑:不知道老板怎么样,应该去怎么做,要去感谢什么等等。踏进大门后,之间几个陌生的人用莫名而疑惑的眼神看着我,我微笑和他们打招呼,尴尬的局面理科得到了缓解,大家都很友善的微笑欢迎我的到来。从那天戚,我养成

了一个习惯,每天早上见到他们都要微笑的说声好。 第二是激情与耐心:激情与耐心,就像火与冰,看是两种完全不同的东西,却能碰撞出最美丽的火法。 第三是主动出击:当你可以选择的时候,把主动权握在自己手中,在实习旗舰,我会主动的协同同事工作,主动的做些力所能及的事,并会几级的寻找合适的时间跟他们交流。谈生活学习以及未来的工作,通过这些我就同事们走的很近,在实习中,他们会教我怎么做事见什么样的人说什么样的话,使我觉得花的了很多收获而且和他们相处的很愉快。 第四是感受到学校和社会的距离:在学校,只有学习的氛围,毕竟学校是学习的场所,每一个学生都在为取得更高的成绩而努力。在这里是工作的场所,每个人都会为了获得更多的报酬而努力,无论是学习还是工作,都存在着竞争,在竞争中就要不断学习别人先进的地方,也要不断学习别人怎么做人,,移提高自己的能力。记得老师曾经说过大学是一个小社会,但我总觉得校园里总少不了那份纯真,那份真诚,尽管是学学搞笑,学生还终归保持着学生的身份,而走进企业,接触各个的客户,同事,上司等等,关系复杂。得去面对从未面对过的一切。在实际工作中,可能会遇到书本上没学到的,又可能是书本上的只是一点都用不上的情况。或许工作中运用到的只是很简单的问

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

这是数据库期末复习题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;

在东软睿道培训的实习报告

目录 1.实习目的 (1) 2.实习公司概述 (1) 2.1公司简介 (1) 2.2发展历程 (2) 2.3具体的IT实训业务 (2) 2.3.1高校实训解决方案 (2) 2.3.2个人职业能力实训解决方案 (3) 2.3.3专项培训实训解决方案 (3) 2.3.4政府项目实训解决方案 (3) 2.4组织结构图 (4) 2.5业务流程图 (5) 3.实习内容 (6) 3.1C语言学习 (6) 3.2javaSE学习 (7) 3.3javaEE学习 (9) 3.4 Oracle数据库学习 (11) 4 实习收获与体会 (11)

辽宁工程技术大学毕业实习报告 1.实习目的 毕业实习是在我们学完了本专业教学计划规定的全部课程,完成所有教学环节并取得及格以上成绩的基础上进行的。这是一次理论联系实际、接触实际、了解社会、向现场人员学习的极好机会,是毕业设计的必经之路,是我们能否毕业、能否获得学士学位的重要依据,是我们综合大学四年所学的知识解决实际问题的有效途径。 毕业实习的具体目的在于进一步巩固所学有关课程的基础理论和基本技能、进一步认识计算机在企业现代化管理中所起重要作用、了解现代计算机应用于企业现代化管理的现状和基本方法、了解所学管理科学知识在企业中的应用、了解企业管理中使用计算机的现状、调查清楚一个具体企业管理系统的总体结构及各子系统的业务内容、了解企业对信息技术的需求以及最新的信息处理模式和技术。 在深入调查研究的基础上,我们需要确定毕业设计的题目,收集有关资料,为毕业设计做好准备。 毕业设计是我们对大学所学知识的一次总结,一次综合运用,一份毕业设计需要用到我们在大学里所学的大多数课程知识,通过毕业设计,能使我们综合应用所学的各种理论知识和技能,进行全面、系统、严格的技术及基本能力的练习。 2.实习公司概述 2.1公司简介 东软睿道教育信息技术有限公司,是由东软创办的IT人才培训机构,定位是人才服务提供商。东软整合了优秀的教育资源,倡导实践式学习的教育来创办这一子公司,在为自己赚取利润的同时,也为想投身IT行业的年轻人提供了方便。 东软睿道倡导“信息技术服务教育未来”的经营理念,致力于成为中国领先的工程教育服务的提供者。目前,公司在沈阳、大连、南京、成都、无锡、天津、郑州、南昌、青岛、广州建立了10个分布式的人才基地,与多所高校、企业建立了持续稳定的合作,从学校招收编程技术部娴熟的学生,结果4个月的培训之后再推荐给IT企业。 东软睿道总结多年的培训经验,为软件行业提供高质量、规范化、专业化的IT人才。服务总部设于沈阳,已在大连、北京、天津、青岛、南京、无锡、上海、武汉、成都、广州设有分支机构,以覆盖全国的业务布局,优化的全国性IT类资源配比,快速准确地对应中国软件行业的人力资源服务需求。

软件实训心得体会

亲爱的朋友,很高兴能在此相遇!欢迎您阅读文档软件实训心得体会,这篇文档是由我们精心收集整理的新文档。相信您通过阅读这篇文档,一定会有所收获。假若亲能将此文档收藏或者转发,将是我们莫大的荣幸,更是我们继续前行的动 力。 软件实训心得体会 软件实训心得体会 软件实训心得体会1 我们是xx年3月7号进入宏天实训公司参加软件开发实训的,在此次实训中,除了让我明白工作中需要能力,素质,知识之外,更重要的是学会了如何去完成一个任务,懂得了享受工作。当遇到问题,冷静,想办法一点一点的排除障碍,到最后获取成功,一种自信心就由然而生,这应该就是工作的乐趣。有时候不懂的就需要问别人了,虚心请教,从别人的身上真的能学到自己没有的东西,每一次的挫折都会使我更接近成功。还有学会了在工作中与人的合作与交流,同乐同累,合作互助,这是团体的精神,也是必须学习的东西。 经过之前的在校学习,对程序设计有了一定的认识与理解。在校期间,一直都是学习理论知识,没有机会去参与项目的开发。所以说实话,在实训之前,软件项目开发对我来说是比较抽象的,

一个完整的项目要怎么分工以及完成该项目所要的步骤也不是很明确。而经过这次实训,让我明白了一个完整项目的开发,必须由团队来分工合作,并在每个阶段中进行必要的总结与论证。 一个完整项目的开发它所要经历的阶段包括:远景范围规划和用例说明、项目结构和风险评估、业务功能说明书、详细设计说明书、代码实现、测试和安装包等等。一个项目的开发所需要的财力、人力都是很多的,如果没有一个好的远景规划,对以后的开发进度会有很大的影响,甚至会出现在预定时间内不能完成项目或者完成的项目跟原来预想的不一样。一份好的项目结构、业务功能和详细设计说明书对一个项目的开发有明确的指引作用,它可以使开发人员对这个项目所要实现的功能在总体上有比较明确的认识,还能减少在开发过程中出现不必要的麻烦。代码的实现是一个项目开发成功与否的关键,也就是说,前期作业都是为代码的实现所做的准备。 我深刻的认识到要成为一名优秀的软件开发人员不是一件容易的事情,不仅要有足够的干劲和热情,还要有扎实的编写代码基础,必须要有事先对文档进行可靠性报告,功能说明书,详细设计说明书等的编写和一些风险评估的编写的能力。 除了图书馆,最能让我感觉到身在大学的就是实训机房,在匆匆过去的两个月内,我往返于实训机房与宿舍之间,使我享受

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

课程编号: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

东软实习基地考察报告

竭诚为您提供优质文档/双击可除东软实习基地考察报告 篇一:东软实习总结报告 实习总结报告 题目:智慧医疗之医生掌中宝 班学 哈尔滨工程大学 20XX年7月22日 本次实习来到了沈阳的东软集团,我们在这里进行了为期两周的实习,实习的内容是嵌入式开发,主要是学习了Linux系统的操作,并且巩固拓展了c语言的知识。 初次运用ubuntu虚拟机,其中的Linux系统是不同于windows系统,在Vmareworkstation上操作命令全部是用键盘敲入命令,而不是用鼠标,这一点非常有趣。刚开始的时候会觉得纯键盘输入比较麻烦,即使是进入上一个文件夹或者是删除某个文件,都要键入好多的字符,不如鼠标来的便捷。但是当这些命令敲得多了,也就慢慢体会到这种命令方式的优点。在某些命令上键盘操作是优于鼠标操作的,这也

就是Linux系统经久不衰的原因。 Linux的很多操作都比较有意思,在这里我要简单说一说一些命令的神奇之处。 ①cat与vi。其中cat是在ubuntu操作上显示文档内容,但是这个像我们平时用的只读阅读器,你可以清楚地看到文件里的内容,但是却不可修改。而vi命令却是像我们平时使用的word编辑器,可以看到内容,又可以修改内容。 ②touch与mkdir。这两个命令都是创建的功能,touch 是创建一个新的空文件,创建好之后可以用上面提到的vi 来编辑内容。mkdir是创建一个空的目录,即mkdir是一个目录,我们可以用cd命令进入这个目录,从而又可以使用touch创建文档了。 ③mv与cp。mv是迁移的命令,这个命令可以讲一个文件夹里的文档或子文件夹迁移到另一个文件夹中,二cp是复制的命令,与mv 不同的是cp命令是时候原文件夹还保存着被操作的文件,而mv命令则否。 这种存在异同的有趣的命令还有很多,在这里我就不一一列举了。下面我说一说c文件的编译。 普通的c文件编译仅用到gcc即可,例如我想要编译一个名为hello.c的文件,那么我就可以简单的输入命令:gcc-ohellohello.c或者gcchello.c-ohello。但是很有可

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

东北大学数据库期末试 卷样例 -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 机器台号:笔记本

实训报告心得体会范文

实训报告心得体会范文 实训报告,是包含实训目的、实训环境、实训原理、实训过程、实训结果、实训总结等方面内容的书面汇报材料,类似于理科课程的实验报告。下面为大家整理了一些心得体会范文,欢迎阅读! 【篇一】 通过这两周的实训,我们学会了手持编程器的编程方法,编入、写出、删除及修改都会了。在以后学习过程中希望大家多多提点.我和倪泽旭主要负责程序设计和调试。第一个项目比较简单,只有一点小问题,和快我们就解决了。第二个项目相对于第一个来说复杂了很多也难了很多,也是我们第一次真正接触并使用三相交流发电机。在梯形图的编辑上出现了很多问题问题,导致第一次调试的失败。在一次完整运行成与重新启动运行之间的循环出现一点问题,经过我们对梯形图的监控检查,发现循环与上面编程有点冲突,后来我们调整了一下,调试终于成功了。接线方面,在星三角转换的上遇到了困难,经过我们不懈努力最终成功了。 通过这次的实训使我们学到了很多,同时也让我们意识到我们要学的更多。从程序的设计到编写、画图、调试、修改、完善、到最后的实训报告,每个人都付出了时间和精力去做好自己的任务帮助队友,所以团队的合作和队友之间的相互协助非常重要。通过实训让我们更深一步的对自己的专业,对自己的能力,对自己所学的有正确的认识,并且能在以后的学习工作中不断提高和完善自己。实训台上的

接线我们比较乱,这也是我们接线检查困难的主要原因,才导致出现了一些接线问题。 总的来说,这次实训还是比较成功的,无论是个人动手能力还 是团队协作能力都得到了很好的锻炼。在实训过程中老师也交给我们很多简单实用的技巧。我们也学到了,做好做对一个项目固然重要,同时美观程度也是必不可少的,无论是从参观者的角度还是自己看的角度都很重要。 【篇二】 通过实训中心老师的课堂讲解与企业化标准的培训,使我加深 了对自己专业的认识。从而确定自己以后的努力方向。要想在短暂的实训时间内,尽可能多的学到东西,就需要我们跟老师或同学进行很好的沟通,加深彼此的了解。只有我们跟老师多沟通,让老师更了解我们,才能跟真切的对我们进行培训工作。由此,班级的文化“共享”就在生活中慢慢形成了。 “纸上得来终觉浅,绝知此事要躬行!”在这短短的时间里,让我深深的感觉到自己在实际应用中所学专业知识的匮乏。让我真真领悟到“学无止境”这句话的涵义。而老师在专业认识周中所讲的,都是课本上没有而对我们又非常实用的东西,这又给我们的实训增加了浓墨淡采的光辉。我懂得了实际生活中,专业知识是怎样应用与实践的。在这些过程中,我不仅知道了职业生涯所需具备的专业知识,而且让我深深体会到一个团队中各成员合作的重要性,要善于团队合作,善于利用别人的智慧,这才是大智慧。靠单一的力量是很难完成一个

相关文档