软件技术基础实验指导及报告 本文关键词:软件技术,指导,实验,基础,报告
软件技术基础实验指导及报告 本文简介:太原理工大学现代科技学院软件技术基础课程实验报告专业班级通信14-1学号2014101596姓名王晓振指导教师范俊杰软件技术基础实验指导及报告实验说明:1、共5次实验,每次实验完成1个内容。2、实验报告命名统一为:软件_专业班级_学号_姓名3、自备U盘,在实验前认真阅读实验要求,在实验中及时记录保存
软件技术基础实验指导及报告 本文内容:
太原理工大学现代科技学院
软件技术基础课程
实验报告
专业班级
通信14-1
学
号
2014101596
姓
名
王晓振
指导教师
范俊杰
软件技术基础
实验指导及报告
实验说明:
1、
共5次实验,每次实验完成1个内容。
2、
实验报告命名统一为:软件_专业班级_学号_姓名
3、自备U盘,在实验前认真阅读实验要求,在实验中及时记录保存实验结果和调试过程,并填写到实验报告对应位置,实验结束后将该实验报告电子版在指定时间内提交给各班学习委员。
实验一
顺序线性表的插入与删除
1、实验目的:理解和掌握线性表的顺序存储结构,使用C语言根据相应算法编写程序,实现线性表的创建、插入和删除。
2、
实验内容:编写C程序实现
先建立一个长度不小于n
=
8的线性表,输出原始线性表;
然后进行插入运算,在第3个元素前面插入一个新元素b(值为学号后3位),得到一个长度为(n+1)的线性表,输出插入后的线性表;
最后进行删除运算,删除第5个元素,得到长度为n的线性表,输出删除后的线性表。
3、参考程序:
#include
#define
MAXSIZE
20
typedef
struct
{
int
data[MAXSIZE];
int
last;
}List;
void
Init(Listpt)
{
int
i
=
0;
for(i=1;idata[i]
=
i;
pt->last
=
i;
}
}
void
Output(Listpt)
{
int
i,max=pt->last;
printf(“List
have
%d:
/n“,pt->last);
for(i=1;idata[i]);
printf(“/n“);
}
void
InsertL(Listpt,int
i,int
x)
{
int
k;
if(iMAXSIZE-1)
{
printf(“插入位置不合适!/n“);
}
else
if(pt->last>=MAXSIZE-1)
{
printf(“线性表已满!/n“);
}
else
{
for
(k=pt->last;k>=i;k--)
pt->data[k+1]=pt->data[k];
pt->data[i]=x;
pt->last++;
}
}
void
Insert(Listpt)
{
int
position,x;
printf(“please
input
insert
position
and
value:“);
scanf(“%d,%d“,InsertL(pt,position,x);
}
void
DeleteL(Listpt,int
i)
{
int
k;
if(ipt->last)
{
printf(“删除位置不合适!/n“);
}
else
{
for(k=i+1;klast;k++)
pt->data[k-1]=pt->data[k];
pt->last--;
}
}
void
Delete(Listpt)
{
int
position;
printf(“please
input
delete
position:“);
scanf(“%d“,DeleteL(pt,position);
}
int
main()
{
int
int_Insert,int_Delete;
List
L,*pt;
pt
=
Init(pt);
Output(pt);
Insert(pt);
Output(pt);
Delete(pt);
Output(pt);
return
0;
}
4、实验结果:将程序运行结果截屏粘贴至此处。
5、实验总结:(自行改进程序请粘贴至此处)else
{
for
(k=pt->last;k>=3;k--)
pt->data[k+1]=pt->data[k];
pt->data[3]=596;
pt->last++;
}
}
void
Insert(Listpt)
{
int
position,x;
printf(“please
input
insert
position
and
value:“);
scanf(“%d,%d“,InsertL(pt,position,x);
}
void
DeleteL(Listpt,int
i)
{
int
k;
i=6;
if(ipt->last)
{
printf(“删除位置不合适!/n“);
6、其他(自行设计程序请粘贴至此处)
实验二
顺序栈及其操作
1、实验目的:理解和掌握栈数据结构及其顺序存储结构,使用C语言实现栈的相关操作:建立、入栈、退栈和读栈顶元素。
2、实验内容:编写C程序实现
先建立一个容量不小于5的栈;
然后将序列L(L长度为5,起始数为学号后3位,之后每个数加1)中元素依次入栈;
最后进行退栈操作,同时读出栈顶元素并输出,直到栈为空。
3、参考程序:
#include
#define
maxlen
5
int
element[maxlen];
int
top;
int
push(
int
element[],int
max,inttop,int
x
)
{
if
(top
==
max
)
{
printf(“Stack-overflow/n“);
return
-1;
}top
=top
+
1;
element[*top-1]
=
x;
//元素x入栈,只影响top指针
return
0;
}
int
pop(
int
element[],inttop,intx
)
{
if
(*top
==
0)
{
printf(“Stack-underflow/n“);
return
-1;
}x
=
element[*top-1];//x为退栈元素的值top
=top
-
1;
return
0;
}
int
Readtop(int
element[],int
top,intx)
{
if
(
top
==
0
)
{
printf(“Stack-underflow/n“);
return
-1;
}x
=
element[top-1];
return
0;
}
void
CreateStack()
{
top
=
0;
}
int
main()
{
int
r,b,x;
//
CreateStack();
//
while(1)
{
printf(“Push:please
input
push
element
value:“);
scanf(“%d“,r
=
push(element,maxlen,if(r
==
0)
{
printf(“push
Success/n“);
}
else
{
printf(“push
Fail/n“);
break;
}
}
//
while(1)
{
printf(“Read
and
Pop:/n“);
r
=
Readtop(element,top,if(r
==
0)
{
printf(“%d/n“,x);
}
else
{
break;
}
r
=
pop(element,}
return
0;
}
4、实验结果:将程序运行结果截屏粘贴至此处。
5、实验总结:(自行改进程序请粘贴至此处)
由于栈中元素的插入和删除只能在表的同一端即栈顶进行,所以总是后进栈的元素先出来,即栈的后进先出特性,其运算效率相对较高。
6、其他(自行设计程序请粘贴至此处)
实验三
线性链表的插入与删除
1、
实验目的:理解和掌握线性表的链式存储结构,使用C语言根据相应算法编写程序,实现线性链表的创建、插入和删除。
2、
实验内容:编写C程序实现
先建立一个长度不小于n
=
6的线性表,输出原始线性表;
然后进行插入运算,在第3个元素前面插入一个新元素b(值为学号后3位),得到一个长度为(n+1)的线性表,输出插入后的线性表;
最后进行删除运算,删除第5个元素,得到长度为n的线性表,输出删除后的线性表。
3、参考程序:
#include
#include
typedef
struct
node
{
int
data;
struct
nodenext;
}
LinkList;
LinkList*
create()
{
LinkListhead,*p,*q=NULL;
int
x;
head=(LinkList)malloc(sizeof(LinkList));
head->next=NULL;
printf(“请输入结点值,结束输入-1
/n结点值为:/n“);
q=head;
scanf(“%d“,if(x==-1)
return
head;
while(x!=-1)
{p=(LinkList)malloc(sizeof(LinkList));
p->data=x;
q->next=p;
q=p;
scanf(“%d“,}
q->next=NULL;
return
head;
}
void
output(LinkListhead)
{
int
i
=
0;
LinkListp
=
head->next;
printf(“链表元素为:/n“);
while(p
!=
NULL)
{
printf(“%d
“,p->data);
p
=
p->next;
}
printf(“/n“);
}
void
Insert(LinkListhead,int
i,int
x)
{
LinkListp,*s;
int
j=0;
p
=
head;
while((p!=NULL)
j++;
}
if((p==NULL)
||
(j>i-1))
printf(“i值不合法
/n“);
else
{
s
=
(LinkList*)malloc(sizeof(LinkList));
s->data
=
x;
s->next
=
p->next;
p->next
=
s;
}
}
void
Delete(LinkListhead,int
i)
{
LinkListp,*s;
int
j
=
0;
p
=
head;
while((p->next!=NULL)
j++;
}
if((p->next==NULL)
||
(j>i-1))
printf(“i值不合法
/n“);
else
{
s
=
p->next;
p->next
=
s->next;
printf(“删除元素
%d
/n“,s->data);
free(s);
}
}
/*主函数*/
void
main()
{
int
x=0,i=0;
LinkListhead;
printf(“建立链表/n“);
head=create();
output(head);
printf(“/n输入在链表中插入数据的值x:/n“);
scanf(“%d“,printf(“/n输入要插入数据的位置i:/n“);
scanf(“%d“,Insert(head,i,x);
output(head);
printf(“/n输入在链表中删除数据的位置i:/n“);
scanf(“%d“,Delete(head,i);
output(head);
}
4、实验结果:将程序运行结果截屏粘贴至此处。
5、实验总结:(自行改进程序请粘贴至此处)
在线性链表中插入或删除元素时,不需要移动元素,只要找到制定删除节点的钱趋结点,然后改变链接,即只要将待插入或删除结点的指针域内容赋予前趋结点的指针域即可,但为了找到表中第i-1个元素,仍需从表头开始顺链查找。
6、其他(自行设计程序请粘贴至此处)
实验四
有序表的对分查找
1、
实验目的:理解和掌握对分查找的算法及适用条件,并使用C语言实现对分查找。
2、实验内容:编写C程序实现有序表的对分查找算法,要求在顺序存储的长度为n=10的有序线性表中实现对分查找,即查找元素值为x的位置序号k,并能正确输出查找结果,若查找的元素存在,则输出其在线性表中的位置,若不存在,在输出不存在的提示信息。
3、参考程序:
#include
#define
N
10
void
arrayprint(int
array[],int
n)
{
int
i;
for(i=0;ix
)
j
=
k
-
1;
//取前半部分
else
i
=
k
+
1;
//取后半部分
}
return
(-1);
//找不到返回
}
int
main()
{
int
searcharray[N];
int
i,x,position;
for(i=0;i=0
for(i=0;i { printf(“%d “,array[i]); } } void sort(int array[],int n) { int i,j,k,min,temp; for(i=0;i { min=array[i]; k=i; for(j=i+1;j { if(array[j] { min = array[j]; k=j; } } if(i!=k) { temp = array[i]; array[i] = array[k]; array[k] = temp; } arrayprint(array,n); printf(“/n“); } } int main() { int sortarray[N]; int i; for(i=0;i { printf(“please enter integer num for sortarray[%d]:“,i); scanf(“%d“,} printf(“the array before sort is:“); arrayprint(sortarray,N); printf(“/n“); sort(sortarray,N); printf(“the array after sort is:“); arrayprint(sortarray,N); printf(“/n“); return 0; } 4、实验结果:将程序运行结果截屏粘贴至此处。 5、实验总结:(自行改进程序请粘贴至此处) 通过实验得出:选择排序用时相对较多,尤其是当顺序线性表的数据量很大时,其运行过程中步骤多导致花费的时间会很长。 6、其他(自行设计程序请粘贴至此处) int main() { int i,j,tem,min,a[N]; printf(“请输入十个数:“); for(i=0;i { printf(“a[%d]=“,i); scanf(); printf(“/n“); sort(sortarray,N); printf(“the array after sort is:“); arrayprint(sortarray,N); printf(“/n“); return 0; }
篇2:DOT郑大软件技术学院实训方案(校内三个月)
DOT郑大软件技术学院实训方案(校内三个月) 本文关键词:技术学院,校内,实训,方案,郑大
DOT郑大软件技术学院实训方案(校内三个月) 本文简介:火?国家火炬计划中部软件园IT?人才实训基地郑州大学软件技术学院10级本科生DOTNET实训方案(校内三个月)河南惠文软件工程有限公司?国家火炬计划中部软件园IT?人才实训基地地址:郑州市高新区莲花街5号威科姆国际生态软件园2号楼B座三层电话:0371-5517537955932981网址:http
DOT郑大软件技术学院实训方案(校内三个月) 本文内容:
火?国家火炬计划中部软件园IT?人才实训基地
郑州大学
软件技术学院
10级本科生DOTNET实训方案(校内三个月)
河南惠文软件工程有限公司
?国家火炬计划中部软件园IT?人才实训基地
地址:郑州市高新区莲花街5号威科姆国际生态软件园2号楼B座三层
电话:0371-55175379
55932981
网址:http://www.jsfw8.com
惠文实训体系的最大特点是,以实际项目开发为主线,以行业新技术传授为补充,培养企业实用型人才为目的。该实训方案是根据郑州大学软件技术学院提出的实训目标与需求,制定而成。
一、本次实训方案面向对象为
郑州大学软件技术学院10级本科学生
二、实训周期
三个月
三、实训地点
郑大软件学院校内惠文软件实训机房
四、实训岗位方向
DONET软件开发工程师
五、实训目标:
1)
具备软件开发工作所需的知识和技能,编码熟练度和规范性达到一定要求;
2)
具备较高的项目能力(包括调试能力、文档编写能力、测试能力等)和综合技术素质(包括对软件生命周期的理解、对设计模式的理解、必备的行业知识和经验等);
3)
就业岗位:
ASP.NET软件开发工程师、网站开发工程师
六、DOENT实训岗位方向与实训安排
(1)
DONET实训内容
序号
课程名称
内容
1
数据建模设计
数据建模构建与实现的设计方法和实现方法
2
ADO.NET核心技术
ADO.NET数据操纵核心技术
3
HTML表现层设计技术
HTML
+
JavaScript
+
CSS
4
数据提交和数据检索功能模块设计与实现
SQL
SERVER需求分析、数据库设计、代码开发、单元测试、软件工程、UML应用
5
ASP.NET应用技术
C#面向对象分析和设计、服务器控件应用、主题皮肤母板页、水晶报表应用、三层架构设计应用,简单设计模式,AJAX应用
6
企业职业素养
当职场达人的秘密要诀、双赢商务谈判技巧、赢在职场三部曲、企业拓展训练、与IT专家高峰论坛、何谓“职业性”?、
抗困难挫折能力、职业人十项标准……等
7
项目竞标
最终学员所做的项目都是以项目竞标的方式进行(二个以上企业项目)
(2)
DONET实训项目
序号
1
项目名称
银行柜台管理系统
实训目标
熟悉C#基础知道;熟悉OOP面向对象编程技术;简单三层框架应用;简单设计模式应用
实训内容
本项目一套银行储蓄柜台的综合业务平台,它主要实现了储蓄柜台的最常用的功能,用户登录,用户登录后,可以为储户(Client)提供开户,销户,存款,取款,查询、冻结、挂失、转账等功能。
项目周期
3周
序号
2
项目名称
企业新闻管理系统
实训目标
熟练应用Asp.net开发;精通SQL2005在项目中的分析和设计能力;UML应用知识;VSS版本控制技术应用
实训内容
系统的具体功能包含有:系统管理(用户管理,权限管理,数据库管理),企业新闻管理,新闻类别管理,留言管理,招聘信息管理等
项目周期
4周
序号
3
项目名称
通用版CMS管理系统
实训目标
熟悉WEBFORM应用;Oracle数据库在项目中的分析和设计能力;UML应用知识;VSS版本控制技术应用;流行技术的应用
实训内容
采用SQL(ORACLE)数据库,实现拥有文章、图片、下载、问答、论坛/留言、站内调查、友情链接、广告系统、自定义模型、自定义表单等众多丰富的功能模型;同时系统具有灵活的产品架构、严密的安全性!
作简单、上手快、易用性强,一般用户几乎不用培训就可以开始使用。
主要特性:
1、系统采用模块化开发,可自由屏蔽暂时没有用到的功能模型,同时又是一款100%开源的程序,二次开发更方便。
2、系统支持整站生成HTML静态和动态ASP.NET
项目周期
5周
(3)
DONET具体实训安排
时间
内容
所需技术点
项目名称
第一周
系统系统分析、系统面向对象分析与设计
1、C#
OOP思想,面向对象编程应用,文件操作、继承、封装、多态应用,反射、泛型、简单工厂设计模式、序列化数据操作、简单三层应用
2、软件工程
3、企业职业素养
银行柜台管理系统
第二周
系统框架建设、用户登录,用户登录后,可以为储户(Client)提供开户,销户,存款
第三周
冻结、挂失、转账等功能,及测试,项目评审
第四周
系统系统分析、概要设计、功能分析(UML)、(SQL2005)数据库应用
1.UML分析设计技术
2.Asp.net构建用户界面层的方法
3.VSS版本服务器技术/ADO.NET
4.nuint单元测试技术
5、软件工程
6、企业职业素养
企业新闻管理系统
第五周
页面规范要求、Asp.net平台应用、系统权限设计、编码规范
第六周
系统框架搭建(多层架构)、(VSS)版本控制应用、持久层构建
第七周
构建业务逻辑层、业务功能测试、项目整合、项目评审
第八周
CMS功能分析、系统用例设计、ORACLE数据库的应用
1、HTML+CSS+JAVASCRIPT的页面设计
2、Oracle数据库的设计与应用
3、AJAX的应用,ASP.NET常用控件
5、JQUERY在项目中的具体应用
6、ADO.NET操作ORACEL的应用
7、软件工程
8、企业职业素养
通用版CMS管理系统
第九周
构建数据访问层、单元测试、系统架构搭建
第十周
DIV+CSS+Jquery页面设计,构建用户界面层
第十一周
整合表现层和数据访问层实现
第十二周
项目文档整理、项目交付、项目总结、项目评审
项目软件工程所需文档流程
序号
文档名称
1
项目成果
2
可行性分析报告、需求分析报告、项目计划
3
概要设计说明书、数据库设计说明书、界面设计说明书、模块设计说明书
4
编程文档、测试计划、测试说明书、测试记录单、测试报告
5
用户使用手册、项目总结文档、个人总结文档
6
用户可使用系统
7
实训总结报告
七、实训流程安排
(1)
实训入职典礼
i.
院领导参加
ii.
实训中心领导
iii.
项目经理及项目助理参加
iv.
软件企业代表参加
(2)
项目开题
i.
简单介绍项目的项目类型
ii.
简单介绍项目的功能、开发方法、开发流程
iii.
简单介绍项目设计到的技术
iv.
为完成项目对学生进行分组
(3)
项目知识串讲
i.
客户端技术
ii.
服务器技术
i.
ASP.NET
ii.
SqlServer2005
iii.
其它技术
i.
软件开发流程
ii.
软件开发各阶段的工作内容及方法
(4)
项目问题定义
i.
问题定义阶段的工作要点
ii.
可行性分析报告的格式及编写方法
(5)
项目需求讲解
i.
需求分析文档编写要求及编写方法
ii.
项目需求文档讲解
iii.
学生通过角色扮演理解需求
(6)
项目设计讲解
i.
设计流程及设计方法
ii.
项目设计讲解
(7)
项目创建活动
i.
创建活动的一般性原则
ii.
功能代码编写
iii.
单元测试
iv.
每日构建
v.
其它测试
(8)
项目部署及安装
i.
用户手册的制作
ii.
常用部署方法
iii.
用户验收方法
(9)
项目评审
i.
对项目进行评审
ii.
项目经理对项目进行总结
iii.
合理的开发方式
iv.
合理的技术运用
v.
项目成果汇总
(10)
项目阶段总结
i.
项目组总结
ii.
项目组成员个人总结
iii.
总结文档汇总
(11)
项目重构开题
i.
简单讲述产品的开发和为某一企业开发的区别
ii.
讲述产品开发的流程
iii.
讲述项目所开发产品的市场定位、基本功能等产品要求指标
iv.
说明开发产品对开发知识的要求
(12)
项目重构需求分析
i.
说明制定产品规格说明书的过程
ii.
学生查阅相关资料
iii.
学生对相关企业进行调查
iv.
对学生编写需求规格说明书进行指导
v.
需求评审
(13)
项目重构概要设计和数据库设计
i.
复习设计流程及方法
ii.
指导学生进行概要设计和数据库设计
iii.
设计评审
(14)
项目重构模块和界面设计
i.
讲解模块设计和界面设计的一般性方法和要求
ii.
讲述不同企业对模块和界面设计的不同要求
iii.
指导学生完成部分模块和界面设计
(15)
项目重构创建活动
i.
参考项目第一阶段创建活动的流程及要求
ii.
重点1:规范
iii.
重点2:技术的应用
(16)
项目部署及安装
(17)
项目评审
(18)
项目总结
(19)
模拟面试
i.
布置面试环境
ii.
面试前准备活动
iii.
面试
iv.
面试总结
(20)
实训工作总结
(21)
综合实训鉴定
国家火炬计划中部软件园惠文软件IT人才实训基地
2013年6月1日
篇3:软件技术基础综合实验报告
软件技术基础综合实验报告 本文关键词:软件技术,实验,基础,报告,综合
软件技术基础综合实验报告 本文简介:一、实验目的实验3使用Select语句进行数据查询1.观察查询结果,体会SELECT语句实际应用;2.要求学生能够在查询分析器中使用SELECT语句进行简单查询;3.熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法;4.加深对SQL语言的嵌套查询语句的理解;5.熟练掌握数据查询中的分组、
软件技术基础综合实验报告 本文内容:
一、实验目的
实验
3
使用
Select
语句进行数据查询
1.观察查询结果,体会
SELECT
语句实际应用;
2.要求学生能够在查询分析器中使用
SELECT
语句进行简单查询;
3.
熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法;
4.
加深对
SQL
语言的嵌套查询语句的理解;
5.
熟练掌握数据查询中的分组、统计、计算和组合的操作方法。
二、
实验准备
1.
完成实验二,成功建立了基本表;
2.
了解简单
SELECT
语句的用法;
3.
了解
SELECT
语句的
GROUP
BY
和
ORDER
BY
子句的作用;
4.
了解统计函数和分组统计函数的使用方法。
三、实验要求
完成实验,并验收实验结果提交实验报告。
四、实验内容
写出相应的语句。所有的查询全部用
Transact-SQL
语句实现。
1.查询学生的所有信息。
2.查询所有姓‘张’的学生的信息。
3.查询所有姓张的学生的信息,在列标题之间显示
3
行。
4.查询编号“00000001”的姓名信息。
5.查询表“Course”所有信息。
6.查询学生信息前
6
条记录。
7.将“Course”表中字段名做以下修改:
课程编码
替换
CouNo
‘课程名称
替换
CouName
教
师
替换
Teacher
‘上课时间
替换
SchoolTime
限制选课人数
替换
LimitNum
‘报名人数
替换
WIllNum。
8.查询《Linux
操作系统》课程教师信息。
9.查询“Course”表,平均报名人数。
10.查询“Course”表,报名人数与限选人数之比。
11.查询编号
004,007,013
课程名称。
12.查询所有含字母‘D’的课程名程信息。
13.查询所有含‘制作’的课程名称信息。
14.查询所有名字含“宝”的学生信息。
15.查询排除“刘”姓的所有学生信息。
16.查询报名人数小于
15
的课程信息。
17.查询报名人数大于
15
小于
25
的课程信息。
实验代码如下:
1.
select
from
Student
2.
select
from
Student
where
StuName
like
张%
3.
select
top
3
from
Student
where
StuName
like
张%
4.
select
from
Course
5.
select
StuNo,StuName
from
Student
where
StuNo
=
00000001
6.
select
top
6
from
Student
7.
select
课程编码
=
CouNo,课程名称
=CouName,教师
=Teacher,上课时间
=SchoolTime,限制选课人数
=
LimitNum,报名人数
=WillNum
from
Course
8.
select
from
Course
where
CouName=
Linux操作系统
9.
select
最小报名人数
=
min(WillNum),最大报名人数
=MAX(WillNum),平均报名人数
=AVG(Willnum)
from
Course
10.
select,WillNum/LimitNum
报名人数与限选人数之比
from
Course
order
by
WillNum
11.
select
CouName
as
课程名称
from
Course
where
CouNo
in(
004,007,013
)
12.
select
CouName
from
Course
where
CouName
like
%D%
13.
select
CouName
from
Course
where
CouName
like
%制作%
14.
Select
from
Student
where
CouName
like
%宝%
15.
select
from
Student
where
StuName
not
like
刘%
16.
select
from
Course
where
WillNum25
实验总结:
通过本次实验,我学会了使用SELECT
语句进行简单查询;
掌握了简单表的数据查询、数据排序和数据连接查询的操作方法;
加深了对
SQL
语言的嵌套查询语句的理解;
掌握了数据查询中的分组、统计、计算和组合的操作方法。
实验
4
综合实验
【实验目的】
通过一个实际问题的解决,来考察学生对《软件技术基础》相关理论知识掌握程
度。
【实验要求】
1)
掌握
SQL
Server
2005
或(SQL
Server
2008)环境使用;
2)
掌握基本
SELECT
查询及其相关子句的使用;
3)
掌握复杂的
SELECT
查询,如多表查询、子查询、连接和联合查询。
【实验步骤】
1.根据给出实验课题,完成自己的设计,并编程具体实现。
2.完成后举手示意让老师验收。
3.回去后完成自己的实验报告。实验报告中应有实现的
SQL
语句以及遇到的问题
及其解决方案和实验后的心得。
4.在综合设计实验过程中严禁互相讨论交流。
【实验内容】
1.
创建“学生成绩”(XSCJ)数据库。
2.
建立“学生情况”(XSQK)表。
列名
数据类型
长度
是否允许为空值
默认值
说明
学号
Char
6
N
主键
姓名
Char
8
N
性别
Bit
1
N
男
1,女
0
出生日期
smalldatetime
4
N
专业
Char
10
N
所在系
Char
10
N
联系电话
Char
11
Y
3.
输入“学生情况”(XSQK)表记录。
4.
建立“课程”(KC)表。
列名
数据类型
课程号
Char
课程名
Char
教师
Char
开课学期
Tinyint
学时
Tinyint
学分
Tinyint
5.
输入“课程”(KC)表记录
长度
3
20
10
1
1
1
是否允许为空值
N
N
N
默认值
60
说明
主键
课程号
101
102
103
104
105
106
107
108
课程名
计算机原理
计算方法
操作系统
数据库原理及应用
网络基础
高等数学
英语
VB
程序设计
教师
陈红
王颐
徐格
应对刚
吴江江
孙中文
陈刚
赵红韦
开课学期
2
3
2
3
4
1
1
3
学时
45
45
60
75
45
90
90
70
学分
3
3
4
5
3
6
6
5
6.建立“成绩”(XS_KC)表。
列名
数据类型
学号
Char
课程号
Char
成绩
Tinyint
长度
6
3
1
是否允许为空值
N
N
默认值
说明
外键
外键
0
7.输入“成绩”(XS_KC)表记录。
学号
课程号
020101
101
020101
102
020101
107
020102
101
020102
102
020104
107
020202
103
020202
108
020203
103
8.用
SQL
语句,完成以下内容。
成绩
85
87
88
58
63
76
55
80
57
1)
2)
3)
在
KC
表中查询学分低于
3
的课程信息,并按课程号升序排列。
在
XS_KC
表中按学号分组汇总学生的平均分,并按平均分的降序排列。
在
XS_KC
表中查询选修了
3
门以上课程的学生学号。
4)
5)
6)
7)
8)
9)
按学号对不及格的成绩记录进行明细汇总。
分别用子查询和连接查询,求
107
号课程不及格的学生信息。
用连接查询在
XSQK
表中查询住在同一寝室的学生,即其联系电话相同
查询
XSQK
表中所有的系名。
查询有多少同学选修了课程。
查询有多少同学没有选课。
10)
查询与杨颖同一个系的同学姓名。
11)
查询选修了课程的学生的姓名、课程名与成绩。
12)
统计每门课程的选课人数和最高分。
13)
统计每个学生的选课门数和考试总成绩,并按选课门数的降序排列。
代码如下:
建立数据库:
create
database
XSCJ
on
(name=StdData1,filename=
E:/DB/XSCJData.mdf,size=5,maxsize=30,filegrowth=5%)
log
on
(name=StdLog1,filename=
E:/DB/XSCJLog.ldf,size=1,maxsize=5,filegrowth=1)
USE
XSCJ
CREATE
TABLE
XSQK
(
学号
char(6)
not
null
PRIMARY
KEY,姓名
char(8)
not
null,性别
bit
not
null,出生日期
smalldatetime
not
null,专业
char(10)
not
null,所在系
char(10)
not
null,联系电话
char(11)
)
INSERT
INTO
XSQK
VALUES(
020101,杨颖,0,1980-7-20,计算机应用,计算机,88297147
);
INSERT
INTO
XSQK
VALUES(
020102,方露露,0,1981-1-15,计算机应用,计算机,88297147
);
INSERT
INTO
XSQK
VALUES(
020103,俞奇军,1,1980-2-20,信息管理,计算机,88297151
);
INSERT
INTO
XSQK
VALUES(
020104,胡国强,1,1980-11-7,信息管理,计算机,88297151
);
INSERT
INTO
XSQK
VALUES(
020105,薛冰,1,1981-3-10,水利工程,水利系,88297152
);
INSERT
INTO
XSQK
VALUES(
020201,秦盈飞,0,1980-9-15,电子商务,经济系,88297161
);
INSERT
INTO
XSQK
VALUES(
020202,董含静,0,1980-8-7,电子商务,经济学,88297062
);
INSERT
INTO
XSQK
VALUES(
020203,陈伟,1,19807-20,电子商务,经济系,88297171
);
INSERT
INTO
XSQK
VALUES(
020204,陈新江,1,1981-1-15,房建,水利系,88297171
);
CREATE
TABLE
KC
(
课程号
char(3)
not
null
primary
key,课程名
char(20)
not
null,教师
char(10),开课学期
tinyint,学时
tinyint
default
60,学分
tinyint
not
null,)
INSERT
INTO
KC
VALUES(
101,计算机原理,陈红,2,45,3)
INSERT
INTO
KC
VALUES(
102,计算方法,王颐,3,45,3)
INSERT
INTO
KC
VALUES(
103,操作系统,徐格,2,60,4)
INSERT
INTO
KC
VALUES(
104,数据库原理及应用,应对刚,3,75,5)
INSERT
INTO
KC
VALUES(
105,网络基础,吴江江,4,45,3)
INSERT
INTO
KC
VALUES(
106,高等数学,孙中文,1,90,6)
INSERT
INTO
KC
VALUES(
107,英语,陈刚,1,90,5)
INSERT
INTO
KC
VALUES(
108,VB程序设计,赵红韦,3,70,5)
CREATE
TABLE
XS_KC
(
学号
char(6)
not
null,课程号
char(3)
not
null,成绩
tinyint,/*primary
key(学号,课程),*/
CONSTRAINT
C1
CHECK(成绩>=0
and
成绩=3
4.
SELECT
学号
as
不及格学生学号,课程名,成绩
FROM
XS_KC,KC
WHERE
(成绩<60
and
XS_KC.课程号=KC.课程号)
5.
SELECT
XSQK.*,课程名,成绩
FROM
XSQK,KC,XS_KC
WHERE
(
XSQK.学号=XS_KC.学号
and
XS_KC.课程号=KC.课程号
and
XS_KC.课程号=
107
and
成绩<60)
SELECT
XSQK.*
FROM
XSQK
WHERE
学号
IN
(
SELECT
学号
From
XS_KC
where
(课程号=
107
and
成绩<60)
)
6.
SELECT
A.*
FROM
XSQK
A,XSQK
B
WHERE
(A.联系电话=B.联系电话
AND
A.学号!=B.学号)
7.
SELECT
所在系
AS
系名
FROM
XSQK
GROUP
BY
所在系
8.
select
COUNT(DISTINCT
XS_KC.学号)
as
已选修人数
from
XS_KC
9.
select
(COUNT(DISTINCT
XSQK.学号))-COUNT(DISTINCT
XS_KC.学号)
as
未选课人数
from
XSQK,XS_KC
10.
select
姓名,课程名,成绩
from
XSQK,XS_KC,KC
where(XSQK.学号=XS_KC.学号
and
XS_KC.课程号=
KC.课程号)
11.
SELECT
姓名
as
与杨颖同系的学生
FROM
XSQK
WHERE
所在系
IN
(
select
所在系
from
XSQK
where
姓名=
杨颖
)
and姓名!=
杨颖
12.
select
XS_KC.课程号,课程名,MAX(成绩)
as
最高分,COUNT(DISTINCT
学号)
as
选课人数
from
XS_KC,KC
where(XS_KC.课程号=KC.课程号)
GROUP
BY
XS_KC.课程号,课程名
13.
select
姓名,sum(成绩)
AS
考试总成绩,COUNT(
XS_KC.学号)
as
选课门数
from
XSQK,XS_KC
where(XSQK.学号=XS_KC.学号)
GROUP
BY
XSQK.学号,姓名
实验总结:通过本次实验,我掌握了多表查询、子查询、连接和联合查询等sql查询方法,能够熟练使用SQL
Server
2008进行建立、更新、查询数据库等简单操作,熟悉基本的SQL查询语法,加深了对数据库管理系统的理解。