物流管理上机实验报告

2024-08-28 版权声明 我要投稿

物流管理上机实验报告(精选7篇)

物流管理上机实验报告 篇1

---中海2000物流信息系统

班级:XXX班

姓名:XXX

学号:XXX号

物流信息系统上机实验报告

-----中海2000物流信息系统

班级:XX班学号:XX3号姓名:XXX

通过两天的上机实践学习,我了解并熟悉了中海物流信息系统的各个流程及其管理。中海2000物流管理信息系统是在总结中海物流集团多年从事第三方物流服务的基础上,经过多种物流业务模式考验的现代物流企业综合物流业务管理信息系统。该信息系统共有基础数据、客户管理、配送管理、仓储管理、调度管理、费用产生、统计调查、客户分析几大功能模块。接下来,我就结合这两天的实践学习,阐述一下我对该信息系统的认识及对物流信息系统管理的体会。首先,我简单介绍一下本系统的几大功能模块:

一、基础数据

系统的运行要根据使用的具体环境对系统进行具体设置。基础数据部分即是对操作人员及密码,系统权限的设置。

每一个操作员可以灵活的设置自己的密码,保证用户的合法性。对于系统的使用人员给予一定的权限,明确每个操作人员的权限和职责,避免与业务无关的人员对系统进行非法操作,严格控制系统用户的合法性,保证系统的安全。

二、客户管理

该模块主要管理客户的各种相关信息及为其提供相应的查询服务。它包括客户资料、合同管理、工厂资料、运输资料四部分。

客户资料分为两个等级(1)客户本身的资料:客户名称、联系方式、收费状态、报价资料等,由商务部门维护(2)客户下的工厂资料:供应商、购买商、供应购买商,由操作部门维护。

三、配送管理

该模块分为:部件维护、入仓、出仓、查询。

(一)入仓

1、部件维护为客户输入部件信息,并进行管理。

2、入仓资料

(1)入仓资料客户的供应商要求部件入仓,输入入仓件数及具体信息。

(2)入仓配车为客户选择运输方式及线路。

(3)入仓报关为客户确认入仓部件的报关要求。

(4)入仓卸车为客户选择卸车方式并卸车。

(5)入仓验货经验收,确保货物全部符合客户要求。

(6)分配仓位仓管员把部件存放在其包租的仓位中。

(7)报关确认

(8)入仓确认操作员核对所有入仓资料无误后,进行入仓确认。

3、费用处理客户部件入仓时产生处理费用,加班费用及其他费用等。

(二)出仓

1、出仓选货客户选择要购买的部件,操作员提出选货单给仓管员进行选货操作。

2、出仓资料

(1)出仓资料 操作员准备出仓资料,作为仓管员出货检查的依据。

(2)出仓配车 为客户选择运输方式及线路。

(3)出仓报关为客户确认出仓部件的报关要求。

(4)出仓装卸 选择卸货方式

(5)报关确认

(6)出仓确认 核对所有出仓资料,无误后进行出仓确认。

3、费用处理出仓时产生处理费用,加班费用,及其他费用等。

四、仓储管理

分别进行入仓部件查询,出仓部件查询,货物编号查询,货物名称查询,呆滞货物查询,进出库查询,仓位库存查询。

五、调度管理

根据部件情况完成相应的调度配载工作。

六、费用产生

物流计费项目主要包括:仓储保管费,流通加工费,运输配送费。仓储保管费按体积、重量、箱数计收;流通加工费以所耗人力工时及材料为基准计收,而运输配送费则以紧急度,车辆,货品数,装卸次数,运输配送区域,运行管理等为计费依据。计费标准的确定必须考虑市场的接受度和运营成本。

其次,我总结一下该系统的特点如下:

中海物流信息系统属于第三方物流企业的物流管理信息系统。第三方物流企业服务于生产企业与流通企业以及消费者,以提供第三方物流服务为主。主要有可得性,及时性,精确性,灵活性等特点。

再次,是我通过上机实践获得的体会。有以上各个方面的了解,不难发现好的物流信息系统可以降低成本,降低风险,提高服务水平,为决策提供科学依据。使用特定的信息管理系统,进行信息的收集,加工,传递,反馈,从而极大地提高劳动效率,提高经济效益。

物流信息系统首先是为物流活动提供了一个作业平台,所有的作业活动成果都要通过该系统来反映,为其他作业和决策提供依据;同时由于该系统是一个定向开放的系统,所以作业的信息会在一定的范围内进行传递和沟通。物流信息系统也是一个决策支持系统,它具有数据汇总查询功能,以便决策者及时掌握各种物流数据信息,为决策提供依据。物流信息系统一般会记录每一订单的订单号,货物名称,下单日期等各种有用的信息,也可以提高信息的跟踪能力。最后,得出结论如下:

物流管理上机实验报告 篇2

我省地处西部欠发达地区,经济科教相对落后。本校又是民族类院校,与东部高校相比,学校财力拮据,因而在实验室建设中其投资力度非常弱。近两年,在国家西部大开发的政策及省部共建高校等项目的实施下,我校迎来了一个高速发展的大好时机,学校对实验室的投资方面相对加大了力度。尤其是计算机系实验室的建设中,实验设备价值增大、数量增多。另外,随着计算机技术日益更新,越来越多的人注重加强对计算机知识的学习,为了满足在校学生的需求,计算机系实验室实行对外开放、适当收费。但由于管理人员少、实际上机人数多,对于实验室的管理造成许多困难问题。首先,传统的人工纸质登记计时收费的模式就是制约实验室改革发展的一个障碍。传统管理模式是非常繁琐的一项工作,耗费人力物力,而且容易出错;最后的统计工作更是一项费时费力的苦差事,甚至不能统计。其次,由于实验场地分散,造成实验室值班人员在值班期间游走多个场所,耗费了管理人员的很多时间,也使管理人员劳累而又在统计人数中产生失误。

