设计模式大作业-蛋糕预定系统实验报告

设计模式大作业-蛋糕预定系统实验报告
设计模式大作业-蛋糕预定系统实验报告

蛋糕订购系统

一、实验介绍

(3)

二、实验环境

(3)

三、系统流程

(3)

四、系统总类图

(4)

五、程序源代码及各个模块子类图

(5)

六、程序运行截图

(22)

七、实验总结

(22)

一、实验介绍

本系统使用了简单工厂模式、工厂方法模式、单例模式、门面模式、策略模式、观察者模式一共6种模式实现了从蛋糕店订购订购蛋糕的这样一个系统。

二、实验环境

Windows操作系统、MyEclipse10.0、MySQL 5.5、jdk1.6

三、系统流程

四、系统总类图

五、程序源代码及各个模块子类图(一)测试类Client.java:

package net.xsl.ordercake.test;

import net.xsl.ordercake.discount.DiscountStyleThree;

import net.xsl.ordercake.discount.OrderCake;

import net.xsl.ordercake.order.CakeShop;

import net.xsl.ordercake.order.EastVilla;

import net.xsl.ordercake.order.WestVilla;

publicclass Client {

publicstaticvoid main (String arg[]){

CakeShop starCakeShop = CakeShop.getCakeShop();

new WestVilla(starCakeShop, "草莓水果");

starCakeShop.getNewName("西13");

starCakeShop.notifyCustomer();

OrderCake cake = new OrderCake();

System.out.println("今日促销一律8折优惠");

cake.setM(8);

cake.setStyle(new DiscountStyleThree());

cake.setPrice(80) ;

System.out.println("本次订购成功完成,需要支付的金额为

"+cake.getMoney(cake.getPrice(),cake.getM())+",原价80");

System.out.println("=================================");

new EastVilla(starCakeShop, "甜奶");

starCakeShop.getNewName("东18");

starCakeShop.notifyCustomer();

System.out.println("=================================");

starCakeShop.getNewName("东12");

starCakeShop.notifyCustomer();

}

}

(二)折扣的接口和方法(策略模式):

a)接口DiscountStyle.java:

package net.xsl.ordercake.discount;

publicinterface DiscountStyle {

publicdouble disCount(double price,double m);

}

b)折方式一DiscountStyleOne.java:

package net.xsl.ordercake.discount;

publicclass DiscountStyleOne implements DiscountStyle{

publicdouble disCount(double price,double m) {

return price;

}

}

c)打折方式二DiscountStyleTwo.java:

package net.xsl.ordercake.discount;

publicclass DiscountStyleTwo implements DiscountStyle{

publicdouble disCount(double price,double m) {

price = price - m;

return price;

}

}

d)打着方式三DiscountStyleThree.java:

package net.xsl.ordercake.discount;

publicclass DiscountStyleThree implements DiscountStyle{ publicdouble disCount(double price,double m) {

price = price * m/10;

return price;

}

}

e)订蛋糕对象类,使用了get/set方法OrderCake.java:

package net.xsl.ordercake.discount;

publicclass OrderCake {

double money,price;//money是打折后的最终价格,price是原价

DiscountStyle style;

double m;

publicdouble getMoney(double price,double m){

return style.disCount(price,m);

}

publicvoid setPrice(double price){

this.price = price ;

}

publicdouble getPrice(){

return price;

}

publicvoid setStyle(DiscountStyle style){

this.style = style ;

}

public DiscountStyle getStyle(){

return style;

}

publicvoid setM(double m){

this.m = m ;

}

publicdouble getM(){

return m;

}

}

(三)顾客向蛋糕订购蛋糕(观察者模式),并在具体主题中使用了

单例模式

a)主题Shop.java:

package net.xsl.ordercake.order;

publicinterface Shop {

publicvoid addCustomer(Customer o);

publicvoid deleteCustomer(Customer o);

publicvoid notifyCustomer();

}

b)具体主题(使用了单例模式,只能创建一个蛋糕商店的对象)

CakeShop.java:

package net.xsl.ordercake.order;

import java.util.ArrayList;

publicclass CakeShop implements Shop{

String name;

boolean changed;

ArrayListpersonList;

privateint i = 0;

privatestatic CakeShop uniqueCakeShop;

private CakeShop() {

uniqueCakeShop = this;

personList = new ArrayList();

name = "";

changed = false;

}

publicstaticsynchronized CakeShop getCakeShop(){

if(uniqueCakeShop == null){

uniqueCakeShop = new CakeShop();

}

return uniqueCakeShop;

}

publicvoid addCustomer(Customer o) {

if(!(personList.contains(o)))

personList.add(o);

}

publicvoid deleteCustomer(Customer o) {

if((personList.contains(o)))

personList.remove(o);

}

publicvoid notifyCustomer() {

if(changed){

try{

Customer customer = personList.get(i);

customer.orderCake(name);

i++;

changed = false;

}

catch(Exception e){

System.out.println("没有新的订购信息");

}

}

}

publicvoid getNewName(String str){

if(str.equals(name))

changed = false;

else{

name = str;

changed = true;

}

}

}

c)观察者Customer.java:

package net.xsl.ordercake.order;

publicinterface Customer {

publicvoid orderCake(String name);

}

d)体观察者一EastVilla.java:

package net.xsl.ordercake.order;

import net.xsl.ordercake.creator.MakeChocolateCake;

import net.xsl.ordercake.creator.MakeFruityCake;

import net.xsl.ordercake.creator.MakeMilkCake;

import net.xsl.ordercake.jdbc.JDBCFacade;

import net.xsl.ordercake.product.ChocolateFactory;

import net.xsl.ordercake.product.FruitFactory;

import https://www.360docs.net/doc/d0403602.html,kFactory;

publicclass EastVilla implements Customer{

Shop shop;

private String cakeType;

public EastVilla(Shop shop,String cakeType){

this.shop = shop;

this.cakeType = cakeType;

shop.addCustomer(this);

}

publicvoid orderCake(String name){

System.out.println(name+"订了一个"+cakeType+"蛋糕");

JDBCFacade dbFacade=new JDBCFacade();

String sqlStr = "select * from ordercake";

String sqlStr1 = "insert into ordercake(cakeType, name, quantity)"+ " VALUES ('"+cakeType+"','"+name+"','1')";

dbFacade.jdbcInsert(sqlStr1);

System.out.println("查询插入之后新的数据库");

dbFacade.jdbcSelect(sqlStr);

if(cakeType.equals("草莓水果") || cakeType.equals("葡萄水果")){

MakeFruityCake eastVilla = new MakeFruityCake(cakeType);

FruitFactory fruitCake = eastVilla.makeFruityCake();

fruitCake.createCake();

}

elseif(cakeType.equals("牛奶巧克力") || cakeType.equals("黑巧克力")){

MakeChocolateCake eastVilla1 = new

MakeChocolateCake(cakeType);

ChocolateFactory chocolateCake =

eastVilla1.makeChocolateCake();

chocolateCake.createCake();

}

elseif(cakeType.equals("双层鲜奶") || cakeType.equals("甜奶")){

MakeMilkCake eastVilla1 = new MakeMilkCake(cakeType);

MilkFactory milkCake = eastVilla1.makeMilkCake();

milkCake.createCake();

}

}

}

e)具体观察者二WestVilla.java:

package net.xsl.ordercake.order;

