系统结构实验报告一

2025-02-11 版权声明 我要投稿

系统结构实验报告一(推荐6篇)

系统结构实验报告一 篇1

一、实验目的

1、熟练掌握线性表的基本操作在两种存储结构上的实现,其中以熟悉各种链表的操作为重点。

2、巩固高级语言程序设计方法与技术,会用线性链表解决简单的实际问题。

二、实验内容

1、单链表的表示与操作实现(*)

2、约瑟夫环问题

3、Dr.Kong的艺术品

三、实验要求

1、按照数据结构实验任务书,提前做好实验预习与准备工作。

2、加“*”题目必做,其他题目任选;多选者并且保质保量完成适当加分。

3、严格按照数据结构实验报告模板和规范,及时完成实验报告。

四、实验步骤

(说明:依据实验内容分别说明实验程序中用到的数据类型的定义、主程序的流程以及每个操作(成员函数)的伪码算法、函数实现、程序编码、调试与分析、总结、附流程图与主要代码)

㈠、数据结构与核心算法的设计描述

(程序中每个模块或函数应加注释,说明函数功能、入口及出口参数)

1、单链表的结点类型定义

/* 定义DataType为int类型 */ typedef int DataType;

/* 单链表的结点类型 */ typedef struct LNode { DataType data;struct LNode *next;}LNode,*LinkedList;

2、初始化单链表