基于我校实际财力情况及实验室管理的需求,开发了一套实验室收费管理系统,其最主要功能就是实现实验室管理的自动化,尤其在课外自由上机期间,自动按学生上机时间结算费用,快捷、方便的管理学生上机实验。它能对学生信息进行注册、删除、更改、并能查询学生上机的费用,还能对其账目进行管理。

1、B/S模式和JSP简介

1.1 B/S模式

B/S模式是一种以Web技术为基础的网络交互式平台,相比传统的C/S模式,它简化了客户端程序的开发,方便用户的登录。利用Java开发信息系统,可以有两种基于B/S模式的开发方式,即所谓的基于HTML的两层体系结构和三层体系结构。两者结构类似,只是后者更进一步将商业逻辑层(Business Logic Tier)与数据源层(Data Source Tier)分开。BLT层专门定义如何访问信息的逻辑,即如何定义SQL指令访问信息。而DST层负责信息的保存(见图1)。B/S模式的主要优势在于简化客户端设计;用户操作简单;利用浏览器实现系统的交互性的及时性。

1.2 JSP/Servlet构建的三层体系结构

JSP全称Java Server Pages,是由Sun Microsystems公司倡导和许多公司参与共同建立的一种使软件开发者可以响应客户端请求,而动态生成HTML、XML或其他格式文档的Web网页的技术标准。JSP技术是以Java语言作为脚本语言的,JSP网页为整个服务器端的Java库单元提供了一个接口来服务于HTTP的应用程序。

JSP使Java代码和特定的预定义动作可以嵌入到静态页面中,被JSP编译器编译成Java Servlets,一个JSP编译器可以把JSP编译成JAVA代码写的Servlet然后再由JAVA编译器来编译成机器码,也可以直接编译成二进制码。

基于JSP构建的系统采用Browser/Web/DataBase的三层体系结构。Web服务器接受请求,通过应用程序服务器执行一个Java服务器端小程序Servlet,并返回其输出,从而实现与客户机进行信息资源的交互。数据库服务器用来存储管理信息系统中所用到的各种数据,数据由数据库管理程序直接录入。系统的客户端只需要一个浏览器即可。用户和管理人员通过浏览器来查询、增加、修改、删除数据,对信息进行管理。

2、系统分析与设计

2.1 系统设计目标

开发计算机开放实验室计费系统,是为了改善我系机房管理中完全以人为主的弊端,利用实验室现有的设备,依托校园网络,充分发挥计算机统计功能,代替人工进行学生上机登记、计费、计时等繁杂的劳动,从而节省资源,提高管理者的工作效率和管理水平,同时也增加了数据安全性。

2.2 系统功能介绍

依据我校实验室的实际管理情况,设计的这套计费管理软件根据用户身份的不同,主要分为:(1)管理员模块;(2)用户模块;(3)查询模块。设计的系统主界面通过浏览器打开后,首先看到有关实验室上机的通知或公告。对于以游客身份访问的用户,可以通过主界面上的查询功能查看某实验室未占用机位情况,以此决定是否前往实验室上机。另外,还可以浏览论坛留言。对于其它功能分别为:

(1)管理员模块包括超级管理员模块和普通管理员模块。

超级管理员模块可以实现的功能是:

对普通管理员的管理,如添加或删除普通管理员;普通管理员信息的修改;普通管理员密码修改;查看、统计并打印普通管理员值班记录等功能。

对超级管理员本身的管理,包括信息修改;密码更新等功能。

对用户的管理,包括用户注册和删除;用户密码更改;给用户增加上机金额;制作打印用户上机卡;查询用户上机历史记录;统计发卡用户;统计金额;打印费用报表等功能。

对用户留言板(论坛)的管理。

普通管理员模块可以实现的功能是:维护个人基本信息;修改登录密码;查询用户留言;查询用户上机情况;在此界面下绑定到用户并让用户密码登录;验证用户金额余款;查询用户余额和历史上机记录;登录用户上、下机时间管理等功能;

(2)用户模块主要实现的功能是:

修改个人密码;维护个人信息;查看上机余额;查看个人上机历史记录;论坛留言等功能。

2.3 系统数据库设计

数据库是管理信息系统的核心内容。目前,Web与数据库接口技术有很多,其中JDBC是Java程序连接和存取数据库的应用程序接口,由一组用Java语言编写的类与接口组成,是执行SQL语句的Java API。本文介绍的管理信息系统中,在数据的存取方面,采用了J S P/Servlet+JDBC的技术,客户端上的浏览器通过URL和中间层的Web服务器建立连接。Web服务器主要负责接收本地或远程浏览器的HTTP数据请求,然后中间层的Servlet收到请求后,通过执行程序中的SQL语句,利用JDBC提供的标准API对数据库进行访问和相应的操作处理。Servlet再将查询的数据传给JSP,最后生成标准的JSP页面将结果返回给提出请求的浏览器。这样,不仅将客户端与数据库服务器端分开,同时提高了数据库的访问效率。该系统按照上述所描述的功能,主要数据库表设计为:

学院表:I D、学院名称、所属校区。

系别表:I D、系别名称、所属学院、所属校区。

班级表:I D、班级名称、所属系、所属院、所属校区。

基本表:I D、学号、姓名、性别、班级、卡号、办卡日期、所属班、所属系、所属院、所属校区。

管理员信息表:管理员、口令、权限。

临时表:ID、卡号、注册时间、注销时间。