import net.xsl.ordercake.creator.MakeChocolateCake;

import net.xsl.ordercake.creator.MakeFruityCake;

import net.xsl.ordercake.creator.MakeMilkCake;

import net.xsl.ordercake.jdbc.JDBCFacade;

import net.xsl.ordercake.product.ChocolateFactory;

import net.xsl.ordercake.product.FruitFactory;

import https://www.360docs.net/doc/d0403602.html,kFactory;

publicclass WestVilla implements Customer{

Shop shop;

private String cakeType;

public WestVilla(Shop shop,String cakeType){

this.shop = shop;

this.cakeType = cakeType;

shop.addCustomer(this);

}

publicvoid orderCake(String name){

System.out.println(name+"订了一个"+cakeType+"蛋糕");

JDBCFacade dbFacade=new JDBCFacade();

String sqlStr = "select * from ordercake";

String sqlStr1 = "insert into ordercake(cakeType, name, quantity)"+ " VALUES ('"+cakeType+"','"+name+"','1')";

dbFacade.jdbcInsert(sqlStr1);

System.out.println("查询插入之后新的数据库");

dbFacade.jdbcSelect(sqlStr);

if(cakeType.equals("草莓水果") || cakeType.equals("葡萄水果")){

MakeFruityCake westVilla = new MakeFruityCake(cakeType);

FruitFactory fruitCake = westVilla.makeFruityCake();

fruitCake.createCake();

}

elseif(cakeType.equals("牛奶巧克力") || cakeType.equals("黑巧克力")){

MakeChocolateCake westVilla1 = new

MakeChocolateCake(cakeType);

ChocolateFactory chocolateCake =

westVilla1.makeChocolateCake();

chocolateCake.createCake();

}

elseif(cakeType.equals("双层鲜奶") || cakeType.equals("甜奶")){

MakeMilkCake westVilla1 = new MakeMilkCake(cakeType);

MilkFactory milkCake = westVilla1.makeMilkCake();

milkCake.createCake();

}

}

}

(四)JDBC(门面模式)JDBCFacade.java:

package net.xsl.ordercake.jdbc;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.sql.SQLException;

import java.sql.Statement;

publicclass JDBCFacade {

Connection conn = null;

Statement stmt = null;

ResultSet rs = null;

String sqlStr = "";

publicvoid createStatement() {

try {

stmt = conn.createStatement();

} catch (SQLException e) {

e.printStackTrace();

}

}

public ResultSet jdbcSelect(String sqlStr){

this.sqlStr = sqlStr;

getConnection();

createStatement();

try {

rs = stmt.executeQuery(sqlStr);

ResultSetMetaData rsmd = rs.getMetaData();

int j = 0;

j = rsmd.getColumnCount();

while(rs.next()){

for(int i=0;i

System.out.print(rs.getString(i+1));

System.out.print("\t");

}

System.out.println();

}

} catch (SQLException e) {

e.printStackTrace();

}

return rs;

}

publicvoid jdbcUpdate(String sqlStr) {

this.sqlStr = sqlStr;

getConnection();

createStatement();

try {

int count = stmt.executeUpdate(sqlStr);

System.out.println("表更新 " + count + " 条数据");

} catch (SQLException e) {

System.out.println("更新数据失败");

}

}

publicvoid jdbcInsert(String sqlStr) {

this.sqlStr = sqlStr;

getConnection();

createStatement();

try {

int count = stmt.executeUpdate(sqlStr);

System.out.println("向表插入 " + count + " 条数据");

} catch (SQLException e) {

System.out.println("插入数据失败" + e.getMessage());

}

}

publicvoid jdbcDelete(String sqlStr) {

this.sqlStr = sqlStr;

getConnection();

createStatement();

try {

int count = stmt.executeUpdate(sqlStr);

System.out.println("向表删除 " + count + " 条数据");

} catch (SQLException e) {

System.out.println("删除数据失败");

}

}

publicvoid jdbcClose(){

try {

rs.close();

stmt.close();

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

public Connection getConnection() {

try {

Class.forName("com.mysql.jdbc.Driver");

conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/cakeshop"

,"root","admin");

} catch (Exception e) {

System.out.println("数据库连接失败" + e.getMessage());

}

return conn;

}

}

(五)构造蛋糕(工厂方法模式):

a)构造者MakeCake.java:

package net.xsl.ordercake.creator;

publicinterface MakeCake {

}

b)具体构造者一MakeChocolateCake.java:

package net.xsl.ordercake.creator;

import net.xsl.ordercake.product.ChocolateFactory;

publicclass MakeChocolateCake implements MakeCake{ private String cakeType;

public MakeChocolateCake(String cakeType){

this.cakeType = cakeType;

}

public ChocolateFactory makeChocolateCake(){ returnnew ChocolateFactory(cakeType);

}

}

c)具体构造者二MakeFruityCake.java:

package net.xsl.ordercake.creator;

import net.xsl.ordercake.product.FruitFactory;

publicclass MakeFruityCake implements MakeCake{ private String cakeType;

public MakeFruityCake(String cakeType){

this.cakeType = cakeType;

}

public FruitFactory makeFruityCake(){

returnnew FruitFactory(cakeType);

}

}

d)具体构造者三MakeMilkCake.java:

package net.xsl.ordercake.creator;

import https://www.360docs.net/doc/d0403602.html,kFactory;

publicclass MakeMilkCake implements MakeCake{ private String cakeType;

public MakeMilkCake(String cakeType){

this.cakeType = cakeType;

}

public MilkFactory makeMilkCake(){

returnnew MilkFactory(cakeType);

}

}

e)抽象产品Factory.java:

package net.xsl.ordercake.product;

publicinterface Factory {

publicvoid createCake();

}

f)具体产品一FruitFactory.java:

package net.xsl.ordercake.product;

publicclass FruitFactory implements Factory{ private String cakeType;

public FruitFactory(String cakeType){

this.cakeType = cakeType;

}

publicvoid createCake(){

try{

if (cakeType.equals("草莓水果")){

FruityCake strawberryCake = new StrawberryCake();

strawberryCake.show();

}

elseif (cakeType.equals("葡萄水果")) {

FruityCake grapeCake = new GrapeCake();

grapeCake.show();

}

}

catch (Exception e){

System.out.println("制作"+cakeType+"蛋糕失败");

}

}

}

g)具体产品二MilkFactory.java:

package net.xsl.ordercake.product;

publicclass MilkFactory implements Factory{

private String cakeType;

public MilkFactory(String cakeType){

this.cakeType = cakeType;

}

publicvoid createCake(){

try{

if (cakeType.equals("双层鲜奶")){

MilkCake doubleMilkCake = new DoubleMilkCake();

doubleMilkCake.show();

}

elseif (cakeType.equals("甜奶")) {

MilkCake sweetMilkCake = new SweetMilkCake();

sweetMilkCake.show();

}

}

catch (Exception e){

System.out.println("制作"+cakeType+"蛋糕失败");

}

}

}

h)具体产品三ChocolateFactory.java:

package net.xsl.ordercake.product;

publicclass ChocolateFactory {

private String cakeType;

public ChocolateFactory(String cakeType){

this.cakeType = cakeType ;

}

publicvoid createCake(){

try{

if (cakeType.equals("牛奶巧克力")){

ChocolateCake milkChocolateCake = new MilkChocolateCake();

milkChocolateCake.show();

}

elseif (cakeType.equals("黑巧克力")) {

ChocolateCake darkChocolateCake = new DarkChocolateCake();

darkChocolateCake.show();

}

}

catch (Exception e){

System.out.println("制作"+cakeType+"蛋糕失败");

}

}

}