LinkedList LinkedListInit(){ // 每个模块或函数应加注释,说明函数功能、入口及出口参数 }

3、清空单链表

void LinkedListClear(LinkedList L){// 每个模块或函数应加注释,说明函数功能、入口及出口参数}

4、检查单链表是否为空

int LinkedListEmpty(LinkedList L){ ….}

5、遍历单链表 void LinkedListTraverse(LinkedList L){ ….}

6、求单链表的长度

int LinkedListLength(LinkedList L){ ….}

7、从单链表表中查找元素

LinkedList LinkedListGet(LinkedList L,int i){ //L是带头结点的链表的头指针,返回第 i 个元素 }

8、从单链表表中查找与给定元素值相同的元素在链表中的位置

LinkedList LinkedListLocate(LinkedList L, DataType x){ …… }

9、向单链表中插入元素

void LinkedListInsert(LinkedList L,int i,DataType x){ // L 为带头结点的单链表的头指针,本算法 // 在链表中第i 个结点之前插入新的元素 x }

10、从单链表中删除元素

void LinkedListDel(LinkedList L,DataType x){ // 删除以 L 为头指针的单链表中第 i 个结点 }

11、用尾插法建立单链表

LinkedList LinkedListCreat(){ …… } ㈡、函数调用及主函数设计

(可用函数的调用关系图说明)㈢ 程序调试及运行结果分析 ㈣ 实验总结

五、主要算法流程图及程序清单

1、主要算法流程图:

2、程序清单

(程序过长,可附主要部分)

说明:以后每次实验报告均按此格式书写。

我在布置实验室时,仅给出实验名称、实验目的、实验内容及相关数据结构。

题目一程序参考框架 # include # include # include # include # include /* 定义ElemType为int类型 */ typedef int ElemType;#define TRUE 1 #define FALSE 0 #define NULL 0 #define flag-1

/* 单链表的结点类型 */ typedef struct LNode {ElemType data;struct LNode *next;} LNode,*LinkedList;

/* 初始化单链表 */ LinkedList LinkedListInit(){ } /* 清空单链表 */ void LinkedListClear(LinkedList L){ } /* 检查单链表是否为空 */ int LinkedListEmpty(LinkedList L){ } /* 遍历单链表 */ void LinkedListTraverse(LinkedList L){ } int LinkedListLength(LinkedList L){ } LinkedList LinkedListGet(LinkedList L, int i){ } LinkedList LinkedListLocate(LinkedList L, ElemType x){ }

void LinkedListInsert(LinkedList L, int i, ElemType x){LinkedList pre,p,s;int j;pre=L;j=1;p=L->next;while(pre&&jnext;j++;} if(pre==NULL){printf(“给的i值超过了表长”);exit(0);} s=(LNode *)malloc(sizeof(LNode));s->data=x;pre->next=s;s->next=p;}

void LinkedListDel(LinkedList L,ElemType x){ LinkedList pre,p;int j;pre=L;j=1;p=L->next;while(p&&p->data!=x){pre=p;p=p->next;j++;} if(p==NULL){printf(“表中没有值为x的结点”);exit(0);} pre->next=p->next;free(p);}

LinkedList LinkedListCreat(){ LinkedList L=LinkedListInit(),p,r;ElemType x;r=L;printf(“please input data,input-1 is endn”);scanf(“%d”,&x);while(x!=flag){p=(LinkedList)malloc(sizeof(LNode));p->data=x;r->next=p;r=p;scanf(“%d”,&x);} r->next=NULL;return L;}

int scan(){int d;printf(“please input the operationn”);printf(“1.初始化 2.清空3.求链表长度4.检查链表是否为空n”);printf(“5.检查链表是否为满 6.遍历链表 7.从链表中查找元素n”);printf(“8.从链表中查找与给定元素值相同的元素在顺序表中的位置n”);printf(“9.向链表中插入元素10.从链表中删除元素n”);printf(“其他键退出。。。n”);scanf(“%d”,&d);return(d);}

系统结构实验报告一 篇2

实验教学,无可厚非决定着高等教育工作的存在价值,由于长久以来相关体制不断改革,对于既有实验流程也有着全新的审视标准。依照国家教学培养纲要阐述,涉及现代化智能技术和领导机制的设置需要予以重视,但是截止至今,大部分教学单位仍旧不肯放弃传统文档手工改记录模式,这无非限制了硬件设备的投入效果,后期控制前景更是没有什么大的作为。

1 传统实验教学手段以及相关隐患论述

持续到现在,我国高校改革进程不断跨越,办学空间全面延展,大多数办学主体开始注意硬件设备的投入,但是却疏忽了软件程序的协调能效。现下高校已经开始布置内部程序的信息化改造工作,管理系统应用现象比较常见,但是这类教学手段本身具备着严密性、特殊性,有关管理细务更是不可计数,因此阶段停滞效应已经是稀疏平常之事。在规模宏达、事务交织的实验管理项目中,高校自身遗留的技术、理念问题全面分布。

1.1文档管理仍旧处于手工阶段

关于实验室基础信息资料由于缺少数据中心整理,使得主管部门不能及时体验共享效果,一旦检查工作积压,就必须委派各类人员进行加班加点,使得本来繁重不堪的验证职务更加寸步难行。另一方面,实验教学活动比较复杂,平常软件是不能全力满足阶段运行需求的,因此内部盲点效应急剧扩散。教务管理工作已经实现学分制改造,课程自由选取风尚也大面积掀起,而传统班级分划制度却造成极大的反差效果,这也使得后期创新机制无法扎根,教学深度大不如前。

1.2实验室、教学管理手段急剧落后

我国自从颁布素质化教学方案之后,主张全面发扬学生主体价值地位。尤其注重在较为开放的交流环境中积累创新知识理论,这是高校注重培养学生创新能力的必要前提,可以说网络空间的应用已经处于迫在眉睫之势,就是因为实验教学管理制约,使得整体架构宣传、吸纳动力逐渐消退,不利于人才优势的释放。

2 实验教学管理系统的设计、规划

2.1 系统归控目标研究

利用Web空间实施教学系统完善,需要确保过程全面支持功效,在广泛整合课程管制内涵和活动布置准则之后,提供相对灵活的课程编辑框架,并借此展示教师的引导地位;经过网上论坛交流、资料阅读、资源共享等节点,创建相互辅助的主观学习情境,鼓励学习主体的前进动力;实验资源要配备完全,避免师生使用环节中出现堵塞危机。在整个改造流程中,教师完全凭借课程信息、实验数据进行引导渠道挖掘,学生便在闲暇时间运用数据库中心进行自主式学习。为了全面贯彻上述行为指标,就必须联合系统设计准则做出详细规划:快速响应内部工作绩效,依照既定数据库资源、局域网架构进行分散元素整编,避免重复投入带来的经济损失结果;全面适应师生学习、交流欲望标准,设备排列形态不复杂,且维护方便;尤其是数据访问环节中,各类并发操作要灵活转交,达到多元调试技巧形态。

2.2 系统功能分析

依照具体单位实验教学控制实况进行调研,发现其最终目标就是为了完成下列工作内容:

1.教师职责

教师必须将各类分散实验材料进行特定渠道发布、整编,使得后期批改、反馈机制收纳完全,维持与学习主体之间的交流效率,窥视异质化仪器在各自岗位的使用情况;必要时可要求高校管理主体引进最新教学实验资源,并将数据库上传、下载流程交接完毕。

2.学生任务

学生在整个交流环境中需要利用课程调停状况进行适当预习解析,避免报告资料的滞后上交现象;同时根据个人成绩结果进行教师管理成果的反馈、评估,保证资源的可应用价值。

3.系统管理员

其在整个体系架构之中拥有最高权限,并围绕网站栏目设置、新闻内容发布、人员程序管理业务进行科学调试,稳定初始信息的延展动力,避免统计信息出现任何遗漏问题。

2.3 教学管理系统的内部模块规划

利用上述细致功能进行分析、拆解,技术人员在细致审视各类用户动机需求之后,设置必要的支撑模块,尽量为师生、系统管理、实验人员提供不同操作权限,不同人员经过必要的资格、身份验证之后,就会依照特定渠道方向进入必要操作空间,规避外部信息的干扰状况,进而保证具体工作效率的提升价值。另外,不同模块按照人员具体工作顺序实施开发活动,尽量迎合不同部门实验教学的动机标准。

3 实验教学管理系统的布置流程解析

3.1系统平台、软件结构的匹配

透过上述功能设计准则以及系统规划动机分析,设计人员将利用Web格局实施高校实验教学体系的B/S结构调整,因为此类结构针对用户要求不高,浏览器可直接进入系统内部进行数据访问,对于结构推广来说积极意义深刻。另一方面,采用B/S布局方案之后,还可有效降低系统维护、升级所需的成本费用,避免细致工作量的冲突效应,能够全面满足用户个体需求标准。

在选取系统支撑平台过程中,考虑到IIS 6.0稳定、安全性能支持,使得后续升级细节有了很好的衔接出口。关于数据后台管理层面,系统具体运用MS SQL Server2000作为数据库管理中枢,内存储备成果优良;并且在安全效能方面加强防护墙智能识别潜质,避免任何数据传输环节中出现损害、丢失现象。

涉及程序编辑、设计过程中,技术人员具体应用ASP.NET作为替代Java的产品,相对提供更加丰富的Web视觉界面,即便是用户在编程经验上有所欠缺,也能轻松使用特定功能。另外,ASP.NET可说是为MS SQL Server开放大面积的支持空间,数据交接融合变得轻而易举。需要注意的是,此类系统平台模型主要利用微软无缝衔接标准开发,对于系统实际访问效率和安全地位稳固贡献颇丰,高校在应用过程中要适当加大投入力度。

3.2细致化模块功能的实现方式分析

为了有效规避模块堆积造成的工作效率低下结果,各类分散成员(教师、学生、管理人员)要按照实际需求设计可操作形式的模块,确保进入系统内部操作空间之后,审视的内容基本与个人职务范围相近。例如:教师登陆操作界面之后,面对作业内容都是自己曾经传授的机理概念,问题也都是学生在现场提出的,教师便依照此类标准为后期学生提供相应地资源。

总的看来,全开放的自主实验环境建立在实验室网站、注册和预约系统、门禁系统、无线电源管理系统以及由网络摄像机构成的监控系统基础之上。系统中分散信息的整合属于现代化管制的必要渠道,依照目前用户模块功能标准划分,实际信息统计、分类活动也有效完善。单位用户自从登入界面开始,其任何操作行为都会完整地记录在数据库中;配合系统统计资料进行科学数据验证,可以为整体教学活动提供有力疏通依据。例如:教师在针对某类学科进行实验课题建议环节中,能够轻松了解学习群体对于此类内容的掌握状况,便于反馈机制的延展,确保应对策略、教学内容的灵活转换,避免学生自我限制因素的扩张现象,切实提升整体教学管理质量。教师仍旧可以利用学生访问信息进行验证,探索各类学科的受欢迎程度,保证后期调整策略能够尽如人意,全面开放学生自主性研究的动力理念。

4 结语

综上所述,各大高校开展实验教学改革活动,要尽量迎合目前计算机智能管理标准进行模块制作、交接,尽量将师生、管理人员职务叙述完全,并借助硬件、软件设施实施有力归控,确保学生对于既定课程的理解程度,避免结构紊乱引发的成绩不理想现象;教师在数据量访问记录的引导下,也能够联合学生反馈效果做出课程内容的改革。在双向交流渠道的支持下,相信实验教学管理工作能够更上一层楼,相关人才培养机制也将更加成熟。

摘要:实验教学手段属于高校内部机理调试的必要工具,也是鉴证时代改革历程的特殊环节,其控制成果势必影响后期专业发展前景。因此,本文具体联合目前高校实验教学管理手段以及归控状况进行同步论述,将内部流程细化隐患逐一排查,为后期专门化管制策略提供疏导线索,规避任何阶段瓶颈限制的滋生迹象,这是现代化教育工作的根本动机。

系统结构实验报告一 篇3

【关键词】教材整合; 教与学;能力培养;有效课堂

【中图分类号】G623.31 【文献标识码】B 【文章编号】2095-3089 (2012)02-0057-02

1 课题的提出

针对传统教学重知识的传授,轻能力的培养,重视教师的教,忽视学生的学,重教法、轻学法的特点和弊端,对于实践性极强的语言学科来说,实施传统教法无疑有碍于学生语言一种正确处理教与学关系的新途径,从课文教学人手,找准外语教学教法的最佳结合点,改变“重教轻学”的现象,摆正教师的位置和学生的地位,更充分地发挥教师的主导作用与学生主体作实践活动,限制了学生的言语活动量,不利于语言运用能力的培养,造成了教与学的严重失调。

课堂教学质量的提高,需要教与学双边的完美结合,需要教与学的有机协调,因此,保证教学双边的协调性与完整性是本实验的重点和焦点。由于课文教学为外语教学的主渠道,占据了课堂教学的大部分时间,因此,以改革英语课文教学为突破口,努力探索课文教学教与学的协调性为本课题研究的核心,旨在寻求用,以获得大面积提高教学质量的效果,进而达到培养学生的言语能力和自学能力的目的。

2 实验目的

从课文教学入手,找准外语教学教法与学法的最佳结合点,改变“重教轻学’的现象,正确处理教与学之间的关系,摆正教师的位置和学生的地位,更充分地发挥教师的主导作用和学生的主体作用,以获得大面积提高教学质量的效果,进而达到培养学生的言语能力和自学能力的目的。

3 实验原则与指导思想

3.1 坚持教师为主导、学生为主体的原则。 本原则要求在实验的整个过程中,必须坚持教师的示范作用。教师要根据教学大纲决定外语教学的指导思想、目的、内容、方法、进度和考核教学质量的方法,面向全体学生、针对不同程度的学生安排不同的训练内容,处理好教材中难点、知识之间的联系;学生应在教师的指导下,遵循学习和运用英语的心理认识规律,在掌握了一些语言知识和能力的基础上,应积极主动地自学,进行预习,基本上理解新知识和课文的内容,划出重点、难点、疑难问题,以便上课时重点听讲、质疑,进一步理解所学内容。在理解的基础上,要主动积极地进行听、说、读、写全面操练,变知识为自动化的熟练技巧并形成技能。

3.2 坚持外语教学与能力培养的指导思想。 本原则要求各种能力的培养应贯串外语教与学的始终。外语学习方法论认为,外语学习应分为呈现、实践、迁移三个阶段。呈现阶段是认识和熟悉课文,给学生提供外语素材及外语经验的阶段;实践阶段是逐渐缩小控制以进入交际的阶段,包括控制套用,类推使用和整理创新三步。无论是语言学家H.帕默、w.里弗斯、J.佩克还是w.斯威特对外语学习持有不同的观点和看法,但都认为其与各种能力的培养具有密切的关系。毫无疑问,应坚持外语教学中模仿力,观察力、想象力、类比力、概括力、逻辑思维和分析力、归纳——演绎力、综合力和创造力的培养同时注重能力培养的阶段性。

4 实验步骤与内容

学生学习和运用英语的心理认识过程有三个层次:了解、操练和运用。了解是指理解所学语言知识及其规律和机械地记忆套用语言知识。操练是指有意义的听、说、读、写言语操练,并通过操练培养听、说、读、写技能。运用是指灵活运用所学语言知识进行听、说、读、写言语交际活动。

从哲学的观点来看,教师的教是外因,学生的学是内因,外因要通过内因起作用。我们高九七级三位外语教师遵循外语教育规律和学生学习和运用英语的心理认识规律,从课文教学改革人手,改变原有的教学程序和方法,将课文教学分为词汇学习,课文处理和检测验收三部分,用十个课时的时间完成从知识的识记、知识的运用到技能的形成的教学全过程。步骤如下:

4.1 教学过程划分

第一部分词汇学习

本步骤重点解决词的音、形、义、性及用法。课时一,在语音室上,要求学生掌握词的拼读,并做到发音准确,书写合格。采取学生预读、听录音仿读,同学领读、教师

教读,全班齐读,个别朗读和结合课文读单词的方式,将加大读词的密度和强度,加强对词形的意识。单一要求实施多种形式的教学手段必将活跃课堂气氛,激发学习兴趣。课时二和课时三,要求学生着重掌握词的义、性及用法并加强自学能力的培养。教师提供教案(材料)给学生。学生自学为主,教师指导学习为辅,识记、理解和初步运用重点词、短语、句型、词语比较等语言知识,同时做好重点语言知识运用的准备工作,如(菲)控制性造句,上下文的填空,释义等,规定先做在“预习本”上。

第二部分课文处理

本步骤着重处理课文内容及语言点的理解、归纳和运用。课时四,学生略读课文,完成“目标检测题,和所提供的阅读理解题,师生讨论,老师评讲以获取学生理解课文程度的信息。课时五,学生细读课文,将重点句、难句(一般是复合句)的分析(用英语表述)、翻泽及改写做在预习本上。以学生先宣讲,老师后讲评的方式共同排除阅读中又一障碍——语句结构的理解。课时六,答疑课。疑难问题由以小组为单位用书面的形式课前呈交和当堂提出的两部分组成。课时七,学生精读课文,对课文进行归纳、总结。写出主题句、段意和中心思想,就课文进行答问。将课文复述、改写、缩写或命题书面表达做在预习本上。

第三部分检测验收

本步骤通过各种检测手段加强对学生进行听、说、渎、写能力的培养。课时八,复述课文,听写短文,完成就词汇、课文内容的测试题。课时九和课时十,评讲“课课练”高考模拟试题(讲评前得用两节辅导的时间完成此卷,送微机室统一评分,成绩保存)。

说明:

l、老师需要提供一份全课的教案材料,内容包括本课重点词和短语的用法举例和比较;一份有关词汇和课文的检测题:一套“课课练”高考模拟试题。

2、学生需要一个“预习本”,学完一课检查一次。

3、针对某一问题布置课文后的练习题。

4、学生将获得三个半课时的自学时间,能改变老师占用舍登时间、“满堂灌”的局面,为学生自学能力的培养提供条件。

4.2 教学程序划分。

课文教学教与学程序三段示意图

(按照外语学习分段说、学生心理认识过程和师生参与顺序)

5 实验对象和时间

实验班和对比班均由高97级六个平行班共328人组成,采用单组实验法进行纵向比较,将从第六课后“课课练”考试成绩与第六课前的某些“课课练”考试进行对比。由于考题出自于同一本资料,其难度系数的一致性可保证比较的可靠性。

實验时间:第一阶段(准备阶段)(1995年12月),收集高一册第一课到高二册第五课的“课课练”考试成绩,进行第二次“自学能力”现状的“民意测验”。

第二阶段,(实验和调查阶段)1996年1月一1996年6月),进行课题实验,收集各种资料和考试成绩,进行第二次“自学能力”现状的“民意测验”。

第三阶段(实验和分析总结阶段)(1996年7月一1996年9月)实验的分析和总结,写出实验报告、经验总结或课堂实录。

6 制度管理

本实验得到校方的大方支持。由本年级的三位外语教师(林安学、郭宗玉、于天伟)共同承担和组织课题实验,共同商讨教案,轮流撰写,随时研讨存在的问题和研究解决问题的措施和对策,定期检测。成绩、资料由郭宗玉老师管理;学生的“预习本”定期检查,统一保管。

7 实验效果

1997年6月,荣昌县分管局长、教研室、全县高中年级大部分兄弟学校的英语教师、荣昌中学外语组组员及校领导对本课题实验进行验收评定,现场听了由林安学在高九七级一班主讲的“检测验收’部分的一堂课,课后听取了就此实验所做的汇报和总结。让学生填写了调查问卷、查阅、统计、分析与实验有关的各种资料、数据、展开了充分的实事求是的评论。大家一致认为。该实验在课文教学中如何正确处理教与学双边关系及对学生的能力培养等方面取得了良好的教学效果,具有很强的可行性、推广性的特点。

数据结构实验报告 篇4

实验(实习)名称数据结构实验(实习)日期 2011-11-2得分指导教师周素萍

系公共管理系专业信息管理与信息系统年级10级班次1姓名常玲学号2010230700

3实验一顺序表的基本操作及C语言实现

【实验目的】

1、顺序表的基本操作及 C 语言实现

【实验要求】

1、用 C 语言建立自己的线性表结构的程序库,实现顺序表的基本操作。

2、对线性表表示的集合,集合数据由用户从键盘输入(数据类型为整型),建立相应的顺序表,且使得数据按从小到大的顺序存放,将两个集合的并的结果存储在一个新的线性表集合中,并输出。

【实验内容】

1、根据教材定义的顺序表机构,用 C 语言实现顺序表结构的创建、插入、删除、查找等操作;

2、利用上述顺序表操作实现如下程序:建立两个顺序表表示的集合(集合中无重

复的元素),并求这样的两个集合的并。

【实验结果】

[实验数据、结果、遇到的问题及解决]

一. Status InsertOrderList(SqList &va,ElemType x)

{

}

二. Status DeleteK(SqList &a,int i,int k)

{//在非递减的顺序表va中插入元素x并使其仍成为顺序表的算法 int i;if(va.length==va.listsize)return(OVERFLOW);for(i=va.length;i>0,x

}

//注意i的编号从0开始 int j;if(i<0||i>a.length-1||k<0||k>a.length-i)return INFEASIBLE;for(j=0;j<=k;j++)a.elem[j+i]=a.elem[j+i+k];a.length=a.length-k;return OK;

三.// 将合并逆置后的结果放在C表中,并删除B表

Status ListMergeOppose_L(LinkList &A,LinkList &B,LinkList &C)

{

LinkList pa,pb,qa,qb;pa=A;pb=B;qa=pa;qb=pb;// 保存pa的前驱指针 // 保存pb的前驱指针 pa=pa->next;pb=pb->next;A->next=NULL;C=A;while(pa&&pb){} while(pa){} qa=pa;pa=pa->next;qa->next=A->next;A->next=qa;if(pa->data

data){} else{} qb=pb;pb=pb->next;qb->next=A->next;//将当前最小结点插入A表表头 A->next=qb;qa=pa;pa=pa->next;qa->next=A->next;//将当前最小结点插入A表表头 A->next=qa;

}

} pb=B;free(pb);return OK;qb=pb;pb=pb->next;qb->next=A->next;A->next=qb;

顺序表就是把线性表的元素存储在数组中,元素之间的关系直接通过相邻元素的位置来表达。

优点:简单,数据元素的提取速度快;

缺点:(1)静态存储,无法预知问题规模的大小,可能空间不足,或浪费存储空间;(2)插入元素和删除元素时间复杂度高——O(n)

求两个集合的并集

数据结构 队列实验报告 篇5

小组成员:xxxxxxxx日期:xxxxxxxx

一、需求分析(xxx)

1.链队列

1)在本演示程序中,首先要链队列添加一个头结点,并判断队列是否为空,它只允许在表的一端进行插入,而在另一端删除元素,允许插入的一段叫队尾,允许删除的一端则为对头,接着访问队列中所有元素,并输出,输出是每个元素之间用空格来完成。最后销毁队列,释放空间。2)演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“欢迎来到链队列”“元素入队”“元素出队”“销毁队列”“清空队列”之后。由用户在键盘上输入演示程序中规定的运算命令,相应的运算数据和显示结果显示在其后。3)程序执行的命令包括: 欢迎来到链队列 1输出队列长度 2元素入队 3元素出队 4销毁队列 5清空队列 6对头元素 7退出链队列 4)测试数据 入队 1 2 3 4 5 分别执行“元素入队”“元素出队”“销毁队列”“清空队列”等操作。2.顺序队列

