计算机软件技术基础实验报告

实验七 SQL 简单查询、连接查询和子查询

一、实验目的

1.掌握在查询分析器中使用SELECT语句进行简单查询。

2.熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。

3.熟练掌握数据查询中的分组、统计、计算和组合的操作方法。

4.观察查询结果, 体会SELECT语句实际应用

二、实验用软件和工具

1.计算机。实验软件 VC++ 6.0

2.SQL Server2005软件。

三、实验步骤

1 简单查询操作

此部分查询包括投影、选择条件表达、数据排序、使用临时表等。

对EDUC(shiyan6)数据库实现以下查询:

(1)求信电学院的学生学号和姓名;

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

(3)求选修C1 课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列;

(4)求选修课程C1 且成绩在80-90 之间的学生学号和成绩,并将成绩乘以系数0.75 输出;

(5)求计算机系和数学系的姓张的学生的信息;

(6)求缺少了成绩的学生的学号和课程号。

2 连接查询操作

对EDUC(shiyan6)数据库实现以下查询:

(1)查询每个学生的情况以及他(她)所选修的课程;

(2)求学生的学号、姓名、选修的课程名及成绩;

(3)求选修C1 课程且成绩在90 分以上的学生学号、姓名及成绩;

(4)查询每一门课的间接先行课。

3.子查询操作,在数据库EDUC(shiyan6)中实现查询:

(1)求选修了高等数学的学生学号和姓名;

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

(3)求其他系中比计算机系某一学生年龄小的学生信息(即求其它系中年龄小于计算机系年龄最大者的学生);

(4)求其他系中比计算机系学生年龄都小的学生信息;

(5)求选修了C2 课程的学生姓名;

(6)求没有选修C2 课程的学生姓名;

(7)查询选修了全部课程的学生的姓名;

(8)求至少选修了学号为“S2”的学生所选修的全部课程的学生学号和姓名。

4.使用子句的查询操作,在数据库EDUC(shiyan6)中实现查询:

(1)求学生的总人数。

(2)求选修了课程的学生人数。

(3)求课程的课程号和选修该课程的人数。

(4)求选修课超过3 门课的学生学号

四、实验程序与程序运行结果

1实验准备 建立基本表,打开基本表,添加如下数据。

实验数据

2 查询操作实现参考

1 简单查询操作

此部分查询包括投影、选择条件表达、数据排序、使用临时表等。

对EDUC(shiyan6)数据库实现以下查询:

(1)求信电学院 (IS)的学生学号和姓名;

select sno,sname

from student

where sdept='IS'

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

select sno

from student_course

where cno IS NOT NULL

(3)求选修101 课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列;

select  sno,score

from student_course

where cno='101'

ORDER BY score DESC,sno

(4)求选修课程101 且成绩在80-90 之间的学生学号和成绩,并将成绩乘以系数0.75 输出;

select  sno,score*0.75

from student_course

where cno='101' AND (score<=90 AND score>=80)

(5)求计算机系(CS)和数学系(MS)的姓张的学生的信息;代码如下:

SELECT *

FROM  student

where (sdept='CS' OR sdept='MS' )AND sname LIKE '张%'

(6)求缺少了成绩的学生的学号和课程号。

SELECT sno,cno

FROM  student_course

where score IS NULL

2连接查询操作

(1)查询每个学生的情况以及他(她)所选修的课程;

SELECT student.sno,sname,sex,sage,sdept

FROM  student, student_course

where student_course.sno=student.sno

(2)求学生的学号、姓名、选修的课程名及成绩;

SELECT student.sno,sname,course.cname,student_course.score

FROM  student,course,student_course

where student_course.sno=student.sno and student_course.cno= course.cno

(3)求选修102 课程且成绩在90 分以上的学生学号、姓名及成绩;

SELECT student.sno,sname,score

FROM student, student_course

WHERE cno='102' AND score>90 and student_course.sno=student.sno

(4)查询间接先行课。

SELECT first.cno,second.spno

FROM course first, course second

WHERE first.spno= second.cno and second.spno is not NULL

4.使用子查询操作,在数据库EDUC(shiyan6)中实现查询:

(1)求选修了高等数学的学生学号和姓名;代码如下:

SELECT student.sno,sname

from student,course,student_course

where student.sno=student_course.sno AND student_course.cno=course.cno

AND course.cname='高等数学'

(2)求101 课程的成绩高于张楠的学生学号和成绩;代码如下:

SELECT  DISTINCT student_course.sno,score

from course,student_course,student

where student_course.cno = '101' AND score > SOME( SELECT score

from student_course

where student.sname='张楠')

(3)求其他系中比计算机系某一学生年龄小的学生信息(即求其它系中年龄小于计算机系年龄最大者的学生)

SELECT *

FROM student

where sage<some(select max(sage)

from student

where sdept='CS'

)

(4) 求选修了102 课程的学生姓名;

select  sname

from    student

where    sno in (select sno from student_course where cno='102')

五、实验心得与体会

    通过本次上机实验,我掌握简单表的数据查询、数据排序和数据连接查询的操作方法,以及数据查询中的分组、统计、计算和组合的操作方法,对数据库的基础操作加深理解,应用上面只是尚有不足的地方,今后需要更加努力。

 

第二篇:软件技术基础课程实验报告样例


软件技术基础实验报告

      管理学院                      

       工业工程                     

      肖航                  

       3009209022                  

20##46

实验一 C++简单程序设计

一、      实验目的

1.   熟悉用Visual C++6.0的开发环境。

2.         练习用Visual C++6.0编写简单的C++程序。

3.         练习基本数据类型的使用。

4.   练习表达式和运算符的应用。

5.   练习简单的输入/输出。

二、      程序源代码


U1t7(4)

#include <iostream.h>

int main(){

int a,b,c,d;

a=10000;

b=a/3600;

c=a/60%60;

d=a%60;

cout<<b<<endl;

cout<<c<<endl;

cout<<d<<endl;

return 0;

}

U1t7(5)

#include <iostream.h>

int main(){

    int a,b,c,d;

    cin>>a;

    b=a%10;

    c=a/10%10;

    d=a/100;

    cout<<"b="<<b<<endl;

    cout<<"c="<<c<<endl;

    cout<<"d="<<d<<endl;

    return 0;

}


实验二 选择语句和循环语句的使用

一、    实验目的

1.         能够使用if语句和if/else语句来选择动作。

2.         能够使用switch选择语句的多重选择。

3.   能够使用while循环语句、do-while循环语句和fore循环语句完成重复的动作。

4.         能够使用break和continue程序控制语句。

5.   理解结构化程序设计

二、    程序源代码


U2t3

#include <iostream.h>

int main(){

    int n,y;

    cin>>n;

    if(n>0)

       y=n+1;

    else

       if(n<0)

           y=n*n;

       else

           y=0;

       cout<<y<<endl;

       return 0;

}

U2t4

#include <iostream.h>

int main(){

    float score;

    cout<<"输入成绩(0-100)";

    cin>>score;

    if(score<0||score>100)

       cout<<"输入错!\n";

    else

       if(score>=90)

           cout<<"A\n";

           else

              if(score>=80)

                  cout<<"B\n";

              else

                  if(score>=60)

                  cout<<"C\n";

                  else

                  cout<<"D\n";

                  return 0;

}

U2t5

#include <iostream.h>

void main(){

    int x;

    cout<<"输入一个字符:";

    cin>>x;

    if(x>=0&&x<=9)

       cout<<"数字"<<endl;

    else

       if(x>='a'&&x<='z')

           cout<<"小写字母"<<endl;

       else

           if(x>='A'&&x<='Z')

              cout<<"大写字母"<<endl;

           else

              cout<<"其他字符"<<endl;

}

U2t6

#include <iostream.h>

int main(){

    int n,i;

    double x,u,pi;

    n=i=1;

    x=0.0;

    u=1.0;

    do{

       u=i/n;

       x=x+u;

       i=i*(-1);

       n=n+2;

    }while(u<1.0e-6&&u>-1.0e-6);

    pi=4*x;

    cout<<"pi="<<pi<<endl;

    return 0;

}

U2t8

#include <iostream.h>

void main(){

    int x,y,z,m,n,sum;

    char a,e,i,o,u,p;

    x=y=z=m=n=0;

    cout<<"输入一串字符:";

    cin>>p;

    switch(p){

    case a:x++;

    case e:y++;

    case i:z++;

    case o:m++;

    case u:n++;

    case #;break;

    }

       sum=x+y+z+m+n;

       cout<<x<<y<<z<<m<<n<<endl;

       cout<<"sum="<<sum<<endl;

    }

U2t10

#include <iostream.h>