(六)蛋糕工厂(简单工厂模式):

a)水果蛋糕:

i.FruitFactory.java(第五项构造蛋糕中已贴出):ii.接口类FruityCake.java:

package net.xsl.ordercake.product;

publicinterface FruityCake {

publicvoid show();

}

iii.实现接口:

StrawberryCake.java:

package net.xsl.ordercake.product;

publicclass StrawberryCake implements FruityCake{ publicvoid show() {

System.out.println("生产了一个草莓水果蛋糕");

}

}

GrapeCake.java:

package net.xsl.ordercake.product;

publicclass GrapeCake implements FruityCake{

publicvoid show() {

System.out.println("生产了一个葡萄水果蛋糕");

}

}

b)牛奶蛋糕:

https://www.360docs.net/doc/d0403602.html,kFactory.java(第五项构造蛋糕中已贴出):ii.接口类MilkCake.java:

package net.xsl.ordercake.product;

publicinterface MilkCake {

void show();

}

iii.实现接口:

SweetMilkCake.java:

package net.xsl.ordercake.product;

publicclass SweetMilkCake implements MilkCake{

publicvoid show() {

作业空间设计

第八章作业空间设计 第一节作业空间设计得基本原则 作业空间设计时,一般应遵守以下原则: 1.根据生产任务与人得作业要求,首先应总体考虑生产现场得适当布局,避免在某个局部 得空间范围内,把机器、设备、工具与人员等安排得过于密集,造成空间劳动负荷过大。然后再进行各局部之间得协调。在作业空间设计时,总体与局部得关系就是相互依存与相互制约得。若总体布局不好,就不能保证每个局部都有适当得作业空间。而只保证个别局部有适当得作业空间,也不能保证整个工作系统得安全、高效、舒适与方便得人机工程学要求。因此,必须正确协调总体设计与局部设计相互之间得关系。 2.作业空间设计要着眼于人,落实于设备。即结合操作任务要求,以人员为主体进行作业 空间得设计。也就就是首先要考虑人得需要,为操作者创造舒适得作业条件,再把有关得作业对象(机器、设备与工具等)进行合理得排列布置。否则往往会使操作者承受额外得心理上得与体力上得负担,其结果不仅降低工作效率,而且往往不经济、也不安全。考虑人得活动特性时,必须考虑人得认知特点与人体动作得自然性、同时性、对称性、节奏性、规律性、经济性与安全性。在应用有关人体测量数据设计作业空间时,必须合格证至少在 90%得操作者中具有适应性、兼容性、操纵性与可达性。 第二节工作空间人体尺寸及应用原则 1.工作空间立姿人体尺寸(6 项) 2.工作空间坐姿人体尺寸(5 项) 2.工作空间跪姿、俯卧姿、爬姿人体尺寸(6 项) 第三节工作空间设计 一、工作空间设计得一般原则 在 GB/T 16251--1996《工作系统设计得人类工效学原则》中,给出了工作空间设计得以 下一般性原则: 1)操作高度应适合于操作者得身体尺寸及工作类型,座位、工作面(工作台)应保证适宜 得身体姿势,即身体躯干自然直立,身体重量能得到适当支撑,两肘置于身体两侧,前臂呈水平状。2)座位调节到适合于人得解剖、生理特点。 3)为身体得活动,特别就是头、手臂、手、腿、脚得活动提供足够得空间。 4)操纵装置设置在肌体功能易达或可及得空间范围内,显示装置按功能重要性与使用频度 依次布置在最佳或有效视区内。5)把手与手柄适合于手功能得解剖学特性。 第四节工作岗位设计

《管理信息系统》课程设计实验报告

《管理信息系统》课程设计实验报告 课程名称:管理信息系统 指导老师: ******* 院系:商学院 专业班级: ******** 姓名: ******** 学号: ******** 实验日期: 2011.7.11 实验地点:一机房

《管理信息系统》课程设计任务书 一.课程设计目的及意义: 《管理信息系统》课程设计是在完成《管理信息系统》课程学习之后的一次实践性教 学,是本课程理论知识的一次综合运用。通过本课程设计,能够进一步加深对信息、信息系 统、管理信息系统等基础理论知识的理解,能初步掌握结构化的生命周期法、面向对象法等 系统工程方法,进一步加强熟练应用管理信息系统的操作技能,并能够借助于管理信息系统 解决实际问题。 二.课程设计要求: 1.本课程设计时间为一周。 2.本课程设计以教学班为单位进行上机操作及实验。 3.按照任务要求完成课程设计内容。 三.课程设计任务要求: 1.任务内容:进入山东轻工业学院主页,在“网络资源”区域进入“网络教学平台”,输入各自的用户名和密码(学生学号及密码),进入本网络教学平台系统,在充分熟悉本系统 的前提下,完成下列任务要求。 2.任务要求: ①按照课程讲解的系统分析步骤和理论对本系统进行系统分析。 ②绘制不少于 3 个的主要业务流程图。 ③描述上述主要业务流程图的逻辑处理功能。 ④分析本系统的优缺点,提出改进意见,并描述改进的逻辑处理功能,绘制业务流 程图。 四.课程设计评分标准: 按照《管理信息系统课程设计大纲》的要求,本课程 1 学分,采用百分制计分,其中 任务要求②占30 分,任务要求③占30 分,任务要求④占30 分,考勤及实践表现占10 分。五.本课程设计自2011 年 6 月 27 日至 2011 年 7 月 1 日。

电子系统设计 实验报告

本科生实验报告 实验课程电子系统设计 学院名称 专业名称测控技术与仪器 学生姓名 学生学号 指导教师 实验地点 实验成绩 二〇年月——二〇年月

实验一、运放应用电路设计 一、实验目的 (1)了解并运用NE555定时器或者其他电路,学会脉冲发生器的设计,认识了解各元器件的作用和用法。 (2)掌握运算放大器基本应用电路设计 二、实验要求 (1)使用555或其他电路设计一个脉冲发生器,并能满足以下要求:产生三角波V2,其峰峰值为4V,周期为0.5ms,允许T有±5%的误差。 V2/V +2 图1-1 三角波脉冲信号 (2)使用一片四运放芯片LM324设计所示电路,实现如下功能:设计加法器电路,实现V3=10V1+V2,V1是正弦波信号,峰峰值0.01v,频率10kHz。 V3 图1-2 加法电路原理

三、实验内容 1、555定时器的说明: NE555是属于555系列的计时IC的其中的一种型号,555系列IC的接脚功能及运用都是相容的,只是型号不同的因其价格不同其稳定度、省电、可产生的振荡频率也不大相同;而555是一个用途很广且相当普遍的计时IC,只需少数的电阻和电容,便可产生数位电路所需的各种不同频率的脉波讯号。 a. NE555的特点有: 1.只需简单的电阻器、电容器,即可完成特定的振荡延时作用。其延时范围极广,可由几微秒至几小时之久。 2.它的操作电源范围极大,可与TTL,CMOS等逻辑闸配合,也就是它的输出准位及输入触发准位,均能与这些逻辑系列的高、低态组合。 3.其输出端的供给电流大,可直接推动多种自动控制的负载。 4.它的计时精确度高、温度稳定度佳,且价格便宜。 b. NE555引脚位配置说明下: NE555接脚图: 图1-3 555定时器引脚图 Pin 1 (接地) -地线(或共同接地) ,通常被连接到电路共同接地。 Pin 2 (触发点) -这个脚位是触发NE555使其启动它的时间周期。触发信号上缘电压须大于2/3 VCC,下缘须低于1/3 VCC 。