1)在本演示程序中,首先要顺序队列添加一个头结点,并判断队列是否为空,它只允许在表的一端进行插入,而在另一端删除元素,允许插入的一段叫队尾,允许删除的一端则为对头,接着访问队列中所有元素,并输出,输出是每个元素之间用空格来完成。2)演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“欢迎来到链队列”“元素入队”“元素出队”“取得头结点”“输出显示”之后。由用户在键盘上输入演示程序中规定的运算命令,相应的运算数据和显示结果显示在其后。3)程序执行的命令包括: 欢迎来到顺序队列 1入队 2出队

3判断是否为空 4取得头结点 5输出显示 6退出顺序队列 4)测试数据 入队 1 2 3 4 5 分别执行“元素入队”“元素出队”等操作。3循环队列

1)在本演示程序中,首先要顺序队列添加一个头结点,并判断队列是否为空,初始化建空队列时,令front=rear=0,每当插入新的队列尾元素时,“尾指针增1”;每当删除队列头元素时,“头指针增1”。接着访问队列中所有元素,并输出,输出是每个元素之间用空格来完成。2)演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“欢迎来到链队列”“元素入队”“元素出队”“取得头结点”“输出显示”之后。由用户在键盘上输入演示程序中规定的运算命令,相应的运算数据和显示结果显示在其后。3)程序执行的命令包括: 欢迎来到循环队列 1入队 2出队

