广工数据库b实验

广工数据库b实验
广工数据库b实验

广东工业大学实验报告

自动化学院10电气工程及其自动化专业(1)班成绩评定_______ 学号3110001222姓名陈浩彬(合作者号) 教师签名

实验四题目数据库的简单查询和连接查询实验第___周星期___第___节

一、实验目的与要求

要求熟练掌握和使用SQL、SQL Server企业管理器向数据库输入数据、修改数据和删除数据操作。

insert into 课程(课程号,课程名,先行课号)values ('011','电力电子技术','001')

update 选课set 课程号='005'where 学号='009'

delete from 选课where 学号='022' and 课程号='001'

二、实验方案

通过SQL Server查询分析器实现对学生成绩管理数据库的以下简单查询和连接查询:

1.求自动化系学生的学号和姓名;

select 学号,姓名

from 学生

where 学院='自动化'

2.求选修了课程的学生学号;

select 学号

from 选课

where 成绩is not null

3.求选修课程005的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成

绩相同则按学号升序排列;

select 学号,成绩

from 选课

where 课程号='005'

order by 成绩desc,学号;

4.求选修课程004且成绩在80~90分之间的学生学号和成绩,并将成绩乘以系数0.8

输出;

select 学号,0.8*成绩

from 选课

where 课程号='004' and 成绩between 80 and 90

5.求自动化系或'物理系姓张的学生的信息;

select *

from 学生

where (学院='自动化'or 学院='物理') and 姓名like '张%'

6.求缺少了成绩的学生的学号和课程号;

select 学号

from 选课

where 成绩is null

7.查询每门课程的先行课程名;

select 课程名,先行课号

from 课程

三、结论

关系数据库可以灵活的检索数据。使用关键是牢牢掌握SQL语言。

四、问题与讨论

1、如何提高数据查询和连接速度?

对索引优化和建立索引结合SQL查询,修改,删除语句。一般说法是where里经常出现的字段索引。如果在where经常是几个字段一起出现并用and连接,那这几个字段应建立联合索引。

广东工业大学实验报告

自动化学院10电气工程及其自动化专业(1)班成绩评定_______ 学号3110001222姓名陈浩彬(合作者号) 教师签名

实验五题目数据库的嵌套查询实验第___周星期___第___节

一、实验目的与要求

进一步掌握SQL Server查询分析器的使用方法,加深SQL语言的嵌套查询语句的理解。

二、实验方案,实验结果和数据处理

通过SQL Server查询分析器实现对数据库的以下嵌套查询,并尝试用多种形式表示实验中的查询语句,并进行比较。

1、求选修了数学的学生学号和姓名;

select 学生.学号,学生.姓名

from 学生,课程,选课

where 学生.学号=选课.学号and 课程.课程号=选课.课程号and 课程.课程名='数学

'

2、求004课程的成绩高于张三的C1课程成绩的学生学号和成绩;

select 学号,成绩

from 选课

where 课程号='004' and 成绩<

(select 选课.成绩from 学生,选课

where 学生.姓名='亨利'

and 选课.课程号='004'

and 学生.学号=选课.学号)

3、求选修002课程的学生姓名;

select 学生.姓名

from 学生,课程,选课

where 学生.学号= 选课.学号

and 课程.课程号=选课.课程号

and 课程.课程号='002'

4、求没有选修C2课程的学生姓名;

select 学生.姓名

from 学生,课程,选课

where 学生.学号= 选课.学号

and 课程.课程号=选课.课程号

and 课程.课程号!='002'

5、求选修C1课程而没有选修C2课程的学生姓名;select 学生.姓名

from 学生,选课

where 学生.学号= 选课.学号

and 选课.课程号='001'

and 选课.课程号!='002'

三、结论

使用SQL语言的嵌套查询语句时,先执行子查询,后执行父查询,子查询的结果用于建立父查询的查找条件。

四、问题与讨论

1、嵌套查询和连接查询有何区别?在本实验的查询任务中,哪些是可以由嵌套查

询和连接查询实现?

当查询同时涉及两个以上的表时,成为连接查询。在SQL语言中,一个

SELECT-FROM-WHERE语句称为一个查询块,将一个查询块嵌套在另一个查询

块的WHERE语句或HA VING语句的条件中的查询称为嵌套查询。

本实验中,求选修数学的学生学号和姓名可用连接查询。求004课程的成绩低于

亨利的004可以用嵌套查询。

广东工业大学实验报告

自动化学院10电气工程及其自动化专业(1)班成绩评定_______ 学号3110001222姓名陈浩彬(合作者号) 教师签名

实验六数据库统计查询实验第___周星期___第___节

一、实验目的与要求

熟悉掌握SQL Server查询分析器的使用方法,加深对SQL语言查询语句的理解,熟悉掌握数据查询中的分组和统计的操作方法。

二、实验方案,实验结果和数据处理

通过SQL Server查询分析器实现以下对数据库的统计查询;

1.用SQL语句实现学生人数的统计;

select count(*)as 学生人数from 学生

2.用SQL语句实现自动化系学生人数的统计;

select count(*)as 学生人数from 学生

where 学院='自动化'

3.用SQL语句实现各系学生人数的统计;

select 学院,count(*)as 学生人数from 学生

group by 学院

4.用SQL语句统计选修某课程学生的人数;

select 课程号,count(*)as 学生人数from 选课

group by 课程号

5.用SQL语句统计选修了课程的学生的人数;

select count(*)as 学生人数from 选课

where 课程号is not null

6.用SQL语句统计被选课程及选修该课程的人数;

select 课程号,count(*)as 学生人数from 选课

group by 课程号

7.用SQL语句统计每个学生全部课程的平均成绩;

select 学号,avg(成绩)as 平均成绩from 选课

group by 学号

8.用SQL语句统计选修课超过3门课的学生学号;(可选)

select 选课.学号as 学生学号from 选课

group by 选课.学号

having count (*)>2

四、结论

SQL sever有很多内置函数。有一些称为聚集函数,其在结果列表中提供汇总值。分组查询使用group by 语句。Having 语句用于筛选分组的最终结果,只有满足having语句制定条件才输出。

五、问题与讨论

1、试用GROUP BY(分组条件)字句后,语句中的统计函数的运行结果有什么不同?运行结果会根据group by语句的条件进行一定的排列。

广东工业大学实验报告

自动化学院10电气工程及其自动化专业(1)班成绩评定_______ 学号3110001222姓名陈浩彬(合作者号) 教师签名

实验七题目数据库的视图和图标的定义及使用实验第___周星期__第_节

一、实验目的与要求

掌握SQL Server中视图的创建和使用,加深对视图和SQL Server图表作用的理解。二、实验方案,实验结果和数据处理

通过SQL Server实现数据库的视图的创建及使用,完成以下任务:

1、建立计算机系学生的视图;

create view 视图as select 学号,姓名,性别,出生日期,学院

from 学生

where 学院='自动化'

2、由学生、课程和选课三个表,定义一个计算机系的学生成绩视图,其属性包括学号、姓名、课程名和成绩;

create view 视图2 as select 学生.学号,姓名,课程名,成绩

from 学生,课程,选课

where 学生.学号=选课.学号

and 课程.课程号=选课.课程号

and 学生.学院='自动化'

3、将学生的学号、总成绩、平均成绩定义成一个视图;

