数据结构超市密码箱存取系统实验报告
《实验一 ATM自动柜员机业务系统数据流图与原型》实验报告

ATM 系统UML实验报告

软件建模与UML实验报告
ATM系统
、
ATM系统
用户在A TM 机上的用例图
用户和A TM 机之间的类图
用户取款时序图
在A TM系统中各个包图之间存在的依赖关系
用户进行各种操作的协作图输入密码不正确
状态图
用户活动图
ATM系统的部署图
小结:通过本次综合实验,基本上能用Rose画出各种图形,对软件建模有了进一步的了解。
使用UML进行系统建模,就是使用面向对象的方法来分析系统,然后用可视化的模型将信息用标准的图形直观地显示出来,以此建立面向对象的系统模型。
通过用工具Rose将系统模型话,可视化。
能使读者方便了解系统。
实验报告(超市库存管理系统需求分析)

实验报告(超市库存管理系统需求分析)超市库存管理系统需求分析一、引言随着小超市规模的发展不断扩大,商品数量急剧增加,有关商品的各种信息量也成倍增长。
超市时时刻刻都需要对商品各种信息进行统计分析。
而大型的超市管理系统功能过于强大而造成操作繁琐降低了小超市的工作效率。
超市管理系统是市场上最流行的超市上常用的系统之一,它主要包含以下几个模块:系统权限的设定、原始数据录入、数据的汇总及查询等。
从而,实现对进货、销售及员工信息等实现全面、动态、及时的管理。
二、任务概述2.1目标本文系统的分析了软件开发的背景以过程;首先介绍了软件的开发环境,其次介绍了本软件的详细设计过程:数据库的设计、各个模块的设计和实现,以及具体界面的设计和功能。
2.2项目背景在我国超市形成在20世纪90年代初期,现在已经成为我国零售业的一种重要形态,为国民经济的发展发挥了重要的作用。
随着超市高速的发展,其经营管理也变得愈加复杂,早期的售货员站柜台的形式早已不能满足现有销售也的发展,这样就迫切地需要引入新的管理技术。
2.3 运行环境(1)硬件环境台式机或笔记本电脑运行时所需内存:5MB;(2)软件环境Windows操作系统三、数据描述3.1静态数据描述操作员个人信息表(UID, Uname, 联系电话);仓库信息表(仓库名称,负责人,联系电话,联系地址);货品信息表(货品编号,货品名称,货品类别,规格型号,单位);库存信息表(库别,货品编号,数量,进货单价,出货单价);入库单(凭证编号,库别,货品编号,数量,进货单价,合计,入库时间,制单人,采购人编号);出库单(凭证编号,库别,货品编号,数量,出货单价,合计,出库时间,制单人,客户编号);采购员表(UID, Uname, 采购的货品类别,联系电话);客户信息表(客户编号,客户名称,联系人,联系电话,联系地址);3.2数据库描述本软件采用数据库:Microsoft SQL Server 2008;3.3数据字典字段名数据类型字段长度是否为空UID 文本10Uname 文本8联系电话文本15表1 操作员个人信息表字段名数据类型字段长度是否为空仓库名称文本20负责人文本8联系电话文本15联系地址文本50表2 仓库信息表字段名数据类型字段长度是否为空货品编号文本 5货品名称文本10货品类别文本8规格型号文本 4单位文本 2表3 货品信息表字段名数据类型字段长度是否为空库别文本 5仓库编号文本 5数量数字长整型进货单价货币8出货单价货币 5表4 库存信息表字段名数据类型字段长度是否为空凭证编号文本10 库别文本8货品编号文本 5数量数字长整型进货单价货币合计货币入库时间日期/时间制单人文本8采购人编号文本 5表5 入库单字段名数据类型字段长度是否为空凭证编号文本10 库别文本8货品编号文本 5数量数字长整型出货单价货币合计货币出库时间日期/时间制单人文本8客户编号文本 5表6 出库单字段名数据类型字段长度是否为空UID 文本10Uname 文本 6采购的货品类别文本10联系电话文本15表7 采购员表字段名数据类型字段长度是否为空客户编号文本10客户名称文本8联系人文本8联系电话文本15联系地址文本50表8 客户信息表四、功能需求4.1功能划分本软件主要有如下功能(1)身份验证(2)系统主界面的实现(3)出库管理模块的实现(4)信息查询模块的实现(5)修改功能(6)帮助功能4.2功能描述(1)身份验证功能对登陆的用户进行验证,通过者才能进入系统。
超市仓储管理系统测试报告

超市仓储管理系统测试报告本文档旨在记录对超市仓库管理系统进行系统测试的测试过程,以确保测试质量和进度。
我们将根据测试计划报告进行测试,并详细记录测试过程,以对软件的质量进行测评,并为软件设计人员提供BUG依据。
本系统的背景是为一个超市设计并开发一套库存管理系统,能够兼容现行的手工账册,要求能够设置期初库存,输入入库单和出库单,在每个结算月能够生成分类库存统计报表。
当某种商品的库存少于安全库存时将给出警示,提醒尽快采购该商品。
在每年的年终还能进行盘存处理,以纠正实际库存和电脑库存的差别。
本次测试主要针对本小组开发的仓库管理系统进行系统测试,主要包括功能测试、界面测试、负载测试、文档测试。
在仓库管理系统需求规格说明书中列出的系统功能和性能都需要完成测试,在测试工作期间发现的所有缺陷都需要改正并确认。
为了实现测试目标,我们采用黑盒测试方法,整个过程采用自底向上,逐个集成的办法,依次进行单元测试,组装测试,测试用例的设计应包括合理的和不合理的输入条件。
测试项目包括系统登录测试、入库测试、库存测试、出库测试、查询测试、报表测试、新增商品信息测试和新增仓库信息测试。
在测试1中,我们将测试系统操作界面,包括帐号口令输入、合理性检查、合法性检查和系统操作界面显示控制。
测试2将测试入库功能,包括货物编号输入,入库对话显示控制和入库登记。
测试3将测试库存功能,包括库存显示的合理性。
测试4将测试出库操作功能,包括出库管理界面显示控制、出库浏览和出库记录。
测试5将测试查询功能,包括查询对话框显示控制、输入数据合理性检验、提交和查询结果显示。
测试6将测试结算库存报表功能,包括输入数据提交和报表结果显示。
测试7将测试新增商品功能,包括输入数据合理性检验、提交和新增结果显示。
测试8将测试新增仓库功能。
测试9:修正仓库信息测试此测试旨在测试修正仓库信息的功能。
在盘点模式下,点击需要修改的商品,然后在菜单栏中选择“修正”选项。
当当前数量低于安全量时,数量显示为绿色。
超市存包系统C语言