账目明细:I D、卡号、金额、入账日期、经手人。

总账表:ID、卡号、金额。

3、系统功能模块图

4、结束语

采用B/S网络模式开发的开放实验室计费系统,改变了传统的工作模式,变集中工作为同时、多点、异地进行。提高了实验室管理人员管理效率,也方便了上机用户在任意地点和时间查询实验室资源利用信息,极大地提高了实验室开放程度。系统投入使用以来,减轻了管理人员的劳动强度,改变了实验室资源搁置、浪费,使用率不高的局面,也部分解决了实验室运转经费不足的问题,同时还为广大学生提供了课余学习交流的场所。当然,系统还有很多不足的地方,在实际的运行中,还需要解决,以便让系统更加完善。

参考文献

[1]吴键.JSP网络开发入门与实践.北京:北京邮电出版社.2006.11

[2]黄嘉辉.Java网络程序设计.北京:清华大学出版社.2002.10

[3]陈渝光,于淼,钱微,李新.基于Web的实验室信息管理系统安全方案[J].重庆工学院学报,22(1).2008,94-97.

[4]高峰,刘厂,李磊.基于B/S模式的实验室资源管理信息系统分析与设计[J].应用科技.35(2),2008,52-55.

[5]戴英等译.Java数据编程指南[M].北京:电子工业出版社.2002.1

[6]杨碧石.基于开放实验室网络管理系统的设计[J].计算机与信息.2008(1),39-40.

[7]陆正武,张志立.Java项目开发实践[M].北京:中国铁道出版社.2005.7

[8]张孝祥.深入体验Java Web开发内幕-核心基础[M].北京:电子工业出版社.2007.7

上机实验报告---第九次 篇3

第九

班级:08(本)计算机科学与技术学号:

姓名:

周次:

上机时间:班

C++语言程序设计

一、上机目的:

(1)理解异常处理的重要性以及使用异常处理。

(2)使用不同的C++异常处理技术。

(3)能够处理不可预见的异常。

(4)熟悉标准异常处理函数。

附加内容:

1、异常处理语法

1)throw语法

Throw<表达式>;

当某段程序发现了自己不能处理的异常,就可以使用throw语句将这个异常抛掷给调用者。

2)try块语法

Try

{

复合语句

}

Try语句后的复合语句是代码的保护段。如果预料到某段代码有可能发生异常,就将它放在try语句后。如果这段代码运行时真的遇到异常情况,其中的throw表达式就会抛掷这个异常。

3)catch语法

Catch语句的语法格式如下:

Catch(异常类型1参数1)

{

//针对异常类型1的处理语句

}

Catch(异常类型2参数2)

{

//针对异常类型2的处理语句

}…..…….Catch(异常类型n参数n)

{

//针对异常类型n的处理语句

}

Catch语句后的复合语句是异常处理程序,捕获由throw表达式抛掷的异常。

4)异常处理的执行过程

步骤:

①控制通过正常的顺序执行到达try语句,然后执行try块内的保护段。②如果在保护段内没有发生异常,那么跟在try块内的保护段。

③如果在保护段内执行期间或在保护段调用的任何函数中(直接或间接的调用)有异常被抛掷,则从通过throw创建的对象中创建一个异常对象。在这一点上,编译器能够处理抛掷类型的处理程序,在更高执行上下文中寻找一个catch语句。Catch处理程序按其在try块后出现的顺序被检查。如果没有找到合适的处理程序,则继续检查下一个动态封闭的try块。此处理继续下去,直到最外层的封闭try块被检查完。

二、上机内容:

在Visual C++环境下编程实现以下题目。

1、声明一个异常类Cexception,成员函数Reason,用来显示异常的类型。定义函数fn1触发异常,在主函数的try模块中调用fn1函数,在catch模块中捕获异常,观察程序的执行流程。

2、编写一个程序,求输入数的平方根。设置异常处理,对输入负数的情况给出提示。

#include

#include

using namespace std;

void main()

{

double n;

double m;

cout << “请输入一个数: ”;

cin >> n;

try

{

if(n < 0)

{

throw exception(“输入的数是负数!”);

}

m = sqrt(n);

cout << “n的平方根是: ” <

}

catch(exception e)

{

cout << e.what()<< endl;

}

3、下面是一个用于处理文件打不开的异常处理程序,分析程序并完成相应的问题。

//test10_2.cpp

#include

#include

Using namespace std;

Int main()

{

Ifstream source(“file9_2.txt”);

Char line[128];

Try

{

If(!source)

Throw “file9_2.txt”;//如果打开失败,跑出异常

}

Catch(char *s)

{

Cout<<”error opening the file”<

Exit(1);

}

While(!source.eof()){//判断是否到文件末尾

Source.getline(line,sizeof(line));

Cout<

}

Source.close();

Return 0;

}

请回答以下问题:

1)若其中没有file9_2.txt文件,则输出结果如何?【写出理由】

2)在硬盘上建一个file9_1.txt文件,其文件内容自己定义。输出结果如何?【写出理由】

三、上机结果

给出C++源代码,并把上机运行结果粘贴到CPP文件末尾。

请输入一个数: 8

n的平方根是: 2.82843

Press any key to continue

请输入一个数:-8

输入的数是负数!

Press any key to continue

四、上机心得

数据结构上机实验报告 篇4

课程 数据结构 _ 院 系

专业班级 实验地点

姓 名 学 号

实验时间 指导老师

数据结构上机实验报告1

一﹑实验名称:

实验一——链表

二﹑实验目的:

1.了解线性表的逻辑结构特性;

2.熟悉链表的基本运算在顺序存储结构上的实现,熟练掌握链式存储结构的描述方法;