数字钟设计报告——数字电路实验报告

数字钟设计实验报告 专业:通信工程 姓名:王婧 班级:111041B 学号:111041226

数字钟的设计 目录 一、前言 (3) 二、设计目的 (3) 三、设计任务 (3) 四、设计方案 (3) 五、数字钟电路设计原理 (4) (一)设计步骤 (4) (二)数字钟的构成 (4) (三)数字钟的工作原理 (5) 六、总结 (9) 1

一、前言 此次实验是第一次做EDA实验,在学习使用软硬件的过程中,自然遇到很多不懂的问题,在老师的指导和同学们的相互帮助下,我终于解决了实验过程遇到的很多难题,成功的完成了实验,实验结果和预期的结果也是一致的,在这次实验中,我学会了如何使用Quartus II软件,如何分层设计点路,如何对实验程序进行编译和仿真和对程序进行硬件测试。明白了一定要学会看开发板资料以清楚如何给程序的输入输出信号配置管脚。这次实验为我今后对 EDA的进一步学习奠定了更好的理论基础和应用基础。 通过本次实验对数电知识有了更深入的了解,将其运用到了实际中来,明白了学习电子技术基础的意义,也达到了其培养的目的。也明白了一个道理:成功就是在不断摸索中前进实现的,遇到问题我们不能灰心、烦躁,甚至放弃,而要静下心来仔细思考,分部检查,找出最终的原因进行改正,这样才会有进步,才会一步步向自己的目标靠近,才会取得自己所要追求的成功。 2

二、设计目的 1.掌握数字钟的设计方法。 2熟悉集成电路的使用方法。 3通过实训学会数字系统的设计方法; 4通过实训学习元器件的选择及集成电路手册查询方法; 5通过实训掌握电子电路调试及故障排除方法; 6熟悉数字实验箱的使用方法。 三、设计任务 设计一个可以显示星期、时、分、秒的数字钟。 要求: 1、24小时为一个计数周期; 2、具有整点报时功能; 3、定时闹铃(未完成) 四、设计方案 一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”计数器和定时器组成。干电路系统由秒信号发生 3

系统设计实验报告

系统设计实验报告——远程在线考试系统

目录软件需求说明书························1 引言··························· 1.1编写目的······················· 1.2背景························· 1.3定义························· 1.4参考资料······················· 2 程序系统的结构························ 3 程序设计说明·························

1引言 1.1编写目的 本文档的编写目的是为远程在线考试系统项目的设计提供: a.系统的结构、设计说明; b.程序设计说明; c. 程序(标识符)设计说明 1.2背景 随着网络技术的飞速发展,现在很多的大学及社会上其它的培训部门都已经开设了远程教育,并通过计算机网络实现异地教育。但是,远程教育软件的开发,就目前来说,还是处于起步的阶段。因此,构建一个远程在线考试系统,还是有很大的实际意义的。 根据用户提出的需求,本项目组承接该系统的开发工作 a.开发软件系统的名称:远程在线考试系统 b.本项目的任务提出者:福州大学软件学院 c.用户:各类大专院校学校、中小学校。 1.3定义 远程在线考试系统 远程在线考试系统是基于用Browser/Web模式下的,可以实现考试题库管理、多用户在线考试、自动阅卷功能的系统。

1.4参考资料 ?GB 8566 计算机软件开发规范 ?GB 8567 计算机软件产品开发文件编制指南?软件设计标准 ?《ASP与SQL-Server2000》清华大学出版社?《可行性研究报告》 ?《项目计划文档》 ? 2程序系统的结构 3程序1(标识符)设计说明

单片机电子时钟课程设计实验报告

单片机电子时钟课程设 计实验报告 Pleasure Group Office【T985AB-B866SYT-B182C-BS682T-STT18】

《单片机原理与应用》课程设计 总结报告 题目:单片机电子时钟(带秒表)的设计 设计人员:张保江江润洲 学号: 班级:自动化1211 指导老师:阮海容 目录 1.题目与主要功能要求 (2) 2.整体设计框图及整机概述 (3) 3.各硬件单元电路的设计、参数分析及原理说明 (3) 4.软件流程图和流程说明 (4) 5.总结设计及调试的体会 (10) 附录 1.图一:系统电路原理图 (11) 2.图二:系统电路 PCB (12) 3.表一:元器件清单 (13) 4.时钟程序源码 (14)

题目:单片机电子时钟的设计与实现 课程设计的目的和意义 课程设计的目的与意义在于让我们将理论与实践相结合。培养我们综合运用电子课程中的理论知识解决实际性问题的能力。让我们对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立完成某些单片机应用系统的开发和设计打下一个坚实的基础。 课程设计的基本任务 利用89C51单片机最小系统,综合应用单片机定时器、中断、数码显示、键盘输入等知识,设计一款单片机和简单外设控制的电子时钟。 主要功能要求 最基本要求 1)使用MCS-51单片机设计一个时钟。要求具有6位LED显示、3个按键输入。 2)完成硬件实物制作或使用Pruteus仿真(注意位驱动应能提供足够的电流)。 3)6位LED数码管从左到右分别显示时、分、秒(各占用2位),采用24小时标准计时制。开始计时时为000000,到235959后又变成000000。 4)使用3个键分别作为小时、分、秒的调校键。每按一次键,对应的显示值便加1。分、秒加到59后再按键即变为00;小时加到23后再按键即变为00。在调校时均不向上一单位进位 (例如分加到59后变为00,但小时不发生改变)。 5) 软件设计必须使用MCS-51片内定时器,采用定时中断结构,不得使用软件延时法,也不得使用其他时钟芯片。 6)设计八段数码管显示电路并编写驱动程序,输入并调试拆字程序和数码显示程序。7)掌握硬件和软件联合调试的方法。 8)完成系统硬件电路的设计和制作。 9)完成系统程序的设计。 10)完成整个系统的设计、调试和制作。

北京邮电大学数字电路实验报告

北京邮电大学 数字电路与逻辑设计实验 实验报告 实验名称:QuartusII原理图输入 法设计与实现 学院:北京邮电大学 班级: 姓名: 学号:

一.实验名称和实验任务要求 实验名称:QuartusII原理图输入法设计与实现 实验目的:⑴熟悉用QuartusII原理图输入法进行电路设计和仿真。 ⑵掌握QuartusII图形模块单元的生成与调用; ⑶熟悉实验板的使用。 实验任务要求:⑴掌握QuartusII的基础上,利用QuartusII用逻辑 门设计实现一个半加器,生成新的半加器图像模 块。 ⑵用实验内容(1)中生成的半加器模块以及逻辑门 实现一个全加器,仿真验证其功能,并能下载到实 验板上进行测试,要求用拨码开关设定输入信号, 发光二级管显示输出信号。 ⑶用3线—8线译码器(74L138)和逻辑门实现要求 的函数:CBA F+ C + =,仿真验证其 + B C B A A A B C 功能,,并能下载到实验板上进行测试,要求用拨 码开关设定输入信号,发光二级管显示输出信号。二.设计思路和过程 半加器的设计实现过程:⑴半加器的应有两个输入值,两个输出值。 a表示加数,b表示被加数,s表示半加和, co表示向高位的进位。