课 程 设 计2015——2016学年 第2学期课程名称C 语言高级程序设计 学 院 计算机科学与技术学院小组成员1小组成员2 小组成员3 任课教师目录1.所选题目与要求——————————————————12.问题分析—————————————————————13.算法设计—————————————————————14.程序源代码————————————————————35.运行效果—————————————————————66.研究总结—————————————————————71.所选题目与要求超市门口的存物柜有n个小柜,一个柜门控制器。
柜门控制器上有“存”和“取”两个按钮(可以用“0”表示“存”,“1”表示“取”)。
顾客按“存”时,控制器检查是否有空柜子:如果有空柜子,就会自动打开其中一个柜子,顾客将东西放入柜子中,锁门时会输出一张用于取包的小密码纸条,上面有7位数字密码。
密码的头两位对应柜子编号加上10,密码中剩下的5位是利用随机函数rand()任意产生。
如果没有空柜子则提示“柜子已满!”。
当顾客按“取”按钮时,要输入小密码纸条上指定的7位数字密码:若密码正确,则对应的柜子门就自动打开,控制器显示“请取走物品!”;否则控制器提示“欢迎下次光临!”,顾客取走物品后关门,则该柜子可继续为其他顾客提供服务。
现编程实现柜门控制器的功能。
2.问题分析实现对n个小柜子状态的管理问题。
存过物品的柜子会对应一个“有密码”状态,用字符串(7个数字字符)表示的密码。
最初或已取走物品后的柜子会对应初始状态—“无密码”用户所有的存取操作会构成一个由0或1构成的请求序列,如:0,0,0,1,1,0,1,0,0,1……一次操作只能对应一个用户,同时对应控制器的一次处理,完成一次操作,并使柜子的状态发生变化。
3.算法设计流程图(借用的群里图,结构一致顺过来用用)(1)输入寄存箱数量int num(int n) { //输入可存柜数printf("请输入可存柜总数");scanf("%d",&n);printf("\n");while(n<=0||n>=25) {printf("寄存柜数量错误, 请重新输入\n\n");printf("寄存柜数量>");scanf("%d",&n);printf("\n"); }return n;}(2)判断是否有空闲的箱子,输出柜号void knum(int *c,int *n,int *k) //判断有没有空柜子,若有从小到大输出柜子int i=0;for(i=0;i<*n;i++){if (c[i]==1){c[i]=2;*k=i;printf("柜号%d\t",*k+1);break;}else *k=-1;}}(3)输出空箱子密码char code(char a[24][8],int *k) { //随机七位密码,前两位是空柜号数+10 int i=0,x=0;if(*k!=-1){for(i=0;i<5;i++) {x=rand()%10+0;a[*k][i+2]=x;}a[*k][0]=(*k+10)/10;a[*k][1]=(*k)%10+1;printf("请记住密码=");for(i=0;i<7;i++)printf("%d",a[*k][i]);printf("\n");}(4)检测输入的密码是否正确void test(char a[24][8],int *c){ //检验密码是否输错int i=0,j=0,l=0;char b[8];int t[8];int r[8];printf("请输入七位密码=");scanf("%s", b);printf("\n");j=(int)(b[0]-'0')*10+(int)(b[1]-'0')-11;for(i=0;i<8;i++){t[i]=(int)(a[j][i]-'\0');r[i]=(int)(b[i]-'0');if(t[i]==r[i]) l++;}if(l==7){printf("%d号请取走物品!\n",j+1);c[j]=1;}else printf("密码错误*****欢迎下次光临!\n");}4.程序源代码/**************************都是背后有肮*交易的淫~小组作业*****************/#include <stdio.h>#include <stdlib.h>#include <time.h>#include <string.h>int num(int n);void knum(int *c,int *n,int *k);char code(char a[24][8],int *k);void test(char a[24][8],int *c);void main(void) { //主函数printf("*****************都是背后有肮*交易的淫~小组作业********************\n");printf("********************小组成员:任海亮(组长)***********************\n");printf("********************小组成员:陈思(组花)***********************\n");printf("********************小组成员:钟金玮(组胖)***********************\n");int n=24,k=0,choice=0,i=0;char a[24][8]={'\0'};char b[8]={'\0'};int c[24]={0};for (i=0;i<24;i++) c[i]=1;srand(time(0));n=num(n);while(1){printf("存请按0;取请按1>");scanf("%d",&choice);switch(choice){case 0:knum(c,&n,&k);a[24][8]=code(a, &k);break;case 1:test(a,c);break;}}}int num(int n) { //输入可存柜数 printf("请输入可存柜总数(最大24个)");scanf("%d",&n);printf("\n");while(n<=0||n>=25) {printf("寄存柜数量错误, 请重新输入\n\n");printf("寄存柜数量>");scanf("%d",&n);printf("\n"); }return n;}void knum(int *c,int *n,int *k) { //判断有没有空柜子,若有从小到大输出柜子int i=0;for(i=0;i<*n;i++){if (c[i]==1){c[i]=2;*k=i;printf("柜号%d\t",*k+1);break;}else *k=-1;}}char code(char a[24][8],int *k) { //随机七位密码,前两位是空柜号数+10 int i=0,x=0;if(*k!=-1){for(i=0;i<5;i++) {x=rand()%10+0;a[*k][i+2]=x;}a[*k][0]=(*k+10)/10;a[*k][1]=(*k)%10+1;printf("请记住密码=");for(i=0;i<7;i++)printf("%d",a[*k][i]);printf("\n");}if(*k==-1) printf("柜子已满!\n\n");return a[24][8];}void test(char a[24][8],int *c){ //检验密码是否输错int i=0,j=0,l=0;char b[8];int t[8];int r[8];printf("请输入七位密码=");scanf("%s", b);printf("\n");j=(int)(b[0]-'0')*10+(int)(b[1]-'0')-11;for(i=0;i<8;i++){t[i]=(int)(a[j][i]-'\0');r[i]=(int)(b[i]-'0');if(t[i]==r[i]) l++;}if(l==7){printf("%d号请取走物品!\n\n",j+1);c[j]=1;} else printf("密码错误*****欢迎下次光临!\n\n");}5.运行效果6.研究总结(研究过程、交流讨论、收获和小组成员的分工)①分工:钟金玮做柜子数输出模块陈思做检查是否有空柜子和生成密码模块任海亮做检查密码是否输错和置零模块与编写主程序及汇总实验报告②总结:跟着李民老师学习了半学期的C语言,原本以为没啥好听的我们却收获良多,老师将概念案例化,这样的效率要远超自己看书。
09级ds(超市密码存储箱系统的设计与实现等)实验代码

{ P →next=q→next;
Return q;
}
else p=q;
} Return NULL;
(3)实现程序
#include ”graphics.h”
/*返回指向此箱的结点*/
/*若无此箱则返回空指针*/
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力通根保1据过护生管高产线中工敷资艺设料高技试中术卷资0配不料置仅试技可卷术以要是解求指决,机吊对组顶电在层气进配设行置备继不进电规行保范空护高载高中与中资带资料负料试荷试卷下卷问高总题中体2资2配,料置而试时且卷,可调需保控要障试在各验最类;大管对限路设度习备内题进来到行确位调保。整机在使组管其高路在中敷正资设常料过工试程况卷中下安,与全要过,加度并强工且看作尽护下可1都关能可于地以管缩正路小常高故工中障作资高;料中对试资于卷料继连试电接卷保管破护口坏进处范行理围整高,核中或对资者定料对值试某,卷些审弯异核扁常与度高校固中对定资图盒料纸位试,置卷编.工保写况护复进层杂行防设自腐备动跨与处接装理地置,线高尤弯中其曲资要半料避径试免标卷错高调误等试高,方中要案资求,料技编试术写5、卷交重电保底要气护。设设装管备备置线4高、调动敷中电试作设资气高,技料课中并术3试、件资且中卷管中料拒包试路调试绝含验敷试卷动线方设技作槽案技术,、以术来管及避架系免等统不多启必项动要方方高式案中,;资为对料解整试决套卷高启突中动然语过停文程机电中。气高因课中此件资,中料电管试力壁卷高薄电中、气资接设料口备试不进卷严行保等调护问试装题工置,作调合并试理且技利进术用行,管过要线关求敷运电设行力技高保术中护。资装线料置缆试做敷卷到设技准原术确则指灵:导活在。。分对对线于于盒调差处试动,过保当程护不中装同高置电中高压资中回料资路试料交卷试叉技卷时术调,问试应题技采,术用作是金为指属调发隔试电板人机进员一行,变隔需压开要器处在组理事在;前发同掌生一握内线图部槽纸故内资障,料时强、,电设需回备要路制进须造行同厂外时家部切出电断具源习高高题中中电资资源料料,试试线卷卷缆试切敷验除设报从完告而毕与采,相用要关高进技中行术资检资料查料试和,卷检并主测且要处了保理解护。现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
超市密码存储箱系统的设计与实现