3.掌握链表的基本操作(建表、插入、删除等)4.掌握循环链表的概念,加深对链表的本质的理解。5.掌握运用上机调试链表的基本方法

三﹑实验内容:

(1)(2)(3)(4)创建一个链表 在链表中插入元素 在链表中删除一个元素 销毁链表 四﹑实验步骤与程序

#include #include typedef struct LNode {int data;struct LNode *next;}Lnode, *LinkList;//假设下面的链表均为带头结点。void CreatLinkList(LinkList &L,int j){//建立一个链表L,数据为整数,数据由键盘随机输入。

LinkList p,q;L=(LinkList)malloc(sizeof(Lnode));L->next=NULL;q=L;

cout<<“请输入一个链表:”<

for(int i=0;i

{

p=(LinkList)malloc(sizeof(Lnode));

cin>>p->data;

p->next=q->next;

q->next=p;

q=p;

} } int PrintLinkList(LinkList &L){//输出链表L的数据元素

LinkList p;

} void LinkListLengh(LinkList &L){//计算链表L的数据元素个数。int i=0;p=L->next;if(L->next==NULL){

} cout<<“链表的数据元素为:”;while(p)

{

cout<

data<<“ ”;

p=p->next;} cout<<“链表没有元素!”<

} LinkList p;p=L->next;while(p){

i++;

p=p->next;

} cout<<“链表的数据元素个数为:”<

LinkList p,s;int j=0;p=L;

while(p&&j

} if(!p||j>i-1){ p=p->next;++j;

}

} cout<<“插入元素的位置不合理!”;return 0;s=(LinkList)malloc(sizeof(LNode));s->data=x;s->next=p->next;p->next=s;return 1;int DeleteLinkList(LinkList &L,int i){//删除链表L的第I个数据元素。

LinkList p,q;int j=0;p=L;while(p->next&&j

} if(!(p->next)||j>i-1){ p=p->next;++j;

}

} cout<<“删除元素的位置不合理!”;return 0;q=p->next;p->next=q->next;i=q->data;free(q);return 1;void DestroyLinkList(LinkList &L){//销毁链表L。

LinkList p,q;p=L->next;while(L->next!=NULL){ q=p->next;L->next=q;

free(p);} p=q;

free(L);

cout<<“链表已经被销毁!”<

LinkList L;

int i,j,x;cout<<“第一次数据结构上机实验—链表”<>j;

CreatLinkList(L,j);

LinkListLengh(L);

PrintLinkList(L);

cout<<“在第几个元素前插入:”;cin>>i;cout<<“输入插入的元素:”;cin>>x;

InsertLinkList(L,i,x);

LinkListLengh(L);

PrintLinkList(L);

cout<<“输入删除元素的位置:”;cin>>i;

DeleteLinkList(L,i);

LinkListLengh(L);

PrintLinkList(L);

cout<<“销毁程序后为:”<

DestroyLinkList(L);} 五﹑实验结果

六﹑实验心得体会:

链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。它可以根据需要开辟内存单元。链表中每一个元素称为“结点”,每个结点都应包括两个部分:一为用户需要用的实际数据,二为下一个结点的地址。

实验的程序设计规划(实现的功能、分几个模块、子函数)(1)编写链表创建子函数void CreatLinkList(L,j)(2)编写链表插入子函数 int InsertLinkList(LinkList &L, int i, int x)(3)链表的打印int PrintLinkList(LinkList &L)(4)编写链表删除子函数 int DeleteLinkList(LinkList &L,int i)(5)编写链表销毁子函数void DestroyLinkList(LinkList &L)(6)编写主函数Main(),通过功能菜单调用子函数(7)编译调试程序

经过多次的调试,修改,实验结果终于正确了,在这个过程中,经历了不知道怎么进行声明区的编写如包含文件,宏定义,函数声明,全局变量声明,结构体等的定义等的结合,到学会了使用先把程序主要规划为四个部分来写就简单多了,第一,定义;第二,写所要调用的子函数;第三,写主函数,调用子函数;第四就是程序的编译与调试,修改。数据结构实验需要我们对每个程序的算法有深刻的理解,才能应用到实际中去,因此我们需要在做实验之前要熟悉实验的内容,且先把所要实验的程序写出来,在实验中就可以查找错误并加以改正,这是一个成长的过程。

数据结构上机实验报告一﹑实验名称:

实验二—队列

二﹑实验目的: 1.掌握队列这种抽象数据类型的特点, 掌握栈与队列在实际问题中的应用和基本编程技巧,并能在相应的问题中选用它;2.熟练掌握循环队列和链队列的基本操作实现算法,特别是队满和队空的描述方法;

3.掌握栈与队列的数据类型描述及特点;

4.掌握栈的顺序和链式存储存表示与基本算法的实现; 5.掌握队列的链式存储表示与基本操作算法实现;6.按照实验题目要求,独立完成实际程序的编写编写、调试和运行,并通过用例数据的运行过程抓获相关屏面验证程序设计的正确性; 7.认真书写实验报告,并按时提交。

三﹑实验内容:

对顺序循环队列,常规的设计方法是使用対尾指针和对头指针,对尾指针用于指示当前的対尾位置下标,对头指针用于指示当前的対头位置下标。现要求:

(1)掌握栈和队列的特点,即后进先出和先进先出的原则。(2)设计一个使用对头指针和计数器的顺序循环队列抽象数据类型,其中操作包括:初始化,入队列,出队列,取对头元素和判断队列是否为空;

(3)编写主函数进行测试。

四﹑实验步骤与程序

#include #include #include

