数据库实验报告(河北工业大学)
河北工业大学-数据结构实验报告-基于哈夫曼编码的通信系统的设计与实现

基于哈夫曼编码的通信系统的设计与实现一、实验目的(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语言的查询语句的理解。
- 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。