void main(){

    for(int a=1,long p=1;a<=5;a++)

       p*=a;

    for(int b=1,long q=1;b<=6;b++)

       q*=b;

    for(int c=1,long r=1;c<=7;c++)

       r*=c;

    int d;

    d=p+q+r;

    cout<<d<<endl;

}

U2t11

#include <iostream.h>

void main(){

    int count=1;

    for(int i=3;count<=100;i++)

       for(int m=2;m<i;m++)

           if(i%m!=0){

           cout<<i<<" ";

           count++;

           }

}

U2t12

#include <iostream.h>

void main(){

    for(int x=0;x<=20;x++)

       for(int y=0;y<=33;y++)

           for(int z=0;z<=300;z++)

              x+y+z=100&&5x+3y+z/3=100;

           cout<<"x="<<x<<endl;

           cout<<"y="<<y<<endl;

           cout<<"z="<<z<<endl;

}


三、    个人小结

简述你认为最有收获的几道编程题的解题算法的设计思路。

以及任何你想说明的其他问题。

    多注意循环语句的嵌套,分清外循环和内循环的次序,在编程过程中缕清思路。对于switch语句的运用,语法部分要记清楚,以免出现错误导致程序紊乱。

实验三 数组与指针的使用

一、    实验目的

1.         掌握如何定义数组,初始化数组以及引用数组中的单个元素。

2.         掌握字符串数组的组织和处理。

3.         能够定义和使用多维数组。

4.         掌握指针的使用方法。

5.         理解指针、数组和字符串之间的密切关系。

6.         练习动态内存分配实现动态数组,并体会指针在其中的作用

二、    程序源代码


 U3t1

       #include <iostream.h>

void main(){

    int a[10],amax,amin,sum(0);

    cout<<"输入10个整数";

    for(int i=0;i<10;i++){

       cin>>a[i];

       sum+=a[i];

    }

    i=0;

    amax=amin=a[0];

    while(i++<9){

       if(a[i]>amax) amax=a[i];

       if(a[i]<amin) amin=a[i];

    }

    double average;

    average=sum/10;

    cout<<"最大值=:"<<amax<<endl;

    cout<<"最小值=:"<<amin<<endl;

    cout<<"算数平均值=:"<<average<<endl;

}

U3t3

    #include <iostream.h>

void main(){

    char str[100];

    int m(0),na(0),ni(0);

    cout<<"输入一个字符串:";

    cin>>str;

    while(str[m]!='\0'){

       if(str[m]=='a') na++;

       if(str[m]=='i') ni++;

       m++;

    }

    cout<<"字符串:"<<str<<endl;

    cout<<"a字符个数:"<<na<<endl;

    cout<<"i字符个数:"<<ni<<endl;

}

   

U3t5

        #include <iostream.h>

void main(){

    int a[11]={2,4,5,8,12,14,16,18,20,30},x,*p;

    cout<<"输入一个整数:";

    cin>>x;

    p=a; p=x;

    int i,j,temp;

    for(i=0;i<11;i++){

       for(j=0;j<11-i-1;j++)

           if(a[j]>a[j+1]){

              temp=a[j+1];

              a[j+1]=a[j];

              a[j]=temp;

           }

    }

    cout<<"插入后数组:";

    for(i=0;i<11;i++)

       cout<<a[i]<<" ";

    cout<<endl;

}

U3t6

  #include <iostream.h>

void main(){

    int array[5][3]={{1,9,6},{5,14,12},{0,56,12},{20,30,40},{50,11,12}},x,y,z,m,n,temp;

    for(int j=0;j<3;j++){

       x+=array[0][j];

       y+=array[1][j];

       z+=array[2][j];

       m+=array[3][j];

       n+=array[4][j];

    }

    int data[]={x,y,z,m,n};

    for(int i=0;i<5;i++){

       for(int a=0;a<5-1-i;a++)

           if(data[a]>data[a+1]){

              temp=data[a];

              data[a]=data[a+1];

              data[a+1]=temp;

           }

    }

    cout<<"排序结果:";

    cout<<"每行之和:"<<x<<" "<<y<<" "<<z<<" "<<m<<" "<<n<<" ";

       for(i=0;i<5;i++)

           cout<<data[i]<<" ";

       cout<<endl;

}                                      


三、    个人小结

注意数组和指针的运用区别以及指针的灵活性,对于求特定数值的方法要记牢并熟练掌握,为今后更深入的学习打下基础。

相关推荐