create view 学生个人成绩as select 学号,sum (成绩)as 总成绩, avg(成绩) as 平均成绩

from 选课

group by 学号

4、统计学生的学号、姓名、总成绩及平均成绩(可利用3的视图或group by 学生.学号,学生.姓名);

create view 学生个人成绩2 as select 选课.学号,学生.姓名,sum (成绩)as 总成绩, avg(成绩) as 平均成绩

from 选课,学生

where 学生.学号=选课.学号

group by 选课.学号,学生.姓名

四、结论

视图时关系数据库系统提供用户多角度观察数据库数据的一种方法。视图从一个或几个视图导出的虚表。在概念上与基本表等同。视图一经定义就可以像基本表一样进行查询,删除,更新。且可以再视图上再定义新的视图。

五、问题与讨论

1、为什么要建立视图?视图和基本表有什么不同?

视图能简化用户操作,提供用户多角度观察数据库数据,对机密数据提供安全保护,适当利用视图可更加清晰的表达查询。

视图可理解为保存后的查询,它的保存是在‘实在’表格经查询后的结果。基本表是指数据库中‘实在’的表格,存的是数据本身。基本表是视图的来源和基础,视图丰富了基本

表的表达。

2、group by语句在使用时需要注意什么事项?

应注意group by语句中的表达式必须与选择列表表达式完全匹配。

广东工业大学实验报告

自动化学院10电气工程及其自动化专业(1)班成绩评定_______ 学号3110001222姓名陈浩彬(合作者号) 教师签名_______

实验一题目数据库系统设计第___周星期___第___节 一、 实验目的与要求

掌握数据库的基本设计技术,熟悉数据库概念模型设计的每个任务步骤,并加深对关系数据库概念和特点的理解。

要求学生根据周围的实际情况自选一个小型的数据库应用项目并深入到应用项目的现实世界中进行系统分析和数据库设计,例如选择学生成绩管理系统、图书管理系统或仓库管理系统等。

学生成绩管理数据库的基本要求:

1. 能够记录学生的基本信息,包括学号、姓名、性别、出生日期及所属学院;

2. 能够记录课程的基本信息,包括课程号,课程名,先行课号;

3. 能够记录学生选课情况及选修课程的成绩;

(学生成绩管理系统及图书管理系统数据库应用项目介绍可参见蔡延光《数据库原理及应用》第11章或苗雪兰《数据库原理及应用》第5章)。给出各表的关系结构和表级约束、给出各属性域的描述(包括物理描述和语义描述);

二、 实验方案

利用数据库设计的5个步骤(识别实体、确定关系、列出属性、确定键及属性的域属性的域),对学生成绩管理系统(必选)、图书管理系统(可选)使用鸭脚模型对学生选课系统(必选)及图书管理系统进行相关数据库的数据建模及设计。

● 使用ChenERD 或鸭脚模型表示所设计的概念模型; ● 给出各表的关系结构和表级约束;

给出各属性域的描述,包括物理描述和语义描述;

三、数据库应用项目进行概念模型设计实验结果和数据处理

1、

ChenERD 图:

2、 各表关系:

学生 学号 姓名 性别 出生日期 学院

选课

学号 课程号

成绩

课程 课程号 课程名 先行课号

学生(学号,姓名,性别,出生日期,学院)

选课(学号,课程号,成绩)

课程(课程号,课程名,先行课号)

约束:‘选课’表中的学号与课程号要分别是‘学生’表中的学号与‘课程’表中的课程号

3、个元素属性:

四、结论

答:数据库的表既存数据又存关系,每张表都要有主键,外键要注意完整性约束,

五、问题与讨论

1、关系数据库中如何保存实体之间的关系?

答:通过建立关联表和表内的关系来保存实体之间的关系

2、学生选课系统中属性学号、课程号及成绩采用哪种数据类型更好,数值型还是

字符型?为什么?

答:学号、课程号,成绩用字符型,因为学号与课程号及成绩均可能用到字符

型,而字符型可以表示数值型的值。

3.在所设计的数据模型中体现的业务规则是什么?

答:一个学生可以选多门课,一门课可以别多个学生选择,选择一些课前要求已经学了先行课,有些课可以没有选择,但学生必须选课。

广东工业大学实验报告

自动化学院10电气工程及其自动化专业(1)班成绩评定_______ 学号3110001222姓名陈浩彬(合作者号) 教师签名

实验二题目数据库的定义实验第___周星期___第___节

一、实验目的与要求

要求熟练掌握和使用SQL、SQL Server企业管理器创建数据库、表、索引和修改表结构,并学会使用SQL Server查询分析器接受SQL语句和进行结果分析。

二、实验方案

1、在企业管理器中创建及打开数据库,在“新建数据库”时指明数据文件及事务日志

的位置;

2、在SQL Server查询分析器中用SQL语句实现以下各表:

学生(学号,姓名,性别,出生日期,所属学院);

课程(课程号,课程名,先行课号);

选课(学号,课程号,成绩);

3、建立库、表和表间的联系,选择合适的数据类型,定义必要的列级约束(包括性别约束和成绩约束)和表级约束。创建数据库中的表后,在查询分析器的对象浏览器中可见该表及其所拥有的约束:学生:2课程:1选课:4

三、实验结果和数据处理

CREA TE TABLE 学生(

学号Char(5) PRIMARY KEY,

姓名V archar(20) NOT NULL,

性别Char(2) NULL,

出生日期Smalldatetime NULL,

学院V archar(15) NULL,

CONSTRAINT 性别选择CHECK

(性别IN ('男','女')),

);

CREA TE TABLE 课程(

课程号Char(8) PRIMARY KEY,

课程名V archar(15) NULL,

先行课号Char(8) NULL,

);

CREA TE TABLE 选课(

学号Char (5) NOT NULL,

课程号Char(8) NOT NULL,

成绩int NULL,

CONSTRAINT 学生外键FOREIGN KEY(学号)

REFERENCES 学生(学号)

ON UPDA TE NO ACTION

ON DELETE NO ACTION,

CONSTRAINT 课程外键FOREIGN KEY(课程号)

REFERENCES 课程(课程号)

ON UPDA TE NO ACTION

ON DELETE NO ACTION,

CONSTRAINT 选课主键PRIMARY KEY(学号,课程号),

CONSTRAINT 取值CHECK

(成绩>=0 AND 成绩<=100)

);

四、结论

SQL的数据库定义功能有定义数据库,基本表,视图和索引。SQL一般不提供修改视图定义及修改索引定义的操作。定义表时,可以定义与表有关的完整性约束条件。

五、问题与讨论

1、举例说明创建外键的SQL语句中的参照表和被参照表各指什么?ON DELETE

CASCADE 关键字对删除记录有何影响?

学生表(学号,姓名),选课表(学号,成绩),这两个表在学号上建立外键关系的话,学生表作为被参照表,选课表作为参照表。ON DELETE CASCADE是级联删

除,如果删除学生表001学号记录,那么选课表所有学号为001的记录也会同时被删除。

广东工业大学实验报告

自动化学院10电气工程及其自动化专业(1)班成绩评定_______ 学号3110001222姓名陈浩彬(合作者号) 教师签名

实验三题目数据库的建立和维护实验第___周星期___第___节

一、实验目的与要求

要求熟练掌握和使用SQL、SQL Server企业管理器向数据库输入数据、修改数据和删除数据操作。