⑵由数字电路与逻辑设计理论知识可知 b a s ⊕=;b a co ?= 选择两个逻辑门:异或门和与门。a,b 为异 或门和与门的输入,S 为异或门的输出,C 为与门的输出。 (3)利用QuartusII 仿真实现其逻辑功能, 并生成新的半加器图形模块单元。 (4)下载到电路板,并检验是否正确。 全加器的设计实现过程:⑴全加器可以由两个半加器和一个或门构 成。全加器有三个输入值a,b,ci ,两个输 出值s,co :a 为被加数,b 为加数,ci 为低 位向高位的进位。 ⑵全加器的逻辑表达式为: c b a s ⊕⊕= b a ci b a co ?+?⊕=)( ⑶利用全加器的逻辑表达式和半加器的逻 辑功能,实现全加器。 用3线—8线译码器(74L138)和逻辑门设计实现函数 CBA A B C A B C A B C F +++= 设计实现过程:⑴利用QuartusII 选择译码器(74L138)的图形模块

现代电子实验报告 电子科技大学

基于FPGA的现代电子实验设计报告 ——数字式秒表设计(VHDL)学院:物理电子学院 专业: 学号: 学生姓名: 指导教师:刘曦 实验地点:科研楼303 实验时间:

摘要: 通过使用VHDL语言开发FPGA的一般流程,重点介绍了秒表的基本原理和相应的设计方案,最终采用了一种基于FPGA 的数字频率的实现方法。该设计采用硬件描述语言VHDL,在软件开发平台ISE上完成。该设计的秒表能准确地完成启动,停止,分段,复位功能。使用ModelSim 仿真软件对VHDL 程序做了仿真,并完成了综合布局布线,最终下载到EEC-FPGA实验板上取得良好测试效果。 关键词:FPGA,VHDL,ISE,ModelSim

目录 绪论 (4) 第一章实验任务 (5) 第二章系统需求和解决方案计划 (5) 第三章设计思路 (6) 第四章系统组成和解决方案 (6) 第五章各分模块原理 (8) 第六章仿真结果与分析 (11) 第七章分配引脚和下载实现 (13) 第八章实验结论 (14)

绪论: 1.1课程介绍: 《现代电子技术综合实验》课程通过引入模拟电子技术和数字逻辑设计的综合应用、基于MCU/FPGA/EDA技术的系统设计等综合型设计型实验,对学生进行电子系统综合设计与实践能力的训练与培养。 通过《现代电子技术综合实验》课程的学习,使学生对系统设计原理、主要性能参数的选择原则、单元电路和系统电路设计方法及仿真技术、测试方案拟定及调测技术有所了解;使学生初步掌握电子技术中应用开发的一般流程,初步建立起有关系统设计的基本概念,掌握其基本设计方法,为将来从事电子技术应用和研究工作打下基础。 本文介绍了基于FPGA的数字式秒表的设计方法,设计采用硬件描述语言VHDL ,在软件开发平台ISE上完成,可以在较高速时钟频率(48MHz)下正常工作。该数字频率计采用测频的方法,能准确的测量频率在10Hz到100MHz之间的信号。使用ModelSim仿真软件对VHDL程序做了仿真,并完成了综合布局布线,最终下载到芯片Spartan3A上取得良好测试效果。 1.2VHDL语言简介:

数字秒表的设计与实现实验报告

电子科技大学《数字秒表课程设计》 姓名: xxx 学号: 学院: 指导老师:xx

摘要 EDA技术作为电子工程领域的一门新技术,极大的提高了电子系统设计的效率和可靠性。文中介绍了一种基于FPGA在ISE10.1软件下利用VHDL语言结合硬件电路来实现数字秒表的功能的设计方法。采用VHDL硬件描述语言,运用ModelSim等EDA仿真工具。该设计具有外围电路少、集成度高、可靠性强等优点。通过数码管驱动电路动态显示计时结果。给出部分模块的VHDL源程序和仿真结果,仿真结果表明该设计方案的正确,展示了VHDL语言的强大功能和优秀特性。 关键词:FPGA, VHDL, EDA, 数字秒表

目录 第一章引言 (4) 第二章设计背景 (5) 2.1 方案设计 (5) 2.2 系统总体框图 (5) 2.3 -FPGA实验板 (5) 2.4 系统功能要求 (6) 2.5 开发软件 (6) 2.5.1 ISE10.1简介 (6) 2.5.2 ModelSim简介 (6) 2.6 VHDL语言简介 (7) 第三章模块设计 (8) 3.1 分频器 (8) 3.2 计数器 (8) 3.3 数据锁存器 (9) 3.4 控制器 (9) 3.5 扫描控制电路 (10) 3.6 按键消抖电路 (11) 第四章总体设计 (12) 第五章结论 (13) 附录 (14)

第一章引言 数字集成电路作为当今信息时代的基石,不仅在信息处理、工业控制等生产领域得到普及应用,并且在人们的日常生活中也是随处可见,极大的改变了人们的生活方式。面对如此巨大的市场,要求数字集成电路的设计周期尽可能短、实验成本尽可能低,最好能在实验室直接验证设计的准确性和可行性,因而出现了现场可编程逻辑门阵列FPGA。对于芯片设计而言,FPGA的易用性不仅使得设计更加简单、快捷,并且节省了反复流片验证的巨额成本。对于某些小批量应用的场合,甚至可以直接利用FPGA实现,无需再去订制专门的数字芯片。文中着重介绍了一种基于FPGA利用VHDL硬件描述语言的数字秒表设计方法,在设计过程中使用基于VHDL的EDA工具ModelSim对各个模块仿真验证,并给出了完整的源程序和仿真结果。

操作系统课程设计实验报告

河北大学工商学院 课程设计 题目:操作系统课程设计 学部信息学部 学科门类电气信息 专业计算机 学号2011482370 姓名耿雪涛 指导教师朱亮 2013 年6月19日

主要内容 一、设计目的 通过模拟操作系统的实现,加深对操作系统工作原理理解,进一步了解操作系统的实现方法,并可练习合作完成系统的团队精神和提高程序设计能力。 二、设计思想 实现一个模拟操作系统,使用VB、VC、CB等windows环境下的程序设计语言,以借助这些语言环境来模拟硬件的一些并行工作。模拟采用多道程序设计方法的单用户操作系统,该操作系统包括进程管理、存储管理、设备管理、文件管理和用户接口四部分。 设计模板如下图: 注:本人主要涉及设备管理模块

三、设计要求 设备管理主要包括设备的分配和回收。 ⑴模拟系统中有A、B、C三种独占型设备,A设备1个,B设备2个,C设备2个。 ⑵采用死锁的预防方法来处理申请独占设备可能造成的死锁。 ⑶屏幕显示 注:屏幕显示要求包括:每个设备是否被使用,哪个进程在使用该设备,哪些进程在等待使用该设备。 设备管理模块详细设计 一、设备管理的任务 I/O设备是按照用户的请求,控制设备的各种操作,用于完成I/O 设备与内存之间的数据交换(包括设备的分配与回收,设备的驱动管理等),最终完成用户的I/O请求,并且I/O设备为用户提供了使用外部设备的接口,可以满足用户的需求。 二、设备管理函数的详细描述 1、检查设备是否可用(主要代码) public bool JudgeDevice(DeviceType type) { bool str = false; switch (type) { case DeviceType.a: {

电子系统综合设计实验报告

电子系统综合设计实验报告 所选课题:±15V直流双路可调电源 学院:信息科学与工程学院 专业班级: 学号: 学生姓名: 指导教师: 2016年06月

摘要本次设计本来是要做±15V直流双路可调电源的,但由于买不到规格为±18V的变压器,只有±15V大小的变压器,所以最后输出结果会较原本预期要小。本设计主要采用三端稳压电路设计直流稳压电源来达到双路可调的要求。最后实物模型的输出电压在±13左右波动。 1、任务需求 ⑴有+15V和-15V两路输出,误差不超过上下1.5V。(但在本次设计中,没有所需变压器,所以只能到±12.5V) ⑵在保证正常稳压的前提下,尽量减小功效。 ⑶做出实物并且可调满足需求 2、提出方案 直流可变稳压电源一般由整流变压器,整流电路,滤波器和稳压环节组成如下图a所示。 ⑴单相桥式整流 作用之后的输出波形图如下:

⑵电容滤波 作用之后的输出波形图如下: ⑶可调式三端集成稳压器是指输出电压可以连续调节的稳压器,有输出正电压的LM317三端稳压器;有输出负电压的LM337三端稳压器。在可调式三端集成稳压器中,稳压器的三个端是指输入端、输出端和调节端。 LM317的引脚图如下图所示:(LM337的2和3引脚作用与317相反)

3、详细电路图: 因为大容量电解电容C1,C2有一定的绕制电感分布电感,易引起自激振荡,形成高频干扰,所以稳压器的输入、输出端常并入瓷介质小容量电容C5,C6,C7,C8用来抵消电感效应,抑制高频干扰。 参数计算: 滤波电容计算: 变压器的次级线圈电压为15V ,当输出电流为0.5A 时,我们可以求得电路的负载为I =U /R=34Ω时,我们可以根据滤波电容的计算公式: C=т/R,来求滤波电容的取值范围,其中在电路频率为50HZ 的情况下,T 为20ms 则电容的取值范围大于600uF ,保险起见我们可以取标准值为2200uF 额定电压为50V 的点解电容。另外,由于实际电阻或电路

温度测量控制系统的设计与制作实验报告(汇编)

北京电子科技学院 课程设计报告 ( 2010 – 2011年度第一学期) 名称:模拟电子技术课程设计 题目:温度测量控制系统的设计与制作 学号: 学生姓名: 指导教师: 成绩: 日期:2010年11月17日

目录 一、电子技术课程设计的目的与要求 (3) 二、课程设计名称及设计要求 (3) 三、总体设计思想 (3) 四、系统框图及简要说明 (4) 五、单元电路设计(原理、芯片、参数计算等) (4) 六、总体电路 (5) 七、仿真结果 (8) 八、实测结果分析 (9) 九、心得体会 (9) 附录I:元器件清单 (11) 附录II:multisim仿真图 (11) 附录III:参考文献 (11)

一、电子技术课程设计的目的与要求 (一)电子技术课程设计的目的 课程设计作为模拟电子技术课程的重要组成部分,目的是使学生进一步理解课程内容,基本掌握电子系统设计和调试的方法,增加集成电路应用知识,培养学生实际动手能力以及分析、解决问题的能力。 按照本专业培养方案要求,在学完专业基础课模拟电子技术课程后,应进行课程设计,其目的是使学生更好地巩固和加深对基础知识的理解,学会设计小型电子系统的方法,独立完成系统设计及调试,增强学生理论联系实际的能力,提高学生电路分析和设计能力。通过实践教学引导学生在理论指导下有所创新,为专业课的学习和日后工程实践奠定基础。 (二)电子技术课程设计的要求 1.教学基本要求 要求学生独立完成选题设计,掌握数字系统设计方法;完成系统的组装及调试工作;在课程设计中要注重培养工程质量意识,按要求写出课程设计报告。 教师应事先准备好课程设计任务书、指导学生查阅有关资料,安排适当的时间进行答疑,帮助学生解决课程设计过程中的问题。 2.能力培养要求 (1)通过查阅手册和有关文献资料培养学生独立分析和解决实际问题的能力。 (2)通过实际电路方案的分析比较、设计计算、元件选取、安装调试等环节,掌握简单实用电路的分析方法和工程设计方法。 (3)掌握常用仪器设备的使用方法,学会简单的实验调试,提高动手能力。 (4)综合应用课程中学到的理论知识去独立完成一个设计任务。 (5)培养严肃认真的工作作风和严谨的科学态度。 二、课程设计名称及设计要求 (一)课程设计名称 设计题目:温度测量控制系统的设计与制作 (二)课程设计要求 1、设计任务 要求设计制作一个可以测量温度的测量控制系统,测量温度范围:室温0~50℃,测量精度±1℃。 2、技术指标及要求: (1)当温度在室温0℃~50℃之间变化时,系统输出端1相应在0~5V之间变化。 (2)当输出端1电压大于3V时,输出端2为低电平;当输出端1小于2V时,输出端2为高电平。 输出端1电压小于3V并大于2V时,输出端2保持不变。 三、总体设计思想 使用温度传感器完成系统设计中将实现温度信号转化为电压信号这一要求,该器件具有良好的线性和互换性,测量精度高,并具有消除电源波动的特性。因此,我们可以利用它的这些特性,实现从温度到电流的转化;但是,又考虑到温度传感器应用在电路中后,相当于电流源的作用,产生的是电流信号,所以,应用一个接地电阻使电流信号在传输过程中转化为电压信号。接下来应该是对产生电压信号的传输与调整,这里要用到电压跟随器、加减运算电路,这些电路的实现都离不开集成运放对信号进行运算以及电位器对电压调节,所以选用了集成运放LM324和电位器;最后为实现技术指标(当输出端1电压大于3V时,输出端2为低电平;当输出端1小于2V时,输出端2为高电平。输出端1电压小于3V并大于2V时,输出端2保持不变。)中的要求,选用了555定时器LM555CM。 通过以上分析,电路的总体设计思想就明确了,即我们使用温度传感器AD590将温度转化成电压信号,然后通过一系列的集成运放电路,使表示温度的电压放大,从而线性地落在0~5V这个区间里。最后通过一个555设计的电路实现当输出电压在2与3V这两点上实现输出高低电平的变化。

数字系统设计软件实验报告

实验一QuartusⅡ9.1软件的使用 一、实验目的: 1、通过实现书上的例子,掌握QUARTUSII9.1软件的使用; 2、编程实现3-8译码电路以掌握VHDL组合逻辑的设计以及QUARTUSII9.1软件的使用。 二、实验流程: 1、仔细阅读书上的操作指南,学会在QuartusⅡ9.1中创建新的工程,创建过程如下所示: 1)、建立新设计项目: ①启动QuartusⅡ9.1软件,在软件的管理器窗口选File下拉菜单,即File→New Project Wizard,则出现新建工程向导窗口。如下所示: ②点击Next按钮,将弹出新建工程设置窗口,如下图所示。在新建工程设置窗口中设置好工程的存放路径、工程名称等。

③点击Next进入添加文件窗口,如下图。由于尚未创建文件,跳过该步骤。 ④点击Next按钮,进入选择目标芯片窗口。在这里我们选择Cyclone系列的EP1C6Q240C8,如下图:

⑤点击Next按钮,进入EDA工具设置窗口,通常选择默认的“None”,表示选择QuartusⅡ自带的仿真器和综合器。如下图: ⑥点击Next按钮,弹出New Project Wizard概要对话框,在这个窗口中列出了所有前面设置的结果。若有错误则点击Back回去修改,否则点击Finish结束,即完成新工程的设定工作。如下图:

2)、文本设计输入: ①在QuartusⅡ主界面菜单栏中选择File下拉菜单中的New,弹出新建设计文件窗口,选择VHDL File项,点击OK按钮即可打开VHDL文本编辑窗口,其默认文件名为“Vhdl.vhd”。 ②出现文本编辑窗口后,我们可以直接在空白界面中键入所设计的VHDL文本。这时我们将书本中的程序输入到文本编辑环境中去。程序如下: library IEEE; use IEEE.std_logic_1164.all; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity count10 is port(clk,load,en:in std_logic; data_in:in std_logic_vector(3 downto 0); seg:out std_logic_vector(6 downto 0)); end count10; architecture beha of count10 is signal qout:std_logic_vector(3 downto 0); signal q_temp:std_logic_vector(3 downto 0); begin process(clk,load) begin

电子电路综合设计实验报告

电子电路综合设计实验报告 实验5自动增益控制电路的设计与实现 学号: 班序号:

一. 实验名称: 自动增益控制电路的设计与实现 二.实验摘要: 在处理输入的模拟信号时,经常会遇到通信信道或传感器衰减强度大幅变化的情况; 另外,在其他应用中,也经常有多个信号频谱结构和动态围大体相似,而最大波幅却相差甚多的现象。很多时候系统会遇到不可预知的信号,导致因为非重复性事件而丢失数据。此时,可以使用带AGC(自动增益控制)的自适应前置放大器,使增益能随信号强弱而自动调整,以保持输出相对稳定。 自动增益控制电路的功能是在输入信号幅度变化较大时,能使输出信号幅度稳定不变或限制在一个很小围变化的特殊功能电路,简称为AGC 电路。本实验采用短路双极晶体管直接进行小信号控制的方法,简单有效地实现AGC功能。 关键词:自动增益控制,直流耦合互补级,可变衰减,反馈电路。 三.设计任务要求 1. 基本要求: 1)设计实现一个AGC电路,设计指标以及给定条件为: 输入信号0.5?50mVrm§ 输出信号:0.5?1.5Vrms; 信号带宽:100?5KHz; 2)设计该电路的电源电路(不要际搭建),用PROTE软件绘制完整的电路原理图(SCH及印制电路板图(PCB 2. 提高要求: 1)设计一种采用其他方式的AGC电路; 2)采用麦克风作为输入,8 Q喇叭作为输出的完整音频系统。 3. 探究要求: 1)如何设计具有更宽输入电压围的AGC电路; 2)测试AGC电路中的总谐波失真(THD及如何有效的降低THD 四.设计思路和总体结构框图 AGC电路的实现有反馈控制、前馈控制和混合控制等三种,典型的反馈控制AGC由可变增益放大器(VGA以及检波整流控制组成(如图1),该实验电路中使用了一个短路双极晶体管直接进行小信号控制的方法,从而相对简单而有效实现预通道AGC的功能。如图2,可变分压器由一个固定电阻R和一个可变电阻构成,控制信号的交流振幅。可变电阻采用基极-集电极短路方式的双极性晶体管微分电阻实现为改变Q1电阻,可从一个由电压源V REG和大阻值电阻F2组成的直流源直接向短路晶体管注入电流。为防止Rb影响电路的交流电压传输特性。R2的阻值必须远大于R1。

数字电路与系统设计实验报告

数字电路与系统设计实验报告 学院: 班级: 姓名:

实验一基本逻辑门电路实验 一、实验目的 1、掌握TTL与非门、与或非门和异或门输入与输出之间的逻辑关系。 2、熟悉TTL中、小规模集成电路的外型、管脚和使用方法。 二、实验设备 1、二输入四与非门74LS00 1片 2、二输入四或非门74LS02 1片 3、二输入四异或门74LS86 1片 三、实验内容 1、测试二输入四与非门74LS00一个与非门的输入和输出之间的逻辑关系。 2、测试二输入四或非门74LS02一个或非门的输入和输出之间的逻辑关系。 3、测试二输入四异或门74LS86一个异或门的输入和输出之间的逻辑关系。 四、实验方法 1、将器件的引脚7与实验台的“地(GND)”连接,将器件的引脚14与实验台的十5V连接。 2、用实验台的电平开关输出作为被测器件的输入。拨动开关,则改变器件的输入电平。 3、将被测器件的输出引脚与实验台上的电平指示灯(LED)连接。指示灯亮表示输出低电平(逻辑为0),指示灯灭表示输出高电平(逻辑为1)。 五、实验过程 1、测试74LS00逻辑关系 (1)接线图(图中K1、K2接电平开关输出端,LED0是电平指示灯) (2)真值表 2、测试74LS02逻辑关系

(1)接线图 (2)真值表 3、测试74LS86逻辑关系接线图 (1)接线图 (2)真值表 六、实验结论与体会 实验是要求实践能力的。在做实验的整个过程中,我们首先要学会独立思考,出现问题按照老师所给的步骤逐步检查,一般会检查处问题所在。实在检查不出来,可以请老师和同学帮忙。

实验二逻辑门控制电路实验 一、实验目的 1、掌握基本逻辑门的功能及验证方法。 2、掌握逻辑门多余输入端的处理方法。 3、学习分析基本的逻辑门电路的工作原理。 二、实验设备 1、基于CPLD的数字电路实验系统。 2、计算机。 三、实验内容 1、用与非门和异或门安装给定的电路。 2、检验它的真值表,说明其功能。 四、实验方法 按电路图在Quartus II上搭建电路,编译,下载到实验板上进行验证。 五、实验过程 1、用3个三输入端与非门IC芯片74LS10安装如图所示的电路。 从实验台上的时钟脉冲输出端口选择两个不同频率(约7khz和14khz)的脉冲信号分别加到X0和X1端。对应B和S端数字信号的所有可能组合,观察并画出输出端的波形,并由此得出S和B(及/B)的功能。 2、实验得真值表

软件设计与体系结构实验报告

福建农林大学计算机与信息学院 实验报告 课程名称:软件设计与体系结构 姓名:陈宇翔 系:软件工程系 专业:软件工程 年级:2007 学号:070481024 指导教师:王李进 职称:讲师 2009年12月16日

实验项目列表

福建农林大学计算机与信息学院实验报告 学院:计算机与信息学院专业:软件工程系年级:2007 姓名:陈宇翔 学号:070481024 课程名称:软件设计与体系结构实验时间:2009-10-28 实验室田实验室312、313计算机号024 指导教师签字:成绩: 实验1:ACME软件体系结构描述语言应用 一、实验目的 1)掌握软件体系结构描述的概念 2)掌握应用ACMESTUDIO工具描述软件体系结构的基本操作 二、实验学时 2学时。 三、实验方法 由老师提供软件体系结构图形样板供学生参考,学生在样板的指导下修改图形,在老师的指导下进行软件体系结构描述。 四、实验环境 计算机及ACMESTUDIO。 五、实验内容 利用ACME语言定义软件体系结构风格,修改ACME代码,并进行风格测试。 六、实验操作步骤 一、导入Zip文档 建立的一个Acme Project,并且命名为AcmeLab2。如下图:

接着导入ZIP文档,导入完ZIP文档后显示的如下图: 二、修改风格 在AcmeLab2项目中,打开families下的TieredFam.acme.如下图: 修改组件外观 1. 在组件类型中,双击DataNodeT; 在其右边的编辑器中,将产生预览;选择Modify 按钮,将打开外观编辑器对话框。 2. 首先改变图形:找到Basic shape section,在Stock image dropdown menu中选 择Repository类型. 3. 在Color/Line Properties section修改填充颜色为深蓝色。 4. 在颜色对话框中选择深蓝色,并单击 [OK]. 5. 修改图形的边框颜色为绿色 7. 单击Label tab,在Font Settings section, 设置字体颜色为白色,单击[OK] 产生的图形如下图:

电子商务系统分析与设计课程设计实验报告

江苏科技大学电子商务系统分析与设计课程设计网上书城系统的开发 学生姓名张颖 学号0840412117 班级08404121 指导老师 成绩 经济管理学院信息管理系 2012年1月8日

目录 一.系统规划 (2) 1.1明确用户需求 (3) 1.2初步调查 (3) 1.3确定电子商务模式和模型 (4) 1.4可行性分析和可行性分析报告 (4) 二.系统分析 (5) 2.1系统调查 (5) 2.2需求规格说明书 (5) 2.2.1 引言 (5) 2.2.2项目概述 (6) 2.2.3需求规定 (6) 2.2.4环境要求 (10) 2.3组织结构分析 (10) 2.4业务流程分析 (11) 2.5数据流程分析 (13) 三.系统设计 (14) 3.1系统总体结构 (14) 3.2网络基本结构 (15) 3.3系统平台选择 (16) 3.4应用系统方案 (16) 3.4.1各功能模块简要描述 (16) 3.4.4数据库设计 (18) 3.4.5用户界面设计 (23) 3.5实施方案 (24) 3.5.1客户端要求 (24) 3.5.2服务器端要求 (24) 3.5.3系统测试 (24) 四.支付系统设计 (28) 4.1支付协议选择 (28) 4.2支付系统数据流程分析 (29) 4.3支付系统安全需求分析 (29) 4.4支付系统总体设计 (30) 4.5支付系统功能 (32) 4.6交易流程设计 (33) 4.7支付系统安全设计 (34) 五.心得体会 (34) 一.系统规划