3判断是否为空 4取得头结点 5输出显示 6退出顺序队列 4)测试数据 入队 1 2 3 4 5 分别执行“元素入队”“元素出队”等操作。

二.概要设计(xxxx)

⒈ 为实现上述算法,需要顺序表的抽象数据类型,抽象数据类型定义如下:

ADT Queue { 数据对象:D={ ai|ai∈ElemSet, i=1,2,3...,n, n>=0 } 数据关系: R={ |ai-1,ai∈D,i=2,...,n } 基本操作: InitQueue(&Q)操作结果:构造一个空队列。DestroyQueue(&Q)初始条件:队列Q已存在。

操作结果:队列Q已被销毁。ClearQueue(&Q)初始条件:队列Q已存在。

操作结果:将Q清为空队列。QueueEmpty(Q)初始条件:队列Q已存在。

操作结果:若Q为空队列,则返回TRUE,否则FALSE。QueueLength(Q)初始条件:队列Q已存在。

操作结果:返回Q元素的个数,即队列的长度。GetHead(Q,&e)初始条件:Q为非空队列。

操作结果:用e返回Q的队头元素。EnQueue(&Q,e)初始条件:队列Q已存在。

操作结果:插入e返回Q的新的队尾元素。DeQueue(&Q,&e)初始条件:Q为非空队列。

操作结果:删除Q的队头元素,并用e返回其值。}ADT Queue