二、实验方案

通过SQL Server企业管理器或查询分析器实现对学生成绩管理数据库的数据增加、数据删除和数据修改操作。要求每个表的记录在10行以上,可根据查询要求增加或完善表中记录;输入数据检验各数据约束的限制;数据更改和数据删除时检验外码约束;

三、实验结果和数据处理

INSERT INTO 课程(课程号,课程名,先行课号)values('001','计算机','002')

INSERT INTO 课程(课程号,课程名,先行课号)values('002','英语','001')

INSERT INTO 课程(课程号,课程名,先行课号)values('003','物理','001')

INSERT INTO 课程(课程号,课程名,先行课号)values('004','数学','004')

INSERT INTO 课程(课程号,课程名,先行课号)values('005','电路','004')

INSERT INTO 课程(课程号,课程名,先行课号)values('006','模电','005')

INSERT INTO 课程(课程号,课程名,先行课号)values('007','数电','006')

INSERT INTO 课程(课程号,课程名,先行课号)values('008','化学','003')

INSERT INTO 课程(课程号,课程名,先行课号)values('009','哲学','009')

INSERT INTO 课程(课程号,课程名,先行课号)values('010','马哲','009')

INSERT INTO 学生(学号,姓名,性别,出生日期,学院)values('001','马林','男','1990-9-7','自动化')

INSERT INTO 学生(学号,姓名,性别,出生日期,学院)values('002','拉姆','男','1992-5-23','轻化')

INSERT INTO 学生(学号,姓名,性别,出生日期,学院)values('003','小猪','女','1990-6-9','自动化')

INSERT INTO 学生(学号,姓名,性别,出生日期,学院)values('004','亨利','男','1990-12-6','自动化')

INSERT INTO 学生(学号,姓名,性别,出生日期,学院)values('005','波多尔司机','男','1989-2-27','材能') INSERT INTO 学生(学号,姓名,性别,出生日期,学院)values('006','吉鲁','男','1990-4-17','人文')

INSERT INTO 学生(学号,姓名,性别,出生日期,学院)values('007','小威胁','男','1990-8-1','艺术')

INSERT INTO 学生(学号,姓名,性别,出生日期,学院)values('008','母老虎','女','1990-2-3','外国语')

INSERT INTO 学生(学号,姓名,性别,出生日期,学院)values('009','张伯伦','男','1990-7-7','物理')

INSERT INTO 学生(学号,姓名,性别,出生日期,学院)values('010','威尔乌龙','男','1990-8-7','机电') INSERT INTO 学生(学号,姓名,性别,出生日期,学院)values('011','操俊豪','女','1990-9-7','自动化') INSERT INTO 学生(学号,姓名,性别,出生日期,学院)values('012','菜包子','女','1992-5-23','轻化') INSERT INTO 学生(学号,姓名,性别,出生日期,学院)values('013','卡卡','女','1990-6-9','自动化') INSERT INTO 学生(学号,姓名,性别,出生日期,学院)values('014','放飞机','男','1990-12-6','自动化') INSERT INTO 学生(学号,姓名,性别,出生日期,学院)values('015','波多尔','男','1989-2-27','材能') INSERT INTO 学生(学号,姓名,性别,出生日期,学院)values('016','吉鲁特','男','1990-4-17','人文') INSERT INTO 学生(学号,姓名,性别,出生日期,学院)values('017','阿特达','男','1990-8-1','艺术') INSERT INTO 学生(学号,姓名,性别,出生日期,学院)values('018','小老虎','女','1990-2-3','外国语') INSERT INTO 学生(学号,姓名,性别,出生日期,学院)values('019','张伯','男','1990-7-7','物理') INSERT INTO 学生(学号,姓名,性别,出生日期,学院)values('020','威尔','男','1990-8-7','机电') INSERT INTO 学生(学号,姓名,性别,出生日期,学院)values('021','马老','男','1990-9-7','自动化') INSERT INTO 学生(学号,姓名,性别,出生日期,学院)values('022','法克','男','1992-5-23','轻化') INSERT INTO 学生(学号,姓名,性别,出生日期,学院)values('023','小狗','女','1990-6-9','自动化') INSERT INTO 学生(学号,姓名,性别,出生日期,学院)values('024','索嘿','男','1990-12-6','自动化') INSERT INTO 学生(学号,姓名,性别,出生日期,学院)values('025','小鬼头','男','1989-2-27','材能') INSERT INTO 学生(学号,姓名,性别,出生日期,学院)values('026','点秋香','男','1990-4-17','人文') INSERT INTO 学生(学号,姓名,性别,出生日期,学院)values('027','唐伯虎','男','1990-8-1','艺术') INSERT INTO 学生(学号,姓名,性别,出生日期,学院)values('028','煤球王','女','1990-2-3','外国语') INSERT INTO 学生(学号,姓名,性别,出生日期,学院)values('029','梅西','男','1990-7-7','物理') INSERT INTO 学生(学号,姓名,性别,出生日期,学院)values('030','西罗','男','1990-8-7','机电')

INSERT INTO 选课(学号,课程号,成绩)values('001','001','60')

INSERT INTO 选课(学号,课程号,成绩)values('002','002','100')

INSERT INTO 选课(学号,课程号,成绩)values('003','003','66')

INSERT INTO 选课(学号,课程号,成绩)values('004','004','80')

INSERT INTO 选课(学号,课程号,成绩)values('005','005','90')

INSERT INTO 选课(学号,课程号,成绩)values('006','006','70')

INSERT INTO 选课(学号,课程号,成绩)values('007','007','50')

INSERT INTO 选课(学号,课程号,成绩)values('008','008','40')

INSERT INTO 选课(学号,课程号,成绩)values('009','009','69')

INSERT INTO 选课(学号,课程号,成绩)values('010','010','59')

INSERT INTO 选课(学号,课程号,成绩)values('011','001','60')

INSERT INTO 选课(学号,课程号,成绩)values('012','002','100')

INSERT INTO 选课(学号,课程号,成绩)values('013','003','66')

INSERT INTO 选课(学号,课程号,成绩)values('014','004','80')

INSERT INTO 选课(学号,课程号,成绩)values('015','005','90')

INSERT INTO 选课(学号,课程号,成绩)values('016','006','70')

INSERT INTO 选课(学号,课程号,成绩)values('017','007','50')

INSERT INTO 选课(学号,课程号,成绩)values('018','008','40')

INSERT INTO 选课(学号,课程号,成绩)values('019','009','69')

INSERT INTO 选课(学号,课程号,成绩)values('020','004','59')

INSERT INTO 选课(学号,课程号,成绩)values('021','005','60')

INSERT INTO 选课(学号,课程号,成绩)values('022','005','10')

INSERT INTO 选课(学号,课程号,成绩)values('023','004','66') INSERT INTO 选课(学号,课程号,成绩)values('024','001','80') INSERT INTO 选课(学号,课程号,成绩)values('025','002','88') INSERT INTO 选课(学号,课程号,成绩)values('026','010','85') INSERT INTO 选课(学号,课程号,成绩)values('027','003','50') INSERT INTO 选课(学号,课程号,成绩)values('028','001','40') INSERT INTO 选课(学号,课程号,成绩)values('029','006','45') INSERT INTO 选课(学号,课程号,成绩)values('030','007','0')