else
{
q->next=p;
q=p;
}
p->next =NULL;
p=(box*)malloc(sizeof(box));
i++; }
printf("系统可容纳200个存储位置\n");}
temp1->password=0temp1->next ;
go_back(temp1); }
else {
printf("密码有误,请重新输入!\n");
goto loop;
}
}void go_back(box*temp){
while(q->next !=NULL)q=q->next;
lab1:add->password =password_box();while(p->next!=NULL&&p->password !=add->password )p=p->next ;
if(p->password ==add->password )goto lab1; q->next=add; add->next =NULL; print(add);}void print(box *add)
上机实验内容二:超市密码存储箱系统的设计与实现 1.顾客使用箱子的流程为“投一元硬币”--------“找到一个空箱子,同时产生密码”(系统完成)--------“打印密码,打开箱子”(系统完成)--------“取密码纸存包,并关闭箱子,入超市购物”--------“购物结束”--------“输入密码”--------“找到对应箱子并打开”(系统完成)--------“取包”。 2.现要求设计程序模拟以上系统完成的功能 ①界面:在我们的模拟系统中,箱子在屏幕上被画出来,并编号,空箱为蓝色,被使用时变成红色,再变为空后则恢复蓝色; ②通过按“1”键模拟顾客投币; ③当空箱子被顾客申请得到的同时,系统自动生成6位数密码,此密码不能与正在被使用的任何一个箱子的密码相同。 3.设计分析 在设计时,可利用链表来组织所有的箱子,所有的箱子以结点的形式表示,结点中存放箱号、密码(满箱有,空箱无)以及指向下一个结点的指针。空箱结点放在一个链表1中,满箱结点放在另一个链表2中。 若有顾客投币(这里按下“1”键模拟),查看链表1是否为空,若为空,则显示“箱满,请稍侯!”,若非空,则取出一个结点,随机产生一个六位数密码,并将些密码和链表2中所有结点的密码相比较,若有重复,则再随机产生一个新密码,直到无重复;将密码信息写入此结点,并将其插入链表2;将此箱的颜色改为红色。
智能行李箱实验报告单

一、实验名称:多功能智能跟随行李箱实验二、实验目的:1. 了解智能行李箱的工作原理和功能特点;2. 掌握智能行李箱的组装、调试和操作方法;3. 体验智能行李箱在实际应用中的便利性。
三、实验器材:1. 多功能智能跟随行李箱1台;2. 电源适配器1个;3. 数据线1根;4. 计算机1台;5. 超声波传感器1个;6. 激光雷达传感器1个;7. 指纹传感器1个;8. 称重传感器1个。
四、实验原理:多功能智能跟随行李箱采用UWB定位技术,结合分布式控制系统硬件结构方案,实现自动跟随、自动避障、指纹解锁、自动称重、超距离报警等功能。
以下为各功能原理:1. 自动跟随:通过UWB定位技术,实时获取行李箱与用户之间的相对位置,根据预设算法,驱动行李箱底部电机实现跟随效果。
2. 自动避障:利用超声波传感器和激光雷达传感器,实时检测行李箱前方障碍物,通过算法判断并控制行李箱避开障碍物。
3. 指纹解锁:通过指纹传感器采集用户指纹信息,与预先录入的指纹信息进行比对,实现指纹解锁。
4. 自动称重:通过称重传感器,实时测量行李箱及箱内物品的重量,并在显示屏上显示。
5. 超距离报警:以UWB定位技术为基础,当行李箱与用户距离超过预定距离时,自动发出报警信号。
五、实验步骤:1. 组装智能行李箱:将各个部件按照说明书要求组装,包括电池、电机、传感器等。
2. 调试智能行李箱:连接电源适配器,开启行李箱,通过计算机进行调试,包括UWB定位、避障算法、指纹解锁等。
3. 操作智能行李箱:在保证安全的前提下,进行以下操作:(1)指纹解锁:用手指按在指纹传感器上,完成解锁;(2)自动跟随:跟随实验者移动;(3)自动避障:遇到障碍物时,自动避开;(4)自动称重:将行李箱放置在水平面上,查看显示屏上的重量;(5)超距离报警:当行李箱与实验者距离超过预定距离时,发出报警信号。
六、实验结果与分析:1. 自动跟随功能:在实验过程中,智能行李箱能够准确跟随实验者移动,跟随距离在1米范围内,满足实验要求。
数据结构课程设计报告-超市商品管理

1。
需求分析在某个大型生活服务区内,有三个超市,每个超市中的商品包括:商品号,商品名称,商品价格,库存数量,每种商品总数,生产日期等基本信息,假设三个超市的商品信息分别是用单链L1,L2, L3取存储的,请写一个程序实现下列任务要求:知识点:线性表操作【任务要求】1.当超市有新的商品购入是能添加到单链表中;2.能查找出三个超市中具有相同商品名称的商品信息;3.在超市商品信息L1中删除那些与其他两个超市都有的商品信息;4.能修改各超市商品基本信息,如价格等。
5.能查找比较超市中相同商品的销售情况,能统计每个超市中每种商品的销售量及销售额.6.能输出每个超市的所有商品信息;【测试数据】自行设定,注意测试将活区删空等特殊情况。
2。
概要设计2。
1必要算法1.当超市有新的商品购入是添加到单链表中算法概要:运用单链表的基本操作—-插入一个新结点,即分配一个新的储存空间,然后依次输入结点所含的数据,再插入到原结点的尾部即可.此算法时间复杂度为O(1)。
2.查找出三个超市中具有相同商品名称的商品信息1算法概要:1。
寻找相同商品名称算法:先比较前两个链表(超市)l1,l2,运用比较字符串的strcmp()方法找出两个链表中含有相同的商品名称,然后将两个链表中具有相同商品名称的商品信息存储到新建链表fs中,再比较链表fs和l3,重复上述步骤,找出链表l1,l2,l3中都具有相同商品名称的商品,将其商品信息存储在链表fs中.此算法时间复杂度为O(n)。
2。
输出相同商品的商品信息:访问fs中每个结点中的商品名称,根据商品名称分别遍历原链表l1,l2,l3的商品信息找出原结点,然后将其信息输出。
此算法时间复杂度为O(n)。
3.在超市商品信息L1中删除那些与其他两个超市都有的商品信息算法概要:首先运用上述的寻找相同商品名称算法,找出l1中那些与其他两个超市都有的商品名称,再根据其名称遍历链表l1,找出其结点删除并释放——单链表的基本操作.此算法时间复杂度为O(n)。
超市库房管理系统实验报告

课程设计报告书设计名称:题目:学生姓名:专业:班别:学号:指导老师:日期:年月日目录第一章概述 (3)1.1引言 (3)1.2系统指导思想和建设目标 (3)第二章系统设计 (3)2.1总体功能设计 (3)2.2定义 (3)2.3系统功能分析 (4)2.4系统功能模块设计 (4)第三章数据库设计 (5)3.1数据库需求分析 (5)3.2数据库概念结构设计 (7)3.3数据库的逻辑结构设计 (9)3.4数据库结构的实现 (10)3.5 创建数据库的存储过程 (11)3.6 创建触发器 (12)第四章系统窗体的设计 (12)4.1超市库房管理系统主窗体的创建 (12)4.2 系统管理 (15)4.2.1登录窗体的创建 (15)4.2.2 添加用户窗体的创建 (17)4.2.3修改密码窗体的创建 (18)4.3商品信息管理 (20)4.3.1商品查询窗体的创建 (20)4.3.2全部商品窗体的创建 (21)4.3.3管理商品窗体的创建 (24)4.4 采购管理 (29)4.4.1采购清单窗体的创建 (29)4.4.2添加采购窗体的创建 (30)4.4.3管理采购窗体的创建 (33)4.5销售管理 (35)4.5.1未上架商品窗体的创建 (35)4.5.2已上架商品窗体的创建 (40)4.5.3管理已上架窗体的创建 (41)第五章总结 (42)参考文献 (42)第一章概述1.1引言在社会的不断进步与发展的背景下,消费逐渐变得越来越大众化,人们的消费观念也渐渐在改变。
而超市就在这样的情况下变得越来越普遍,遍及大街小巷,更加融入人们的生活之中,已经成为生活之中不可缺少的部分。
在超市队伍不断壮大的情况下,超市的优化管理也渐渐成为了我们关注的问题。
对于大型超市而言,管理体系更加需要规范化、智能化、合理化。
而在此设计中,是关于一个小型超市的库房管理系统的设计,以便更加合理的管理超市仓库各种商品的销售、采购、库存等各种信息,追求更加优化的管理,以便更好的服务大众。
数据采集存储系统实验报告