#define OK 1 #define ERROR 0 #define OVERFLOW 0 typedef struct QNode { int data;struct QNode *next;}QNode,*QueuePtr;typedef struct { QueuePtr front;QueuePtr rear;}LinkQueue;int InitQueue(LinkQueue &Q){

} Q.rear=Q.front=(QueuePtr)malloc(sizeof(QNode));if(!Q.rear)exit(OVERFLOW);Q.front->next=NULL;return OK;void QueueEmpty(LinkQueue Q){

} void EnQueue(LinkQueue &Q,int e){

} int EnnQueue(LinkQueue &Q,int e){ QueuePtr p;p=(QueuePtr)malloc(sizeof(QNode));QueuePtr p;p=(QueuePtr)malloc(sizeof(QNode));if(!p)printf(“error”);if(Q.front==Q.rear)printf(“该链队为空:”);else printf(“该链队不为空:”);p->data=e;Q.rear->next=p;Q.rear=p;printf(“元素%d入队成功”,e);

} if(!p)return ERROR;p->data=e;Q.rear->next=p;Q.rear=p;

return OK;void DeQueue(LinkQueue &Q){

} void GetHead(LinkQueue &Q){ QueuePtr p;QueuePtr p;if(Q.front==Q.rear)printf(“该链队为空”);p=Q.front->next;Q.front->next=p->next;if(Q.rear==p)Q.rear=Q.front;free(p);printf(“队首元素删除成功”);

} if(Q.front==Q.rear)printf(“该链队为空”);p=Q.front->next;printf(“队首元素为:%d”,p->data);void OutQueue(LinkQueue &Q){

} void LengthQueue(LinkQueue &Q){

int f=0;QueuePtr p;if(Q.front==Q.rear)QueuePtr p;if(Q.front==Q.rear)printf(“该链队为空”);p=Q.front->next;while(p!=Q.rear->next){

} printf(“%d%,”,p->data);p=p->next;

} printf(“该队列的长度为:%d”,f);else {

} p=Q.front->next;while(p!=Q.rear->next){

} printf(“该队列的长度为:%d”,f);p=p->next;f++;void main(){

system(“cls”);int flag=1,i;LinkQueue Q;InitQueue(Q);printf(“************************链队列功能菜单***********************n”);printf(“1:初始化链队列,2:判断链队列是否为空, 3:进入队列,4:取出队首元素n”);printf(“5:输出该队列的所有元素,6:输出该队列的长度,7:结束程序,8:清屏n”);

while(flag){

printf(“n请输入操作符:”);scanf(“%d”,&i);switch(i){ case 1:

int e,n,k;printf(“请输入队列的长度:”);scanf(“%d”,&n);printf(“请输入队列的元素:”);for(e=1;e<=n;e++){

} printf(“初始化链队成功”);break;scanf(“%d”,&k);EnnQueue(Q,k);case 2: QueueEmpty(Q);

break;case 3:

int j;printf(“请输入要进入队列的元素”);scanf(“%d”,&j);EnQueue(Q,j);break;case 4: GetHead(Q);break;case 5:

printf(“该队列的元素为:”);OutQueue(Q);break;

case 6: LengthQueue(Q);break;case 7: flag=0;break;case 8: system(“cls”);} break;

} } 五﹑实验结果

六﹑实验心得体会:

程序主要构造了主函数main()和 InitQueue(),QueueEmpty()EnQueue(),OutQueue()等调用函数,实现了队列的创立,队列是否为空的判断,入队和出队等功能。

通过此次实验,加深了对队列的存储结构的了解,同时也对程序设计能力有了提高,加深了对队列先进先出性质的理解,它允许在表的一端进行插入,在另一端删除元素,这和我们日常生活中的排队是一致的,最早进入队列的元素最早离开。我们往往写不出程序,这其中的原因我觉得是对程序的结构不是很了解,对实验的内容也不熟练的结果,数据结构给我们许多程序的算法和模型,对我们写程序的思维有很大的锻炼,我们应珍惜每次上机实验的机会去实践课堂上所学的东西并从中发现问题,从而达到提升写程序的能力。

数据结构上机实验报告一﹑实验名称:

实验三—二叉树的遍历

二﹑实验目的:

1、熟悉二叉树的结构特性,了解相应的证明方法;

2、掌握二叉树的生成,掌握二叉树的定义和存储表示,学会建立一棵特定二叉树的方法;

3、理解二叉树的三种遍历方法:先序遍历、中序遍历和后序遍历;

4、学会编写实现树的各种操作的算法。

二、实验内容:

1、使用类定义实现二叉树,补充完整所缺的函数,并实现创建和遍历二叉树的基本操作;

2、编程实现在二叉链表这种存储方式下,实现二叉的遍历,可采用递归或者非递归实现,遍历算法为在先序、中序和后序遍历算法。

三、实验步骤与程序:

#include #include #include typedef struct BiTNode { char data;struct BiTNode *lchild,*rchild;} BiTNode,*BiTree;//定义结点类型 BiTree CreateBiTree()//创建树 { char p;BiTree T;scanf(“%c”,&p);if(p==)T=NULL;else { T=(BiTNode *)malloc(sizeof(BiTNode));//为结点开辟空间 T->data=p;T->lchild=CreateBiTree();T->rchild=CreateBiTree();} return(T);}

void PreOrder(BiTree T)//先序 { if(T!=NULL){ printf(“%c”,T->data);PreOrder(T->lchild);PreOrder(T->rchild);} } void InOrder(BiTree T)//中序 { if(T!=NULL){ InOrder(T->lchild);printf(“%c”,T->data);InOrder(T->rchild);} } void PostOrder(BiTree T)//后序 { if(T!=NULL){ PostOrder(T->lchild);PostOrder(T->rchild);printf(“%c”,T->data);} } void main()//主函数 {