数据结构实验答案1

重庆文理学院软件工程学院实验报告册 专业:_____软件工程__ _ 班级:_____软件工程2班__ _ 学号:_____201258014054 ___ 姓名:_____周贵宇___________ 课程名称:___ 数据结构 _ 指导教师:_____胡章平__________ 2013年 06 月 25 日

实验序号 1 实验名称实验一线性表基本操作实验地点S-C1303 实验日期2013年04月22日 实验内容1.编程实现在顺序存储的有序表中插入一个元素(数据类型为整型)。 2.编程实现把顺序表中从i个元素开始的k个元素删除(数据类型为整型)。 3.编程序实现将单链表的数据逆置,即将原表的数据(a1,a2….an)变成 (an,…..a2,a1)。(单链表的数据域数据类型为一结构体,包括学生的部分信息:学号,姓名,年龄) 实验过程及步骤1. #include #include #include #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define ElemType int #define MAXSIZE 100 /*此处的宏定义常量表示线性表可能达到的最大长度*/ typedef struct

{ ElemType elem[MAXSIZE]; /*线性表占用的数组空间*/ int last; /*记录线性表中最后一个元素在数组elem[ ]中的位置(下标值),空表置为-1*/ }SeqList; #include "common.h" #include "seqlist.h" void px(SeqList *A,int j); void main() { SeqList *l; int p,q,r; int i; l=(SeqList*)malloc(sizeof(SeqList)); printf("请输入线性表的长度:"); scanf("%d",&r); l->last = r-1; printf("请输入线性表的各元素值:\n"); for(i=0; i<=l->last; i++) { scanf("%d",&l->elem[i]); } px(l,i); printf("请输入要插入的值:\n");

数据结构实验报告-动态查找表实验报告

数据结构实验报告题目:动态查找表 学院计算机 专业计算机科学与技术年级班别2009级 2 班 学号3109005935 学生姓名黄丽敏 指导教师吴伟民 成绩____________________ 2011年6月

一. 动态查找表: 抽象数据类型动态查找表的定义如下: ADT DynamicSearchTable { 数据对象D:D是具有相同特性的数据元素的集合。各个数据元素均含有类型相同,可唯一标识数据元素的关键字 数据关系R:数据元素同属一个集合。 基本操作P: InitDSTable(&DT); 操作结果:构造一个空的动态查找表DT。 DestroyDSTable(&DT) 初始条件:动态查找表DT存在。 操作结果:销毁动态查找表DT。 SearchDSTable(DT,key); 初始条件:动态查找表DT存在,key为和关键字类型相同的给定值。 操作结果:若DT中存在其关键字等于key的数据元素,则函数值为该元素的值或在表中的位置,否则为“空”。 InsertDSTable(&DT,e); 初始条件:动态查找表DT存在,e为待插入的数据元素。 操作结果:若DT中不存在其关键字等于e.key的数据元素,则插入e到DT。 DeleteDSTable(&DT,key); 初始条件:动态查找表DT存在,key为和关键字类型相同的给定值。 操作结果:若DT中存在其关键字等于key的数据元素,则删除之。 TraverseDSTable(DT,visit()); 初始条件:动态查找表DT存在,visit是对结点操作的应用函数。 操作结果:按某种次序对DT的每个结点调用函数visit()一次且至多一次,一旦visit()失败,则操作失败。 }ADT DynamicSearchTable 二. 存储结构定义: 公用头文件DS0.h和宏定义: #include /* EOF(=^Z或F6),NULL */ #include #define TRUE 1 #define FALSE 0 #define OK 1 #define N 10 /* 数据元素个数 */ typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等 */ typedef int KeyType; /* 设关键字域为整型 */ #define EQ(a,b) ((a)==(b)) #define LT(a,b) ((a)<(b))

实验一数据库及基本表的建立

实验一数据库及基本表的建立 一、实验目的 1、掌握SQL SERVER的查询分析器和企业管理器的使用; 2、掌握创建数据库和表的操作; 二、实验内容和要求 1、练习使用SQL语句、企业管理器(Enterprise Manager)创建数据库; 2、练习使用SQL语句、企业管理器(Enterprise Manager)创建数据库表; 三、实验主要仪器设备和材料 1.计算机及操作系统:PC机,Windows 2000/xp; 2.数据库管理系统:SQL sever 2005; 四、实验方法、步骤及结果测试 题目1、创建数据库“学生情况”: 实现代码及截图: SQL语句 Create database 学生情况 查询分析器执行情况 :SQL语句及执行结果截图显示 找到主数据文件和日志文件,观察大小,并给出截图。

题目2、将数据库“学生情况”改名为“student” SQL语句 EXEC sp_renamedb学生情况, student 查询分析器执行情况: SQL语句及执行结果截图显示 题目3、创建基本表 S表 含义字段名字段类型字段 宽度 说明学号Sno Char10主键,不允许为空姓名Sname char10不允许为空 性别Ssex char2取值为男或女

C表 Sc表: 创建各表的实现代码及截图:

查询分析器执行情况: SQL语句及执行结果截图显示

题目4*、用sql语句将C表中的ccredit改为整型,同样约束为0-20之间 题目5、用sql语句在S表中添加一格“备注”字段remark,变长字符型,长度30,并保存结果

KTV点歌系统广工数据库课程设计

课程设计 课程名称数据库系统 题目名称___ 卡拉OK点歌系统___ 学生学院计算机学院 专业班级 2010级计算机科学与技术四班学号 3110006015 学生姓名张法光 指导教师路璐 2013年1 月12 日成绩

评价标准分数比例 (%) 成绩 论文论文结构包含: 1、相关技术介绍、需求分析、 2、概念结构设计(涉及的实体至少三个以上)、 3、逻辑结构设计(有完整性约束说明)、 4、数据库物理设计、 5、数据库完整性设计(违反实体、参照完整性时的解决办法,比 如触发器、存储过程等) 5、数据库安全性设计、 6、数据库实施、系统测试方案和测试报告、 7、系统的主要功能和使用说明、系统安装说明。 要求论文完整、内容详细,格式规范。 40 程序1、系统运行正确; 2、功能完善:有增、删、改、查功能,输入、输出功能; 3、有基本的统计、报表功能 4、有多表连接查询、自身连接查询、字符串匹配查询、模糊查询、 分组查询等。 5、工作量饱满; 6、系统实现技术的难度。 30 数据库设计E-R图设计正确,至少3个实体; 数据库逻辑结构设计规范化; 数据库物理设计合理。 30 总评成绩优良中及格不及格总分

目录 1 引言 (7) 1.1课题来源 (7) 1.2课题研究主要内容 (7) 1.3主要工作 (8) 2 需求分析 (8) 2.1信息要求分析 (8) 2.2处理要求分析 (8) 2.3数据字典及安全性、完整性要求分析 (9) 3 概念结构设计 (10) 3.1数据实体描述及分ER图 (10) 3.2整体ER图 (13) 4 系统概要设计 (14) 4.1数据库逻辑结构设计 (14) 4.2数据库物理设计 (16) 4.3系统总体框架 (17) 5 系统详细设计 (17) 5.1数据库实施 (17) 5.2数据库的数据完整性设计 (29) 5.3数据的安全设计 (31) 5.4系统功能模块的设计与实现 (31) 5.5系统功能测试 (32) 5.6数据库性能检测与备份设计 (49) 5.7系统安装使用说明 (49) 6 回顾与展望 (50) 7 参考文献 (50)