数据采集存储系统陈俣兵任加勒蔡露薇摘要:本系统以C8051F360单片机最小系统为核心,结合FPGA及高速A/D数据采集模块,可靠地实现对一路外部信号进行采集、存储及FFT频谱分析。
系统硬件可以分为模拟部分和数字部分。
模拟电路主要包括信号调理电路、锁相环模块及A/D模块、D/A模块。
调理电路主要调节信号的幅度及直流偏置,以满足A/D对输入信号1~2V的幅度要求。
锁相环模块为A/D模块提供时钟信号,以实现对输入信号的整周期采样,防止频谱泄露。
数字部分主要由FPGA实现,用于数据的存储、传输等。
本系统对锁相环的使用实现了采样频率对输入信号的跟踪,大大增加了输入信号频率变化范围。
测试显示本系统谐波分量测量误差小于1%,系统稳定可靠。
关键字:FFT C8051F360 FPGA 锁相环一、方案选择与论证1.系统整体方案比较与选择方案一:采用扫频外差法。
将输入信号和扫频本振产生的信号混频,使变频后信号不断移入窄带滤波器,进而逐个选出被测频谱分量。
这种方法的优点是扫频范围大,但对硬件电路要求较高,分辨率不高,难以满足题目要求。
方案二:采用单片机来实现。
采用单片机系统控制AD转换器将交流电压电流信号存入缓冲区后,由CPU进行频谱分析以及功率计算。
此方案可以使控制模块的设计较为简单。
但是,频谱分析的计算(如FFT)具有数据量大,乘法运算居多的特点。
此弊端只能通过减少采样点数或外扩运算芯片来解决,前者会降低测量精度,而后者会增加外围硬件设计的复杂程度。
方案三:C8051F360单片机结合FPGA及锁相环模块实现。
利用锁相环模块对输入信号频率进行跟踪,能够实现对信号每个周期采集相同点的数据,保证了单片机进行频谱分析(FFT运算)时,数据的正确性。
利用FPGA设计两个双口RAM,一个用于存储采集的外部信号数据,另一个用于存储单片机进行FFT运算过程中的大量数据。
此方案硬件电路十分简单,且能够按需求方便地改变采集的数据量大小,提高运算结果的精度。
数据结构课内实验报告模板-商品货架问题

*******数据结构课内实验报告题目:商品货架管理院系名称:计算机学院专业名称:软件工程专业班级:0901班学生姓名:*****学号(8位):*********一.需求分析程序设计的任务:商品货架可以看成是一个栈,栈顶产品的生产日期最早,栈底商品的生产日期最近。
上货时,需要倒货架,以保证生产日期较近的商品在较下的位置。
用队列和栈作为周转,实现上述管理过程。
(1)输入的形式和输入值的范围;输入的形式:请输入商品货物名称:请输入商品上架时间:是否继续输入(Y/N):请输入新增商品货物名称:请输入新增商品上架时间:是否继续输入(Y/N):输入值的范围:名称:字符串日期:整数(2)输出的形式;倒货架后商品的信息为:商品名称生产日期(3) 程序所能达到的功能;将商品信息顺序的放在一个栈中,新增商品放入另一个栈中,然后通过队列来进行一个倒货架的一个过程。
(3)测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。
二. 概要设计本题采用了栈和队列数据结构,共采用二个栈和一个队列,实现了倒货架。
栈:先进后出队列:先进先出功能模块图以及各个模块的功能描述:重要函数:1.int add_goods(stack *add); 初始化新栈2.int push(stack *top); 入栈3.void Initstack(stack *top); 初始化一个带头结点的栈4.queue* enterqueue(stack *add,stack *top); // 将栈中元素入队列5.int Initqueue(queue *Q); 初始化队列6.void destroy(stack *add); 销毁栈,释放空间7.void enterstack(queue *newlinkqueue,stack * start,stack *top); // 将队列元素入栈8.void printgoods(stack *top); 打印栈中元素9.stack * printqueue(queue *Q); 打印队列中的元素,并将队列的队头指针,然后传参三.详细设计栈和队列的数据类型定义:#define N sizeof(stack)typedef struct goods_stack { //构造堆栈结构体long int date;char goods[80];struct goods_stack *next;}stack;typedef struct //队列{stack * front;stack * rear;}queue;核心算法:// 将栈中元素入队列queue * enterqueue(stack *add,stack *top){queue * new1;stack *temp;new1 = (queue *)malloc(sizeof(queue));Initqueue(new1);add = add->next;while(add)// 将add 中所有元素入队列queue 中去{temp = (stack *)malloc(N);strcpy(temp->goods,add->goods);temp->date = add->date;add = add->next;new1->rear->next =temp;new1->rear = temp;}destroy(&add); //销毁add栈中元素add =(stack *)malloc(N);Initstack(add);top = top->next;while(top)//将top栈中元素全部入栈到add 栈{temp = (stack *)malloc(N);strcpy(temp->goods,top ->goods);temp->date = top->date;top = top->next;temp ->next = add->next;//头插法入栈add ->next = temp;}add = add->next;while(add)//再次将add 中所有元素入队列queue 中去{temp = (stack *)malloc(N);strcpy(temp->goods,add->goods);temp->date = add->date;add = add->next;new1->rear->next =temp;new1->rear = temp;}// destroy(&top);//销毁top栈中元素;// destroy(&add);//销毁add栈中元素return new1;}// 将队列元素入栈void enterstack(queue *new1,stack * start,stack *top) {stack *temp;temp=(stack *)malloc(N);while(start!= new1->rear){strcpy(temp->goods,start->next->goods);temp->date=start->next->date;temp->next = top->next;//头插法入栈top->next = temp;start = start->next;temp=(stack *)malloc(N);}}四.时间复杂度分析本程序的时间复杂度:O(n)五.测试数据及运行结果1、正确的输入及其输出结果:以下是各商品的信息:倒货架后商品的信息为:2、错误的输入及其输出结果:输入时间时必须是数字,否则出错;输出数据时,必须按栈的顺序,否则结果混乱~~~六.调试情况,设计技巧及体会1.对自己的设计进行评价,指出合理和不足之处,提出改进方案;本设计达到了题目的要求,用了2个栈,1个队列,倒货到了好多次,实现了倒货架的过程。
超市密码存储箱系统设计

超市密码存储箱系统设计面向对象程序设计大作业------超市密码存储箱系统学院名称数学与系统科学学院毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:日期:学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承担。
作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:日期:年月日导师签名:日期:年月日注意事项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
实验14-课程设计

实验14
1. 自动寄存柜
某超市门口的自动寄存柜有n个寄存箱,并且有一个投币控制器,顾 客想要寄存小件物品时,只要在投币控制器投入1个1元的硬币,如果此 时有空闲的箱子,寄存柜就会自动打开一个空的箱子,并且打印输出一 张小小的密码纸条;如果没有空闲的箱子,则提示“本柜已满”。当顾 客离开超市时,用密码纸条上指定的数字密码依次输入到开箱控制器, 则顾客所存包的箱子门就自动打开,顾客取走物品后,关上门。
输入输出示例
3
A11 1号车停入1号位
A22 2号车停入2号位
A33 3号车停入3号位
D14 1号车出停车场,停留时间3
A45 4号车停入3号位
A56 5号车在便道上等待
D47 4号车出停车场,停留时间2 5号车停入3号位
D58 5号车出停车场,停留时间1
E00
请编写开箱控制程序实现上述过程。
输入输示例
寄存箱总数:10 1.投硬币 2.输密码 0.退出 请选择: 1 投币值:1 寄存箱编号:1 密码:9342 1.投硬币 2.输密码 0.退出 请选择: 2 输入密码:9342 1号寄存箱已打开 1.投硬币 2.输密码 0.退出 请选择:0 结束
2.停车场管理
输入数据时,可先输入寄存箱总数n,再由用户选择是“投硬币”还 是“输密码”。
如果选择“投硬币”,则只有硬币值是1才开箱。如果有空闲的箱子, 则输出箱子编号及密码(4位数字);如果无空闲的箱子,则提示:“本 柜已满”。
如果选择“输密码”,若输入的密码与某一箱子密码相符,则显示 打开的箱子编号,否则输出提示:“密码错误”。
设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车 辆进出。车辆按到达停车场时间的先后次序依次从停车场最里面向大门 口处停放 (即最先到达的第一辆车停放在停车场的最里面) 。如果停车场 已放满n辆车,则以后到达的车辆只能在停车场大门外的便道上等待, 一旦停车场内有车开走,则排在便道上的第一辆车可以进入停车场。停 车场内如有某辆车要开走,则在它之后进入停车场的车都必须先退出停 车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每 辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费,停 留在便道上的车不收停车费。编写程序对该停车场进行管理。
超市仓库管理系统测试报告