printf(“------------二叉树的遍历-------------n”);printf(“请输入要遍历的数:”);BiTree Ta;Ta=CreateBiTree();printf(“先序遍历:”);printf(“n”);PreOrder(Ta);printf(“n”);printf(“中序遍历:”);printf(“n”);InOrder(Ta);printf(“n”);printf(“后序遍历:”);printf(“n”);PostOrder(Ta);} 五﹑实验结果

六﹑实验心得体会:

实验的程序设计规划(实现的功能、分几个模块、子函数)(1)先序遍历递归算法函数:void PreOrder(BiTree T)(2)中序遍历递归算法函数:void InOrder(BiTree T)(3)后续遍历递归算法函数:void PostOrder(BiTree T)(4)主函数的实现:void main()

在实验前我认真阅读关于二叉树的实现的内容,为编程实现第一步,本次实验通过按上述的实验步骤一步步实现的,实验过程中出现了一些错误,经过一步步的调试,修改错误,得到了二叉树的遍历用递归运算的方法的程序。通过这个实验,我体会到了理解数据结构的重要性,这有真正理解了定义数据类型的好处,才能用好这样一种数据结构。二叉树的先序,中序与后序的输出都用了递归的算法,而且用起来不是很复杂,这使我更进一步理解了函数递归调用并得到灵活运用;在实现算法上,从算法的效率看,递归方法书写形式较为简洁,更为直观,一般具有较好的空间效率。

总之,不管做什么实验,我们在做实验前都要先预习,对所做的实验有较深的理解,在做实验的时候需要很严谨,仔细的查找错误,从而能在实验中收获知识,提升自己。

数据结构上机实验报告4 一﹑实验名称:

实验四—查找

二﹑实验目的:

1、熟悉掌握顺序表的查找方法;

2、熟练掌握二叉排序树的构造方法和查找算法

3、掌握描述查找过程的判定树的构造方法,以及按照定义计算各种查找方法在等概率情况下查找成功时的平均查找长度;

4、学会定义线性表的储存类型,实现C++程序的基本结构对线性表的一些基本操作和具体的函数定义;

5、掌握顺序表的基本操作,实现顺序表的查找的等基本运算;

6、掌握对于多函数程序的输入,编辑,调试和运算过程。

二、实验内容:

1、实现顺序表的查找算法

2、关于衡量查找的主要操作—查找的查找平均效率的平均长度的讨论。

三、实验步骤与程序:

#include #define MAX_SIZE 100 typedef struct{ int key;}element;

element list[MAX_SIZE];

int seqsearch(element list[],int searchnum,int num);int main(){

int i,num,searchnum,k;

printf(“---------------数据结构查找实验-------------n”);printf(“请输入数据元素的个数:”);scanf(“%d”,&num);printf(“请输入数据的元素:n”);for(i=0;i

printf(“请输入要查询的数据元素:”);scanf(“%d”,&searchnum);k=seqsearch(list,searchnum,num);if(k!=-1){ printf(“所查询元素的下标为:”);printf(“%dn”,k);} else printf(“查询元素不存在。n”);} return 0;}