数据结构实验报告全集

数据结构实验报告全集 实验一线性表基本操作和简单程序 1.实验目的 (1)掌握使用Visual C++ 6.0上机调试程序的基本方法; (2)掌握线性表的基本操作:初始化、插入、删除、取数据元素等运算在顺序存储结构和链表存储结构上的程序设计方法。 2.实验要求 (1)认真阅读和掌握和本实验相关的教材内容。 (2)认真阅读和掌握本章相关内容的程序。 (3)上机运行程序。 (4)保存和打印出程序的运行结果,并结合程序进行分析。 (5)按照你对线性表的操作需要,重新改写主程序并运行,打印出文件清单和运行结果 实验代码: 1)头文件模块 #include iostream.h>//头文件 #include//库头文件-----动态分配内存空间 typedef int elemtype;//定义数据域的类型 typedef struct linknode//定义结点类型 { elemtype data;//定义数据域 struct linknode *next;//定义结点指针 }nodetype; 2)创建单链表

nodetype *create()//建立单链表,由用户输入各结点data域之值,//以0表示输入结束 { elemtype d;//定义数据元素d nodetype *h=NULL,*s,*t;//定义结点指针 int i=1; cout<<"建立一个单链表"<> d; if(d==0) break;//以0表示输入结束 if(i==1)//建立第一个结点 { h=(nodetype*)malloc(sizeof(nodetype));//表示指针h h->data=d;h->next=NULL;t=h;//h是头指针 } else//建立其余结点 { s=(nodetype*) malloc(sizeof(nodetype)); s->data=d;s->next=NULL;t->next=s; t=s;//t始终指向生成的单链表的最后一个节点

2015广工操作系统实验报告(文档最后含源码下载地址)

操作系统实验报告 学生学院____ 计算机学院______ 专业班级13级计科9 学 号 学生姓名 指导教师 李敏 2015年12月29日

实验一进程调度实验 一、实验目的 用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解。 二、实验内容和要求 设计一个有N个进程共行的进程调度程序。要求采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程),时间片轮转算法,多级反馈队列调度算法这三种算法。 每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。 进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为进程输入的时间。进程的运行时间以时间片为单位进行计算。 每个进程的状态可以是就绪W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。 就绪进程获得CPU后都只能运行一个时间片。用已占用CPU时间加1来表示。 如果运行一个时间片后,进程的已占用CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的PCB,以便进行检查。 重复以上过程,直到所要进程都完成为止。 三、实验主要仪器设备和材料 实验环境 硬件环境:IBM-PC或兼容机 软件环境:C++、C语言编程环境 四、实验方法 1、编写并调试一个模拟的进程调度程序,采用“最高优先数优先”调度算法对五个进程进行调度。 “最高优先数优先”调度算法的基本思想是把CPU分配给就绪队列中优先数最高的进程。 静态优先数是在创建进程时确定的,并在整个进程运行期间不再改变。 动态优先数是指进程的优先数在创建进程时可以给定一个初始值,并且可以按一定原则修改优先数。 例如:在进程获得一次CPU后就将其优先数减少1。或者,进程等待的时间超过某一时限时增加其优先数的值,等等。 2、编写并调试一个模拟的进程调度程序,采用“轮转法”调度算法对五个进程进行调度。轮转法可以是简单轮转法、可变时间片轮转法,或多队列轮转法。 简单轮转法的基本思想是:所有就绪进程按FCFS排成一个队列,总是把处理机分配给队首的进程,各进程占用CPU的时间片相同。如果运行进程用完它的时间片后还为完成,就把它送回到就绪队列的末尾,把处理机重新分配给队首的进程。直至所有的进程运行完毕。 3、多级反馈队列调度算法的基本思想是:

数据结构实验报告-答案

数据结构(C语言版) 实验报告