超市仓库管理系统测试报告超市仓库管理系统测试报告 1(引言1.1 编写目的测试计划, 为对项目进行测试~且保证测试质量与进度~我们编写了此测试计划分析报告, 根据测试计划报告~对软件进行测试~详细记录测试过程~以对软件的质量进行测评~为软件设计人员提供BUG依据~故做产生测试分析报告1.2 项目背景, 为一个超市设计并开发一套库存管理系统。
, 能兼容现行的手工帐册~要求能够设置期初库存~输入入库单和出库单~在每个结算月能够生成分类库存统计报表, 当某种商品的库存少于安全库存时将给出警示~提醒尽快采购该商品, 在每年的年终还能进行盘存处理~以纠正实际库存和电脑库存的差别2(任务概述2.1 目标, 本文档的目标是详细描述对超市仓库管理系统进行系统测试的测试过程。
本文档所测试的功能均来自于需求文档2.2 运行环境, 操作系统:Windows XP及以上的版本, 必装软件:SQL Server 2005及以上的版本2.3 需求概述, 本次测试主要针对本小组开发的仓库管理系统进行系统测试~主要包括功能测试、界面测试、负载测试、文档测试, 在仓库管理系统需求规格说明书中列出的系统功能和性能都需要完成测试~在测试工作期间发现的所有缺陷都需要改正并确认3(计划3.1 测试方案, 采用黑盒测试方法~整个过程采用自底向上~逐个集成的办法~依次进行单元测试~组装测试~测试用例的设计应包括合理的和不合理的输入条件3.2 测试项目测试1:名称:系统登录测试目的:测试系统操作界面内容:帐号口令输入、合理性检查、合法性检查~系统操作界面显示控制测试 2:名称:入库测试目的:测试入库功能容:货物编号输入~入库对话显示控制~入库登记内测试 3:名称:库存测试测试库存功能目的:内容:库存显示的合理性测试 4:名称:出库测试目的:测试出库操作功能内容:出库管理界面显示控制~出库浏览~出库记录测试 5:名称:查询测试目的:测试查询功能内容:查询对话框显示控制~输入数据合理性检验、提交~查询结果显示测试 6:名称:报表测试目的:测试结算库存报表功能内容:输入数据提交~报表结果显示测试 7:名称:新增商品信息测试目的:测试新增商品功能内容:输入数据合理性检验、提交~新增结果显示测试 8:名称:新增仓库信息测试目的:测试新增仓库功能内容:输入数据合理性检验、提交~新增结果显示测试 9:名称:修正仓库信息测试目的:测试新增仓库功能内容:输入数据合理性检验、提交~新增结果显示测试 10:名称:工作人员管理测试目的:测试新增、删除工作人员功能内容:输入数据合理性检验、提交~新增结果显示测试 11:名称:权限控制测试目的:不同的用户拥有在添加商品信息和仓库信息上面有不同的权限内容:给予正确的反馈结果3.3 测试准备, 编译可用程序~并设计测试用例4(测试项目说明用例1:系统登录测试系统登陆界面输入输出用户名密码‘dbshare’ ‘c12107’ 正确-用户登录‘dbshare’ ‘’ 返回错误‘dbshare’ ‘c12108’ 返回错误‘’ ‘c12107’ 返回错误‘dbshaye’ ‘c12107’ 返回错误‘dbshaye’ ‘c12108’’ 返回错误登陆成功进入主界面:用户登录失败返回错误信息:测试 2:名称:入库测试在菜单栏,常用操作,入库,选择进入入库功能输入要输入的入库信息:(1)货物编号(2)数量(3)仓库可以在入库表中查看师傅入库成功菜单栏,类型二,入库表前面插入的结果显示:测试 3:名称:库存测试在这项测试中我们可以看到仓库所存的商品信息菜单栏,报表,货物测试 4:名称:出库测试这项测试主要对出库模块进行测试菜单栏,常用操作,出库可以在出库表中查看刚才出库是否成功测试 5:名称:查询测试这项测试主要测试在某一仓库中,查看某一商品的库存信息菜单栏,常用操作,查询查询结果,测试 6:名称:报表测试在这项测试中主要测试查看出库和入库的操作记录仓库报表:菜单栏,报表,类型一,仓库报表在出库报表和入库报表中需要输入开始时间和结束时间出库报表:菜单栏,报表,出入库入库报表:菜单栏,报表,出入库测试 7:名称:新增商品信息测试这项测试主要测试新增一种仓库之前不存在的商品的信息菜单栏,新增,录入商品测试 8:名称:新增仓库信息测试这项测试主要测试新增一个之前不存在的仓库菜单栏,新增,新建仓库测试 9:名称:修正仓库信息测试这项测试主要测试仓库中真实数据与记录数据不一样而进行修改记录信息菜单栏,盘点,盘点模式在界面上直接点击修改现有数量,然后菜单栏,盘点,修正当当前量低于安全量时为绿色修改前的信息记录,修改后的记录信息:可以发现现在现有量为3低于安全量为绿色测试 10:名称:新增人员信息测试这项测试主要测试删除和添加新的人员信息菜单栏,工作人员管理,新增工作人员/删除工作人员我们约定0 0到10 10到20 20以上权限超级用户新增工作人员:删除工作人员当管理员准备删除一个用户时,首先会列出当前所有用户管理员可以根据列表显示的数据进行删除查看是否删除用户列表显示删除成功测试 11:名称:权限控制测试在这项测试中我们可以看到不同的用户在添加商品、仓库信息时有不同的权限具体权限如下0 0到10 10到20 20以上管理工作人员是否否否新建仓库是是否否新建商品是是是否当权限不足反馈的对话框分别如下所示管理工作人员:新建仓库新建商品5.软件需求测试结论经过对超市仓库管理系统的测试,系统实现了需求文档的要求内容,无功能性缺陷。
《数据结构实验》实验题目及实验报告模板

《数据结构实验》的实验题目及实验报告模板实验一客房管理(链表实验)●实现功能:采用结构化程序设计思想,编程实现客房管理程序的各个功能函数,从而熟练掌握单链表的创建、输出、查找、修改、插入、删除、排序和复杂综合应用等操作的算法实现。
以带表头结点的单链表为存储结构,实现如下客房管理的设计要求。
●实验机时:8●设计要求:#include<stdio.h>#include<stdlib.h>#include<string.h>//定义客房链表结点结构typedef struct HNode{char roomN[7]; //客房名称float Price; //标准价格float PriceL; //入住价格(默认值=标准价格*80%)int Beds; //床位数Bedschar State[5]; //入住状态(值域:"空闲"、"入住"、"预订",默认值为"空闲")struct HNode *next; //指针域}Hotel, *HLink;(1)实现创建客房信息链表函数void Build(HLink &H),输入(客房名称、标准价格、床位数),同时修改入住价格、入住状态为默认值,即入住价格=标准价格*80%,入住状态为”空闲”(提示:用strcpy()字符串拷贝函数)。
为了提高程序调试效率,要求:用文件操作来输入客房信息(客房名称、标准价格、床位数);(2)实现输出客房信息函数void Exp(HLink H),输出所有客房的客房名称、标准价格、入住价格、床位数、入住状态;(3)函数int Find(HLink &H, char *roomN),查找房间名称为roomN的客房。
如果找到,则返回该客房在链表中的位置序号(>=1),否则返回0。
提示:用strcmp()字符串比较函数;(4)实现函数void updateH(HLink &H, int beds, char *state),将床位数为beds的客房入住状态改为state。
毕业设计(论文)-超市存物柜密码锁设计

摘要在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。
若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。
在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替了传统的机械式密码锁,电子密码锁具有安全性高、成本低、功耗低、易操作等优点。
本文从经济实用的角度出发,采用美国Atmel公司的单片机AT89S51作为主控芯片与数据存储器单元,结合外围的矩阵键盘输入、12864液晶显示、报警、开锁等,用C语言编写的主控芯片控制程序与EEPROM AT24C02读写程序相结合,并用Keil软件进行编译,设计了一款可以多次更改密码,具有报警功能的电子密码控制系统。
这种密码锁的电路设计具有防试探按键输入、智能控制上锁、开锁、报警、修改密码等多种功能。
密码长度可变、保密性强、灵活性高、应用日益广泛。
关键字:AT89S52;24C02;12864;继电器AbstractIn the daily life and the work, the way to the house's and department's safe guard, unit's document file, the financial reporting as well as some individual material preservation almost need many locks. If we use tradition mechanical key to open, the people often must carry many keys, but it is not extremely convenient. If the key lost, the security will decline greatly. In the safety work guard domain, the lock with security warning function electronic combination have replaced the traditional mechanical combination lock gradually, the electronic combination lock have the highly security, the lowly cost , the lowly power wastage, easy to operate and so on merits.This article is based on the economical and practical point of view, uses the United States Atmel Corporation AT89S51 microcontroller as a master chip and the data memory unit, it combines with the external matrix keyboard input, LCD digital display, alarm, unlock and so on circuits, dominates by the C programming language chip EEPROM of the control procedures and carries on the translation with Keil software, the password can be changed many times, the electronic the password control also has the alarming function.This password lock circuit design has anti-test button input, intelligent control lock, unlock, alarm and change the password multiple functions. Password length can be changed, great security and high flexible than others, it is widely used.Key word:AT89S52 devices; 24 C02; 12864; relay目录摘要 (I)目录 (I)第一章绪论 (1)1.1电子密码锁简介 (1)1.2电子密码锁的发展趋势 (1)1.3本设计所要实现的目标 (2)第二章总体设计方案 (3)2.1设计要求 (3)2.2密码锁的论证与选择 (3)2.2.1 方案一:采用数字电路控制 (3)2.2.2 方案二:采用以单片机为核心的控制方案 (3)2.3系统总体设计 (4)第三章硬件单元模块设计 (5)3.1微处理模块 (5)3.1.1主要元件介绍 (5)3.1.2微处理模块电路 (6)3.2存储模块 (6)3.2.1主要元件介绍 (6)3.2.224C08管脚功能: (7)3.2.3时序图 (7)3.2.4存储模块电路 (8)3.3输入模块 (9)3.4电源模块 (10)3.5开关锁模块 (10)3.6报警模块 (11)3.7显示模块 (11)3.8红外模块电路原理图 (12)第四章软件设计 (14)4.1软件工作流程 (14)4.2密码修改流程 (16)第五章调试与实现 (17)5.1硬件调试 (17)5.2软件调试 (17)5.3软件调试心得 (18)5.4结果分析 (19)5.5P ROTEUS仿真 (19)5.6PCB板制作 (20)第六章总结与展望 (22)致谢 (23)参考文献 (24)附录1元器件清单 (25)附录2 程序清单 (26)附录3成品实物图 (40)第一章绪论1.1 电子密码锁简介电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。
超市密码箱的设计与实现

沈阳航空航天大学课程设计报告课程设计名称:微机系统综合课程设计课程设计题目:超市密码箱的设计与实现院(系):计算机学院专业:计算机科学与技术班级:学号:姓名:指导教师:说明:结论(优秀、良好、中等、及格、不及格)作为相关教环节考核必要依据;格式不符合要求;数据不实,不予通过。
报告和电子数据必须作为实验现象重复的关键依据。
学术诚信声明本人声明:所呈交的报告(含电子版及数据文件)是我个人在导师指导下独立进行设计工作及取得的研究结果。
尽我所知,除了文中特别加以标注或致谢中所罗列的内容以外,报告中不包含其他人己经发表或撰写过的研究结果,也不包含其它教育机构使用过的材料。
与我一同工作的同学对本研究所做的任何贡献均己在报告中做了明确的说明并表示了谢意。
报告资料及实验数据若有不实之处,本人愿意接受本教学环节“不及格”和“重修或重做”的评分结论并承担相关一切后果。
本人签名: 日期:年月日目录1 系统概述 (1)1.1系统总体设计目标功能及要求 (1)2 系统总体设计 (1)2.1系统原理简介 (1)2.2系统设计方案 (2)3 系统硬件电路设计 (2)3.1系统硬件电路 (2)3.2 单片机简述 (3)3.3键盘电路 (3)4系统的软件设计 (5)4.1软件设计思想 (5)4.2程序各模块设计 (5)4.3各模块的软件程序设计 (5)4.4 密码验证方案比较 (7)4.5实物连线图 (8)5系统调试 (8)5.1硬件问题调试 (9)5.2软件问题调试 (9)结论 (10)参考文献 (11)附录系统程序 (12)系统概述1 系统总体设计目标功能及要求本次课设由MCS-51单片机构成核心控制系统,整个系统由主控部分、键盘显示控制部分、执行部分三部分组成,通过密码的核对完成自动存包取包过程。
第一部分:CPU核心控制部分,由单片机MCS-51、复位电路、时钟电路等构成,是整个系统的核心。
第二部分:键盘显示控制部分。
用2个LED显示器和24个按键进行管理,LED 数码管用于显示柜的号码和当前状态,24个按键分别为16个数字键和8个功能键。
超市存包系统C语言

课程设计课程名称C语言高级程序设计学院计算机科学与技术学院小组成员1小组成员2小组成员3任课教师2015——2016学年第2学期目录1.所选题目与要求——————————————————12.问题分析—————————————————————13.算法设计—————————————————————14.程序源代码————————————————————35.运行效果—————————————————————66.研究总结—————————————————————71.所选题目与要求超市门口的存物柜有n个小柜,一个柜门控制器。
柜门控制器上有“存”和“取”两个按钮(可以用“0”表示“存”,“1”表示“取”)。
顾客按“存”时,控制器检查是否有空柜子:如果有空柜子,就会自动打开其中一个柜子,顾客将东西放入柜子中,锁门时会输出一张用于取包的小密码纸条,上面有7位数字密码。
密码的头两位对应柜子编号加上10,密码中剩下的5位是利用随机函数rand()任意产生。
如果没有空柜子则提示“柜子已满!”。
当顾客按“取”按钮时,要输入小密码纸条上指定的7位数字密码:若密码正确,则对应的柜子门就自动打开,控制器显示“请取走物品!”;否则控制器提示“欢迎下次光临!”,顾客取走物品后关门,则该柜子可继续为其他顾客提供服务。
现编程实现柜门控制器的功能。
2.问题分析实现对n个小柜子状态的管理问题。
存过物品的柜子会对应一个“有密码”状态,用字符串(7个数字字符)表示的密码。
最初或已取走物品后的柜子会对应初始状态—“无密码”用户所有的存取操作会构成一个由0或1构成的请求序列,如:0,0,0,1,1,0,1,0,0,1……一次操作只能对应一个用户,同时对应控制器的一次处理,完成一次操作,并使柜子的状态发生变化。
3.算法设计流程图(借用的群里图,结构一致顺过来用用)(1)输入寄存箱数量int num(int n) { //输入可存柜数printf("请输入可存柜总数");scanf("%d",&n);printf("\n");while(n<=0||n>=25) {printf("寄存柜数量错误, 请重新输入\n\n");printf("寄存柜数量>");scanf("%d",&n);printf("\n"); }return n;}(2)判断是否有空闲的箱子,输出柜号void knum(int *c,int *n,int *k) //判断有没有空柜子,若有从小到大输出柜子int i=0;for(i=0;i<*n;i++){if (c[i]==1){c[i]=2;*k=i;printf("柜号%d\t",*k+1);break;}else *k=-1;}}(3)输出空箱子密码char code(char a[24][8],int *k) { //随机七位密码,前两位是空柜号数+10 int i=0,x=0;if(*k!=-1){for(i=0;i<5;i++) {x=rand()%10+0;a[*k][i+2]=x;}a[*k][0]=(*k+10)/10;a[*k][1]=(*k)%10+1;printf("请记住密码=");for(i=0;i<7;i++)printf("%d",a[*k][i]);printf("\n");}(4)检测输入的密码是否正确void test(char a[24][8],int *c){ //检验密码是否输错int i=0,j=0,l=0;char b[8];int t[8];int r[8];printf("请输入七位密码=");scanf("%s", b);printf("\n");j=(int)(b[0]-'0')*10+(int)(b[1]-'0')-11;for(i=0;i<8;i++){t[i]=(int)(a[j][i]-'\0');r[i]=(int)(b[i]-'0');if(t[i]==r[i]) l++;}if(l==7){printf("%d号请取走物品!\n",j+1);c[j]=1;}else printf("密码错误*****欢迎下次光临!\n");}4.程序源代码/**************************都是背后有肮*交易的淫~小组作业*****************/#include <stdio.h>#include <stdlib.h>#include <time.h>#include <string.h>int num(int n);void knum(int *c,int *n,int *k);char code(char a[24][8],int *k);void test(char a[24][8],int *c);void main(void) { //主函数printf("*****************都是背后有肮*交易的淫~小组作业********************\n");printf("********************小组成员:任海亮(组长)***********************\n");printf("********************小组成员:陈思(组花)***********************\n");printf("********************小组成员:钟金玮(组胖)***********************\n");int n=24,k=0,choice=0,i=0;char a[24][8]={'\0'};char b[8]={'\0'};int c[24]={0};for (i=0;i<24;i++) c[i]=1;srand(time(0));n=num(n);while(1){printf("存请按0;取请按1>");scanf("%d",&choice);switch(choice){case 0:knum(c,&n,&k);a[24][8]=code(a, &k);break;case 1:test(a,c);break;}}}int num(int n) { //输入可存柜数 printf("请输入可存柜总数(最大24个)");scanf("%d",&n);printf("\n");while(n<=0||n>=25) {printf("寄存柜数量错误, 请重新输入\n\n");printf("寄存柜数量>");scanf("%d",&n);printf("\n"); }return n;}void knum(int *c,int *n,int *k) { //判断有没有空柜子,若有从小到大输出柜子int i=0;for(i=0;i<*n;i++){if (c[i]==1){c[i]=2;*k=i;printf("柜号%d\t",*k+1);break;}else *k=-1;}}char code(char a[24][8],int *k) { //随机七位密码,前两位是空柜号数+10 int i=0,x=0;if(*k!=-1){for(i=0;i<5;i++) {x=rand()%10+0;a[*k][i+2]=x;}a[*k][0]=(*k+10)/10;a[*k][1]=(*k)%10+1;printf("请记住密码=");for(i=0;i<7;i++)printf("%d",a[*k][i]);printf("\n");}if(*k==-1) printf("柜子已满!\n\n");return a[24][8];}void test(char a[24][8],int *c){ //检验密码是否输错int i=0,j=0,l=0;char b[8];int t[8];int r[8];printf("请输入七位密码=");scanf("%s", b);printf("\n");j=(int)(b[0]-'0')*10+(int)(b[1]-'0')-11;for(i=0;i<8;i++){t[i]=(int)(a[j][i]-'\0');r[i]=(int)(b[i]-'0');if(t[i]==r[i]) l++;}if(l==7){printf("%d号请取走物品!\n\n",j+1);c[j]=1;} else printf("密码错误*****欢迎下次光临!\n\n");}5.运行效果6.研究总结(研究过程、交流讨论、收获和小组成员的分工)分工:钟金玮做柜子数输出模块陈思做检查是否有空柜子和生成密码模块任海亮做检查密码是否输错和置零模块与编写主程序及汇总实验报告②总结:跟着李民老师学习了半学期的C语言,原本以为没啥好听的我们却收获良多,老师将概念案例化,这样的效率要远超自己看书。
存取存储器实验报告

一、实验目的1. 理解存储器的基本原理和组成,掌握存储器的分类和特点。
2. 学习存储器的存取过程,熟悉地址译码和存储单元寻址的方法。
3. 掌握存储器读写操作的实现方法,了解不同存储器的工作原理。
二、实验内容1. 存储器基本原理和组成2. 地址译码和存储单元寻址3. 存储器读写操作实现4. 存储器分类及特点三、实验原理1. 存储器基本原理和组成存储器是计算机系统中用于存储数据和指令的设备。
它由存储单元、地址译码器、读写电路和控制电路组成。
2. 地址译码和存储单元寻址地址译码器根据输入的地址码,从存储器中选中对应的存储单元。
存储单元寻址是指根据地址码找到存储器中的具体位置。
3. 存储器读写操作实现存储器读写操作包括读操作和写操作。
读操作是指将存储单元中的数据读出,写操作是指将数据写入存储单元。
4. 存储器分类及特点存储器按存储介质可分为磁存储器、半导体存储器和光存储器。
磁存储器包括硬盘、软盘等;半导体存储器包括RAM、ROM等;光存储器包括光盘、U盘等。
四、实验步骤1. 观察存储器实验装置,了解其组成和结构。
2. 学习存储器的基本原理,熟悉存储单元的寻址方式。
3. 掌握存储器读写操作的过程,了解不同存储器的工作原理。
4. 通过实验,验证存储器的读写操作是否正确。
五、实验数据记录1. 存储器实验装置组成:- 存储单元:16K1位- 地址译码器:16位- 读写电路:8位- 控制电路:2位2. 存储器读写操作过程:- 读取数据:将地址码输入地址译码器,选中对应的存储单元,将数据读出。
- 写入数据:将地址码输入地址译码器,选中对应的存储单元,将数据写入。
3. 存储器分类及特点:- 磁存储器:容量大,读写速度快,价格低,但易受磁场干扰。
- 半导体存储器:容量小,读写速度快,价格高,但功耗低,可靠性高。
- 光存储器:容量大,读写速度快,价格适中,但易受灰尘和划痕影响。
六、实验结果分析1. 通过实验,验证了存储器的读写操作过程正确。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构实验》课程实验教学大纲一、课程基本信息课程名称:数据结构实验英文名称: Data Structure课程编码: B/1112112B课程性质: 独立设课课程类别:专业必修课程课程总学时: 14课程总学分: 1适用专业:计算机科学与技术/网络工程方向先修课程:高级语言程序设计,离散数学,概率论与数理统计开课系部: 计算机科学与技术系二、实验课程的目的与要求这门课程的主要任务是培养学生的算法设计能力及良好的程序设计习惯。
通过学习,要求学生能够掌握典型算法的设计思想及程序实现,能够根据实际问题选取合适的存储方案设计出简洁、高效、实用的算法,为后续课程的学习及软件开发打下良好的基础。
学习这门课程,习题和实验是两个关键环节。
学生理解算法,上机实验是最佳的途径之一。
因此,实验环节的好坏是学生能否学好《数据结构》的关键。
通过实验课程更好的训练学生算法分析及算法设计的能力。
三、主要仪器设备与实验基本要求硬件要求:微型计算机一台(Pentium或以上)软件要求:Windows操作系统,Turbo C 或VC++等实验要求:1.上机前要作好充分准备,根据实验题目编写好源程序。
2.对上机操作过程中可能出现的问题预先分析,确定调试步骤和测试方法,对运行结果如何分析等。
3.上机实验完成后,认真写出实验报告,对上机中出现的问题进行分析、总结。
4.上机过程中要遵守实验室的各项规章制度,爱护实验设备,服从指导老师安排。
5.本课程的实验过程中,不得进行游戏、上网等操作。
四、实验项目名称和课内学时分配序号实验项目名称时数实验属性实验者类别必开选开每套仪器人数实验类型1 简单算法实验专业类本科生选开 1 验证2 线性表的基本操作 4 专业类本科生必开 1 综合3 栈和队列的应用 2 专业类本科生必开 1 设计4 二叉树两种存储结构的应用4 专业类本科生必开 1综合5 图 2 专业类本科生必开 1 综合6 小型系统开发(课程设计)2 专业类本科生必开 1 设计注:设计性和综合性实验如课内学时不够,学生可利用开放实验室利用课余时间完成本次实验内容。
五、实验内容及要求实验项目一实验项目名称:简单算法实验实验项目的目的和要求:1.复习C语言指针的用法2.复习C语言结构体的用法3.理解时间复杂度分析的基本方法上机实验内容:1.用指针方式编写程序:从键盘输入N个整型数据,并存入数组,要求将N个数中最大的数与第一个数交换;将其中最小的数最后一个数交换。
2.有N 个学生,每个学生的数据包括学号、姓名、三门课的成绩、平均分。
要求从键盘依次输入N 个学生的学号、姓名、三门课的成绩,自动计算三门课的平均分数,并将N 个学生的数据输出。
说明:不占课内学时实验项目二实验项目名称:线性表的基本操作实验项目的和要求:1.掌握线性表的特点2.掌握线性表的顺序存储结构和链式存储结构的基本运算。
3.尽可能考虑算法的健壮性4.实验报告中要写出测试数据、错误分析以及收获。
上机实验内容一:两种存储结构的基本运算1.用结构体类型描述线性表的两种存储结构2.完成课堂上所讲的两种存储结构的基本运算3.要求用二级菜单实现****************************** 1-------顺序表 ** 2-------链表 ** 0-------退出 ******************************请输入的选择:(0-2):线性表的链式存储############################### 1----前插建立链表## 2----后插建立链表 ## 3----访问第i个元素 ## 4----插入 ## 5----删除 ## 6----求线性表的表长 ## 0----退出 ###############################请输入选择(0-6):上机实验内容二:超市密码存储箱系统的设计与实现1.顾客使用箱子的流程为“投一元硬币”--------“找到一个空箱子,同时产生密码”(系统完成)--------“打印密码,打开箱子”(系统完成)--------“取密码纸存包,并关闭箱子,入超市购物”--------“购物结束”--------“输入密码”--------“找到对应箱子并打开”(系统完成)--------“取包”。
2.现要求设计程序模拟以上系统完成的功能①界面:在我们的模拟系统中,箱子在屏幕上被画出来,并编号,空箱为蓝色,被使用时变成红色,再变为空后则恢复蓝色;②通过按“1”键模拟顾客投币;③当空箱子被顾客申请得到的同时,系统自动生成6位数密码,此密码不能与正在被使用的任何一个箱子的密码相同。
3.设计分析在设计时,可利用链表来组织所有的箱子,所有的箱子以结点的形式表示,结点中存放箱号、密码(满箱有,空箱无)以及指向下一个结点的指针。
空箱结点放在一个链表1中,满箱结点放在另一个链表2中。
若有顾客投币(这里按下“1”键模拟),查看链表1是否为空,若为空,则显示“箱满,请稍侯!”,若非空,则取出一个结点,随机产生一个六位数密码,并将些密码和链表2中所有结点的密码相比较,若有重复,则再随机产生一个新密码,直到无重复;将密码信息写入此结点,并将其插入链表2;将此箱的颜色改为红色。
4.密码箱的存储结构类型定义typedef struct node{ int num;/*箱子的号码*/int password;/*箱子的密码(满箱有,空箱无)*/struct node *next;/*指向下个结点的指针*/}Node,*LinkList;上机实验内容三:员工通讯录管理系统1.为某个单位建立一个员工通讯录管理系统,可以方便地查询每一个员工的办公室电话号码、手机号码及电子邮箱。
2.现要求设计程序模拟以上系统完成的功能其功能包括通讯录链表的建立、员工通讯信息的查询、修改、插入与删除以及整个通讯录表的输出。
3.设计分析在本设计中,整个通讯录可以采用顺序表或链表方式存储。
采用前者,可以提高查询速度;采用后者,可以提高插入与删除记录的效率。
4.员工通讯信息的结构类型定义和通讯录链表的结点类型typedef struct{ char num[5];/*员工编号*/char name[8];/*员工姓名*/char phone[9];/*办公室电话号码*/char call[12];/*手机号码*/}DataType;/*员工通讯信息的结构类型*/typedef struct node{ DataType data;/*结点的数据域*/struct node *next;/*结点的指针域*/}ListNode,*LinkList;/*通讯录链表的结构类型*/上机实验内容四:运动会记分子系统或学生成绩管理子系统1.参加运动会的N个学校编号为1~N。
比赛分成M个男子项目和W个女子项目,每个项目取前3名,得分分别为5,3,2。
写一个程序产生各种成绩单和得分报表。
2.完成功能包括如下:①产生一总成绩表,包括:系名、男子团体总分、女子团体总分、团体总分存储结构要求用线性表的顺序存储。
②实验报告中要写出测试数据、错误分析以及收获。
③若选择学生成绩管理子系统,可仿照运动会记分子系统完成相关的插入、删除、查找及各种统计工作。
实验项目三实验名称:栈和队列的应用实验目的和要求:1.掌握栈和队列的概念和特点2.掌握栈和队列在顺序和链式存储结构下的插入、删除算法3.认真分析项目实例中的内容,将相关程序在计算机上运行实现上机实验内容一:表达式求值问题1.求一个数学表达式的值:用户输入一个包含正整数、括号和四则运算符(“+”、“—”、“*”、“/”)的算术表达式,计算其结果。
2.设计分析首先置操作数栈为空栈,表达式起始符“#”为运算符栈底元素;依次读入表达式中每个字符,若是操数则进操作数栈,若是操作符则和操作符栈顶的运算符进行比较优先权后作相应的操作,直到整个表达式求值完毕(即操作符栈顶元素和当前读入的字符均为“#”)3.结点结构类型描述如下typedef struct{char *base,*top;int stacksize;}sqstack;上机实验内容二:迷宫求解问题1.迷宫是一个m行n列的矩阵,其中0表示无障碍,1表示有障碍。
设入口为(1,1),出口为(m,n),即从入口出发,顺某一方向向前探索,若能走通,则继续往前走;否则沿原路退回,换一个方向再继续探索,直到出口为止。
2.迷宫的功能要求随机生成一个m行n列的矩阵,为了操作方便可以在矩阵外围生成一圏障碍,设置东南西北四个方向,采用链栈进行操作。
最后迷宫如不是通路给出“此迷宫元解”,如是通路要求输出所走过的路径。
3.结点结构类型描述如下typedef struct node{ int row;int col;struct node *next;};上机实验内容三;括号匹配实验项目四实验名称:二叉树两种存储结构的应用实验目的和要求:1.掌握二叉树的遍历思想及二叉树的存储实现。
2.掌握二叉树的基本操作:建立二叉树、二叉树的遍历3.选择一种形式完成二叉树的显示4.掌握二叉树的常见算法的程序实现5.实验报告中要写出测试数据、错误分析以及收获上机实验内容一:二叉树的建立及相关算法的实现1.完成的功能包括如下几点:①编程实现建立一棵二叉树,然后对其进行先序、中序和后序遍历。
分析:将要输入的二叉树按照其对应的完全二叉树的顺序输入,若当前位置不存在结点则输入@②显示二叉树③求二叉树的高度及二叉树的叶子个数等等④在主函数中设计一个简单的菜单,分别调试上述算法上机实验内容二:哈夫曼编码/译码系统1.要求编写一程序模拟传输过程,实现在发送前将要发送的字符信息进行编码,然后进行发送,接收后将传来的数据进行译码,即将信息还原成发送前的字符信息。
2.设计分析在本例中的算法主要有:哈夫曼树的建立;哈夫曼编码的生成;对编码信息的翻译。
要求设置发送者和接收者两个功能。
发送者的功能包括:①输入待传送的字符信息;②统计字符信息中出现的字符类数和各字符出现的次数(频率);③根据字符的种类数和各字符出现的次数建立哈夫曼树;④利用以上哈夫曼树求出各字符的哈夫曼编码;⑤将字符信息转换成对应的编码信息进行传送。
接收者的功能包括:①接收发送者传送来的编码信息;②利用上述哈夫曼树对编码进行翻译,即将编码信息还原成发送前的字符信息。
3.结点的类型定义①哈夫曼树的存储结构类型定义为:typedef struct{char data; /*编码对应的字符*/int weight; /*结点的权值*/int lchild,rchild,parent;/*左右孩子及双亲的下标*/}HTNode;②哈夫曼编码的存储结构类型定义为:typedef struct{char bits[N]; /*存放哈夫曼编码的字符数组*/int start; /*记录编码的起始位置,因为每种字符的编码长度不同*/}HCode;说明:只占用2个课内学时,学生可利用开放实验室利用课余时间完成本次实验内容。