2.单链队列

typedefstructQNode { QElemType;structQNode *next;//指针域 }QNode,*QueuePtr;Typedefstruct{ QueuePtr front;QueuePtr rear;}LinkQueue;Status InitQueue(LinkQueue&Q)//构造一个空队列。

Status DestroyQueue(LinkQueue&Q)//销毁队列Q,Q不存在。

Status ClearQueue(LinkQueue&Q)//将Q清为空队列。

Status QueueEmpty(LinkQueueQ)//若Q为空队列,则返回TRUE,否则FALSE。intQueueLength(LinkQueueQ)//返回Q元素的个数,即队列的长度。

Status GetHead(LinkQueueQ,QElemType&e)//若队列不为空,则用e返回Q的队头元素,并返回OK;否则返回ERROR。

Status EnQueue(LinkQueue&Q,QElemType e)//插入e返回Q的新的队尾元素。

Status DeQueue(LinkQueue&Q,QElemType&e)//若队列不空,则删除Q的队头元素,并用e返回其值,并返回OK;否则返回ERROR。

三.详细设计(xxx)

1.顺序队列的实现和运算

1)元素的类型 typedefstruct { Datatypedata[MAXSIZE];intfront,rear;}Squeue;2)空的队列的构造

void InitSqueue(Squeue *p)/*初始化队列*/ { p->front=0;p->rear=0;} 3)元素的入队

int Ensqueue1(Squeue1 *q, Datatype e)/*入队*/ { if((q->rear+1)% MAXSIZE == q->front){ printf(“n队列已满n”);return 0;} 4)元素的出队

int DeSqueue1(Squeue1 *q,Datatype *e)/*出队*/ { if(q->front==q->rear){ printf(“队列已空,无法出队!”);return 0;} *e=q->data[q->front];q->front=(q->front+1)%MAXSIZE;return 1;} 5)判断队列是否为空

int QueueEmpty1(Squeue1 q)// 判断是否为空 { if(q.front==q.rear)return 1;else return 0;} 6)队头元素的取值的算法

int Gethead1(Squeue1 *q,Datatype *e)// 取对头元素 { if(q->front==q->rear){ printf(“队列已空,无法出队!”);return 0;} else *e=q->data[q->front];return 1;} 7)遍历顺序队列的算法

void display1(Squeue1 q)//遍历顺序对列 { printf(“此队列数据为:n”);if(q.front==q.rear)printf(“此队列为空!”);else { while(q.front

void InitQueue2(LinkQueue *q){ // 构造一个空队列Q q->front=q->rear=malloc(sizeof(QNode));if(!q->front)exit(1);q->front->next=NULL;} 2)元素的入队算法

void EnQueue2(LinkQueue *q, QElemType e)//将元素e进队 { QueuePtr p;p=(QueuePtr)malloc(sizeof(QNode));//创建新节点

if(!p)//如果内存分配成功

exit(1);

p->data=e;//初始化新节点数据为e p->next=NULL;

q->rear->next=p;

q->rear=p;} 3)元素的出队的算法

int DeQueue2(LinkQueue *q,QElemType e)//队头结点出队,将出队的元素存入e { QueuePtr p;if(q->front==q->rear)//队列为空

return 0;p=q->front->next;//初始化temp为要出队的结点指针

if(q->front->next==q->rear)//要出队的结点为最后一个结点

q->rear=q->front;e=p->data;//要出队的数据元素为e q->front->next=p->next;//使下一个结点变为对头

free(p);//删除要出队的结点

return e;} 4)队列的长度算法

void QueueLength2(LinkQueue *q)//返回队列长度 { QueuePtr p;int i=0;p=q->front->next;while(p){

++i;

p=p->next;} printf(“链队列长度为:%dn”,i);} 5)队列的销毁

void DestroyQueue2(LinkQueue *q){ while(q->front){

q->rear=q->front->next;

free(q->front);

q->front=q->rear;

if(!q->rear)

free(q->rear);} free(q->front);} 6)队列的输出算法

void output2(LinkQueue *q)//输出队列 { QueuePtr p;p=q->front->next;printf(“链队列元素依次为:”);while(p){

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

p=p->next;} printf(“n”);} 7)队列的清空的算法 void Clear2(LinkQueue *q)//清空队列 { QueuePtr temp=q->front->next;while(temp){

QueuePtrtp=temp;

temp=temp->next;

free(tp);} temp=q->front;

