数据库实验报告(河北工业大学)
河北工业大学-数据结构实验报告-基于哈夫曼编码的通信系统的设计与实现
基于哈夫曼编码的通信系统的设计与实现一、实验目的(1)掌握二叉树的存储结构及其相关操作。
(2)掌握构造哈夫曼树的基本思想,及其编码/译码过程。
二、实验内容利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。
但是,这要求在发送端通过一个编码系统对待传输数据预先编码,在接收端将传来的数据进行译码。
对于双工信道,每端都需要一个完整的编/译码系统。
试为这样的信息收发站设计一个基于哈夫曼编码的通信系统。
一个完整的系统应具有以下功能1)初始化处理:建立通信系统(1)建立有100句中文的信息集合,每个句子称为一条信息。
(2)输入编码参数:①从终端输入编码字符集大小n,字符编码长度m(设n为4,m为8);②从终端输入编码字符(设为A,B,C,D);(3)生成每条信息的字符编码,构造字符编码集合;(4)计算每个字符编码集合中出现的概率;(5)根据字符概率构造哈夫曼树,求出每个字符的二进制编码。
2)发送端信息编码(1)用户从信息集合中选择一条信息,找到该信息对应的字符编码;(2)根据该信息的字符编码,哈夫曼树求出的每个字符的二进制编码,构造出该信息的二进制编码,记录二进制比编码。
3)接受端信息译码(1)根据得到的信息的二进制编码,利用哈夫曼树求出每个字符的二进制编码还原出信息的字符编码;(2)根据信息的字符编码,找到对应的信息。
三、源程序代码#include<stdio.h>#include<malloc.h>#include<stdlib.h>char *codechar;int ncodechar,lcodechar;int *arraychar[100];char *temp;float *proba;char pass[50];int passl;struct node{float pro;int num;struct node* p;struct node* lc;struct node* rc;char *res;int length;}*hc;char message[100][20]={{"人之初"}, {"性本善"}, {"性相近"}, {"习相远"}, {"苟不教"}, {"性乃迁"},{"教之道"}, {"贵以专"}, {"昔孟母"}, {"择邻处"}, {"子不学"}, {"断机杼"},{"窦燕山"}, {"有义方"}, {"教五子"}, {"名俱扬"}, {"养不教"}, {"父之过"},{"教不严"}, {"师之惰"}, {"子不学"}, {"非所宜"}, {"幼不学"}, {"老何为"},{"玉不琢"}, {"不成器"}, {"人不学"}, {"不知义"}, {"为人子"}, {"方少时"},{"亲师友"}, {"习礼仪"}, {"香九龄"}, {"能温席"}, {"孝于亲"}, {"所当执"},{"融四岁"}, {"能让梨"}, {"弟于长"}, {"宜先知"}, {"首孝弟"}, {"次见闻"},{"知某数"}, {"识某文"}, {"一而十"}, {"十而百"}, {"百而千"}, {"千而万"},{"三才者"}, {"天地人"}, {"三光者"}, {"日月星"}, {"三纲者"}, {"君臣义"},{"父子亲"}, {"夫妇顺"}, {"曰春夏"}, {"曰秋冬"}, {"此四时"}, {"运不穷"},{"曰南北"}, {"曰西东"}, {"此四方"}, {"应乎中"}, {"曰水火"}, {"木金土"},{"此五行"}, {"本乎数"}, {"曰仁义"}, {"礼智信"}, {"此五常"}, {"不容紊"},{"稻粱菽"}, {"麦黍稷"}, {"此六谷"}, {"人所食"}, {"马牛羊"}, {"鸡犬豕"},{"此六畜"}, {"人所饲"}, {"曰喜怒"}, {"曰哀惧"}, {"爱恶欲"}, {"七情具"},{"匏土革"}, {"木石金"}, {"丝与竹"}, {"乃八音"}, {"高曾祖"}, {"父而身"},{"身而子"}, {"子而孙"}, {"自子孙"}, {"至玄曾"}, {"乃九族"}, {"人之伦"},{"父子恩"}, {"夫妇从"}, {"兄则友"}, {"弟则恭"}} ;int zifushengcheng();int probability();int huffman();int Exchange(struct node *a,struct node *b);int Exchangenum(int *a,int *b);int Exchangepoint(struct node **a,struct node ** b);int produce(struct node *a,int *b);int sent();int receive();int main(){int i;char t;printf("初始化通讯系统:\n请输入编码字符集大小n,字符编码长度m(以n m格式来输入):\n");scanf("%d %d",&ncodechar,&lcodechar);codechar=(char *)malloc(sizeof(char)*ncodechar);proba=(float *)malloc(sizeof(float)*ncodechar);for(i=0;i<ncodechar;i++){proba[i]=0;}for(i=0;i<100;i++){arraychar[i]=(int *)malloc(sizeof(int )*lcodechar);}hc=(struct node*)malloc(sizeof(struct node)*(ncodechar*2-1));temp=(char *)malloc(sizeof(char)*(ncodechar));printf("请输入编码字符(以A B C D的格式来输入):\n");for(i=0;i<ncodechar;i++){scanf("%c",&t);if(t=='\n'||t==' '){i--;continue;}codechar[i]=t;}zifushengcheng();probability();huffman();sent();receive();return 1;}int sent(){int i,j,k,x;printf("\n--------------------------------发送方------------------------------------\n");for(i=0;i<100;i++){printf("%d:",i+1);for(j=0;j<20;j++){printf("%c",message[i][j]);}printf(" 相应的字符编码:");for(k=0;k<lcodechar;k++){printf("%c",codechar[arraychar[i][k]]);}printf("\n");}printf("请从以上100条信息中选择发送的信息,输入你的信息号:");scanf("%d",&x);printf("你选择发送的信息是:");for(j=0;j<20;j++){printf("%c",message[x-1][j]);}printf("\n相应的字符编码是:");for(i=0;i<lcodechar;i++){printf("%c",codechar[arraychar[x-1][i]]);}printf("\n根据哈夫曼树得到的哈夫曼编码是:");for(i=0;i<lcodechar;i++){for(j=0;j<ncodechar*2-1;j++){if(arraychar[x-1][i]==hc[j].num){for(k=0;k<hc[j].length;k++){printf("%c",hc[j].res[k]);pass[passl]=hc[j].res[k];passl++;}}}}return 1;}int receive(){int i,j,k=0,m;int *get=(int *)malloc(sizeof(int)*lcodechar);printf("\n--------------------------------接收方------------------------------------\n接收到的哈夫曼编码是:");for(i=0;i<passl;i++){printf("%c",pass[i]);}i=0;while(i!=lcodechar){for(j=0;(j<ncodechar*2-1);j++){for(m=0;m<hc[j].length;m++,k++){if(hc[j].res[m]!=pass[k]){break;}}if(m==hc[j].length){get[i]=hc[j].num;i++;break;}k=k-m;}}printf("\n根据哈夫曼树转换出的字符编码为:\n");for(i=0;i<lcodechar;i++){printf("%c",codechar[get[i]]);}for(i=0;i<100;i++){for(j=0;j<lcodechar;j++){if(get[j]!=arraychar[i][j])break;}if(j==lcodechar){printf("\n字符编码转换后得到的信息是:\n");for(k=0;k<20;k++){printf("%c",message[i][k]);}break;}}printf("\n接收结束,谢谢使用!");return 1;}int zifushengcheng(){int i,j=0,k=0,yushu,x;int *b[100];for(i=0;i<100;i++){b[i]=(int *)malloc(sizeof(int)*lcodechar);for(j=0;j<lcodechar;j++){b[i][j]=0;}for(i=0;i<100;i++){x=i;do{yushu=x%ncodechar;x=(int)(x/ncodechar);b[i][j]=yushu;j++;}while(x!=0);for(j=ncodechar-1;j>=0;j--,k++){arraychar[i][k]=b[i][j];}j=0;k=0;}for(i=0;i<100;i++){for(j=ncodechar;j<lcodechar;j++){arraychar[i][j]=rand()%ncodechar;}}/*for(i=0;i<100;i++){for(j=0;j<lcodechar;j++){printf("%d ",arraychar[i][j]);}printf(" ");for(j=0;j<lcodechar;j++){printf("%c",codechar[arraychar[i][j]]);}printf("\n");}*/return 1;}int probability(){for(i=0;i<100;i++){for(j=0;j<lcodechar;j++){for(k=0;k<ncodechar;k++){if(arraychar[i][j]==k){proba[k]++;}}}}printf("随机生成的字符编码概率:\n");for(i=0;i<ncodechar;i++){proba[i]=proba[i]/(100*lcodechar);printf("%c:%f ",codechar[i],proba[i]);}return 1;}int huffman(){int i,j,k,l=0;for(i=0;i<(ncodechar*2-1);i++){hc[i].lc=NULL;hc[i].rc=NULL;hc[i].p=NULL;hc[i].num=i;if(i<ncodechar){hc[i].pro=proba[i];continue;}hc[i].pro=0;}for(i=0;i<ncodechar-1;i++){for(j=i*2;j<(ncodechar+i);j++){for(k=j+1;k<(ncodechar+i);k++){if(hc[k].pro<hc[j].pro&&hc[k].pro!=0){Exchange(&hc[k],&hc[j]);}}}hc[i+ncodechar].pro=hc[i*2].pro+hc[i*2+1].pro;hc[i+ncodechar].lc=&hc[i*2];hc[i+ncodechar].rc=&hc[i*2+1];hc[i*2].p=&hc[i+ncodechar];hc[i*2+1].p=&hc[i+ncodechar];}printf("\n构造的哈夫曼树:");for(i=0;i<ncodechar*2-1;i++){printf("\nchar:%c num:%d pro:%f",codechar[hc[i].num],hc[i].num,hc[i].pro);printf(" lc:");if(hc[i].lc==NULL){printf(" ");}else{printf("%d,",hc[i].lc->num);}printf(" rc:");if(hc[i].rc==NULL){printf(" ");}else{printf("%d,",hc[i].rc->num);}printf(" p:");if(hc[i].p==NULL){printf(" ");}else{printf("%d,",hc[i].p->num);}}produce(&hc[ncodechar*2-2],&l);printf("\n生成的哈夫曼编码是:");for(i=0;i<ncodechar*2-1;i++){printf("\nchar:%c num:%d length:%d code:",codechar[hc[i].num],hc[i].num,hc[i].length);for(j=0;j<hc[i].length;j++){printf("%c",hc[i].res[j]);}}return 1;}int produce(struct node*a,int *b){int i;a->length=(*b);a->res=(char *)malloc(sizeof(char)*(*b));for(i=0;i<(*b);i++){a->res[i]=temp[i];}if(a->lc!=NULL&&a->rc!=NULL){temp[(*b)]='0';(*b)++;produce((a->lc),b);temp[(*b)]='1';(*b)++;produce((a->rc),b);}(*b)--;return 1;}int Exchange(struct node*a,struct node*b){float t;t=a->pro;a->pro=b->pro;b->pro=t;Exchangenum(&a->num,&b->num);Exchangepoint(&a->p,&b->p);Exchangepoint(&a->lc,&b->lc);Exchangepoint(&a->rc,&b->rc);return 1;}int Exchangepoint(struct node **a,struct node ** b) {struct node *t;t=*a;*a=*b;*b=t;return 1;}int Exchangenum(int *a,int *b){int t;t=*a;*a=*b;*b=t;return 1;}参考至《百度文库》四、结果分析本次实验是学习编程以来接触的最大程序,参考了较多相关源文件,对c语的函数引用有了更深刻的了解,初步掌握了二叉树的存储结构及其相关操作。
数据库实验报告
数据库实验报告实验1.1(1)CREATE TABLE CUSTOMER(CID CHAR(8)UNIQUE,CNAME CHAR(20),CITY CHAR(8),DISCNT INT,PRIMARY KEY(CID))CREATE TABLE AGENTS(AID CHAR(8)UNIQUE,ANAME CHAR(20),CITY CHAR(8), PERCENTS FLOAT,PRIMARY KEY(AID))CREATE TABLE PRODUCTS(PID CHAR(8)UNIQUE,PNAME CHAR(20),PRIMARY KEY(PID))(2)CREATE TABLE ORDERS(ORDNA CHAR(8)UNIQUE,MONTH INT,CID CHAR(8),AID CHAR(8), PID CHAR(8),QTY INT,DOLLARS FLOAT,PRIMARY KEY(ORDNA), FOREIGN KEY(CID)REFERENCES CUSTOMER,FOREIGN KEY(AID)REFERENCES AGENTS,FOREIGN KEY(PID)REFERENCES PRODUCTS)(3)ALTER TABLE PRODUCTS ADD CITY CHAR(8) ALTER TABLE PRODUCTS ADD QUANTITY INT ALTER TABLE PRODUCTS ADD PRICE FLOAT(4)CREATE INDEX XSNO ON CUSTOMER(CID) CREATE INDEX XSNO ON AGENTS(AID) CREATE INDEX XSNO ON PRODUCTS(PID) CREATE INDEX XSNO ON ORDERS(ORDNA)(5)DROP INDEX CUSTOMER.XSNO DROP INDEX AGENTS.XSNO DROP INDEX PRODUCTS.XSNODROP INDEX ORDERS.XSNO实验1.2(1)SELECT*FROM COURSES(2)SELECT SID FROM CHOICES(3)SELECT CID FROM COURSES WHERE HOUR<88(4)SELECT SID FROM CHOICES GROUP BY SID HAVING SUM(SCORE)>400(5)SELECT COUNT(CID)FROM COURSES(6)SELECT CID,COUNT(SID)FROM CHOICES GROUP BY cid(7)SELECT SID FROM CHOICES WHERE score>60 GROUP BY sid HAVING COUNT(CID)>2(8)SELECT SID,COUNT(CID),AVG(SCORE)FROM CHOICES GROUP BY sid(9)SELECT STUDENTS.sid,SNAME FROM STUDENTS,CHOICES,COURSESWHERE STUDENTS.sid=CHOICES.sid AND CHOICES.cid=COURSES.cid AND ame='Java'(10)SELECT CHOICES.sid,CHOICES.score FROM CHOICES,STUDENTS WHERE sname='sssht'AND CHOICES.sid=STUDENTS.sid SELECT CID,SCORE FROM CHOICES WHERE sid IN(SELECT STUDENTS.sid FROM STUDENTS WHERE SNAME='sssht')(11)SELECT AME FROM COURSES AS C1,COURSES AS C2WHERE C1.hour>C2.hour AND ame='C++'(12)SELECT SID,SNAME FROM STUDENTS WHERE sid IN(SELECT C1.SID FROM CHOICES AS C1,CHOICES AS C2WHERE C1.score>C2.score AND C1.cid=C2.cidAND C2.sid=(SELECT sid FROM STUDENTS WHERE sname='znkoo') AND C1.cid=(SELECT cid FROM COURSES WHERE cname='C++'))(13)SELECT SNAME FROM STUDENTS WHERE grade IN(SELECT grade FROM CHOICES WHERE sid IN('883794999','850955252'))(14)SELECT SNAME FROM STUDENTS WHERE sid NOT IN (SELECT SID FROM CHOICES WHERE cid=(SELECT cid FROM COURSES WHERE cname='Java'))(15)SELECT*FROM COURSES WHERE hour<=ALL(SELECT hour FROM COURSES)(16)SELECT CHOICES.tid,CID FROM CHOICES WHERE NOT EXISTS(SELECT*FROM TEACHERS WHERE TEACHERS.salary>=(SELECT salary FROM TEACHERS WHERE TEACHERS.tid=CHOICES.tid))(17)SELECT SID FROM CHOICES WHERE score= (SELECT MAX(SCORE)FROM CHOICES WHERE cid=( SELECT cid FROM COURSES WHERE cname='ERP'))(18)SELECT CNAME FROM COURSES WHERE cid NOT IN(SELECT cid FROM CHOICES)(19)SELECT CNAME FROM COURSES WHERE cid=SOME(SELECT cid FROM CHOICES WHERE TID=SOME(SELECT TID FROM COURSES,CHOICES WHERE cname='UML'AND COURSES.cid=CHOICES.cid))(20)SELECT SNAME FROM STUDENTS WHERE NOT EXISTS(SELECT*FROM CHOICES AS C1WHERE NOT EXISTS(SELECT*FROM CHOICES AS C2WHERE C2.sid=STUDENTS.sid AND C2.cid=C1.cid AND C2.tid='200102901'))(21)SELECT SID FROM CHOICES,COURSES WHERE COURSES.CID=CHOICES.cidAND ame='database'UNIONSELECT SID FROM CHOICES,COURSES WHERE COURSES.cid= CHOICES.cid AND ame='UML'(22)SELECT X.SID FROM CHOICES AS X,CHOICES AS YWHERE (X.cid=(SELECT cid FROM COURSES WHERE cname='database')AND Y.cid=(SELECT cid FROM COURSES WHERE cname='UML')) AND X.sid=Y.sid(23)SELECT X.SID FROM CHOICES AS X,CHOICES AS YWHERE (X.cid=(SELECT cid FROM COURSES WHERE cname='database'))AND X.sid=Y.sidAND NOT(Y.cid=(SELECT cid FROM COURSES WHERE cname= 'UML'))实验1.3(1)INSERT INTO STUDENTS(sid,sname)VALUES('800022222','WangLan')(2)INSERT INTO TEACHERSVALUES('200001000','LXL','s4zrch@','3024')(3)UPDATE TEACHERSSET salary=4000WHERE tid='200010493'(4)UPDATE TEACHERSSET salary=2500WHERE salary<2500(5)UPDATE CHOICESSET tid=(SELECT tid FROM TEACHERS WHERE tname='rnupx') WHERE tid='200016731'(6)UPDATE STUDENTSSET grade=2001WHERE sid='800071780'(7)DELETE FROM COURSESWHERE cid NOT IN(SELECT cid FROM CHOICES GROUP BY cid)(8)DELETE FROM STUDENTSWHERE grade<1998(9)DELETE FROM STUDENTS WHERE sid NOT IN(SELECT sid FROM CHOICES GROUP BY sid)(10)DELETE FROM CHOICES WHERE score<60实验1.4(1)CREATE VIEW VIEWC AS(SELECT CHOICES.no,CHOICES.sid,CHOICES.tid,ame, CHOICES.score FROM CHOICES,COURSESWHERE CHOICES.cid=COURSES.cid)(2)CREATE VIEW VIEWS ASSELECT CHOICES.no,STUDENTS.sname,CHOICES.tid,CHOICES.cid, CHOICES.score FROM CHOICES,STUDENTSWHERE CHOICES.sid=STUDENTS.sid(3)CREATE VIEW S1(SID,SNAME,GRAGE)ASSELECT STUDENTS.sid,STUDENTS.sname,STUDENTS.grade FROM STUDENTSWHERE grade>1998(4)SELECT*FROM VIEWS WHERE SNAME='uxjof'(5)SELECT SID,SCORE FROM VIEWC WHERE CNAME='UML'(6)INSERT INTO S1VALUES('60000001','Lily',2001)(7)CREATE VIEW S2(SID,SNAME,GRADE)AS SELECT SID,SNAME,GRADE FROM STUDENTS WHERE GRADE>1998WITH CHECK OPTIONINSERT INTO S2VALUES('60000001','Lily',1997)DELETE FROM S2WHERE GRADE=1999(8)UPDATE VIEWSSET SCORE=SCORE+5WHERE SNAME='uxjof'(9)DROP VIEW VIEWCDROP VIEW VIEWSDROP VIEW S1实验1.5(1)GRANT SELECT ON STUDENTS TO PUBLIC(2)GRANT SELECT,UPDATE ON COURSES TO PUBLIC(3)GRANT SELECT,UPDATE(SALARY)ON TEACHERS TO USER1 WITH GRANT OPTION(4)GRANT SELECT,UPDATE(SCORE)ON CHOICES TO USER2(5)CREATE VIEW TV AS SELECT TID,TNAME,EMAIL,SALARY FROM TEACHERS GRANT SELECT ON TV TO USER2(6)GRANT SELECT ON TEACHERS TO USER2WITH GRANT OPTION(7)GRANT SELECT ON TEACHERS TO USER3WITH GRANT OPTIONGRANT SELECT ON TEACHERS TO USR2WITH GRANT OPTION(8)REVOKE SELECT ON TEACHERS FROM USER1CASCADE(9)REVOKE SELECT,UPDATE ON COURSES FROM USER1,USER2实验1.6(1)SELECT CID,HOUR*18 FROM COURSES(2)选修C++的人数:SELECT COUNT(*)FROM CHOICESWHERE cid='10005'不及格人数:SELECT COUNT(*)FROM CHOICESWHERE score<60 AND cid='10005'及格人数:SELECT COUNT(*)FROM CHOICESWHERE score>=60 AND cid='10005'(3)NULL:SELECT COUNT(*)FROM CHOICESWHERE score IS NULL AND cid='10005'(4)SELECT DISTINCT SCORE FROM CHOICES WHERE cid=(SELECT cid FROM COURSES WHERE cname='C++')ORDER BY score(5)SELECT DISTINCT GRADE FROM STUDENTS GROUP BY grade(6)SELECT AVG(SCORE),COUNT(*),MAX(SCORE),MIN(SCORE) FROM CHOICES GROUP BY cid(7)SELECT GRADE FROM STUDENTS WHERE grade>=ALL(SELECT grade FROM STUDENTS)(8)SELECT COUNT(*)FROM S,T WHERE T.TID=S.SID实验2.1(1)USE SchoolCreate Table Class(Class_id varchar(4),name varchar(10),Department varchar(20) constraint PK_Class Primary key (Class_id))(2)USE SchoolBegin Transaction T3insert into Class values('00001','01CSC','CS')Begin Transaction T4insert into Class values('00001','01CSC','CS')Commit Transaction T4Commit Transaction T3实验2.2(1)USE Schoolcreate table Stu_Union(sno char(5)NOT NULL UNIQUE, sname char(8),ssex char(1),sage int,sdept char(20),constraint PK_Stu_Union PRIMARY KEY(sno));insert into Stu_Union values('10000','王敏','1',23,'CS'); update Stu_Union set sno=''where sdept='CS';UPDATE Stu_Union SET sno='95002'WHERE sname='王敏'; select*from Stu_Union;USE Schoolset xact_abort onbegin transaction T1insert into Stu_Union values('95009','李勇','M',25,'EE'); insert into Stu_Union values('95003','王浩','0',25,'EE'); insert into Stu_Union values('95005','李勇','0',25,'EE'); select*from Stu_Unioncommit transaction T1use Schoolinsert into Stu_Union values('10001','李勇','0',24,'EE'); select*from Stu_Union;create table Course(cno char(4)NOT NULL UNIQUE,cname varchar(50)not null,cpoints int,constraint PK PRIMARY KEY(cno));insert into Course values('0001','Computernetworks',2); insert into Course values('0002','Database',3);create table SC(sno char(5)references Stu_Union(sno)on delete cascade, cno char(4)references Course(cno)on delete cascade, grade int,constraint PK_SC PRIMARY KEY(sno,cno));(2)(3)①create table help(sid char(8),sname varchar(20),help_id char(8)NOT NULL constraint PK_help primary key(sid))②alter table helpadd constraint FK_help foreign key(help_id)references help(help_id)(4)①create table leader(sid char(9),sname varchar(20),myleader char(9)constraint PK_leader primary key(sid))②create table monitor(sid char(9),sname varchar(20),mymonitor char(9)constraint PK_monitor primary key(sid)constraint FK_monitor foreign key(mymonitor)references Leader(sid) )alter table leaderadd constraint FK_leader foreign key(myleader)references Monitor(sid)实验2.3(1)USE SchoolAlter table workerAdd constraint U3check(sage>=0);(2)USE SchoolGocreate rule rule_sage as@value between 1 and 100GoExec sp_bindrule rule_sage,'worker.[sage]';实验2.4(1)USE Schoolgocreate trigger T4on workerfor insertasif(select sage from inserted)<=(select max(sage)from worker)beginprint'The sage of couple must be more than the existed couples`sage!' rollback transactionEnd(2)USE schoolGoCreate trigger T5on workerFor updateasif(select sage from inserted)<=(select sage from deleted)Beginprint'The sage of new couple must be more than the sage of old couple!' rollback transactionEnd实验3.1(1)Exec sp_addlogin'王二','123','school'Gouse SchoolGoExec sp_grantdbaccess'王二'(2)use Schoolexec sp_revokedbaccess'王二'exec sp_droplogin'王二'实验3.3(1)use Schoolgocreate view grade2000asselect*from STUDENTS where grade='2000';(2)use Schoolgogrant select on grade2000to王二。
数据库实验报告(通用3篇)
数据库实验报告(通用3篇)数据库试验报告篇1一、实训时间:20_年5月13日至5月24日二、实训地点:三、实训目的与意义:1,这次实习可以使我们在课本上学到的学问用于实践增加了我对电脑技巧的一些认知。
2,通过这次实习也可以让我体验到上班族的生活为我将来毕业后找工作打下了基础。
3,并且这次实习可以非常好的关心我完成将来的毕业论文。
四、实训感悟:还依旧记得来的第一天对这里很茫然,不知道实习要做些什么。
然后经过老师的急躁讲解,熟悉了自己实习要做些什么,得到了许多心理熟悉,对许多问题都有了一些更深的了解。
同时,我熟识了河北玛世电子商务有限公司,总部位于国家命名的“中国丝网之乡”、“中国丝网产业基地”、中国丝网产销基地“、”中国丝网出口基地“—河北省安平县。
使我们队公司有了更进一步的了解实习,就是在实践中学习。
经过这半个月的实习训练,我了解到自己所学的如何在实践中运用。
当然学的更多的是如何在更新网站内容和添加商品,每天不厌其烦的更新添加,观察自己的胜利更多的是兴奋。
还有发布了一些关于公司产品的博客,比如新浪,网易。
而后又尝试在百度知道上提问与回答,在回答问题的过程中,通过网站搜寻相关内容来回答各种丝网问题,通过百度知道这个平台,我对公司又了更一步的了解。
经过半个月的实训我学到了许多之前没有学过没有接触到的东西,熟悉到自己的不足,需要更加努力,才能尽快的学会在社会上生活,敢于面对社会的压力,使自己可以在社会上成长进展。
数据库试验报告篇2由于平常接触的都是一些私人项目,这些项目大都是一些类库,其他人的沟通相对可以忽视不计,因此也就不考虑规范化的文档。
实际上从学习的经受来看,我们接触的学问体系都是属于比较老或比较传统的,与现在进展快速的IT行业相比许多状况已不再适用,尤其是当开源模式渐渐走近开发者后更是如此。
虽然这次是一个数据库课程设计,由于本人在选择项目的时候是本着对自己有实际应用价值的角度考虑的,所以其中也涉及到一些数据库以外的设计。
河北工业大学数据挖掘实验报告
实验一数据预处理一、实验目的1、熟悉 VC++编程工具和完全数据立方体构建、联机分析处理算法。
2、浏览拟被处理的的数据,发现各维属性可能的噪声、缺失值、不一致性等,针对存在的问题拟出采用的数据清理、数据变换、数据集成的具体算法。
3、用 VC++编程工具编写程序,实现数据清理、数据变换、数据集成等功能。
4、调试整个程序获得清洁的、一致的、集成的数据,选择适于全局优化的参数。
5、写出实验报告。
二、实验原理1、数据预处理现实世界中的数据库极易受噪音数据、遗漏数据和不一致性数据的侵扰,为提高数据质量进而提高挖掘结果的质量,产生了大量数据预处理技术。
数据预处理有多种方法:数据清理,数据集成,数据变换,数据归约等。
这些数据处理技术在数据挖掘之前使用,大大提高了数据挖掘模式的质量,降低实际挖掘所需要的时间。
2、数据清理数据清理例程通过填写遗漏的值,平滑噪音数据,识别、删除离群点,并解决不一致来“清理”数据。
3、数据集成数据集成将数据由多个源合并成一致的数据存储,如数据仓库或数据立方体。
4、数据变换通过平滑聚集,数据概化,规范化等方式将数据转换成适用于数据挖掘的形式。
5、数据归约使用数据归约可以得到数据集的压缩表示,它小得多,但能产生同样(或几乎同样的)分析结果。
常用的数据归约策略有数据聚集、维归约、数据压缩和数字归约等。
三、实验内容和步骤1、实验内容1、用VC++编程工具编写程序,实现数据清理、数据变换、数据集成等功能,并在实验报告中写出主要的预处理过程和采用的方法。
2、产生清洁的、一致的、集成的数据。
3、在试验报告中写明各主要程序片段的功能和作用。
2、实验步骤1)仔细研究和审查数据,找出应当包含在你分析中的属性或维,发现数据中的一些错误、不寻常的值、和某些事务记录中的不一致性。
2)进行数据清理,对遗漏值、噪音数据、不一致的数据进行处理。
例如:1、日期中的缺失值可以根据统一的流水号来确定。
2、购买的数量不能为负值。
数据库实验报告(合工大)
设计数据库、数据表并编程实现一、实验目的通过“数据库系统概论”书本知识学习和“数据库原理与应用”课程教学所授知识对“教学管理系统”的实验内容进行分析,通过建立数据库、数据表、数据视图以及触发器,利用SQL结构化查询语言提供的数据操纵功能,设计实现对数据的定义、修改、删除、查询、更新以及控制等操作,并按照实验指导书的各项要求完成实验内容。
二、实验内容(1)根据实验建议所示,建立“学生管理”数据库。
(2)建立数据表的方法,建立五个相关的数据表。
完成数据库的建立并定义各表的完整性约束条件。
分别使用企业管理器和SQL 语言来实现。
(3)熟练掌握并应用SQL中的数据表定义、删除和修改等操作命令;(4)熟练掌握为各表常用字段建立索引,以提高数据检索效率。
create database 学生管理;create table student ( sno Char(9),sname Char(10) not null,sbirthday Datetime,ssex Char(2) check(ssex in ('男','女')),sclass Char(20),sremark Char(100),address Char(40),zipcode Char(6),phone Char(15),email Char(40), primary key(sno) );create table course ( cno char(6) primary key,cname char(20),cpno char(6),ctime Numeric(2),credit Numeric(2),foreign key(cpno)references course(cno));create table score(sno char(9), cno char(6),primary key(sno,cno),foreign key(sno)references student(sno),foreign key(cno)references course(cno),score Numeric(3));create table teacher( Tno char(20) primary key,Tname char(20) ,Tsex Char(2) check(Tsex in ('男','女')),Department char(15),tbirthday Datetime);create table Teaching(Tno char(20),cno char(6),tdate datetime,classroom char(10),sclass char(20),primary key(Tno,cno),foreign key(Tno)references teacher(Tno),foreign key(cno)references course(cno));设计数据插入、修改、删除、查询和视图等操作并编程实现一、实验目的(1)熟练掌握数据更新语句,灵活地操作插入数据、修改数据和删除数据;(2)熟练掌握关系数据库中的完整性概念的应用;(3)掌握单表查询的基本方法;(4)掌握多表连接查询的基本方法;(5)熟练掌握以下练习,并进行以下各类查询:①选择表中的若干列、查询全部列、查询经过计算的值;②选择表中的若干元组,即消除取值重复的行与查询满足指定条件的元组(包括:比较大小、确定范围、确定集合、字符匹配、涉及空值和多种条件查询);③对查询结果排序;④使用集函数;⑤对查询结果分组(6)熟练掌握以下练习,并进行下列各类连接查询:①等值与非等值连接查询;②自身连接;③外连接;④复合条件连接;(7)掌握嵌套查询的基本方法;(8)掌握集合查询的基本方法;(9)熟练掌握查询视图操作(10)熟练掌握更新视图操作(11)熟练关系的完整性概念,领会视图的用途(12)练习以下各类查询:①带有IN谓词的子查询;②带有比较运算符的子查询;③带有ANY或ALL谓词的子查询;④带有EXISTS谓词的子查询;⑤视图查询与更新操作;二、实验内容根据以下给定的部分数据表信息,分别对student, course, score, teacher, teching 表进行数据插入以及根据题目要求用SQL语句实现。
河北工业大学-数据结构实验报告-约瑟夫环问题实验报告
实验一:约瑟夫环问题一.实验目的:要求设计一个程序模拟约瑟夫环问题过程,求出出列编号序列。
二.实验内容:约瑟夫环问题:设编号为1,2,3,……,n的n(n>0)个人按顺时针方向围坐一圈,每个人持有一个正整数密码。
开始时任选一个正整数做为报数上限m,从第一个人开始顺时针方向自1起顺序报数,报到m是停止报数,报m的人出列,将他的密码作为新的m值,从他的下一个人开始重新从1报数。
如此下去,直到所有人全部出列为止。
令n最大值取30。
要求设计一个程序模拟此过程,求出出列编号序列。
三.实验过程:用一个不带头结点的循环链表来处理Josephu 问题:先构成一个有n个结点的单循环链表,然后由k结点起从1开始计数,计到m时,对应结点从链表中删除,把被删除结点的密码作为新的m值,然后再从被删除结点的下一个结点又从1开始计数,直到最后一个结点从链表中删除算法结束。
#include<stdio.h>#include<stdlib.h>#define MAX_NODE_NUM 30#define TRUE 1#define FALSE 0typedef struct NodeType{ int number;int password;struct NodeType *next;} NodeType;/* 创建单向循环链表*/static void CreaList(NodeType **, const int);/* 运行"约瑟夫环"问题*/static void StatGame(NodeType **, int);/* 打印循环链表*/static void PrntList(const NodeType *);/* 得到一个结点*/static NodeType *GetNode(const int, const int);/* 测试链表是否为空, 空为TRUE,非空为FALSE */static unsigned EmptyList(const NodeType *);int main(void){ int n, m;NodeType *pHead=NULL;while(1){printf("输入总的人数n(<=%d):",MAX_NODE_NUM);scanf("%d",&n);printf("初始循环的密码为:");scanf("%d",&m);if(n>MAX_NODE_NUM){printf("数字太大,请重新输入!\n");continue;}elsebreak;}CreaList(&pHead,n);printf("\n打印出原始每个结点的序列号和密码\n"); PrntList(pHead);printf("\n最终每个结点退出的序列号和密码\n"); StatGame(&pHead,m);return 0;}static void CreaList(NodeType **ppHead, const int n){int i,iCipher;NodeType *pNew, *pCur;for(i=1;i<=n;i++){printf("第%d个人的密码为:",i);scanf("%d", &iCipher);pNew=GetNode(i,iCipher);if(*ppHead==NULL){*ppHead=pCur=pNew;pCur->next=*ppHead;}else{pNew->next=pCur->next;pCur->next=pNew;pCur=pNew;}}printf("已完成结点初始化!\n");}static void StatGame(NodeType **ppHead, int iCipher){int iCounter, iFlag=1,i=1;NodeType *pPrv, *pCur, *pDel;pPrv=pCur=*ppHead;while(pPrv->next!=*ppHead)pPrv=pPrv->next;while(iFlag){for(iCounter=1;iCounter<iCipher;iCounter++){pPrv=pCur;pCur=pCur->next;}if(pPrv==pCur)iFlag=0;pDel=pCur;pPrv->next=pCur->next;pCur=pCur->next;iCipher=pDel->password;printf("第%d个退出的是序列号为%d的人,其密码为:%d\n",i, pDel->number,pDel->password);free(pDel);++i;}*ppHead=NULL;}static void PrntList(const NodeType *pHead){const NodeType *pCur=pHead;if (EmptyList(pHead))return;do{printf("第%d 个人,密码:%d\n",pCur->number,pCur->password);pCur=pCur->next;} while (pCur!=pHead);}static NodeType *GetNode(const int iId,const int iCipher){NodeType *pNew;pNew=(NodeType *)malloc(sizeof(NodeType));if(!pNew){printf("错误,内存不足!\n");exit(-1);}pNew->number=iId;pNew->password=iCipher;pNew->next=NULL;return pNew;}static unsigned EmptyList(const NodeType *pHead){if(!pHead){printf("列表为空!\n");return TRUE;}return FALSE;}参考至“百度文库”《C语言约瑟夫环问题》收获:学会了创建循环链表及相关操作,巩固了线性链表的知识。
数据库原理综合实验报告
实验六数据库原理综合实验1实验目的(1)运用所学的数据库设计技术,针对一个具体的应用系统,完成系统数据库的概念模型、逻辑模型和物理模型的设计。
以巩固理论课程上所学的知识,更好地掌握数据库设计技术方法。
(2)对前面章节所学的知识加以综合应用。
2实验内容给定一个应用环境,如学生选课系统、超市管理系统、某企业库存管理系统、学校图书管理系统、学校综合积分管理系统等等。
(同学们课从上述选定一个题目,也可以选取一个自己较熟悉的应用环境)。
完成下面的工作2.1 数据库概念模型设计(1)进行需求分析。
-对系统的语义进行描述(包括功能、所需的数据及他们之间的关系和处理方法)(2)识别系统中的实体及实体的属性,分析实体之间的联系。
(3)设计数据库概念模型,画出E-R图。
2.2 数据库逻辑模型设计(1)根据数据库概念模型设计数据库的逻辑模型。
-将E-R模型转化到逻辑模型(2)根据应用需要和规范化理论对逻辑模型进行优化。
2.3 数据库物理模型设计(1)针对某种DBMS,设计数据库物理模型,包括表空间、表和索引等于物理存储有关的设计。
(2)优化物理模型(3)生成某种DBMS的SQL语句,创建数据库及其表。
2.4 装载数据(1)收集真实数据或者生成模拟数据。
(2)批量加载数据到数据库中。
(3)设计一系列SQL语句,尤其是连接查询、嵌套查询等SQL语句,以测试数据库性能。
3实验要求(1)可以借助POWERDESIGNER等系统分析与设计辅助工具进行数据库设计,也可以使用WORD文件直接生成各种设计文档。
(2)选择的数据库应用系统应该规模适中,不宜太大太复杂,可能做不完;也不宜太小太简单,甚至仅有三两个表组成。
(3)要设计良好的数据库完整性约束。
(4)思考题:数据库设计通常由哪些辅助工具?各有哪些优缺点?4实验步骤4.1 数据库概念模型设计(1)进行需求分析。
学生需要有学号、姓名、性别、年龄、专业等信息。
选课需要有学号、课号、成绩等信息课程需要有课程号、课程名、先修课、学分等信息(2)设计数据库概念模型,画出E-R图。
数据库实验报告(全)
实验报告学院:计算机与信息学院专业:年级:姓名:学号:实验室号:计算机号:实验日期:年月日指导教师签字:成绩:报告退发(订正、重做)实验一数据库的定义实验1、实验目的熟练掌握和使用SQL Server企业管理器创建数据库、表、索引和修改表结构,并学会使用SQL Server 查询分析器接收Transact-SQL语句和进行结果分析。
2、实验仪器(环境):计算机及SQL Server 20003、实验操作方法:依照实验指导书的内容进行实验。
4、报告内容:(1)通过企业管理器,建立图书借阅数据库;(2)在建好的图书借阅数据库中建立图书、读者和借阅3个表,其结构为:图书(书号,类别,出版社,作者,书名,定价,作者)读者(编号,姓名,单位,性别,电话)借阅(书号,读者编号,借阅日期)要求为属性选择合适的数据类型,定义每个表的主码,是否允许空值和默认值等列级数据约束。
;(3)指出图书读者数据库各表的主码、外码和数据约束;(4)实验操作步骤和实验结果用截图显示出来。
实验报告学院:计算机与信息学院专业:年级:姓名:学号:实验室号:计算机号:实验日期:年月日指导教师签字:成绩:报告退发(订正、重做)实验二数据库的建立和维护实验1、实验目的熟练掌握使用SQL、Transact-SQL和SQL Server企业管理器向数据库输入数据、修改数据和删除数据的操作。
2、实验仪器(环境):计算机及SQL Server 20003、实验操作方法:依照实验指导书的内容进行实验。
4、报告内容:(1)以一条记录为例,写出用SQL表示的向图书表中插入、修改和删除数据的语句。
(2)用SQL实现在读者表中增加“借书册数”字段,统计借书者在1998年~1999年间所借书的册数,并将结果送入读者表中的借书册数字段的操作语句。
(3)写出操作的过程和操作结果(数据库中各表的数据)并用截图表示出来。
实验报告学院:计算机与信息学院专业:年级:姓名:学号:实验室号:计算机号:实验日期:年月日指导教师签字:成绩:报告退发(订正、重做)实验三数据库的简单查询和连接查询实验1、实验目的掌握SQL Server查询分析器的使用方法,加深对SQL和Transact-SQL语言的查询语句的理解。
数据库实验报告
数据库实验报告一、实验目的本次数据库实验的主要目的是通过实际操作和实践,深入理解数据库的基本概念、原理和技术,掌握数据库的设计、创建、管理和操作方法,提高对数据库的应用能力和解决实际问题的能力。
二、实验环境本次实验使用的数据库管理系统为 MySQL 80,操作系统为Windows 10。
实验工具包括 MySQL Workbench 80 和命令行终端。
三、实验内容(一)数据库设计1、需求分析根据给定的业务场景,对数据库的需求进行了详细的分析。
例如,对于一个学生管理系统,需要存储学生的基本信息(学号、姓名、性别、出生日期等)、课程信息(课程编号、课程名称、学分等)以及学生的选课信息(学号、课程编号、成绩等)。
2、概念模型设计使用 ER 图(实体关系图)对系统中的实体和关系进行了建模。
明确了各个实体的属性和实体之间的联系,为后续的逻辑设计奠定了基础。
3、逻辑模型设计将 ER 图转换为关系模型,确定了各个表的结构,包括表名、字段名、数据类型、约束条件等。
4、物理模型设计考虑了数据库的存储结构、索引、分区等物理存储方面的设计,以提高数据库的性能和存储空间的利用率。
(二)数据库创建1、使用 MySQL Workbench 创建数据库在 MySQL Workbench 中,通过图形界面操作,创建了指定名称的数据库,并设置了相应的字符集和校对规则。
2、使用 SQL 语句创建表使用 CREATE TABLE 语句,根据逻辑模型设计的结果,创建了各个数据表,并定义了主键、外键、唯一约束、非空约束等。
(三)数据操作1、数据插入使用 INSERT INTO 语句向表中插入了大量的测试数据,以验证数据库的功能和性能。
2、数据查询使用 SELECT 语句进行了各种复杂的查询操作,包括单表查询、多表连接查询、子查询、聚合函数的使用等。
3、数据更新使用 UPDATE 语句对表中的数据进行了修改操作,确保数据的准确性和完整性。
数据库实验报告
数据库实验报告一、实验目的本次数据库实验的主要目的是深入了解数据库的基本概念和操作,掌握数据库管理系统的使用方法,提高对数据的管理和处理能力。
通过实际操作,我们希望能够熟练运用SQL 语句进行数据的查询、插入、更新和删除,以及创建和管理数据库表、索引和视图等对象。
二、实验环境本次实验使用的数据库管理系统是 MySQL 80,操作系统为Windows 10。
实验在个人计算机上进行,使用 MySQL Workbench 作为数据库管理工具。
三、实验内容1、数据库创建使用 CREATE DATABASE 语句创建了一个名为“student_management”的数据库,用于存储学生管理相关的数据。
2、表的创建在“student_management”数据库中,创建了以下几张表:“students”表,包含学生的学号(student_id)、姓名(name)、性别(gender)、年龄(age)等字段。
“courses”表,包含课程的课程号(course_id)、课程名称(course_name)、学分(credit)等字段。
“enrolls”表,用于关联学生和课程,包含学生学号(student_id)、课程号(course_id)和成绩(grade)等字段。
3、数据插入使用 INSERT INTO 语句向上述表中插入了一些示例数据,以方便后续的查询和操作。
4、数据查询通过 SELECT 语句进行了多种查询操作,例如:查询所有学生的信息。
查询特定性别学生的信息。
查询选修了某门课程的学生名单及成绩。
5、数据更新使用 UPDATE 语句对部分学生的年龄或成绩进行了修改。
6、数据删除使用 DELETE 语句删除了一些不再需要的数据记录。
7、索引创建为“students”表的“student_id”字段和“courses”表的“course_id”字段创建了索引,以提高查询效率。
8、视图创建创建了一个名为“student_course_grade_view”的视图,用于展示学生的学号、姓名、课程名称和成绩。
数据库实验报告(实验六)(合集五篇)
数据库实验报告(实验六)(合集五篇)第一篇:数据库实验报告(实验六)实验六SQL语言数据查询语言DQL一、实验内容了解SQL语言的SELECT语句对数据的查询,学会在Navicat for MySQL中用SELECT语句对表中的数据进行简单查询、连接查询、嵌套查询和组合查询。
启动Navicat for MySQL,用SELECT语句进行简单查询操作,具体实验步骤如下:(实验步骤里的内容)1启动Navicat for MySQL,登录到本地数据库服务器后,连接到test数据库上。
用Create Table建立Student表、Course表和Choose表:2.用INSERT语句分别向Student表中插入3个元组、Course表中插入3个元组、Choose表中插入7个元组:3.用SELECT语句,查询计算机学院学生的学号和姓名。
4.用SELECT语句的between…and…表示查询条件,查询年龄在20~23岁的学生信息。
5.用SELECT语句的COUNT()聚集函数,统计Student表中学生总人数。
6.分别用SELECT语句的max()、min()、sum()、avg()四个聚集函数,计算Choose表中C1课程的最高分、最低分、总分、平均分。
7.用SELECT语句对空值(NULL)的判断条件,查询Course表中先修课称编号为空值的课程编号和课程名称。
8.用SELECT语句的连接查询,查询学生的学号、姓名、选修的课程名及成绩。
9.用SELECT的存在量词EXISTS,查询与“张三”在同一个学院学习的学生信息。
10.用SELECT语句的嵌套查询,查询选修C1课程的成绩低于“张三”的学生的学号和成绩。
11.用SELECT语句的组合查询(UNION),查询选修了C1课程或者选修了C3课程的学生学号。
12.用SELECT语句的组合查询(UNION)与DISTINCT短语,查询选修了C1课程或者选修了C3课程的学生学号,并取消重复的数据。
河北工业大学操作系统实验报告 (2)
操作系统实验指导书实验一进程控制与描述一、实验目的通过对Windows XP编程,进一步熟悉操作系统的基本概念,较好地理解Windows XP的结构。
通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解Windows XP进程的“一生”。
二、实验环境硬件环境:计算机一台,局域网环境;软件环境:Windows XP,Visual C++ 6.0专业版或企业版。
三、实验内容和步骤第一部分Windows 编程Windows XP可以识别的程序包括控制台应用程序、GUI应用程序和服务应用程序。
本实验中主要用到的是控制台应用程序和GUI应用程序。
1、简单的控制台应用程序创建一个名为“Hello”的应用程序, 在“开始”菜单中单击“程序”-“附件”-“记事本”命令,将程序键入记事本中,并把代码保存为1-1.cpp。
程序1-1 Windows XP的GUI应用程序#include <iostream>void main(){Std::cout<<”Hello, Windows XP”<<std::endl;}在“命令提示符”窗口运行CL.EXE,产生1-1.EXE文件:C:\> CL 1-1.cpp运行1-1.EXE程序,运行结果是:(如果运行不成功,则可能的原因是什么?)_2、GUI应用程序Windows XP Professional下的GUI应用程序,使用Visual C++编译器创建一个GUI应用程序,代码中包括了WinMain()方法,该方法GUI类型的应用程序的标准入口点。
在“开始”菜单中单击“程序”-“附件”-“记事本”命令,将程序键入记事本中,并把代码保存为1-2.cpp。
程序1-2 Windows XP的GUI应用程序// msgbox项目# include <windows.h> // 标准的include// 告诉连接器与包括MessageBox API函数的user32库进行连接# pragma comment(lib, “user32.lib” )// 这是一个可以弹出信息框然后退出的筒单的应用程序int APIENTRY WinMain(HINSTANCE /* hInstance */ ,HINSTANCE /* hPrevInstance */ ,LPSTR /* lpCmdLine */ ,int /* nCmdShow */ ){:: MessageBox(NULL, // 没有父窗口“Hello, Windows 2000” , // 消息框中的文本“Greetings”, // 消息框标题MB_OK) ; // 其中只有一个OK按钮// 返回0以便通知系统不进入消息循环return(0) ;}也可以利用任何其他文本编辑器键入程序代码,如果这样,例如使用WORD来键入和编辑程序,则应该注意什么问题?保存时将文件保存为“.cpp”的c++文件在“命令提示符”窗口运行CL.EXE,产生1-2.EXE文件:C:\> CL 1-2.cpp在程序1-2的GUI应用程序中,首先需要Windows.h头文件,以便获得传送给WinMain() 和MessageBox() API函数的数据类型定义。
河北工业大学UML实验报告汇总
《面向对象与UML》实验报告实验一UML建模基础一、实验目的1.熟悉UML建模工具Rational rose的可视化环境。
2.掌握利用Rational rose进行建模的步骤。
二、实验内容1.熟悉Rational rose建模环境2.建模基本步骤3.结合日常生活中实际使用的系统,模仿2中的用例模型绘制用例图,并保存模型,熟悉利用Rational rose的建模过程,要求绘制的用例图中用例与2中的用例图不相同。
三、实验结果建模基本步骤中得到的用例图实验2 用例图一、实验目的1. 熟悉UML用例图的基本图形元素。
2. 掌握用例与用例之间的各种关系。
3. 熟悉针对具体场景使用例图进行软件建模的方法。
4. 掌握用例规格说明的概念和基本结构,以及用例规格说明的作用。
二、实验内容1. 根据实验一建模实例,熟悉利用Raional rose软件绘制用例图的基本方法。
2 通过对“学生信息管理系统”的需求描述,确定系统用例图:“学生信息管理系统”的需求描述如下:在每个新学年开始都会有新生入学,这时系统的管理人员可以通过系统将这些新生的学籍、年龄、家庭住址、性别、身高、学生证号、身份证号等基本信息存入数据库,每个新生都对应一个唯一的编号,此编号可以是学生,在日程管理中,系统管理员还可以对所有学生的基本信息进行查询、修改和删除等操作;同时校领导可以查询、修改全校所有学生的基本信息。
学校领导可以通过本系统了解每个班的任课教师、辅导员、学生姓名、学生人数、专业等班级基本信息。
系统管理员可以进行查询班级基本信息、添加班级、修改班级基本信息、删除班级等操作。
在考试结束以后,教师可以将学生的考试成绩录入系统,还可以对学生的成绩进行查询和修改。
学生可以通过本系统进行成绩的查询。
学生还可以在网上选择自己选修的课程(必修课必须上,所以不用选),学生通过本系统可以看到有哪些课程可以选以及课程的基本信息。
课程的基本信息包括:课程号、所属专业、课程名称、开课学期、学时数、学分、任课教师等。
数据库实验报告范本(3篇)
第1篇实验名称:数据库设计与实现实验日期:2023年4月15日实验班级:计算机科学与技术专业1班实验学号:12345678一、实验目的1. 理解数据库设计的基本原理和方法。
2. 掌握数据库概念结构、逻辑结构和物理结构的设计。
3. 学会使用数据库设计工具进行数据库设计。
4. 能够使用SQL语句进行数据库的创建、查询、更新和删除等操作。
二、实验内容1. 数据库概念结构设计- 分析需求,确定实体和实体间的关系。
- 设计E-R图,表示实体、属性和关系。
2. 数据库逻辑结构设计- 将E-R图转换为关系模式。
- 设计关系模式,确定主键、外键等约束。
3. 数据库物理结构设计- 选择合适的数据库管理系统(DBMS)。
- 设计数据库表结构,包括字段类型、长度、索引等。
- 设计存储策略,如数据文件、索引文件等。
4. 数据库实现- 使用DBMS创建数据库。
- 创建表,输入数据。
- 使用SQL语句进行查询、更新和删除等操作。
三、实验步骤1. 数据库概念结构设计- 分析需求,确定实体和实体间的关系。
- 设计E-R图,表示实体、属性和关系。
2. 数据库逻辑结构设计- 将E-R图转换为关系模式。
- 设计关系模式,确定主键、外键等约束。
3. 数据库物理结构设计- 选择合适的数据库管理系统(DBMS)。
- 设计数据库表结构,包括字段类型、长度、索引等。
- 设计存储策略,如数据文件、索引文件等。
4. 数据库实现- 使用DBMS创建数据库。
- 创建表,输入数据。
- 使用SQL语句进行查询、更新和删除等操作。
四、实验结果与分析1. 数据库概念结构设计- 实体:学生、课程、教师、成绩。
- 关系:学生与课程之间有选课关系,教师与课程之间有授课关系。
2. 数据库逻辑结构设计- 学生表(学号,姓名,性别,年龄,班级号)。
- 课程表(课程号,课程名,学分,教师号)。
- 教师表(教师号,姓名,性别,年龄,职称)。
- 成绩表(学号,课程号,成绩)。
数据库原理实验报告
数据库原理实验报告目录一、实验目的 (2)1. 熟悉数据库的基本概念和原理 (2)2. 掌握数据库的设计方法和技巧 (3)3. 学会使用SQL语言进行数据操作和管理 (5)二、实验内容 (6)1. 数据库基本概念 (7)2. 数据库设计 (9)3. SQL语言基础 (9)4. SQL语句练习 (11)5. 数据库管理与维护 (12)三、实验步骤与结果 (13)1. 数据库基本概念 (15)数据库的定义和特点 (16)关系型数据库的基本结构 (17)数据库管理系统(DBMS)的功能和组成部分 (19)2. 数据库设计 (20)需求分析 (22)概念模型设计 (23)逻辑模型设计 (25)物理模型设计 (26)3. SQL语言基础 (27)SQL语言的基本语法 (28)SQL语句的分类和功能 (30)SQL语句的操作对象 (31)4. SQL语句练习 (32)5. 数据库管理与维护 (34)数据库备份与恢复 (35)数据库优化与调整 (36)数据库安全与权限管理 (38)四、实验总结与展望 (39)1. 本实验的主要收获和体会 (40)2. 在实际工作中遇到的困难和问题及解决方法 (41)3. 对未来学习和工作的展望 (42)一、实验目的本次数据库原理实验的主要目的是加深对数据库管理系统原理的理解,掌握数据库的基本操作,并学会使用SQL语言进行数据库的查询、插入、更新和删除等操作。
通过实际操作,培养学生的数据库设计能力和解决实际问题的能力,为后续的数据库课程学习和职业生涯打下坚实的基础。
实验还旨在提高学生的动手实践能力和团队协作精神,为未来的学习和工作积累宝贵的经验。
1. 熟悉数据库的基本概念和原理数据库是存储数据的集合,这些数据可以是关于企业、组织或个人的信息。
它提供了一个有组织的数据存储环境,可以高效、有序地存储和管理大量的数据。
在现代信息技术中,数据库管理系统(DBMS)作为支持数据存储和操作的核心软件工具发挥着至关重要的作用。
河北工业大学数据库实验报告
《数据库原理及应用》实验报告题目:SQL语言(视图、数据控制、空值和空集的处理)1.4视图一实验目的熟悉SQL语言支持的有关视图的操作,能够熟练使用SQL语句来创建需要的视图,对视图进行查询和取消视图。
二实验内容(1)定义常见的视图形式,包括:·行列子集视图。
· WITH CHECK OPTION的视图。
·基于多个基表的视图。
·带表达式的视图。
·分组视图。
(2)通过实验考察WITH CHECK OPTION 这一语句在视图定义后产生的影响,包括对修改操作、删除操作、插入操作的影响。
(3)讨论视图的数据更新情况,对子行列视图进行数据更新。
(4)使用DROP语句删除一个视图,由该视图导出的其它视图定义仍在数据词典中,但已经不能使用,必须显式删除。
同样原因,删除基表时,由该基表导出的所有视图定义都必须显式删除。
三实验题目(1)定义选课信息和课程名称的视图VIEWCcreate view VIEWc asselect CHOICES.cid,ame,sid,tid,scorefrom CHOICES,COURSES where CHOICES.cid=COURSES.cid(2)定义学生姓名与选课信息的视图VIEWScreate view VIEWS asselectSTUDENTS.sname,CHOICES.cid,CHOICES.sid,CHOICES.tid,choices.scorefrom CHOICES,STUDENTS where CHOICES.sid=STUDENTS.sid(3)定义年级低于1998的学生视图S1(SID,SNAME,GRADE)drop view s1create view S1 asselect STUDENTS.sid ,sname,grade from STUDENTSwhere grade>1998(4)查询学生为”uxjof”的学生的选课信息select*from VIEWSwhere sname='uxjof'(5)查询选修课程”UML”的学生的编号和成绩select sid,score from VIEWC where cname='UML'(6)向视图S1插入记录(”60000001,Lily,2001”)insert into s1values('60000001','Lily',2001)(7)定义包括更新和插入约束的视图S1,尝试向视图插入记录(“60000001,Lily,1997”),删除所有年级为1999的学生记录,讨论更新和插入带来的影响。
河北工业大学_ 数据结构实验报告_ 内部排序算法效率比较平台的设计与实现
实验五内部排序算法效率比较平台的设计与实现1.试验内容1、问题描述各种内部排序算法的时间复杂度分析结果只给出了算法执行时间的阶,或大概执行时间。
设计和实现内部排序算法效率比较平台,通过随机的数据比较各算法的关键字比较次数和关键字移动次数,以取得直观的感受。
2、基本要求(1)对以下6种常用的内部排序算法进行比较:起泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、堆排序。
(2)待排序的表长不小于100;其中的数据要用伪随机数产生程序产生;至少要用5组不同的输入数据作比较;比较的指标为有关键字参加的比较次数和关键字的移动次数(关键字交换计为3次移动)。
(3)最后要对结果作出简单分析,包括对各组数据得出结果波动大小的解释。
3、测试数据由随机数产生器生成。
4、实现提示主要工作是设法在已知算法中的适当位置插入对关键字的比较次数和移动次数的计数操作。
程序还可以考虑几组数据的典型性,如,正序、逆序和不同程度的乱序。
注意采用分块调试的方法。
2.试验目的掌握多种排序方法的基本思想,如直接插入、冒泡、简单选择、快速、堆、希尔排序等排序方法,并能够用高级语言实现。
3.流程图4.源程序代码#include<iostream.h>#include<string.h>#include<stdlib.h>#define le 100struct point{char key[11];};//冒泡法void maopao(point c[]){point a,b[le];int i,j,jh=0,bj=0,q;for(i=0;i<le;i++){b[i]=c[i];};for(i=0;i<le;i++){for(j=le-1;j>i;j--){bj=bj+1;q=strcmp(b[i].key,b[j].key);if(q==1){a=b[i];b[i]=b[j];b[j]=a;jh=jh+3;};};};cout<<"冒泡法:"<<endl<<"完成的序列如下:"<<endl;for(i=0;i<le;i++){cout<<b[i].key<<" ";};cout<<endl<<"共进行比较"<<bj<<"次,进行交换"<<jh<<"次"<<endl<<"***************************"<<endl;};//直接插入排序void zhijiecharu(point c[]){point b[le+1];int i,j,jh=0,bj=0,q;for(i=0;i<le;i++){b[i+1]=c[i];};for(i=2;i<=le+1;i++){q=strcmp(b[i].key,b[i-1].key);bj=bj+1;if(q==-1){b[0]=b[i];b[i]=b[i-1];jh=jh+2;q=strcmp(b[0].key,b[i-2].key);bj=bj+1;for(j=i-2;q==-1;j--){b[j+1]=b[j];jh=jh+1;q=strcmp(b[0].key,b[j-1].key);bj=bj+1;};b[j+1]=b[0];jh=jh+1;};};cout<<"直接插入排序:"<<endl<<"完成的序列如下:"<<endl;for(i=1;i<le+1;i++){cout<<b[i].key<<" ";};cout<<endl<<"共进行比较"<<bj<<"次,进行交换"<<jh<<"次"<<endl<<"***************************"<<endl;};//void shellinsert(point c[],int dk,int d[]){int j,i,q;point a;for(i=dk+1;i<le+1;i++){q=strcmp(c[i].key,c[i-dk].key);d[0]=d[0]+1;if(q==-1){a=c[i];q=strcmp(a.key,c[i-dk].key);d[0]=d[0]+1;d[1]=d[1]+1;for(j=i-dk;j>0&&q==-1;j=j-dk){c[j+dk]=c[j];d[1]=d[1]+1;q=strcmp(a.key,c[j-dk].key);};c[j+dk]=a;d[1]=d[1]+1;};};};void shellsort(point c[],int dlta[],int t){int k,d[2],i;d[0]=0;d[1]=0;point b[le+1];for(k=0;k<le;k++){b[k+1]=c[k];};for(k=0;k<t;k++)shellinsert(b,dlta[k],d);cout<<"希尔排序:"<<endl<<"完成的序列如下:"<<endl;for(i=1;i<le+1;i++){cout<<b[i].key<<" ";};cout<<endl<<"共进行比较"<<d[0]<<"次,进行交换"<<d[1]<<"次"<<endl<<"***************************"<<endl;};//希尔排序void xier(point c[]){int dlta[20],t,i;t=le/2;for(i=0;i<20;i++){dlta[i]=t+1;if(t==0)break;t=t/2;};t=i+1;shellsort(c,dlta,t);};//简单选择排序void jiandanxuanze(point c[]){point a,b[le];int i,j,jh=0,bj=0,q,w;for(i=0;i<le;i++){b[i]=c[i];};for(i=0;i<le-1;i++){q=i;for(j=i+1;j<le;j++){bj=bj+1;w=strcmp(b[q].key,b[j].key);if(w==1)q=j;};if(q==i)continue;else {a=b[i];b[i]=b[q];b[q]=a;jh=jh+3;};};cout<<"简单选择排序排序:"<<endl<<"完成的序列如下:"<<endl;for(i=0;i<le;i++){cout<<b[i].key<<" ";};cout<<endl<<"共进行比较"<<bj<<"次,进行交换"<<jh<<"次"<<endl<<"***************************"<<endl;};int partition(point c[],int low,int high,int d[]){point a,b;int jh=0,bj=0,q;a=c[low];while(low<high){q=strcmp(c[high].key,a.key);d[0]=d[0]+1;while(low<high&&q!=-1){high--;q=strcmp(c[high].key,a.key);d[0]=d[0]+1;};b=c[low];c[low]=c[high];c[high]=b;d[1]=d[1]+3;q=strcmp(c[low].key,a.key);d[0]=d[0]+1;while(low<high&&q!=1){low++;q=strcmp(c[low].key,a.key);d[0]=d[0]+1;};b=c[low];c[low]=c[high];c[high]=b;d[1]=d[1]+3;};return(low);};void qsort(point c[],int low,int high,int d[]) {int pivotloc;if(low<high){pivotloc=partition(c,low,high,d);qsort(c,low,pivotloc-1,d);qsort(c,pivotloc+1,high,d);};};//快速排序void kuaisu(point c[]){point b[le];int i,d[2];d[0]=0;d[1]=0;for(i=0;i<le;i++){b[i]=c[i];};qsort(b,0,le-1,d);cout<<"快速排序:"<<endl<<"完成的序列如下:"<<endl;for(i=0;i<le;i++){cout<<b[i].key<<" ";};cout<<endl<<"共进行比较"<<d[1]<<"次,进行交换"<<d[0]<<"次"<<endl<<"***************************"<<endl;};void diu(point b[],int we,int *jh,int *bj){point a;int i,q;for(i=we/2-1;i>=0;i--){q=strcmp(b[i].key,b[2*i].key);*bj=*bj+1;if(q==-1){a=b[i];b[i]=b[2*i];b[2*i]=a;*jh=*jh+3;};if(2*i+1<we){q=strcmp(b[i].key,b[2*i+1].key);*bj=*bj+1;if(q==-1){a=b[i];b[i]=b[2*i+1];b[2*i+1]=a;*jh=*jh+3;};};};a=b[we-1];b[we-1]=b[0];b[0]=a;*jh=*jh+3;};//堆排序void diup(point c[]){point b[le];int i,jh=0,bj=0,*j,*bl;j=&jh;bl=&bj;for(i=0;i<le;i++){b[i]=c[i];};for(i=le;i>1;i--){diu(b,i,j,bl);};cout<<"堆排序:"<<endl<<"完成的序列如下:"<<endl;for(i=0;i<le;i++){cout<<b[i].key<<" ";};cout<<endl<<"共进行比较"<<bj<<"次,进行交换"<<jh<<"次"<<endl<<"***************************"<<endl;};void main(){int i,j,n=10,ans,an;char b[]="abcdefghijklmnopqrstuvwxyz"; point a[le];for(i=0;i<le;i++){n=10;an=rand()*(n-1)/RAND_MAX+1;n=26;for(j=0;j<an;j++){ans=rand()*(n-0)/RAND_MAX+0;a[i].key[j]=b[ans];};a[i].key[j]='\0';};for(i=0;i<le;i++){cout<<a[i].key<<endl;};zhijiecharu(a);maopao(a);xier(a);jiandanxuanze(a);kuaisu(a);diup(a);}参考自百度文库5.实验结果运行结果如下:直接插入排序:完成的序列如下:***************************冒泡法:完成的序列如下:***************************希尔排序:*************************** 简单选择排序排序:完成的序列如下:*************************** 快速排序:完成的序列如下:*************************** 堆排序:。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库实验报告第一章李云霄实验1.1(1)CREATETABLE CUSTOMER(CID CHAR(8)UNIQUE,CNAME CHAR(20),CITY CHAR(8),DISCNT INT,PRIMARYKEY(CID))CREATETABLE AGENTS(AID CHAR(8)UNIQUE,ANAME CHAR(20),CITY CHAR(8),PERCENTS FLOAT,PRIMARYKEY(AID))CREATETABLE PRODUCTS(PID CHAR(8)UNIQUE,PNAME CHAR(20),PRIMARYKEY (PID))(2)CREATETABLE ORDERS(ORDNA CHAR(8)UNIQUE,MONTH INT,CID CHAR(8),AID CHAR (8),PID CHAR(8),QTY INT,DOLLARS FLOAT,PRIMARYKEY (ORDNA),FOREIGNKEY(CID)REFERENCES CUSTOMER,FOREIGNKEY(AID)REFERENCES AGENTS,FOREIGNKEY(PID)REFERENCES PRODUCTS)(3)ALTERTABLE PRODUCTS ADD CITY CHAR(8)ALTERTABLE PRODUCTS ADD QUANTITY INTALTERTABLE PRODUCTS ADD PRICE FLOAT(4)CREATEINDEX XSNO ON CUSTOMER(CID)CREATEINDEX XSNO ON AGENTS(AID)CREATEINDEX XSNO ON PRODUCTS(PID)CREATEINDEX XSNO ON ORDERS(ORDNA)(5)DROPINDEX CUSTOMER.XSNODROPINDEX AGENTS.XSNODROPINDEX PRODUCTS.XSNODROPINDEX ORDERS.XSNO实验1.2(1)SELECT*FROM COURSES(2)SELECTSIDFROM CHOICES(3)SELECT CID FROM COURSES WHEREhour<88(4)SELECTSIDFROM CHOICES GROUPBYSIDHAVING SUM(SCORE)>400(5)SELECT COUNT(CID)FROM COURSES(6)SELECT CID,COUNT(CID)FROM CHOICES GROUPBY cid(7)SELECTSIDFROM CHOICES WHERE score>60 GROUPBYsidHAVING COUNT(cid)>2(8)SELECTSID,COUNT(CID),AVG(SCORE)FROM CHOICES GROUPBYsid(9)SELECT STUDENT.sid,sname from student,choice,COURSESwhere student.sid=choice.sid and choice.cid=COURSES.cidand ame='java'(10)SELECT CHOICES.sid,CHOICES.score FROM CHOICES,STUDENTSWHERE sname='SSSHT'AND CHOICES.sid=STUDENTS.sidSELECT CIDSCORE FROM CHOICES WHEREsid IN(SELECT STUDENTS.sidFROM STUDENTS WHERE sname='SSSHT')(11)SELECT AME FROM COURSES AS C1,COURSES AS C2WHERE C1.hour>C2.hour AND ame='C++'(12)SELECTSID,SNAME FROM STUDENTSWHEREsid IN(SELECT C1.SIDFROM CHOICES AS C1,CHOICES AS C2WHERE C1.score>C2.score AND C1.cid=C2.cidAND C2.sid=(SELECTsidFROM STUDENTS WHERE sname='ZNKOO')AND C1.cid=(SELECT cid FROM COURSES WHERE cname='C++'))(13)SELECT SNAME FROM STUDENTS WHERE grade IN(SELECT grade FROM STUDENTS WHEREsid IN('883794999','850955252'))(14)SELECT SNAME FROM STUDENTS WHEREsid NOTIN(SELECTsidFROM CHOICES WHERE cid=(SELECT cid FROMCOURSES WHERE cname='JAVA'))(15)SELECT*FROM COURSES WHEREhour<=ALL(SELECThourFROM COURSES)(16)SELECT CHOICES.tid,CID FROM CHOICES WHERE NOTEXISTS(SELECT*FROM TEACHERS WHERE TEACHERS.salary>=(SELECT salary FROM TEACHERS WHERE TEACHERS.tid=CHOICES.tid))(17)SELECTSIDFROM CHOICES WHERE score=(SELECT MAX(score)FROM CHOICES WHERE cid=(SELECT cid FROM COURSES WHERE cname='ERP'))(18)SELECT CNAME FROM COURSES WHERE cid NOTIN(SELECT cid FROM CHOICES)(19)SELECT CNAME FROM COURSES WHERE cid=SOME(SELECT cid FROM CHOICES WHERE tid=SOME(SELECT tid FROM COURSES,CHOICES WHERE cname='UML'ANDCOURSES.cid=CHOICES.cid))(20)SELECT SNAME FROM STUDENTS WHERE NOTEXISTS(SELECT*FROM CHOICES AS C1WHERE NOTEXISTS(SELECT*FROM CHOICES AS C2WHERE C2.sid=STUDENTS.sidAND C2.cid=C1.cid AND C2.tid='200102901'))(21)SELECTSIDFROM CHOICES,COURSES WHERE COURSES.cid=CHOICES.cidAND ame='DATABASE'UNIONSELECTSIDFROM CHOICES,COURSES WHERE COURSES.cid=CHOICES.cid AND ame='UML'(22)SELECT X.sidFROM CHOICES AS X,CHOICES AS YWHERE (X.cid=(SELECT cid FROM COURSES WHERE cname='DATABASE')AND Y.cid=(SELECT cid FROM COURSES WHERE cname='UML'))AND X.sid=Y.sid(23)SELECT X.SIDFROM CHOICES AS X,CHOICES AS YWHERE (X.cid=(SELECT cid FROM COURSES WHERE cname='DATABASE'))AND X.sid=Y.sidANDNOT(Y.cid=(SELECT cid FROM COURSES WHERE cname='UML'))实验1.3(1)INSERTINTO STUDENTS(sid,sname)VALUES('8000022222','WANGLAN')(2)INSERTINTO TEACHERSVALUES('200001000','LXL','S4ZRCK@','3024')(3)UPDATE TEACHERSSET salary=4000WHERE tid='200010493'(4)UPDATE TEACHERSSET salary=2500WHERE salary<2500(5)UPDATE CHOICESSET tid=(SELECT tid FROM TEACHERS WHERE tname='RNUPX')WHERE tid='200016731'(6)UPDATE STUDENTSSET grade=2001WHEREsid='800071780'(7)DELETEFROM COURSESWHERE cid NOTIN(SELECT cid FROM CHOICES GROUPBY cid)(8)DELETEFROM STUDENTSWHERE grade<1998(9)DELETEFROM STUDENTS WHEREsid NOTIN(SELECTsidFROM CHOICES GROUPBYsid)(10)DELETEFROM CHOICES WHERE score<60实验1.4(1)CREATEVIEW VIEWC ASSELECT CHOICES.no,CHOICES.sid,CHOICES.tid,ame,CHOICES.score F ROM CHOICES,COURSESWHERE CHOICES.cid=COURSES.cid(2)CREATEVIEW VIEWS ASSELECT CHOICES.no,STUDENTS.sname,CHOICES.tid,CHOICES.cid,CHOICES.score FROM CHOICES,STUDENTSWHERE CHOICES.sid=STUDENTS.sid(3)CREATEVIEW S2(SID,SNAME,GRADE)ASSELECT STUDENTS.sid,STUDENTS.sname,STUDENTS.gradeFROM STUDENTSWHERE grade>1998(4)SELECT*FROM VIEWS WHERE SNAME='UXJOF'(5)SELECTSID,SCORE FROM VIEWC WHERE CNAME='UML'(6)INSERTINTO s1VALUES('60000001','LILY','2001')(7)CREATEVIEW S1(SID,SNAME,GREADE)ASSELECTSID,SNAME,GRADE FROM STUDENTSWHERE grade>1998WITHCHECKOPTION(8)UPDATE VIEWS SET SCORE=SCORE+5WHERE SNAME='UXJOF'(9)DROPVIEW VIEWCDROPVIEW VIEWSDROPVIEW S1实验1.6(1)SELECT CID,HOUR*18 FROM COURSES(2)select count(*)from choices,courseswhere choices.cid=courses.cid and cname='C++'and score isnull(3)selectsid,scorefrom choices,courseswhere choices.cid=courses.cid and cname='C++'orderby score(4)SELECTDISTINCTSCORE FROM CHOICES WHERE cid=(SELECT cid FROM COURSES WHERE cname='C++')ORDERBY score(5)SELECTDISTINCT GRADE FROM STUDENTS GROUPBY grade(6)SELECT AVG(SCORE),COUNT(*),MAX(SCORE),MIN(SCORE) FROM CHOICES GROUPBY cid(7)SELECT GRADE FROM STUDENTS WHERE GRADE>=ALL(SELECT grade FROM STUDENTS)(8)SELECT COUNT(*)FROM STUDENTS,TEACHERSWHERE TEACHERS.TID=STUDENTS.SID。