专业班级学号姓名 实验1 实验题目:单链表的插入和删除 实验目的: 了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基本算法及相关的时间性能分析。 实验要求: 建立一个数据域定义为字符串的单链表,在链表中不允许有重复的字符串;根据输入的字符串,先找到相应的结点,后删除之。 实验主要步骤: 1、分析、理解给出的示例程序。 2、调试程序,并设计输入数据(如:bat,cat,eat,fat,hat,jat,lat,mat,#),测 试程序的如下功能:不允许重复字符串的插入;根据输入的字符串,找到相应的结点并删除。 3、修改程序: (1)增加插入结点的功能。 (2)将建立链表的方法改为头插入法。 程序代码: #include"" #include"" #include"" #include"" typedef struct node . . 示意图:

head head head 心得体会: 本次实验使我们对链表的实质了解更加明确了,对链表的一些基本操作也更加熟练了。另外实验指导书上给出的代码是有一些问题的,这使我们认识到实验过程中不能想当然的直接编译执行,应当在阅读并完全理解代码的基础上再执行,这才是实验的意义所在。

实验2 实验题目:二叉树操作设计和实现 实验目的: 掌握二叉树的定义、性质及存储方式,各种遍历算法。 实验要求: 采用二叉树链表作为存储结构,完成二叉树的建立,先序、中序和后序以及按层次遍历 的操作,求所有叶子及结点总数的操作。 实验主要步骤: 1、分析、理解程序。 2、调试程序,设计一棵二叉树,输入完全二叉树的先序序列,用#代表虚结点(空指针), 如ABD###CE##F##,建立二叉树,求出先序、中序和后序以及按层次遍历序列,求 所有叶子及结点总数。 实验代码 #include"" #include"" #include"" #define Max 20 ertex=a; irstedge=NULL; irstedge; G->adjlist[i].firstedge=s; irstedge; R[i] 留在原位

广工_操作系统_实验报告

操作系统实验报告 学院_____计算机学院_______ 专业______软件工程________ 班级______ ________ 学号_____ _______ 姓名_______ _________ 指导教师 (2010年10 月)

学号:姓名:协作者:________ 实验__一__题目__ 进程调度___第周星期___ 一、实验目的 用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解。 二、实验内容和要求 编写并调试一个模拟的进程调度程序,采用“轮转法”调度算法对五个进程进行调度。 ·每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行的时间、已用CPU时间、进程状态等。 ·进程的优先数以及需要的运行时间事先由人为指定(也可以随机数产生)。 ·如果运行一个时间片后进程的已占用CPU时间已达到所需要的运行时间,则撤销该进程,如果还未达到,则把它送回队尾。 三、实验主要仪器设备和材料 实验环境 硬件环境:IBM-PC 或兼容机 软件环境:C语言编程环境 四、实验原理及设计方案 1、实验原理 将程序顺序的输入进程队列后,开始执行程序,当运行了一个时间片后,如果进程所占的CPU时间达到所需的运行时间时,该进程完成,并撤销该进程,否则则把进程送回队尾。 2、设计方案 用一个进程控制块(PCB)表示进程。输入进程名称,优先级,运行时间后,通过模拟系统对进程采用“轮转法”调度,得到各个时间片进程的运行情况。 3、相关数据结构的说明 struct pcb // 定义进程控制块 PCB {

广东工业大学数据库原理与应用试卷答案

广东工业大学试卷用纸,共 页,第 页

广东工业大学试卷用纸,共页,第页

广东工业大学试卷用纸,共页,第页

一、填空(每题1分,共10分) 1、层次模型,网状模型,关系模型 2、逻辑结构设计,物理结构设计 3、原子性,持续性 4、并发调度的可串行性 5、闭包 6、描述事物的符号记录 二、选择题(每题2分,共20分) 三、简答题(每题4分,共16分) 1、解释数据库,数据库系统,数据库管理系统三个概念。 数据库是指长期存储于计算机内的、有组织的、可共享的数据集合。(1分) DBMS是指位于用户与OS之间的一层数据管理软件,它位用户或应用程序提供访问DB的方法。(1分) DBS是实现有组织的、动态的存储大量关联数据、方便多用户访问的计算机硬件、软件和数据资源组成的系统,即采用数据库技术的计算机系统。(2分) 2、试述视图和基本表之间的联系和区别? (1)视图和基本表在概念上等同,他们都是关系。(1分) (2)基本表是本身独立存在的表。视图是从一个或几个基本表(或视图)中导出的表,它与基本表不同,是一个 虚表。数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍然放在原来的基本表中。(3分) 3、数据库的完整性概念与数据库的安全性概念有什么区别和联系? 数据的完整性和安全性是两个不同的概念,但是有一定的联系。 前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出所造成的无效操作和错误结果。(2分) 后者是保护数据库防止恶意的破坏和非法的存取。也就是说,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是不合语义的数据。(2分) 4、什么是封锁?基本的封锁类型有几种,简要说明它们的含义。 封锁就是事务T在对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。(2分)基本封锁类型:排它锁和共享锁。 排它锁又称为写锁:若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁(1分) 共享锁又称为读锁:若事务T对数据对象A加上S锁,则其它事务只能再对A加S锁,而不能加X锁,直到T 释放A 上的S锁。(1分) 四、计算(4分) 1、(R÷S)×S={(2,3,4,5),(2,7,2,3)} 2 广东工业大学试卷用纸,共页,第页

数据结构-树的实现实验报告

数据结构设计性实验报告 课程名称_____ ____ 题目名称 学生学院 专业班级 学号 学生姓名 指导教师 2010 年 7 月 6 日

抽象数据类型:树的实现 一.需求分析 树形结构是一类重要的非线性数据结构,其中以树和二叉树最为常用,直观来看,树是以分支关系定义的内部结构。树的结构在客观世界广泛存在,如人类社会的族谱和各种社会组织机构都可以用树来形象表示。树在计算机领域中也得广泛应用,如在编译程序中,可用树来表示源程序的语法结构,又如在数据库系统中,树形结构也是信息的重要组织形式之一。 二.实验目的 对某个具体的抽象数据类型,运用课程所学的知识和方法,设计合理的数据结构,并在此基础上实现该抽象数据类型的全部基本操作。通过本设计性实验,检验所学知识和能力,发现学习中存在的问题。进而达到熟练地运用本课程中的基础知识及技术的目的。 三.实验环境 1、硬件:PC机 2、软件:Microsoft V isual C++ 6.0 四.设计说明 本程序采用树的二叉链表(孩子指针-兄弟指针-双亲指针)存储表示,以下是树的结构定义和基本操作: ADT Tree{ 数据对象D:D是具有相同特性的数据元素的集合。 数据关系R: 若D为空集,则称为空树; 若D仅含有一个数据元素,则R为空集,否则R={H},H是如下二元关系: (1) 在D中存在唯一的称为根的数据元素root,它在关系H下无前驱; (2) 若D-{root}≠NULL,则存在D-{root}的一个划分D1,D2,D3, …,Dm(m>0),对于任意j ≠k(1≤j,k≤m)有Dj∩Dk=NULL,且对任意的i(1≤i≤m),唯一存在数据元素xi∈Di有∈H; (3) 对应于D-{root}的划分,H-{,…,}有唯一的一个划分H1,H2,…,Hm(m>0),对任意j≠k(1≤j,k≤m)有Hj∩Hk=NULL,且对任意i(1≤i≤m),Hi是Di 上的二元关系,(Di,{Hi})是一棵符合本定义的树,称为根root的子树。 基本操作P: InitTree(&T); 操作结果:构造空树T。 DestroyTree(&T); 初始条件:树T存在。 操作结果:销毁树T。 CreateTree(&T,definition); 初始条件:definition给出树T的定义。 操作结果:按definition构造树T。 ClearTree(&T);

数据库课程设计超市管理系统(广工)

课程名称数据库系统 题目名称小型超市管理系统学生学院计算机学院 专业班级 学号 学生姓名 指导教师 2013 年 1 月

目录 1 引言 (1) 1.1课题来源 (1) 1.2课题研究主要内容 (1) 1.3主要工作 (1) 2 开发工具和平台 (1) 3 命名约定 (1) 4 需求分析 (2) 4.1信息要求分析 (2) 4.2处理要求分析 (2) 5 概念结构设计 (3) 5.1数据实体描述及分ER图 (3) 5.2整体ER图 (3) 6 系统概要设计 (4) 6.1数据库逻辑结构设计 (4) 6.2数据库物理设计 (6) 6.3系统总体框架 (7) 7 系统详细设计 (7) 7.1数据库实施 (7) 7.2数据库的数据完整性设计 (9) 7.3数据的安全设计 (10) 7.4系统功能模块的设计与实现 (11) 7.5系统安装使用说明 (21) 8 回顾与展望 (21) 参考文献 (22)

1 引言 1.1课题来源 到超市购物是一种较为频繁的生活事件。由于人们的超市购物行为越来越频繁,超市规模越来越大,商品种类数目与之俱增,超市商品的管理变得更加困难。显然手工的管理方式是不合适的。因此利用数据库相关技术开发一个规模适当、操作方便、功能完备的超市管理系统显得很有必要。 1.2课题研究主要内容 使用数据库管理系统和应用程序实现小型超市管理系统的商品销售结算,销售情况管理,商品信息管理,库存管理,权限管理等功能。 1.3主要工作 先对小型超市管理系统的设计进行需求分析,建立数据流图和数据字典。进行概念结构设计,作出E-R图并进行优化。进行逻辑结构设计,建立数据关系模型。进行物理结构设计,选择适当的存取方法。利用数据库管理系统按前面的分析设计作出若于基本表,根据应用程序和用户的需要建立视图。最后进行应用程序的设计、调试、运行。 2 开发工具和平台 数据库管理系统:Microsoft SQL Server 2008 程序设计语言:Java 1.6 应用程序开发工具:eclipse 测试平台 Windows 7 64bit 3 命名约定 表名和属性名的首字母大写(虽然SQL语言不分大小写,但设计过程仍遵守这一约定), 1

数据结构实验答案(1)

重庆文理学院软件工程学院实验报告册专业:_____软件工程__ _ 班级:_____软件工程2班__ _ 学号:_____201258014054 ___ 姓名:_____周贵宇___________ 课程名称:___ 数据结构 _ 指导教师:_____胡章平__________ 2013年 06 月 25 日

步骤#define ERROR 0 #define TRUE 1 #define FALSE 0 #define ElemType int #define MAXSIZE 100 /*此处的宏定义常量表示线性表可能达到的最大长度*/ typedef struct { ElemType elem[MAXSIZE]; /*线性表占用的数组空间*/ int last; /*记录线性表中最后一个元素在数组elem[ ]中的位置(下标值),空表置为-1*/ }SeqList; #include "common.h" #include "seqlist.h" void px(SeqList *A,int j); void main() { SeqList *l; int p,q,r; int i; l=(SeqList*)malloc(sizeof(SeqList)); printf("请输入线性表的长度:"); scanf("%d",&r); l->last = r-1; printf("请输入线性表的各元素值:\n");

{ scanf("%d",&l->elem[i]); } px(l,i); printf("请输入要插入的值:\n"); scanf("%d",&l->elem[i]); i++; px(l,i); l->last++; for(i=0; i<=l->last; i++) { printf("%d ",l->elem[i]); } printf("\n"); } void px(SeqList *A,int j) { int i,temp,k; for(i=0;ielem[i]elem[k]) {temp=A->elem[i]; A->elem[i]=A->elem[k]; A->elem[k]=temp; }}

2013广工数据库实验报告

数据库原理实验报告 学院计算机学院 专业计算机科学与技术班级2011 级7 班 学号3111XXXX 姓名XXX 指导教师明俊峰 (2013 年11 月)

计算机学院计算机专业2011(7)班学号:3111 姓名:协作者:________ 教师评定: 实验__一__题目__ 数据库及基本表的建立 _ 实验__二__题目__ 设计数据完整性 __ 实验__三__题目__ 查询数据库 __ 实验平台:SQL Server 2005

计算机学院计算机专业2011(7)班学号:3111 姓名:协作者:________ 教师评定: 实验题目一、数据库及基本表的建立 一、实验目的 1、掌握SQL SERVER的查询分析器和企业管理器的使用; 2、掌握创建数据库和表的操作; 二、实验内容和要求 1、分别使用SQL语句、企业管理器(Enterprise Manager)创建数据库; 2、使用SQL语句、企业管理器(Enterprise Manager)创建数据库表; 三、实验主要仪器设备和材料 1.计算机及操作系统:PC机,Windows 2000/xp; 2.数据库管理系统:SQL sever 2000/2003/2005; 四、实验方法、步骤及结果测试 创建一个教学管理数据库SC,其描述的信息有:学生信息、课程信息、教师信息、学生选课成绩、授课信息、班级信息、系部信息、专业信息。 创建:student表(学生信息表)、course表(课程信息表)、teacher表(教师信息表)、student _course表(学生选课成绩表)、teacher_course表(教师上课课表)等。 1、创建数据库: 确定数据库名称;数据库用于学生管理,命名为SC 确定数据库的位置;要求:数据文件和日志文件分别存储在E盘自己的目录下。 确定数据库的大小;根据实际的数据量确定数据文件的初始大小为30MB,日志文件的初始大小为3MB。 确定数据库的增长;根据实际情况,确定数据文件按20%增长,日志文件按1MB增长。(1)、利用查询分析器(Query Analyzer),使用SQL语句指定参数创建数据库; 1

[精编]数据库课程设计(酒店管理系统)

计算机与通信工程学院 数据库课程设计(酒店 管理系统)

数据库系统课程设计报告题目: 酒店管理系统 课程代号:0680036 课程名称:数据库系统课程设计 学号: 姓名: 班级: 指导教师 完成日期:2011年4月 目录 第一章引言 第二章系统分析与设计 2.1需求分析 2.2结构设计 2.3数据库设计 第三章系统开发及实现

3.1创建主窗体 3.2创建子窗体 3.3建立公共模块 第四章总结 参考文献 附录(附部分源代码) 第一章引言 酒店管理系统是现代服务行业不可缺少的一个组成环节。 酒店管理信息系统是一个由人、计算机和数据库组成的进行酒店经营管理的系统,通过对信息的收集、传递、整理、加工、维护和使用,提高管理水平和效率,从而实现酒店管理的自动化、规范化和人性化。 本文简要介绍了基于Microsoft和VB程序语言开发实现的酒店管理系统,着重阐述了该系统开发实现过程,从系统的需求分析、方案论证、模块设计、数据设计、详细设计到系统测试等各个环节都进行了较为详尽的分析和描述。 关键词:酒店管理系统、Access、数据库、VB 第二章系统分析与设计 2.1需求分析 在进行一个项目的设计之前,首先要进行必要的需求分析。酒店需要管理各种人员和入住信息,希望实现酒店的信息化管理,通过建立一个酒店管理系统来管理酒店的日常业务。其完成功能如下: 1、能够实现对客人的登记信息查询,包括逐个浏览,以及对客人资料的增加、删除和编辑操作。

2、能够的酒店人员值班情况进行管理。 3、管理人员也可以直接增加和删除用户信息。 系统功能模块图如图1所示。 图1系统的功能模块图 根据功能模块图设计划出的实体有散客入住实体、团队入住实体、投诉管理实体、值班管理实体。 散客入住实体E-R如图2所示。 团队入住实体E-R如图3所示 投诉管理实体E-R图如图4所示 值班管理实体E-R图如图5所示 2.2 统Access即可。他们之间的关系如图6所示。

数据结构实验报告及心得体会

2011~2012第一学期数据结构实验报告 班级:信管一班 学号:201051018 姓名:史孟晨

实验报告题目及要求 一、实验题目 设某班级有M(6)名学生,本学期共开设N(3)门课程,要求实现并修改如下程序(算法)。 1. 输入学生的学号、姓名和 N 门课程的成绩(输入提示和输出显示使用汉字系统), 输出实验结果。(15分) 2. 计算每个学生本学期 N 门课程的总分,输出总分和N门课程成绩排在前 3 名学 生的学号、姓名和成绩。 3. 按学生总分和 N 门课程成绩关键字升序排列名次,总分相同者同名次。 二、实验要求 1.修改算法。将奇偶排序算法升序改为降序。(15分) 2.用选择排序、冒泡排序、插入排序分别替换奇偶排序算法,并将升序算法修改为降序算法;。(45分)) 3.编译、链接以上算法,按要求写出实验报告(25)。 4. 修改后算法的所有语句必须加下划线,没做修改语句保持按原样不动。 5.用A4纸打印输出实验报告。 三、实验报告说明 实验数据可自定义,每种排序算法数据要求均不重复。 (1) 实验题目:《N门课程学生成绩名次排序算法实现》; (2) 实验目的:掌握各种排序算法的基本思想、实验方法和验证算法的准确性; (3) 实验要求:对算法进行上机编译、链接、运行; (4) 实验环境(Windows XP-sp3,Visual c++); (5) 实验算法(给出四种排序算法修改后的全部清单); (6) 实验结果(四种排序算法模拟运行后的实验结果); (7) 实验体会(文字说明本实验成功或不足之处)。