q->front=q->rear=NULL;free(temp);} 8)返回对头元素的算法

int GetHead2(LinkQueue *q, int *e)//返回对头结点元素,存入e { if(q->front==q->rear)

return 0;*e=q->front->next->data;return 1;} 3.循环队列的实现和运算 1)队列的初始化算法

void InitSqueue3(Squeue3 *p)/*初始化队列*/ { p->base=(Datatype *)malloc(sizeof(Datatype)* MAXSIZE);p->front=0;p->rear=0;} 2)入队的算法

int Ensqueue3(Squeue3 *q, Datatype e)/*入队*/ { if((q->rear+1)% MAXSIZE == q->front){ printf(“n队列已满n”);return 0;} else q->base[q->rear]=e;/*将接收到得值付给队尾所指的节点*/ q->rear=(q->rear+1)% MAXSIZE;/*队尾向后移一位完成入队*/ return 1;} 3)出队的算法

int DeSqueue3(Squeue3 *q,Datatype *e)/*出队*/ { if(q->front==q->rear){ printf(“队列已空,无法出队!”);return 0;} *e=q->base[q->front];q->front=(q->front+1)%MAXSIZE;return 1;} 4判断队列是否为空的算法

int QueueEmpty3(Squeue3 q)// 判断是否为空 { if(q.front==q.rear)return 1;else return 0;} 5)对头元素的返还的算法

int Gethead3(Squeue3 *q,Datatype *e)// 取对头元素 { if(q->front==q->rear){ printf(“队列已空,无法出队!”);return 0;} else *e=q->base[q->front];return 1;} 6)遍历循环队列的算法

void display3(Squeue3 *q)//遍历循环对列 { int tail;tail=q->front;printf(“此队列数据为:n”);if(q->front==q->rear)printf(“此队列为空!”);else { while(tail!=q->rear){ printf(“%dt”, q->base[tail]);tail=(tail+1)%MAXSIZE;} printf(“n”);} } 4.主函数的算法 void main(){

int choice;Datatype e1;int i1,a1,x1,s1,j1;//顺序队列定义的量 int e2,i2,n2,s2,a2;//链队列定义的量

int i3,a3,x3,s3,j3;//循环队列定义的量 Datatype e3;

Squeue1 Q1;

//******************************* LinkQueue q;

//******************************** Squeue3 Q;

//**************************** choice=-1;Begin();while(choice!=0){ scanf(“%d”,&choice);switch(choice){ case 1://顺序队列

{

system(“cls”);InitSqueue1(&Q1);printf(“创建队列完成!n”);printf(“请输入数据个数j1=”);scanf(“%d”,&j1);for(i1=1;i1<=j1;i1++)//输入的数据个数不要超过MAXSIZE,多了的部分没有插入队列

{ printf(“请输入第%d个数据:”,i1);scanf(“%d”,&a1);Ensqueue1(&Q1,a1);

} printf(“对头为:%dn”,Q1.data[Q1.front]);printf(“队尾为:%dn”,Q1.data[Q1.front+j1-1]);display1(Q1);s1=-1;start1();while(s1!=0)

{

scanf(“%d”,&s1);switch(s1)

{ case 0:

system(“cls”);

choice=-1;

Begin();

break;case 1:

{

system(“cls”);printf(“请输入入队元素:n ”);scanf(“%d”,&x1);Ensqueue1(&Q1,x1);display1(Q1);

s1=-1;

start1();break;

} case 2:

{ system(“cls”);DeSqueue1(&Q1,&e1);display1(Q1);s1=-1;

start1();break;

} case 3:

{

system(“cls”);if(QueueEmpty1(Q1))printf(“此队列为空!n”);else printf(“此队列不为空!n”);

}

s1=-1;

start1();break;case 4:

{ system(“cls”);

Gethead1(&Q1,&e1);printf(“对头元素为:%dn”,e1);

s1=-1;

start1();break;

} case 5:

{ system(“cls”);display1(Q1);s1=-1;

start1();break;

}

}//switch

} //while

}//case1

break;//************************************************* case 2:

{

system(“cls”);

InitQueue2(&q);printf(“创建队列完成!n”);printf(“输入将建立链队列元素的个数:n2=”);scanf(“%d”,&n2);printf(“请输入队列的元素:n”);for(i2=1;i2<=n2;i2++)

{

printf(“请输入第%d个元素:”,i2);

scanf(“%d”,&e2);

EnQueue2(&q,e2);

} a2=-1;start2();while(a2!=0)

{

scanf(“%d”,&a2);

switch(a2)

{

case 1:system(“cls”);

QueueLength2(&q);

a2=-1;start2();

break;

case 2:{

system(“cls”);

printf(“请输入入队元素:”);

scanf(“%d”,&e2);EnQueue2(&q,e2);

output2(&q);a2=-1;start2();

}break;

case 3:

system(“cls”);

e2=DeQueue2(&q,e2);

output2(&q);

printf(“出队元素为:%dn”,e2);a2=-1;start2();

break;

case 4:DestroyQueue2(&q);printf(“队列已销毁!n”);

a2=0;system(“cls”);

choice=-1;

Begin();

break;

case 5:

Clear2(&q);printf(“队列已清空n”);

a2=0;system(“cls”);

choice=-1;

Begin();

break;

case 6:

system(“cls”);GetHead2(&q,&e2);

printf(“队头元素为:%dn”,e2);s2=-1;

start2();

break;

case 0: system(“cls”);

choice=-1;

Begin();

break;

}//switch }//while

}//case2

break;//**************************************************

case 3:

{

system(“cls”);

InitSqueue3(&Q);printf(“创建队列完成!n”);printf(“请输入数据个数j3=”);scanf(“%d”,&j3);for(i3=1;i3<=j3;i3++)//输入的数据个数不要超过MAXSIZE,多了的部分没有插入队列

{ printf(“请输入第%d个数据:”,i3);scanf(“%d”,&a3);Ensqueue3(&Q,a3);

} printf(“对头为:%dn”,Q.base[Q.front]);printf(“队尾为:%dn”,Q.base[Q.front+j3-1]);display3(&Q);s3=-1;start3();while(s3!=0)

{

scanf(“%d”,&s3);switch(s3)

{ case 0:

system(“cls”);

choice=-1;

Begin();

break;case 1:

{

system(“cls”);printf(“请输入入队元素:n ”);scanf(“%d”,&x3);Ensqueue3(&Q,x3);display3(&Q);

s3=-1;

start3();break;

} case 2:

{ system(“cls”);DeSqueue3(&Q,&e3);display3(&Q);s3=-1;

start3();break;

} case 3:

{ system(“cls”);if(QueueEmpty3(Q))printf(“此队列为空!n”);else printf(“此队列不为空!n”);

}

s3=-1;

start3();break;case 4:

{ system(“cls”);

Gethead3(&Q,&e3);printf(“对头元素为:%dn”,e3);

s3=-1;

start3();break;

} case 5:

{ system(“cls”);display3(&Q);s3=-1;

start3();break;

}

}//switch

} //while

}//case 3

break;

case 0:

printf(“ 谢谢使用!!n”);

break;

//***************************

}//switch }//while }//main