1.1明确用户需求 随着当今社会新系统大度的提高,网络的高速发展,计算机已被广泛应用于各个领域,因而网络成为人们生活中不可或缺的一部分。互联网用户应经接受了电子商务,网购成为一种时尚潮流。 书籍交易网站就是Internet和电子商务发展的产物,近几年在我国发展迅猛,如同一些书店纷纷在各地开设分店以拉近书店与顾客间距离一样。随着科学技术得分速发展,Internet这个昔日只被少数科学家接触和使用的科研工具已经成了普通百姓都可以触及的大众型媒体传播手段。随着现金全民素质和科学技术水平的不断提高,知识更新的越来越快。人们随时都会有被淘汰的危机,为了不让社会淘汰,做到与时俱进就必须多读书不断的学习,21世纪是网络的时代、信息的时代,时间是非常宝贵的,人们由于种种原因没有时间到书店去,也不知道哪家书店有自己需要的书籍,同时那些传统书店的经营者又没什么好的方法让人们知道我这就有顾客需要的书籍,这种买卖双方之间信息交流上的阻碍成为“网上书城”网站发展的原动力。 网上书城网站的建立可以跟好的解决这方面的问题,向广大用户推出的是一种全新的网上信息服务,旨在书店与消费者之间架起了一座高速、便捷的网上信息桥梁。 1.2初步调查 截止至2010年6月底,中国网民的数量达到4.21亿人,互联网电子商务化的程度也越来越高,网络购物、网上支付和网上银行的使用率分别达到33.8%、30.5%和29.1%。而在众多的电子商务行为中,因网上购书具有较高的可信性和打折优惠,网上购书的比例逐年提高。当当网、卓越亚马逊两间网上书城更是在同类B2C网站中占据头两位。很多人看到了书这种网上销售的诸多好处:方便购买、金额小、风险小、用户容易决定;信息的完整性以及很少出现质量问题和退货现象等,无论是当当、卓越还是99读书人,网上书店的强大搜索功能帮助顾客查找图书和选择图书,与传统书店中令人无所适从的货架分类不同,网上书店通过强大的搜索引擎为用户挑书提供了最大的便利。早在2005年底,著名调查公司AC尼尔森的

