江苏科技大学 c++实验报告
- 格式:doc
- 大小:62.00 KB
- 文档页数:8
江苏科技大学经济管理学院2012至2013学年第二学期管理信息系统实验报告实验一市场管理一、实验目的:通过实验,让学生了解市场管理的主要内容,包括客户信息管理、竞争对手信息管理、市场需求信息的建立及市场销售预测,理解建立市场信息的方法和必要性。
二、实验内容:1.客户信息档案2.竞争对手信息档案3.市场需求信息跟踪4.销售预测(部门/人员/产品分类预测)三、实验原理、方法和手段:市场管理,是企业参与市场竞争的前沿阵地。
随着客户行为的“e”化、市场竞争的激烈、信息技术的快速发展,以及企业内部的管理需求,建立良好的市场管理体系,成为提升企业竞争力的重要内容。
在企业中,经营处通常负责收集本行业需求的市场信息,建立客户信息档案、竞争对手信息档案、市场需求信息档案,根据市场情况制定销售预测指标,并根据合同的执行情况考核指标的完成情况等工作。
在以人工方式进行市场管理时,当客户、竞争对手、市场信息数量繁多时,相关文件的查询,业务信息的记录、更新等将会变得非常烦琐,而且容易出错或延误时效,从而导致管理者对客户信息及市场情况把握不准,或者在做相关决策时,不能及时或者根本无法获得相关的参考信息。
企业实施ERP以后,通过信息技术,使企业客户管理、竞争对手管理、市场需求信息管理等经营环节的信息有序地、充分地、及时地纳入企业的控制范围内,实现了市场资源的有效利用。
ERP市场管理功能的应用可以让企业通过多种渠道挖掘和识别市场机会,提高客户满意度,保持与客户的良好关系,同时又能降低企业运作成本,为企业创造长期持续的利润来源。
四,实验内容1.客户信息管理客户,指企业产品或服务的最终用户。
广义的说,它包括企业员工、供应商、分销商等所有可能为企业带来收益的关系对象,即全员客户。
而全员客户中又包含现实客户和需要企业寻找和确立的潜在客户。
如今时代,竞争是跨国界的,几年前还没有听说过的企业,某一天忽然会成为自己的竞争对手。
因此,挖掘潜在客户、扩大市场占有率、建立完备的客户信息档案,是增强企业自身的实力,使企业立于不败之地的前提。
数电实验报告指导老师:李老师学号:1140302114姓名:韩明瑞江苏科技大学电子信息学院2013年6月需要word文档的联系我QQ :675169540实验一、基本逻辑门期间功能与参数的测试一、实验目的1、掌握集成逻辑门基本的功能;2、掌握数字器件主要参数的测试方法。
二、实验器件1、EEEC-010B试验箱;2、74LS00四二输入与非门;3、74LS02四二输入或非门;4、74LS86四二输入异或门;三、实验内容及结果1、与非门逻辑功能测试:用74LS00四二输入与非门进行实验,将结果填入表格一:表格一2用74LS02四二输入或非门进行实验,将结果填入表格二:表格二3、异或门逻辑功能测试:用74LS86四二输入异或门进行实验,将结果填入表格三:实验二、两位全减器的设计一、实验目的:1、初步学习QUARTUSII 9.0使用步骤;2、学习verilog硬件描述语言;3、了解全减器的功能。
二、实验器件:1、QUARTUSII 9.0软件平台;2、FPGA、CYCLONE EP1C3T144C8。
三、实验原理:设进行全减的被减数为a(a1,a0),减数为b(b1,b0),则全减的运算规则如图1:图1四、实验步骤:1、建立工程:打开File→New Project Wizard...如图2图22、接下来步骤如图3,4,5,6一个工程就建立了图3在图4所示界面我们可以选择FPGA的系列和型号,在此我们选择FPGA、CYCLONE EP1C3T144C8,下图4:图5图63、添加文件,为工程添加verilog文件,点击File→New... 如图7,图7打开File→Save As...保存,名字改为minus(跟工程名相同)输入如下内容module minus(ain,bin,cin,cout,sum);input [1:0]ain,bin;input cout;output cin;output [1:0]sum;assign{cin,sum}=ain-bin-cout;endmodule重新保存,并进行编译Processing→Start Compilation编译成功后入图8所示,在此可观察到使用的FPGA系列,型号,使用的宏单元数,管脚数等其他参数图84、查看电路图点击Tool→Netlist Viewers RTL viewer,电路图如图9图95、仿真建立仿真波形文件,点击File→New...如图10所示图10并保存添加管脚View→Utility Windows→Node Finder如图11,单击List,将各个管脚拉近仿真文件。
《C#程序设计》实验报告
实验名称:实验一熟悉环境并创建简单的C#应用程序界面
实验日期:
班级:
学号:
姓名:
一、实验目的
1.了解C#集成开发环境中各窗口的作用及使用方法。
2.熟练掌握在Visual Studio2010环境中创建项目、保存文件、打开项目的方法。
3.熟悉按钮、文本框、标签控件的属性及使用方法。
二、实验内容
1.打开Visual Studio 2010,熟悉各窗口的作用及用法。
2.调试课本P19习题1.6第11题的程序。
3.调试课本P20习题1.6第12题的程序。
三、实验过程
2.调试课本P19习题1.6第11题,实验过程如下:
(1)创建C#项目,执行“文件"菜单→新建→项目,打开新建文件对话框,各项设置如图1-1所示。
图1-1 新建项目对话框设置
(2)点击“确定”后,打开窗体设计器视图,设计程序界面,添加三个Label、两个TextBox、两个Button 控件,结果如图1-2所示。
图1-2 程序设计界面
(3)设置对象属性,并调整各控件位置,结果如图1-3所示。
图1-3设置各控件属性
(4)调试、运行应用程序,并保存项目。
3.。
.。
..
......。
四、实验总结
主要包括本次实验是否完成、实验中遇到的问题及解决方法、实验收获等。
实验一连续信号得时域分析一、实验目得1.熟悉lsim、heaviside 等函数得使用2.熟悉信号得时移、尺度变换、反转、相加、相乘、卷积等计算3.熟悉impulse、step 函数得使用二、实验内容1.利用Matlab得Symbolic Math Toolbox中单位阶跃函数heaviside 画出单位阶跃信号。
(1)实验代码:clc;clear;ut=sym('Heaviside(t)');ezplot(ut,[-2,10])(2)实验结果:(3)实验原理分析:在MATLAB 得Symbolic Math Toolbox 中,有专门用于表示单位阶跃信号得函数,即Heaviside(t)函数,用它即可方便地表示出单位阶跃信号以及延时得单位阶跃信号,并且可以方便地参加有关得各种运算过程。
如果一个信号或函数可以用符号表达式来表示,那么我们就可以用前面介绍得符号函数专用绘图命令ezplot()等函数来绘出信号得波形。
2.已知信号f(t) = (t+1)[U(t+1) – U(t)] + [U(t) – U(t+1)],试画出f(-t/3+1)得波形。
(1)实验代码:clc;clear;syms t;y1=sym(t+1);y2=sym('Heaviside(t+1)-Heaviside(t)');y3=sym('Heaviside(t)-Heaviside(t+1)');f=sym(y1*y2+y3);subs(f,t,t+1);subs(f,t,(1/3)*t);subs(f,t,-t);ezplot(f,[-4,6])(2)实验结果:(3)实验原理分析:信号得时移可用数学表达式来描述,在MATLAB 中,时移运算与数学上习惯表达方法完全相同。
若已知信号f(t),应用Matlab 可进行下列运算时移f(t-t0) 命令subs(f,t,t-t0)尺度变换f(at) 命令subs(f,t,at)反转f(-t) subs(f,t,-t)相加f(t)= f1(t)+ f2(t) Symadd(f1,f2) f1(t)+ f2(t)相乘f(t)= f1(t)×f2(t) Symmul(f1,f2) f1(t)*f2(t)卷积f(t)= f1(t)*f2(t) conv (f1,f2)此题调用subs( )函数对ft进行变换,最后用ezplot( )函数绘图。
江苏科技大学部门文件设备发…2006‟08号关于规范课程实验指导书、学生实验报告的格式与基本内容要求的说明(供参考)为提高实验教学运行质量,进一步加强综合性、设计性实验内涵建设,加强学生综合运用知识、创新精神与实践能力的培养,现对课程实验指导书和学生实验报告等实验教学文件提出如下规范要求,请各学院结合自身的实际情况,认真加以整改。
1.课程实验指导书以课程为单位,使用十六开纸和统一格式封面,并装订成册 (封面格式见附件1)。
2.课程实验指导书第一页为封面,要求见附件1;第二页为前言,要求见附件2;第三页为目录;第四页开始为实验项目指导书,要求见附件3。
3.学生实验报告可以电子和书面两种形式提交,其中书面报告原则上使用现行“实验报告簿”(校园内有售),内容要求见附件4,电子报告由指导教师参照书面报告要求明确。
4.前言、实验项目指导书、学生实验报告的格式与基本内容要求(附件2、附件3和附件4)仅供参考,指导教师应根据各课程和实验项目的具体情况,内容和格式上可以加以调整,突出“个性”。
5.原则上“镇江船舶学院“时期编印的指导书必须全面修订,即使内容完全不变的课程,形式上也要按本要求重新编印。
6、对于“华东船舶工业学院”时期编印且形式上符合上述要求的指导书,若其中个别实验项目不适应内涵要求需要修改、目前库存量较大的,其中修改的项目指导书以活页形式补充,不要求重新编印。
附:1.课程实验指导书封面格式2.课程实验指导书前言内容要求3.具体项目指导书格式与基本内容要求4.学生实验报告基本内容要求设备与实验管理处二○○六年五月九日附件1:课程实验指导书封面格式《—课程名称—》实验指导书×××编写适用专业:____________________________________江苏科技大学_______学院年月附件2:课程实验指导书前言内容要求前言本课程的基本内容介绍,通过学习学生需要掌握的基本知识。
《计算机组成原理与结构》实验指导书适用专业:计算机科学与技术江苏科技大学电子信息学院2006年9月前言该实验系统是一套完全开放性的实验装置,通过对各计算机结构部件和多种结构模型计算机的设计及实现,可使学生对计算机系统的基本原理有一个清晰的概念和认识,掌握设计计算机系统的原理与方法,能更好地培养学生的创新意识和设计能力。
系统功能特点如下:(1)结构清晰的单元式实验电路,可构造出不同结构及复杂程度的原理性计算机系统采用部件单元式结构,包括运算器及数据通路、存贮器、控制器、信号及时序控制、内总线、外总线、外围接口及输入输出设备、大规模可编程逻辑设计器件等计算机部件单元电路,用户可使用排线连接方式或计算机电子自动逻辑设计方式,根据自己所设计的模型计算机结构方案,来构造出不同结构及复杂程度的原理性计算机,使学生能够对计算机组成结构有清楚的认识和理解。
(2)对实验设计具有完全的开放性,增强学生综合设计能力实验系统所具有的硬软件结构对用户的实验设计具有完全的开放特性,其数据线、地址线、控制线都可由用户来操作连接,系统中的运算器结构、控制器结构及微程序指令的格式及定义均可由用户根据教学需要来做灵活改变或重新设计。
这对于用户自行设计各种结构及不同复杂程度的模型计算机提供了强大的硬软件操作平台,从而避免了单纯验证性的实验模式,极大提高了学生计算机系统的综合设计能力。
(3)通用逻辑器件和大规模可编程逻辑器件相结合,可面向不同层次的学生系统采用通用逻辑器件和大规模可编程逻辑器件并用的方式,既能给熟练掌握复杂逻辑系统设计和CPLD工具的学生提供高档的实验平台,又能对不熟悉这些内容的学生提供易操作的实验平台。
符合循序渐进、先基础后提高的教学原则。
(4)具有实时调试功能的图形方式操作界面系统具有与PC微机联机实时调试的功能,提供了图形方式的调试操作界面,在调试过程中可动态实时显示模型计算机各部件之间的数据传送过程以及各部件和总线上的所有信息。
操作系统实验实验一 进程调度一、 实验目的多道程序设计中,经常是若干个进程同时处于就绪状态,必须依照某种策略来决定那个进程优先占有处理机。
因而引起进程调度。
本实验模拟在单处理机情况下的处理机调度问题,加深对进程调度的理解。
二、 实验要求1. 设计进程调度算法,进程数不定2. 包含几种调度算法,并加以实现3. 输出进程的调度过程——进程的状态、链表等。
三、 参考例1.题目——优先权法、轮转法简化假设1) 进程为计算型的(无I/O )2) 进程状态:ready 、running 、finish3) 进程需要的CPU 时间以时间片为单位确定2.算法描述1) 优先权法——动态优先权当前运行进程用完时间片后,其优先权减去一个常数。
2) 轮转法四、 实验流程图 开始 键盘输入进程数n ,和调度方法的选择 优先权法? 轮转法产生n 个进程,对每个进程产生一个PCB ,并用随机数产生进程的优先权及进程所需的CPU 时间按优先权大小,把n 个进程拉成一个就绪队列撤销进程就绪队列为空?结束 N YY注意:1.产生的各种随机数的取值范围加以限制,如所需的CPU 时间限制在1~20之间。
2.进程数n 不要太大通常取4~8个3.使用动态数据结构4.独立编程5.至少三种调度算法6.若有可能请在图形方式下,将PCB 的调度用图形成动画显示。
五.实验过程:(1)输入:进程流文件(1.txt ),其中存储的是一系列要执行的进程, 每个作业包括四个数据项: 进程名 进程状态(1就绪 2等待 3运行) 所需时间 优先数(0级最高)进程0 1 50 2进程1 2 10 4进程2 1 15 0进程3 3 28 5进程4 2 19 1进程5 3 8 7输出: 进程执行流等待时间,平均等待时间本程序包括:FIFO 算法,优先数调度算法,时间片轮转调度算法产生n需的时间片数,已占用CPU 的时间片数置为0按进程产生的先后次序拉成就绪队列链=0? 撤销该进程就绪队列为空吗? =轮转时间片数?NY YY 结束 N(2)程序代码package进程调度;import java.util.*;class PCB//创建进程块{int Id;//进程编号int UseTime;//服务时间int NeedTime;//需要时间int Perior;//优先级String Status;//状态PCB(){Id++;UseTime=0;NeedTime=(int)Math.round(Math.random()*6)+1;//随机产生需要时间Perior=(int)Math.round(Math.random()*5)+1;//随即产生优先级Status="Ready";//初始状态为就绪}}class Found//定义系统处理方法类{ArrayList <PCB> sequnce;//创建就绪队列PCB pcb[]=new PCB[5];int StartTime=0;int SystemTime=(int)(Math.random()*3)+1;//随即产生系统时间 Found(){sequnce=new ArrayList <PCB>();for(int i=0;i<5;i++){pcb[i]=new PCB();pcb[i].Id=i+1;sequnce.add(pcb[i]);}}void FCFS()//先来先服务算法{PCB Running=null;while(sequnce.size()>0)//就绪队列不为空{Running=sequnce.remove(0);eTime=Running.NeedTime;Running.NeedTime=0;Running.Perior=0;System.out.println("当前系统时间:"+SystemTime);SystemTime+=eTime;ShowMessages(Running);}}void RR()//时间片轮换算法{PCB Running=null;int Time=SystemTime;while(sequnce.size()>0){System.out.println("当前系统时间:"+SystemTime); Running=sequnce.remove(0);if(Running.NeedTime<=Time){eTime=Running.NeedTime;Running.NeedTime=0;Running.Perior=0;Running.Status="Finish";SystemTime+=eTime;else{eTime+=Time;Running.NeedTime-=Time;Running.Perior--;Running.Status="Ready";sequnce.add(Running);SystemTime+=Time;}ShowMessages(Running);}}void ShowMessages(PCB p)//输出信息{System.out.println("当前运行进程:"+p.Id+" "+"服务时间:"+eTime+" "+"需要时间:"+p.NeedTime+" "+"优先级:"+p.Perior+" "+"状态:"+p.Status);if(sequnce.size()>0){System.out.println("当前就绪进程:");for(PCB p1:sequnce)System.out.println("进程编号:"+p1.Id+" "+"服务时间:"+eTime+" "+"需要时间:"+p1.NeedTime+" "+"优先级:"+p1.Perior+" "+"状态:"+p1.Status);System.out.println("--------------------------------------------------------------------------");}}else{System.out.println("当前系统中已经没有就绪进程!"); } System.out.println('\n');}}class Menu//主界面菜单{Scanner sc=new Scanner(System.in); int print() { System.out.println("************************************ ********");System.out.println(" 进调度算法演示");System.out.println("**************************************** ****");System.out.println(" 1.先来先服务(FCFS)算法");System.out.println(" 2.时间片轮换(RR)算法");System.out.println(" 3.退出该程序");System.out.print("请选择所要采用的算法:");int flag=sc.nextInt();return flag;}void select(){int flag=print(); switch (flag){case 1:Found Process1=new Found();Process1.FCFS(); print();case 2:Found Process2=new Found();Process2.RR(); print();case 3:System.exit(0);default:break;}}}package进程调度;public class ProcessControl { public static void main(String args[]){Menu Tencent=new Menu();Tencent.select();}}(3)运行结果:实验二银行家算法一、实验目的死锁会引起计算机工作僵死,因此操作系统中必须防止。
操作系统实验实验一 进程调度一、 实验目的多道程序设计中,经常是若干个进程同时处于就绪状态,必须依照某种策略来决定那个进程优先占有处理机。
因而引起进程调度。
本实验模拟在单处理机情况下的处理机调度问题,加深对进程调度的理解。
二、 实验要求1. 设计进程调度算法,进程数不定2. 包含几种调度算法,并加以实现3. 输出进程的调度过程——进程的状态、链表等。
三、 参考例1.题目——优先权法、轮转法简化假设1) 进程为计算型的(无I/O )2) 进程状态:ready 、running 、finish3) 进程需要的CPU 时间以时间片为单位确定2.算法描述1) 优先权法——动态优先权当前运行进程用完时间片后,其优先权减去一个常数。
2) 轮转法四、 实验流程图 开始 键盘输入进程数n ,和调度方法的选择 优先权法? 轮转法产生n 个进程,对每个进程产生一个PCB ,并用随机数产生进程的优先权及进程所需的CPU 时间按优先权大小,把n 个进程拉成一个就绪队列撤销进程就绪队列为空?结束 N YY注意:1.产生的各种随机数的取值范围加以限制,如所需的CPU 时间限制在1~20之间。
2.进程数n 不要太大通常取4~8个3.使用动态数据结构4.独立编程5.至少三种调度算法6.若有可能请在图形方式下,将PCB 的调度用图形成动画显示。
五.实验过程:(1)输入:进程流文件(1.txt ),其中存储的是一系列要执行的进程, 每个作业包括四个数据项: 进程名 进程状态(1就绪 2等待 3运行) 所需时间 优先数(0级最高)进程0 1 50 2进程1 2 10 4进程2 1 15 0进程3 3 28 5进程4 2 19 1进程5 3 8 7输出: 进程执行流等待时间,平均等待时间本程序包括:FIFO 算法,优先数调度算法,时间片轮转调度算法产生n需的时间片数,已占用CPU 的时间片数置为0按进程产生的先后次序拉成就绪队列链=0? 撤销该进程就绪队列为空吗? =轮转时间片数?NY YY 结束 N(2)程序代码package进程调度;import java.util.*;class PCB//创建进程块{int Id;//进程编号int UseTime;//服务时间int NeedTime;//需要时间int Perior;//优先级String Status;//状态PCB(){Id++;UseTime=0;NeedTime=(int)Math.round(Math.random()*6)+1;//随机产生需要时间Perior=(int)Math.round(Math.random()*5)+1;//随即产生优先级Status="Ready";//初始状态为就绪}}class Found//定义系统处理方法类{ArrayList <PCB> sequnce;//创建就绪队列PCB pcb[]=new PCB[5];int StartTime=0;int SystemTime=(int)(Math.random()*3)+1;//随即产生系统时间Found(){sequnce=new ArrayList <PCB>();for(int i=0;i<5;i++){pcb[i]=new PCB();pcb[i].Id=i+1;sequnce.add(pcb[i]);}}void FCFS()//先来先服务算法{PCB Running=null;while(sequnce.size()>0)//就绪队列不为空{Running=sequnce.remove(0);eTime=Running.NeedTime;Running.NeedTime=0;Running.Perior=0;System.out.println("当前系统时间:"+SystemTime);SystemTime+=eTime;ShowMessages(Running);}}void RR()//时间片轮换算法{PCB Running=null;int Time=SystemTime;while(sequnce.size()>0){System.out.println("当前系统时间:"+SystemTime);Running=sequnce.remove(0);if(Running.NeedTime<=Time){eTime=Running.NeedTime;Running.NeedTime=0;Running.Perior=0;Running.Status="Finish";SystemTime+=eTime;}else{eTime+=Time;Running.NeedTime-=Time;Running.Perior--;Running.Status="Ready";sequnce.add(Running);SystemTime+=Time;}ShowMessages(Running);}}void ShowMessages(PCB p)//输出信息{System.out.println("当前运行进程:"+p.Id+" "+"服务时间:"+eTime+" "+"需要时间:"+p.NeedTime+" "+"优先级:"+p.Perior+" "+"状态:"+p.Status);if(sequnce.size()>0){System.out.println("当前就绪进程:");for(PCB p1:sequnce){System.out.println("进程编号:"+p1.Id+" "+"服务时间:"+eTime+" "+"需要时间:"+p1.NeedTime+" "+"优先级:"+p1.Perior+" "+"状态:"+p1.Status); System.out.println("--------------------------------------------------------------------------");}}else{System.out.println("当前系统中已经没有就绪进程!"); }System.out.println('\n');}}class Menu//主界面菜单{Scanner sc=new Scanner(System.in); int print() { System.out.println("********************************************");System.out.println(" 进调度算法演示");System.out.println("********************************************");System.out.println(" 1.先来先服务(FCFS)算法");System.out.println(" 2.时间片轮换(RR)算法");System.out.println(" 3.退出该程序");System.out.print("请选择所要采用的算法:");int flag=sc.nextInt();return flag;}void select(){int flag=print(); switch (flag){case 1:Found Process1=new Found();Process1.FCFS(); print();case 2:Found Process2=new Found();Process2.RR(); print();case 3:System.exit(0);default:break;}}}package进程调度;public class ProcessControl { public static void main(String args[]) {Menu Tencent=new Menu();Tencent.select();}}(3)运行结果:实验二银行家算法一、实验目的死锁会引起计算机工作僵死,因此操作系统中必须防止。
江苏科技大学学年第二学期会计信息系统分析与设2014 至2013计课内实验报告许炜实验指导1145543213 王欢学生班级成绩教师学号姓名实验名称:总帐管理系统一、实验小结:(内容、结果、问题)实验余额初始化一1.内容1.会计期间选择2.余额初始化1)新增科目余额信息2)修改原有的会计科目余额信息3)删除会计科目余额3.试算平衡检验完成期初余额录入后,需要进行试算平衡检验,以验证科目余额输入的正确性。
4.科目余额表检验。
为保证总账科目和明细科目等数据的正确性,系统提供了“科目余额检验”功能进行验证。
2.结果余额初始化左边窗口为系统预置的总账科目代码,右边窗口显示选择的总账科目的明细科目余额。
系统自动分级汇总输入的科目代码年初余额并显示,见下图:试算平衡检验完成期初余额录入后,进行试算平衡检验,以验证科目余额输入的正确性,出现下图。
科目余额表检验为保证总账科目和明细科目等数据的正确性科目余额检验结果列表如下。
.3.问题实验结果分析:1、描述科目余额表的数据组织形式和科目余额检验的作用;1)答:科目编号,部门编号,人员编号,年初余额作用:为了保证账簿的正确性,科目余额表数据错误将直接影响账簿的正确性描述试算平衡的原理和计算方法。
2)答:原理:资产=负债+所有者权益计算方法:资产总额与负债及所有者权益总额相比较思考题:2、余额初始化对整个会计信息系统的重要性如何?)1答:系统初始化是会计信息系统运行的基础,它为其他子系统提供了公共的账套,年度帐及其他相关的基础数据,各子系统的操作员也需要在系统初始化中统一设置并分配功能权限。
除了余额初始化外,还有那些数据需要初始化?)2凭证类型设置、人员权限设置、科目设置、答:初始设置模块还包括设置账套、汇率设置、结算方式设置、其他设置等。
)3余额初始化的数据是如何产生的?答:余额初始化的数据是将手工账簿各科目的余额输入计算机中,以保证手工账簿和计算机账簿内容的连续性和继承性,并将初始余额保存在汇总文件中。
(此文档为word格式,下载后您可任意编辑修改!)《—现代密码学—》实验指导书适用专业:计算机科学与技术江苏科技大学计算机科学学院2011年11 月实验一古典密码实验学时:2学时实验类型:验证实验要求:必修一、实验目的编程实现古典密码的加解密方法。
二、实验内容(1)移位密码的加密和解密函数。
(2)仿射密码的加密和解密函数。
(3)维吉尼亚密码的加密和解密函数。
三、实验原理、方法和手段(1)移位密码对于明文字符,加密密钥,加密方法为解密方法为(2)仿射密码对于明文字符,加密密钥,加密方法为=+==y ax b a b,gcd(,26)1,1,2,,25解密方法为(3)维吉尼亚密码选取密钥字Key,将明文按照密钥字长度分组,将明文与密钥字对应字符相加并对26求余,即为密文字符。
解密过程为四、实验组织运行要求本实验采用集中授课形式,每个同学独立完成上述实验要求。
五、实验条件每人一台计算机独立完成实验,有如下条件:(1)硬件:微机;(2)软件:VC++6.0、VC++.Net 2005。
六、实验步骤(1)将各函数编写完成;(2)在主函数中调用各函数,实现加密和解密。
七、实验报告实验报告主要包括实验目的、实验内容、实验原理、源程序及结果。
移位密码加密:#include<stdio.h>#define n 3 //移位位数void change(char string[]){int i;for(i=0;string[i]!='\0';i++){if(string[i]>='a'&&string[i]<='z')string[i]=(string[i]+n>='z'?string[i]+n-26:string[i]+n); }}void main(){char str[100];printf("请输入一段明文");gets(str);change(str);printf("密文为:\n");puts(str);}移位密码解密:#include<stdio.h>#define n 3 //移位位数void change(char string[]){int i;for(i=0;string[i]!='\0';i++){if(string[i]>='a'&&string[i]<='z')string[i]=(string[i]+n<'a'?string[i]-n+26:string[i]-n); }}void main(){char str[100];printf("请输入一段密文");gets(str);change(str);printf("明文为:\n");puts(str);}仿射密码加密:#include<stdio.h>void fun( char a[],int x,int y){int i;for(i=0;a[i]!='\0';i++){a[i]=(x*(a[i]-97)+y)%26+97;}}main(){char string[100];int x,y;printf("输入");gets(string);printf("请输入密钥");scanf("%d,%d",&x,&y);printf("明文:%s\n",string);fun(string,x,y);printf("密文为:%s\n",string); }仿射密码解密:#include<stdio.h>void fun( char a[],int x,int y) {int i;for(i=0;a[i]!='\0';i++){a[i]=(x*(a[i]-97)+y)%26+97;}}main(){char string[100];int x,y;printf("输入");gets(string);printf("请输入密钥");scanf("%d,%d",&x,&y);printf("密文:%s\n",string);fun(string,x,y);printf("明文:%s\n",string);}密码加密:#include<stdio.h>void change(char old[],char new1[][5]){ int i,j,t;char temp[20][5];t=strlen(old);for(i=t;i<(5-t%5)+t;i++) //将一维数组old每5个分成一组不足5位的用X补充old[i]='x';for(i=t+(5-t%5);i<100;i++)old[i]='\0';for(i=0;i<20;i++) //将一维数组old转换成一个20*5的二维数组tempfor(j=0;j<5;j++)temp[i][j]=old[5*i+j];for(i=0;i<20;i++) //密文字母交换顺序{new1[i][0]=temp[i][1];new1[i][1]=temp[i][4];new1[i][2]=temp[i][3];new1[i][3]=temp[i][0];new1[i][4]=temp[i][2];}}main(){char old[100],new1[20][5];gets(old);change(old,new1);printf("%s",new1);}密码解密#include<stdio.h>void change(char old[],char new1[][5]){ int i,j,t;char temp[20][5];t=strlen(old);for(i=0;i<20;i++) //将一维数组old转换成一个20*5的二维数组tempfor(j=0;j<5;j++)temp[i][j]=old[5*i+j];for(i=0;i<20;i++) //密文字母交换顺序 {new1[i][1]=temp[i][0];new1[i][4]=temp[i][1];new1[i][3]=temp[i][2];new1[i][0]=temp[i][3];new1[i][2]=temp[i][4];}}main(){char old[100],new1[20][5];gets(old);change(old,new1);printf("%s",new1);}实验二序列密码实验学时:2学时实验类型:验证实验要求:必修一、实验目的编程实现序列密码RC4的加密方法。
《C程序设计》实验教学大纲一、适用范围大纲适用信息管理专业本科教学使用。
二、课程名称C程序设计三、学时数与学分总学时:90 总学分:4实验学时:28 实验学分:1四、教学目的和基本要求目的:通过C程序设计实验,培养学生对学习程序设计的兴趣,加深对讲授内容的理解,尤其是通过上机来掌握语法规则,使学生全面了解 C 语言的特点,熟练掌握 C 语言程序设计的基本方法和编程技巧。
基本要求:了解和熟悉C语言程序开发的环境;学会上机调试程序,善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行,达到实验知识和理论知识的融会贯通。
上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止,上机结束后,应整理出实验报告。
注:带*的实验项目为选做实验项目六、教材、讲义及参考书《C程序设计题解与上机指导》谭浩强主编清华大学出版社七、实验成绩评定办法实验成绩=平时实验表现+实验报告。
实验成绩占总成绩的20%。
实验成绩以等级形式给出,评定等级分优、良、中、及格、不及格五类。
1、平时考核:上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止。
在实验中,教师可根据学生编程操作能力、观察和分析及运用知识能力、程序编制正确性以及学生的课堂纪律、实验态度、保持实验室卫生等方面的表现进行综合考核。
2、实验报告:学生实验后应按时完成实验报告。
八、实验教学大纲说明本大纲共安排28学时的实验,其中带*号实验项目为选做实验项目,实际课时为18学时。
实验项目多为设计性实验项目,每个设计性实验项目中都包含数个小的设计性题目,其中带*号的题目为选做题目,有时间和有能力的同学可以选做。
九、实验项目实验一C程序的运行环境和运行一个C程序的方法一、实验目的1.了解Visual C++6.0编译系统的基本操作方法,学会独立使用该系统。
2.了解在该系统上如何编辑、编译、连接和运行一个C程序。
江苏科技大学课程实践报告设计题目:计算机程序设计实验(C++)设计时间: 2016年10月3日至2016年10月4日学院:计算机科学与工程学院专业班级:通信工程 41学生姓名:周祯楠学号:****:***一、第三题(一)题目:3.建立一个类MOVE,不进行排序,将数组中小于平均值的元素放到数组的左边,大于平均值的元素放到数组的右边。
具体要求如下:(1)私有数据成员。
○1float array[20]:一维整型数组。
○2int n:数组中元素的个数。
(2)公有成员函数○1MOVE(float b[],int m):构造函数,初始化成员数据。
○2void average():输出平均值,并将数组中的元素按要求重新放置。
○3void print():输出一维数组。
(3)在主程序中用数据{,,3,,,,,,}对该类进行测试。
(二)源程序:#include<>class MOVE{float array[20];int n;public:MOVE(float b[],int m);void average();void print();};MOVE::MOVE(float b[],int m){int i;n=m;for(i=0;i<m;i++)array[i]=b[i];}void MOVE::average(){int i,x;float a = 0;for(i=0;i<n;i++)a+=array[i];a/=n;cout<<"平均值为:"<<a<<endl; 要注意:○1this指针指向本身对象的数据成员,避免因数据名相同而造成的混乱。
按题目要求,这一题只能用this指针加以区分。
2.相关算法:○2求阶乘○3求m^n。
i < n即可,因为i = 1时,m=m*m,依此类推,i=n-1 时,算的就是m^n○4这个公式看起来比较繁琐,对应着公式调用相关函数写,不要弄错四、第18题(一)题目:18.试建立一个类VAR,用于求n(n<=100)个数的均方差。
均方差的计算公式为,其中平均值为具体要求如下:(1)私有成员数据。
○1double a[100]:用于存放输入的n个数。
○2int n:实际输入数的个数n。
(2)公有成员函数。
○1VAR(double x[], int n1):构造函数,初始化成员数据a和个数n。
○2double average(double x[], int n):求平均值,数组x具有n个元素。
○3void variance(double x[],int n):求均方差,数组x具有n个元素。
○4void show():输出求得的均方差。
(3)在主程序中定义一个对象test,对该类进行测试。
(二)源程序:#include<>class VAR{double a[100];int n;public:VAR(double x[],int n1);double average(double x[],int n);void variance(double x[],int n);void show();};VAR::VAR(double x[],int n1){for(int i = 0;i < n1;i++)a[i] = x[i];n = n1;}double VAR::average(double x[],int n){double a = 0;for(int i = 0;i < n;i++)a += x[i];a /=n;return a;}void VAR::variance(double x[],int n) {double d = 0; //○1 for(int i = 0;i < n;i++)d = (x[i] - average(x,n))*(x[i] - average(x,n)); d /= n;cout<<"方差为:"<<d<<'\n'; }void VAR::show() {cout<<"平均值为:"<<average(a,n)<<'\n'<<endl; variance(a,n); }void main() {double x[100] = {16,18,25,23,56,14}; int n1 = 6;VAR test(x,n1); (); }(三)运行结果:(四)基本分析: 1.需要注意:○1方差d 最好定义成double 型 2.此题不难,按照题目要求“堆”程序即可,没有复杂的算法,也没有特殊的结构。
五、第二十题 (一)题目:,实现对方阵进行逆时针90度旋转。
如图所示。
1 2 3 45 6 7 89 10 11 1213 14 15 16具体要求如下:(1)私有数据成员○1int a[4][4]:用于存放方阵。
(2)公有成员函数○1Array (int a1[][4],int n) :构造函数,用给定的参数a1初始化数据成员a 。
○2void xuanzhuan ( ) :实现对方阵a 进行逆时针90度的旋转。
○3void show( ) :在屏幕上显示数组元素。
4 8 12 16 3 7 11 15 2 6 10 14 1 5 9 13(3)在主程序中定义数组int b[ ][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}作为原始数组。
定义一个Array类对象test,用b初始化test,完成对该类的测试。
(二)源程序:#include<>class Array{int a[4][4];public:Array(int a1[][4],int n);void xuanzhuan();void show();};Array::Array(int a1[][4],int n){for(int i=0;i<n;i++)for(int j=0;j<n;j++)a[i][j] = a1[i][j];}void Array::xuanzhuan(){int i;int a2[4][4];for(i=0;i<4;i++){for(int j=0;j<4;j++)a2[i][j] = a[j][3-i]; //○1}for(i=0;i<4;i++)for(int j=0;j<4;j++)a[i][j] = a2[i][j]; //○2}void Array::show(){cout<<"输出的数组为:"<<endl;for(int i=0;i<4;i++){for(int j=0;j<4;j++)cout<<a[i][j]<<'\t';cout<<endl;}}void main(){int b[][4] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};int n = 4;Array test(b,n);();();}(三)运行结果:(四)基本分析:○1新建一个数组a2[4][4],用来存放旋转后的a1[4][4],逆时针旋转90度,其实就是列变成行,行变成列的同时左移三个。
○2把a2[4][4]赋值给a1[4][4],这样a1[4][4]就是旋转后的矩阵。
六、第三十题(一)题目:30.建立一个矩阵类Array,对二维数组中左下三角的全部元素(包括对角线上的元素)作如下变换。
(1)若该数不是素数则保持不变;(2)若该数是素数,则用大于它的最小素数替换该数。
并统计二维数组中左下三角的全部元素(包括对角线上的元素)中的素数个数。
具体要求如下:(1)私有数据成员○1int x[4][4]:存储需要处理的二维数组的各元素值。
○2int count:存储左下三角元素中素数的个数。
(2)公有成员函数○1构造函数:进行初始化x数组和count的值。
○2int fun(int);判断一个数是否为素数的函数。
○3void encode( ):对x数组中左下三角的全部元素(包括对角线上的元素)逐一进行判断,若该数不是素数则保持不变,若该数是素数,则用大于它的最小素数替换该数。
○4void print( ):按行输出矩阵的值。
(3)编写一个程序测试该类,说明(声明)Array对象A,将一个矩阵存入对象36417 85910 1219720 4142123(二)源程序:#include<>class array{int x[4][4];int count;56417 87910 12231120 4142129public:array(int a[4][4]);int fun(int);void encode();void print();};array::array(int a[4][4]){for(int i=0;i<4;i++)for(int j=0;j<4;j++)x[i][j] = a[i][j];count = 0;}int array::fun(int num){int flag;for(int i=2;i<num;i++)if(num%i==0) return 0;else return 1; //○1}void array::encode(){int i,j,n;for(i=0;i<4;i++){for(j=0;j<=i;j++) //○2{if(fun (x[i][j])) //○3{for(int m = x[i][j]+1;;m++)if(fun(m)) //○4{x[i][j] = m;break; //○5}count +=1; //○6 }}}}void array::print(){int i,j;cout<<"变换后的矩阵为:"<<endl;for(i=0;i<4;i++){for(j=0;j<4;j++)cout<<x[i][j]<<'\t';cout<<endl;}cout<<"左下角素数个数为:"<<count<<endl;}void main(){int a[4][4]={3,6,4,17,8,5,9,10,12,19,7,20,4,14,21,23};array test(a);();();}(三)运行结果:(四)基本分析:○1判断是否为素数,运用条件语句,是就return1,否就return0,是很巧妙地方法。