四.调试分析(xxx)

顺序队列

1.编译并调试,运行程序。

2.设计测试用例,分析测试结果,以验证所完成的系统是否达到预期效果。3.判断队列是否为空。队列是否为空的标志就是队头指针和队尾指针是否同时指向队列中的同一个位置,即队头指针和队尾指针是否相等。

4.队列满时候不能入队列,否则会出现溢出现象。即先要判断队列是否已经已满,因为队尾指针的最大值是MAXQSIZE,所以通过检查队尾指针rear是否等于MAXQSIZE来判断队列是否已满。在删除队首元素时,应首先通过队头指针和队尾指针是否相等判断队列是否已空。

5.在元素出队操作,先通过队头指针和队尾指针是否相等判断队列是否已空,空时不能操作,这是要注意的。

6.程序满足了本次试验的目的和任务要求,可以进行人机交互,在后来的程序中将会做些改进,以增强人机交互性。

7.本程序存在较多不足,如有问题,参考用户手册。

8.在程序语句中,原本使用了大量的生僻的函数名,经过改进,目前使用都是通俗易懂的函数名称,方便用户理解。

链队列

1.编译并调试,运行程序。2.设计测试用例,分析测试结果,以验证所完成的系统是否达到预期效果。

3.要注意设定一个在链队列添加一个头结点并令指针指向头结点。同时,删除不可以在最后面进行删除,但是插入可以最后一个进行插入,这点需要注意 4.需要分别指向队头和队尾的指针。

5.程序满足了本次试验的目的和任务要求,可以进行人机交互,在后来的程序中将会做些改进,以增强人机交互性。

6.本程序存在较多不足,如有问题,参考用户手册。

7.在程序语句中,原本使用了大量的生僻的函数名,经过改进,目前使用都是通俗易懂的函数名称,方便用户理解。

循环队列

1.编译并调试,运行程序。

2.设计测试用例,分析测试结果,以验证所完成的系统是否达到预期效果。

3.为了避免顺序队列造成的“假溢出”现象,我们通常采用顺序循环队列实现队列的顺序存储。4.队头指针和对尾指针与队列元素之间关系和顺序队列一样,不变。5.先判断队列是否为空。就是看队头指针和队尾指针是否同时指向队列中的同一个位置,即队头指针和队尾指针是否相等,空时不能操作,这是要注意的。

6.在将元素插入到队列之前首先要判断队列是否已经已满,根据顺序循环队列队满条件front==(rear+1)%MAXQSIZE来判断队列是否已满。在删除队首元素时,应首先通过队头指针和队尾指针是否相等判断队列是否已空。

6.程序满足了本次试验的目的和任务要求,可以进行人机交互,在后来的程序中将会做些改进,以增强人机交互性。

7.本程序存在较多不足,如有问题,参考用户手册。

8.在程序语句中,原本使用了大量的生僻的函数名,经过改进,目前使用都是通俗易懂的函数名称,方便用户理解。

五、用户手册(xx)1.链队列

(1)本程序的运行环境为DOS操作系统,执行文件名为:j.exe.(2)进入演示程序后即显示文本方式的用户界面,输入元素1,2,3,4,5创建队列。

(3)根据提示,选择操作2执行元素入队操作。回车,输入入队元素0,回车,将0插入到队列中。

(4)选择操作3执行元素出队操作,回车,队首元素1出队。

(5)选择操作1执行输出队列长度操作,回车,输出队列长度为5.(6)选择操作5执行清空队列操作,回车,清空。

(7)选择操作6执行输出队头元素操作,回车,输出元素2。

2.顺序队列

(1)创建队列,输入数据

1,2,3,4,5.(2)选择操作1,执行入队操作.输入入队元素0

(3)选择操作2,执行出队操作。

队首元素1出队.(4)选择操作3,判断对是否为空

(5)选择操作4,输出对头元素2.(6)选择操作5,显示队列元素

3、循环队列

(1)创建队列,输入数据 1,2,3,4,5.(2)选择操作1,执行入队操作.输入入队元素0

(3)选择操作2,执行出队操作。队首元素1出队.(3)选择操作3,判断对是否为空

(5)选择操作4,输出对头元素2.(6)选择操作5,显示队列元素为,2,3,4,5,0

六.测试结果(xxx)1.顺序队列的实现和运算

1)输入1即可进行进入到顺序队列

2)顺序队列的建立,输入元素的个数为5,输入的数据分别为1,2,3,4,5,对头为1,队尾为5,此时队列的数据为1 2 3

3)输入2即可进行入队运算,输入的入队元素为0,此时的队列的数据为1 2 3 4 5 0

4)输入3即可进行判断队列的是否为空,如下图:

5)输入4即可进行去的对头元素的算法,如下图所示:

6)此时的队列的数

0,如

7)输入0即可退出顺序队列,如下图:

8)输入3即可进行顺序队列的算法,如下图所示:

9)输入1即可进

应的入

算,如

10)输入2即可进行队列的出队运算,如下图所示:

:11)输入3

即可判断顺序队列是否为空的算法,如下图所示:

12)输入4即可进行去的头结点的运算,如下图所示:

13)输入5即可进行队列的输出显示的运算,如

14)输入0即可进行退出顺序队列的算法,如下图所示:

下图所示:2.链式队列的实现和运算

1)队列的建立以及队列的个数输入为5,输入的数据分别为1,2,3,4,5.如下图:

2)输入2即可进入到元素的入队运算,输入入队的元素的为0,输入3即可进行相应的元素的出队运算,出队元素为1.如下图:

3)则此时的队列的长度为5,输入4即可进行队列的销毁以及输入5即可进行队列的清空运算,如下图:

4)输入6即可进行输出队列的对头元素,输入0即可进行退出链队列的运算

3.循环队列的实现和运算