基于FPGA的现代数字系统设计实验报告

****大学 实验报告 课程名称:基于FPGA的现代数字系统设计 实验名称:基于HDL十进制计数显示系统设置 姓名: 学号: 班级: 指导教师: ****大学信息工程学院制

基于HDL十进制计数显示系统设置 一、实验要求 1.设计具有异步复位,同步使能的十进制计数器,其计数结果通过七段数码管,发光二极管等进行显示。 2.主要设计的模块有十进制计数模块和数码管驱动模块以及消抖模块。 3.需要将按键输入的时钟,然后通过消抖模块消抖后,再输出至后续使用。 4.共阴极数码管驱动。 二、实验原理 本次的设计是一个具有数显输出的十进制计数器。示意图如2.1所示。 图2.1 七段数码管属于数码管的一种,是由7段二极管组成。按发光二极管单元衔接方式分为共阳极数码管和共阴极数码管。本实验使用共阴数码管。它是指将一切发光二极管的阴极接到一同构成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平相应字段就点亮,当某一字段的阳极为低电平相应字段就不亮。 显示译码器,用HDL语言判断CLK的上升沿信号,每次收到一次上升沿信号,计数器的值加一并显示在数码管上,所以本次实验会将十进制计数与七段数码管的显示分别写在两个模块里面。 系统模块划分及引脚连线图如下:

三、实验步骤(设计输入) 1.十进制计数器模块 module cnt10(clk,clr,ena,sum,cout); input clk,clr,ena; output [3:0] sum; output cout; reg [3:0] sum; reg cout; always @ (posedge clk or posedge clr) if(clr==1) begin sum <= 4'b0000; cout<= 1'b0;end else if(ena==1'b1) if(sum==4'b1001) begin sum <= 4'b0000; cout<= 1'b1; end else begin sum <= sum+1; cout<= 1'b0; end else begin sum <= sum; cout<= cout; end Endmodule 程序主要思路是用always等待clk与clr的上升沿信号,因为是异步清零所以在always 中也要等待clr的清零信号。用if语句判断clr信号,为1则清零。判断ena信号,为1进行计数操作,为0输出保持不变。计数中,判断sum的值如果为9时,进行进位操作,并将sum值赋值为0 2.数码管驱动模块 module led7 (sum ,out ); input [3:0] sum; output [6:0] out; reg [6:0] out ; always @(sum) begin out = {7{1'b0}};

相关文档
最新文档