int seqsearch(element list[],int searchnum,int num){ int j;

list[num].key=searchnum;

for(j=0;list[j].key!=searchnum;j++);return j

六﹑实验心得体会:

实验的程序设计规划为先写一个主函数int main(),再写一个查找的子函数int seqsearch(element list[],int searchnum,int num),主函数通过调用子函数的方法实现程序的设计。

所谓“查找”即为在一个众多的数据元素(或记录)的查找表中找出某个“特定的”数据元素(或记录),通过本次实验,我更进一步的了解数据结构程序实验设计实现算法的基本模型,和算法实现等基本内容,学会了顺序表的查找方法。

数据结构上机实验报告5 一﹑实验名称:

实验五—内部排序

二﹑实验目的:

1、通过实现下述实验内容,学习、实现、对比各种排序算法,掌握各种排序算法的优劣,以及各种算法使用的情况,并加以灵活应用。

2、掌握各种排序时间复杂度的分析方法。

二、实验内容:

1、插入排序:依次将待排序的序列中的每一个记录插入到先前排序好的序列中,直到全部记录排序完毕。

2、快速排序:首先选择一个基准,将记录分割为两部分,左支小于或等于基准,右支则大于基准,然后对两部分重复上述过程,直至整个序列排序完成。

3、讨论各种内部排序方法的基本思路,算法特点,排序过程及它们的时间复杂度的分析。

三、实验步骤与程序:

#include void main(){

} int x;void charu();void kuaisu();printf(“----------内部排序---------n”);printf(“

1、插入排序:n”);printf(“

2、选择排序:n”);printf(“请根据序号选择:”);scanf(“%d”,&x);if(x==1)charu();else kuaisu();void charu(){ int a[7],j,i,m;

printf(“插入排序n”);

printf(“请输入个您想排序的数据:n”);

for(i=0;i<7;i++)scanf(“%d”,&a[i]);

for(j=1;j<7;j++)

{ m=a[j];

for(i=j-1;i>=0;i--)

{

if(a[i]

break;

else a[i+1]=a[i];

}

a[i+1]=m;

}

printf(“排序成功:”);

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

printf(“ %d”,a[i]);

printf(“n”);} quick(int first,int end,int L[]){ int left=first,right=end,key;

key=L[first];

while(left

{ while((left=key))

right--;

if(left

L[left++]=L[right];

while((left

left++;

if(left

L[left]=key;

return left;

}

quick_sort(int L[],int first,int end)

{ int split;

if(end>first)

{ split=quick(first,end,L);

quick_sort(L,first,split-1);

quick_sort(L,split+1,end);

}

} void kuaisu(){

int a[7],i;

printf(“快速排序n”);

printf(“请输入个您想排序的数据:n”);

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

scanf(“%d”,&a[i]);

quick_sort(a,0,9);

printf(“排序成功:”);

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

printf(“ %d”,a[i]);

printf(“n”);} 五﹑实验结果:

六﹑实验心得体会:

物流管理上机实验报告 篇5

关键词:监控程序,程序进程,系统进程快照,通信程序,后台运行

高职院校在人才培养目标中都把学生动手能力的培养作为主要目标。学生动手能力的培养主要不是靠课堂理论教学, 而主要通过实习操作等实践性教学环节来保证, 对于软件开发类、图形图像、动漫等课程来说都离不开上机这个环节。

随着网络和软件业的发展, 现在的PC机不仅仅是学习、开发的工具, 而且还是娱乐消遣的工具, 你可以用它听音乐、看电影、上网等。现在很多学生由于年轻、抵不住PC机的这些诱惑, 利用上机实验的时间听音乐、看电影、上网等, 而且他们做这些时极具有隐蔽性、指导教师不易发现。为了保证有好的教学效果, 需要指导教师对学生实验的监督力度要加强。

本系统分成服务端和客户端, 但是对服务端和客户端的功能分配和实现有所改进和优化。本系统的流程图简化如图1:

服务端安装在教师机或管理员的教师机上面 (内存最好要大点) , 客户端安装在学生机上面, 然后组装成一个局域网。服务端实现的功能初步规划如下:管理员登录、学生信息管理、群发文件、客户端进程允许列表设置、实时监控管理、教师演示及录制、学生演示、屏幕监控、电子点名、遥控辅导、发送提醒信息等等;客户端实现的功能初步规划如下:学生注册及登录、作业提交、发送请求操作、举手提问、录制教学视频等等。由于篇幅关系, 本文只对服务端如何与客户端通信及服务端如何控制和监控客户端程序进程进行归纳和总结。

设计和实现思路:监控程序运用Visual Studio开发工具开发, 选择WIN32应用程序类型。监控程序实现了自启动, 运行于后台, 与服务器保持通信。

实现过程:学生机启动后, 监控程序自动启动运行于后台, 接收服务器端的消息, 得到可以打开的应用程序运行列表。在实验的过程中, 每100秒监控计算机所打开的应用进程一次, 当发现一个不在集合列表中的应用程序进程打开时, 监控程序自动关闭进程程序, 并将学生的上机情况传送到服务器端, 存储于服务器的数据库中, 供以后作学生平时成绩统计、教师教学评估使用。

下面详细讲解其实现过程:

1、程序设计过程

在VC中通过Win32 Application-〉A Simple Win32 application建立一个工程, 取名为cli。打开winmain () 函数, 按以下过程完成各项功能。

(1) 建立一个scoke, 接收服务器信息, 即学生实验可打开的应用程序集, 保存在一个字符串中。

(2) 用Set Time () 先添加一个计时器对象。将u Elapse参数设置为100000, 即每100秒监控一次。

(3) 然后在while (Get Message () ) 语句中实现监控与处理。监控中, 先发现用户打开的应用程序窗口, 再依次得到应用的进程ID和应用程序名, 如果是非指定的程序, 则上报服务器, 同时自动关闭进程。

(4) 自启动的实现。

2、服务器端与客户端通信实现

Windows下编写网络应用程序大都利用socke进行数据通信, 包括客户端和服务器端编写, 本文主要探讨客户端程序的编写。客户端编写遵守以下过程:

(1) 创建客户套接字 (CREATE) 。

SOCKET sockClient=socket (AF_INET, SOCK_STREAM, 0) ;

(2) 与远程服务器进行连接 (CONNECT) 。

(3) 开始数据传输, 发送 (SEND) 接收 (RECEIVE) 。

(4) 关闭套接字 (CLOSE SOCKET) 。

closesocket (sockClient) ;

服务器端通信主要包括CREAT、BIND、LISTEN、ACCEPT、SEND、RECEIVE、CLOSE SOCKET等过程。不做详细讨论。

3、识别客户端打开的当前应用程序名

该功能的实现分为三步, 首先得到实验机打开的窗口句柄及进程ID, 接着得到系统进程的快照句柄, 再根据得到的ID到快照句柄中进行遍历, 找到对应的PROCESSENTRY32结构的进程信息变量, 而应用程序名是该结构的sz Exe File成员值。

(1) 运用HWND hwnd=Get Foreground Window () ;得到前台打开的窗口句柄, 运用Get Window Thread Process Id () ;得到应用进程ID。代码如下:

(2) 得到系统进程的快照句柄, Windows操作系统为所有保存在系统中的进程线程的当前状态制作了一个只读副本, 通过WIN32API函数Create Toolhelp32Snapshot () 获取这个句柄。

(3) 快照的每一个信息是一个PROCESSENTRY32结构的进程信息变量, 运用Process32First () ;Process32Next () 对这个快照进行遍历查找。通过进程结构中成员th32Parent Process ID与ID的对比, 查找到对应的进程结构变量, 成员sz Exe File代表应用程序名。

4、自动关闭游戏娱乐应用程序

在第三大步得到了学生机打开的应用程序名, 保存在字符变量sz File中, 在第二步通过与服务器通信得到可以打开的应用程序集合, 保存在字符串变量str中, 如果学生打开的应用程序不在这个集合里, 则关闭应用进程。

终止进程的方法如下:

由于终止的进程在当前进程之外, 先通过Open Process () 和第三步得到的进程ID得到进程句柄。

HANDLE hProcess=NULL;

h Process=OpenProcess (PROCESS_TERMINATE, FALSE, dwProcessID) ;

然后通过该句柄终止进程。

if (hProcess)

Terminate Process (h Process, 0) ;

5、监控的实现

使用S e t T i m e () 添加一个记时器对象, 将时间间隔设置为100000, 即10秒, 每隔10秒向应用程序发送WM_TIMER消息。

UINT_PTR i Timer ID;

iTimerID=SetTimer (NULL, 0, 100000, NULL) ;

响应时钟消息在以下位置添加。实现应用程序名的判断、传送给服务器、非课堂应用自动关闭等功能。

6、自启动的实现

建立一个自启动程序。并将前面建立的cli执行文件复制到本文件。

在本文中, 先得到自身程序的路径, 然后在注册表中增加一个的启动项。即:修改注册表, 增加一个“load”项, 将客户端监控程序设置为load项的值。

7、结语

本文介绍了实验室学生机的监控程序的编写, 包括与服务器的通信, 不间断地对学生机上打开的应用进行识别判断, 如果是非课堂安排的应用将自动关闭, 并记录下来传给服务器以利于教学评估。客户端监控程序的特点是自启动, 工作于后台, 并且隐藏进程, 具有一定的安全性和隐蔽性。

参考文献

[1]马安鹏编.Visual C++6程序设计导学.清华大学出版社, 2002.

[2]周金萍等编著.Windows系统编程.人民邮电出版社, 2002.

物流管理上机实验报告 篇6

(七)姓名:

上机须知:

a)必须带《实验教程》,没有带的回去取;上机时间:2小时

b)提交内容:提交两张表(“学生成绩排序表.xls”和“彩电销售情况表.xls”),4张截图 c)A、B班要求不完全相同,不要做错

d)作业提交格式:提交多个文件时打包为rar压缩包,压缩包按班级-学号-姓名-实验号(阿拉伯数字)-A(B).rar命名,A、B代表A班或者B班,截图按1.jpg、2.jpg…依次命名学号:班级:日期:

1.新建Excel表格,并录入数据

说明:

a)参考实验5.4,新建Excel表格“学生成绩排序表.xls”,要求:

◆参考图5.10录入数据;

◆录入记录达到20个以上,(图上的记录不够20条,自己编造数据补齐20条记录); b)参考实验5.5,新建Excel表格“彩电销售情况表.xls”,要求:

◆参考图5.15录入数据;

2.数据的普通筛选和高级筛选 说明:

a)参考实验5.4,对“学生成绩排序表.xls”中“体育”一列进行普通筛选,要求:

◆显示80≤体育分数≤85的记录;

◆对显示结果进行截图,命名“截图7_1”;

b)参考实验5.4,对“学生成绩排序表.xls”中“体育”和“高数”两列进行高级筛选,要求:

◆显示80≤体育分数≤85并且80≤体育分数≤90 的记录;

◆对显示结果进行截图,命名“截图7_2”;

3.Excel表格的图表显示 说明:

a)参考实验5.5,对“彩电销售情况表.xls”进行图表生成。

要求:

◆图表达到图5.17的效果;

◆对显示结果进行截图,命名“截图7_3”;; b)参考实验5.5,对“彩电销售情况表.xls”进行图表生成,并更改图表格式。(A班做,B班可不要求)

数据库原理上机实验报告 篇7

实验序号与实验名称:实验九:用户管理和权限管理

姓名:薛亚妮学号:201000901045

专业班级:信计101实验日期:2012年 12月15日

一、实验目的:理解和体会数据库安全性的内容,加强对DBMS功能的认识。

二、实验内容:数据库的用户管理和操作权限管理。

三、程序源代码:

1、对象操作授权

sp_grantdbaccess 201000901035

grant select on 产品1045 to 201000901035

grant create view,create table to 201000901035

grant execute on sp_getgoods to 2010009010352、在授权过程中体会GRANT命令中WITH GRANT OPTION 短语的作用。

--用户201000901045--

grant select on产品1045 to [201000901035] WITH GRANT OPTION

--用户201000901035--

grant select on 产品1045 to [201000901035]

As [201000901035]

3、分情况收回授权,并体会REVOKE命令中GRANT OPTION FOR和CASCADE

--短语的作用

revoke select on 产品1045 from 201000901035

revoke create view,create table to 201000901035

revoke grant option for select on 产品1045 from 201000901035 CASCADE

四、实验结果分析与总结

安全性控制是数据库管理员(或系统管理员)的一个重要任务,他要充分利用数据库管理系统的安全功能,保证数据库和数据库中数据的安全。

授权登录用户为当前数据库用户 :

sp_grantdbaccess [@loginame =] login

[,[@name_in_db =] name_in_db]

使一个登录用户成为数据库用户只是授权的第一步,数据库管理员可以进一步为能够连接到自己所管理数据库的用户在该数据库上授予所需要的权限.收回权限:收回语句授权 :REVOKE { ALL | statement_list } FROM name_list

收回对象授权 :

REVOKE [GRANT OPTION FOR]

{ ALL [ PRIVILEGES ] | permission_list }

{[(column_list)] ON { table | view } | ON { table | view } [(column_list)]

| ON stored_procedure| ON user_defined_function }

FROM name_list

[ CASCADE ]

[ AS { group | role } ]

禁止语句权限: DENY { ALL | statement_list } TO name_list

禁止对象权限: DENY { ALL [ PRIVILEGES ] | permission_list }

{[(column_list)] ON { table | view } | ON { table | view } [(column_list)]

| ON stored_procedure| ON user_defined_function }

TO name_list

上一篇:党建工作调查报告下一篇:保险公司业务实习报告