1)输入3即可进行循环队列的操作,输入5个数据,它们分别为1 2 3 4 5,输入1,即可进行入队操作,输入入队的元素为0,则此时的数据为1 2 3 4 5 0,如下图所示:

2)输入2即可进行出队运算,如下图所示:

3)输入3即可进行判断队列的是否为空,如下图所示:

4)输入4即可进行取得对头元素,如

5)输入5即可进行输出所有的数据显示,如下图所示:

所示图:

七.心得体会(xx)

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。

系统结构实验报告一 篇6

实验报告的质量和管理水平可以在一定程度上反映出本学科实验教学的层次和水平。目前, 实验报告以纸质文档上交的比较普遍。但纸质文档带来了很多缺点。首先, 信息含量低, 不能拓展学生的知识面, 创新能力受限;其次, 学生互相抄袭, 分析总结能力无法得到充分锻炼;第三, 管理落后, 浪费了大量的人力、财力和物力, 实验报告的分数不好统计, 容易出错, 还容易造成实验报告的遗失, 实验教学检查不方便等等问题。

随着计算机及网络技术的普及, 使实验报告电子化变成了可行。但电子文档的集中上交, 增加了实验管理人员的工作量, 而且灵活性差, 统计容易出错。基于以上种种原因, 我们开发了实验报告管理系统, 通过互联网, 学生可以上交实验报告及查看成绩, 老师可以批改, 管理员可以归档实验成绩及实验报告。教学检查时, 可以快速准确地查找多年的实验报告并列出所有相关数据。

1 系统的功能模块

系统的总体设计分为三大模块:管理员、教师及学生。系统功能框图如图1所示。

(1) 管理员模块:由学院班级管理、实验课程管理、实验人员管理、系统及数据维护四大部分组成。数据输入后, 可进行修改, 停用, 删除操作。还可根据学院班级, 用户账号或者用户姓名等进行模糊查询。系统会根据系统参数所设定的时间对学生自动毕业, 对于学生休学、转班、复学也可进行相应的操作。对于实验课程, 根据实验大纲导入所有的实验项目, 课表导入后, 系统自动关联课程—实验项目—时间—地点—任课教师—学生的关系。学期结束后, 管理员需对实验报告及成绩进行归档。

(2) 教师模块:由实验报告管理和实验学生管理两部分组成。教师进入系统后, 可以列出多年任教课程的实验, 默认为当前学年学期。可以查看实验课表, 可设置各个报告的提交限制时间。要改实验报告时, 点击各个实验名称可以显示该实验的完成情况, 包括未批改、已批改、未提交的学生人数及名单;并且可进行相关的批改操作。批改后, 成绩自动登记在成绩单上。

(3) 学生模块:由实验报告管理和用户管理两部分组成。学生进入系统后, 可以列出本学期所有课程, 点击课程显示该课程的所有实验项目的具体情况, 包括课程名称、实验名称、上交截止时间等。上交完报告, 学生可以查看查看分数及评语。

2 系统基本流程

如图2所示, 学期初, 管理员先输入本学期相关的所有数据, 包括课程信息、学生信息和课程表等。所有数据的导入, 只需特定的EXCEL表格, 即可进行批量导入。任课教师可以先设置各个报告的提交限制时间, 默认为空。学生做完实验, 登录系统交实验报告。任课教师进行批改, 系统自动登记成绩。学期结束, 管理员对实验报告及成绩归档。

3 数据库的设计和系统实现

本系统为Web App, 编写语言为PHP, 以apache为服务器, 使用oracle数据库, 前端使用Java Script, j Query等, 下面给出系统主要功能实现的实例。

(1) 学生实验报告提交

学生在线填写实验报告, 按照教师要求在系统提供的编辑器中进行书写, 添加所需的数据, 比如表格、图片等。 (如图3所示) 点击提交后, 后台服务器首先判断对应实验报告的文件是否存在, 通过“select R_DRAFT_LOC, R_CONTENT_LOC, R_EXPORT_LOCfrom T_REPORTwhere R_STU_ID=?ANDR_TRIAL_ID=?”获取此实验报告的文件的路径, 判断其文件是否存在, 若存在则将内容写入文件中$file=fopen ($content Loc, ’w’) ;fwrite ($file, $data) ;fclose ($file) ;同时, 为了避免出现乱码的问题, 我们需要进行转码, 代码如下“$content Loc=iconv (″UTF-8″, ″GBK″, $content Loc) ;”。当然, 若实验报告设置了时间限制, 系统会在保存实验报告前判断“SELECTREPORT_SUBMIT_TIMEFROMT_EXPERIMENTS_HISTORYWHEREID=?"获取其实验报告限制的时间是多少, 与当前时间对比, 若超过时间, 则返回$msg=“已超过报告最终提交时间!”;

若报告未书写完成, 可以点击保存, 在下次进入编辑时可以继续编辑上次保存的报告, 此时报告的路径被保存在另一个字段中R_DRAFT_LOG, ”select R_DRAFT_LOCfrom T_REPORTwhere R_STU_ID=?ANDR_TRIAL_ID=?”。完成后点击提交即可交由课程教师批改, 在教师没有进行批改前, 学生可以提交多次。

(2) 教师批改实验报告

教师可以看到报告提交情况 (如图4 所示) , 也可以对学生的提交时间做出限制, 批改时可以对学生的报告加入批注、评语等。若学生报告存在问题, 需要学生修改, 可以使用驳回功能, 要求学生修改好后再次提交。若学生报告没有问题, 教师可以给成绩和评语。批改结束后系统将记录教师的批改痕迹, 并存放在另一个文件中。文件的路径将存储在T_REPORT的R_CONTENT_AFTER_LOC字段中, 并且改R_STATUS为对应的状态, 那么此时学生即可查看到自己的报告批改情况了。

结语

系统在实际应用已经有两年时间, 期间在不断的测试与完善当中。学生与教师反馈的意见非常重要, 为此, 我们增加了用户反馈模块, 它可以显示一些系统的最新消息, 用户也可发送信息给系统管理员, 提出自己的意见及建议。另外, 为了用户操作方便, 用户进行的每一步操作, 都有详细的帮助显示出来, 让学生和教师不需通过培训即可操作。今后, 我们会不断完善系统, 让它在实验教学管理上发挥作用。

参考文献

[1]刘永革.基于ASP的网络实验报告管理系统[J].安阳师范学院学报, 2005 (02) :62-64.

[2]方淑梅.通用实验报告网络化管理系统[J].辽东学院学报, 2009, 16 (03) :232-235.

上一篇:金色的秋天作文700字下一篇:中航油内部控制分析