三、实验源程序(算法) Score.c #include "stdio.h" #include "string.h" #define M 6 #define N 3 struct student { char name[10]; int number; int score[N+1]; /*score[N]为总分,score[0]-score[2]为学科成绩*/ }stu[M]; void changesort(struct student a[],int n,int j) {int flag=1,i; struct student temp; while(flag) { flag=0; for(i=1;ia[i+1].score[j]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; flag=1; } for(i=0;ia[i+1].score[j]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; flag=1;

数据结构实验一 实验报告

班级:姓名:学号: 实验一线性表的基本操作 一、实验目的 1、掌握线性表的定义; 2、掌握线性表的基本操作,如建立、查找、插入和删除等。 二、实验内容 定义一个包含学生信息(学号,姓名,成绩)的顺序表和链表(二选一),使其具有如下功能: (1) 根据指定学生个数,逐个输入学生信息; (2) 逐个显示学生表中所有学生的相关信息; (3) 根据姓名进行查找,返回此学生的学号和成绩; (4) 根据指定的位置可返回相应的学生信息(学号,姓名,成绩); (5) 给定一个学生信息,插入到表中指定的位置; (6) 删除指定位置的学生记录; (7) 统计表中学生个数。 三、实验环境 Visual C++ 四、程序分析与实验结果 #include #include #include #include #define OK 1 #define ERROR 0 #define OVERFLOW -2

typedef int Status; // 定义函数返回值类型 typedef struct { char num[10]; // 学号 char name[20]; // 姓名 double grade; // 成绩 }student; typedef student ElemType; typedef struct LNode { ElemType data; // 数据域 struct LNode *next; //指针域 }LNode,*LinkList; Status InitList(LinkList &L) // 构造空链表L { L=(struct LNode*)malloc(sizeof(struct LNode)); L->next=NULL;

数据库实验报告大全 广工 蔡延光版

自动化学院自动化专业班学号 姓名实验时间2011.3.14 教师评定 实验题目数据定义 实验报告一 一、实验目的与要求 目的:使用SQL语言实现数据库的创建、删除;基本表的创建、删除、更新工作;以及索引的创建、删除工作。 要求:1、在SQL SERVER 2000查询分析器中,利用SQL语言中CREATE、DROP 命令实现数据库的创建及删除工作。 2、在SQL SERVER 2000查询分析器中,利用SQL语言中CREATE、ALTER及DROP命令进行基本表的创建、更新、删除工作,并实现基本表中各类完整性约束条件的限定。 3、在SQL SERVER 2000查询分析器中,利用SQL语言中CREATE、ALTER及DROP命令进行基本表中索引的创建、更新、删除工作。 4、完成上述工作后,在SQL SERVER 2000企业管理器中,查看是否成功创建实验所要求数据库、基本表、各类完整性约束条件及索引等内容。 二、实验方案 所有实验内容必须在SQL Server 2000的查询分析器中完成,设置查询分析器的结果区为Standard Execute(标准执行)或Executed Grid(网格执行)方式.发布执行命令.并在结果区中查看查询结果,如果结果不正确则需要进行修改,直到正确为止。要求完成如下内容: 1.定义数据库 定义一个借阅数据库,要求所定义的数据库大小为1M,且数据库名称为Labery_学号。 2.定义下列数据库基本表 在所定义的借阅数据库Labery_学号中,按要求定义如下数据库表: 1)书(book)

列名别名类型及长度是否可为空书号bno char(8)否 类别category varchar(10)否 书名title varchar(40)否 出版社press varchar(30)是 年份book_year Int否 作者author char(20)是 价格price decimal(7,2)否 总藏书量book_total Int否 2)借书证(card) 列名别名类型及长度是否可为空卡号cno char(7)否 姓名name char(8)否 单位department varchar(40)是 类别type char(1)否 3)借书记录(borrow) 列名别名类型及长度是否可为空卡号cno char(7)否 书号bno char(8)否 借书日期borrow_date smalldatetime否 还书日期return_date smalldatetime是 3.完整性约束条件: 主要内容为: 1)确定各基本表的主码; 2)确定各基本表的外码; 3)要求在定义各基本表的同时,确定如下完整性约束条件 1、定义各基本表主码,并且要求主属性不能为空; 2、如果有外码,定义各基本表外码; 3、要求检查借书证中属性Type的值是否为('T','G','U','F')); 4、借书记录borrow基本表中borrow_date默认日期为当前时间。4)确定各基本表哪些字段需要建立索引。

学生信息管理系统数据库课程设计

1概述 学生信息管理系统是学校管理的重要工具,是学校不可或缺的部分。随着在校大学生人数的不断增加,教务系统的数量也不断的上涨,。学校工作繁杂、资料众多,人工管理信息的难度也越来越大,显然是不能满足实际的需要,效率也是很低的。并且这种传统的方式存在着很多的弊端,如:保密性差、查询不便、效率低,很难维护和更新等。然而,本系统针对以上缺点能够极大地提高学生信息管理的效率,也是科学化、正规化的管理,与世界接轨的重要条件。所以如何自动高效地管理信息是这些年来许多人所研究的。 随着这些年电脑计算机的速度质的提高,成本的下降,IT互联网大众趋势的发展。我们使用电脑的高效率才处理数据信息成为可能。学生学籍管理系统的出现,正是管理人员与信息数据,计算机的进入互动时代的体现。友好的人机交互模式,清晰简明的图形界面,高效安全的操作使得我们对成千上万的信息的管理得心应手。通过这个系统,可以做到信息的规范管理,科学统计和快速的查询,从而减少管理方面的工作量?毋庸置疑,切实有效地把 计算机管理引入学校教务管理中,对于促进学校管理制度,提高学校教学质量与办学水平有 着显著意义? 2需求与功能分析 学生信息管理系统,可用于学校等机构的学生信息管理,查询,更新与维护,使用方便,易用性强。该系统实现的大致功能:用户登陆。提供了学生学籍信息的查询,相关科目的成绩查询和排名,修改登录密码等功能。教师管理。提供了对学生学籍信息的查询,添加,修改,删除;学生成绩的录入,修改,删除,查询班级排名。修改密码等功能。管理员管理。拥有最高的权限。允许添加教师信息和课程信息等。其提供了简单、方便的操作。 3 概要设计 3.1功能模块图 功能模块图,如下图3.1所示

数据结构上机实验答案

《数据结构实验指导书》答案 实验一: 1、请编写函数int fun(int *a, int *b),函数的功能是判断两个指针a和b所指存储单元的值 的符号是否相同;若相同函数返回1,否则返回0。这两个存储单元中的值都不为0。在主函数中输入2个整数、调用函数fun、输出结果。 #include int fun(int *a, int *b) { if (*a*(*b)>0) return(1); else return(0); } main() { int x,y; scanf("%d%d",&x,&y); if (fun(&x,&y)) printf("yes\n"); else printf("no"); } 2、计算1+2+3+……+100,要求用指针进行设计。即设计函数int fun(int *n)实现求 1+2+3+……+*n,在主函数中输入、调用、输出结果。 #include int fun(int *n) { int i,sum=0; for (i=1;i<=*n;i++) sum+=i; return(sum); } main() { int x,sum; scanf("%d",&x); printf("the sum is %d\n",fun(&x)); } 3、函数的功能是求数组a中最大数的位置(位序号)。在主函数中输入10个整数、调用函

数fun、输出结果。 #define N 10 #include void input(int *a,int n) { int i; for (i=0;i*max) max=a+i; return(max-a); } main() {int a[N],maxi; input(a,N); maxi=fun(a,N); printf("\n the max position is %d\n",maxi); } 4、请编写函数fun(int *a,int n, int *odd, int *even),函数的功能是分别求出数组a中所有奇数之和和所有偶数之和。形参n给出数组中数据的个数;利用指针odd和even分别返回奇数之和和偶数之和。在主函数中输入10个整数、调用函数fun、输出结果。 #define N 10 #include void input(int *a,int n) { int i; for (i=0;i

相关文档
最新文档