当前位置:文档之家› 中南大学C++程序设计报告

中南大学C++程序设计报告

中南大学C++程序设计报告
中南大学C++程序设计报告

中南大学

本科生课程设计(实践)任务书、设计报告

(C++程序设计)

题目贪吃蛇

学生姓名

指导教师

学院

专业班级

学生学号

计算机基础教学实验中心

2013年 7 月 1 日

贪吃蛇

内容:

1 CView类中的消息响应

2 控件的消息响应

3 基于CView类内的具体游戏实现

4 数组

5 游戏图形的实现用CDC类实现。

关键字: CView Shake MFC 函数

1.贪吃蛇开发设计思想

1 定义蛇类和食物类,初始化贪吃蛇各项成员变量,包括图像的出现在屏幕的初始位置,长度,以及蛇的行走方向。食物类的定义包括出现的初始位置,以及食物是否被吃掉的判断。

2 用数组初始化长度为3的贪吃蛇,并且默认食物未出现

3 在CView类上运用MFC提供的Windows消息中WM_TIMER消息,运用OnTimer()函数让系统提供一个时钟节拍,更新游戏

4 具体游戏实现,包括蛇撞到自己和围墙都将使游戏结束,判断吃豆等,其中还包括根据蛇的长度来进行游戏难度的改变。

5 具体键盘游戏操作运用到Windows消息响应中的WM_KEYDOWN,用OnKeyDown()来响应玩家的实际操作。

2.系统功能及系统设计介绍

详细设计:

第一部分

首先在已有工程下的“ClassView”中右键CView类添加以下Windows信息

1 WM_KEYDOWN

2 WM_RBUTTONDOWN

3 WM_TIMER

再右键CView类选择“ADD Virtual Funciton”选OnInitialUpdate()

OnInitialUpdate()的功能如下:

视图窗口完全建立后第一个被框架调用的函数。框架在第一次调用OnDraw前会调用OnInitialUpdate,因此OnInitialUpdate是设置滚动视图的逻辑尺寸和映射模式的最合适的地方。

时间上,两者先后顺序不同,构造函数生成本类的对象,但没有产生窗口,OnCreate后窗口产生,然后才是视图的OnInitialUpDate,一般在这里对视图的显示做初始化。简单点,就是ONCREATE只是产生VIEW的基本结构和变量而在OnInitialUpDate()中,主要初始化视图中控件等。对各个变量进行初始化操作

所以我们要用这个函数来进行贪吃蛇的初始化工作。

再者还要添加一个成员函数oninit()进行贪吃蛇外观的初始化

控件的设计

再者是设计游戏的一些控件来控制“游戏开始”“游戏结束”和“游戏暂停”。

我们可以点击“工作空间”的“ResourceView”进行控件的具体设计,这里我们在Menu文件夹中把“IDR_MAINFRAME”中默认的控件全部删除

右键其中的标题栏,点击属性,会得到一个菜单栏标题,我们分别建立1个菜单栏标题。这里我们分别建“游戏”。

点击并且在已有控件中的列表中点击属性,进行“菜单项目属性”的设置。我们本别建立的属性“标明”与对应的ID有

游戏开始IDM_START

游戏暂停IDM_PAUSE

游戏继续IDM_CONTINUE

游戏退出IDM_EXIT

此处控件的设计是“可见即可得”的控件操作

成功设置ID之后我们分别右键

各项属性进行消息响应处理函数的生成

第二部分

具体实现游戏、

Step 1

首先我们在文件开头处分别定义蛇和食物的全局变量struct Snake

{

int x,y;

int len;

int direct;

}Snake[50];

struct Food

{

int x;

int y;

int isfood;

}Food;

再者

void CSNAKEView::OnInitialUpdate()

{

CView::OnInitialUpdate();

Snake[0].x=10;

Snake[0].y=10;

Snake[1].x=11;

Snake[1].y=10;

Snake[2].x=12;

Snake[2].y=10;

Snake[0].direct=3;

Snake[0].len=3;

Food.isfood=1;

// TODO: Add your specialized code here and/or call the base class }

代码说明:

初始化贪吃蛇起初有3个节点,长度为3,起始坐标;

食物默认为1无0有当然我更加喜欢0无1有

Step 2 对OnKeyDown()具体添加代码

void CSNAKEView::OnKeyDown(UINT nChar, UINT nRepCnt,

UINT nFlags)

{

// TODO: Add your message handler code here and/or call default

switch(nChar)

{

case VK_UP:if(Snake[0].direct!=2)Snake[0].direct=1;break;

case VK_DOWN:if(Snake[0].direct!=1)Snake[0].direct=2;break;

case VK_LEFT:if(Snake[0].direct!=4)Snake[0].direct=3;break;

case

VK_RIGHT:if(Snake[0].direct!=3)Snake[0].direct=4;break; } CView::OnKeyDown(nChar, nRepCnt, nFlags);

CView::OnKeyDown(nChar, nRepCnt, nFlags);

}

代码说明:

Snake[0]代表的是蛇头,我们对蛇头的方向Snake[0].direct 进行判断。

case VK_UP:if(Snake[0].direct!=2)Snake[0].direct=1;break;

意思就是当Snake[0].direct的方向此时并不等于“下”的时候,才能做出“上”的操作动作,否则则忽略用户“向上”的操作按键效果

Step 3 对OnRButtonDown()具体添加代码

void CSNAKEView::OnRButtonDown(UINT nFlags, CPoint point) {

// TODO: Add your message handler code here and/or call default

// TODO: Add your message handler code here and/or call default

CString str;

str.Format("%d,%d",point.x,point.y);

AfxMessageBox(str);

CView::OnRButtonDown(nFlags, point);

CView::OnRButtonDown(nFlags, point);

CView::OnRButtonDown(nFlags, point);

}

这个函数功能是:用鼠标右键屏幕,就会马上显示当前位置的坐标信息。

Step 4

void CSNAKEView::oninit()

{

CDC *pDC=GetDC();

CBrush DrawBrush=(RGB(100,100,100));

CBrush *Drawbrush=pDC->SelectObject(&DrawBrush);

for(int i=0;i<=snake[0].l-1;i++)

pDC->Rectangle(snake[i].x*20,snake[i].y*20,(snake[i].x+1)*20,(snake[i] .y+1)*20);

pDC->SelectObject(DrawBrush);

}

代码说明:

利用Windows给我们提供的CDC类来进行画图,我们首先用一个指向CDC类的指针去接受与该窗口相关联的DC句柄,然后用定义画刷一个DrawBrush对象,并且用RGB(100,100,100)来给画刷初始化颜色。并且用SelectObject(&DrawBrush);函数把对象画刷选入到设备描述表中,用for循环依次把贪吃蛇的3个节点画出来。

Step 5 控件添加代码

void CSNAKEView::OnStart()

{

// TODO: Add your command handler code here

SetTimer(1,3000,NULL);

AfxMessageBox("3秒后开始游戏!");

}

void CSNAKEView::OnPause()

{

// TODO: Add your command handler code here

KillTimer(1);

AfxMessageBox("暂停游戏...");

}

void CSNAKEView::OnExit()

{

// TODO: Add your command handler code here

AfxMessageBox("退出游戏...");

exit 0;

}

void CSNAKEView::OnContinue()

{

// TODO: Add your command handler code here

SetTimer(1,10,NULL);

}

Step 6 对OnDraw()的添加代码

OnDraw()函数众所周知视图类中的输出.视图类的输出基本上都是在视图类的OnDraw函数中处理的,系统会准备好入参,然后调用OnDraw函数

void CSNAKEView::OnDraw(CDC* pDC)

{

CSNAKEDoc* pDoc = GetDocument();

ASSERT_V ALID(pDoc);

// TODO: add draw code for native data here

CBrush backBrush(RGB(100,100,0));

CBrush* pOldBrush = pDC->SelectObject(&backBrush);

CRect rect;

pDC->GetClipBox(&rect);

pDC->PatBlt(rect.left, rect.top, rect.Width(),

rect.Height(),PATCOPY);

pDC->SelectObject(pOldBrush);

pDC->Rectangle(19,19,501,501);

oninit();

}

Step 7 对OnTime()的添加代码

void CSNAKEView::OnTimer(UINT nIDEvent)

{

// TODO: Add your message handler code here and/or call default

CDC *pDC=GetDC();

CString soure;

if(Snake[0].len==2)SetTimer(1,370,NULL);

if(Snake[0].len==3)SetTimer(1,270,NULL);

if(Snake[0].len==6)SetTimer(1,200,NULL);

if(Snake[0].len==9)SetTimer(1,100,NULL);

soure.Format("得分:%d!",(Snake[0].len-3)*10);

//撞界判断

if(Snake[0].x*20<=37||Snake[0].y*20<=37||Snake[0].x*20>=462||Snake[ 0].y*20>=462)

{

KillTimer(1);

AfxMessageBox(soure);

// s=0;

}

//蛇身相撞判断

if(Snake[0].len>3)

for(int sn=Snake[0].len-1;sn>0;sn--)

{

if(Snake[0].x*20==Snake[sn].x*20&&Snake[0].y*20==Snake[sn].y*20) {

KillTimer(1);

AfxMessageBox(soure);

// s=0;

}

}

///////////////////////////////////////////////////////////////////////////

pDC->SelectStockObject(WHITE_PEN);

pDC->Rectangle(Snake[Snake[0].len-1].x*20,Snake[Snake[0].len-1].y*2 0,(Snake[Snake[0].len-1].x+1)*20,(Snake[Snake[0].len-1].y+1)*20);

for(int i=Snake[0].len-1;i>0;i--)

{

Snake[i].x=Snake[i-1].x;

Snake[i].y=Snake[i-1].y;

}

//行走方向判断

if(Snake[0].direct==1)Snake[0].y--;

if(Snake[0].direct==2)Snake[0].y++;

if(Snake[0].direct==3)Snake[0].x--;

if(Snake[0].direct==4)Snake[0].x++;

pDC->SelectStockObject(BLACK_PEN);

CBrush DrawBrush=(RGB(100,100,100));

CBrush *Drawbrush=pDC->SelectObject(&DrawBrush);

pDC->Rectangle(Snake[0].x*20,Snake[0].y*20,(Snake[0].x+1)*20,(Snak e[0].y+1)*20);

pDC->SelectObject(DrawBrush);

//判断吃豆的条件,撞到就吃

if(Snake[0].x*20==Food.x*20&&Snake[0].y*20==Food.y*20)

{

Snake[0].len++;

Food.isfood=1;

Snake[Snake[0].len-1].x=Snake[Snake[0].len-2].x;

Snake[Snake[0].len-1].y=Snake[Snake[0].len-2].y;

}

//如果食物被吃了就生成

if(Food.isfood==1)

{

srand((unsigned)time(NULL));

do

{

for(int isfo=Snake[0].len-1;isfo>=0;isfo--)

if(Snake[0].x*20==Snake[isfo].x*20&&Snake[0].y*20==Snake[isfo].y* 20)

{

Food.x=rand()%;

Food.y=rand()%;

}

}

while(Food.x*20<70||Food.y*20<70||Food.x*20>430||Food.y*20>430);

pDC->Rectangle(Food.x*20,Food.y*20,(Food.x+1)*20,(Food.y+1)*20);

Food.isfood=0;

}

CView::OnTimer(nIDEvent);

}

3.系统开发的体会

本次程序设计所用时间较长,工作量很饱满,而且所用的知识很多,但是我们平常在课堂上所学的知识很有限,这就需要我大量的自学书本和课外的其他书籍上的知识。为了让程序容易使人看懂,我用到的知识点不是非常多,大都是一些基本知识。毕竟很多知识没有学,能用基本知识就尽量用的基本知识。C++设计实践是对之前学过的知识的加深和巩固,之前学得较浅,实践的机会不多,这次实践让我对C++程序有了更加深入的了解,心理也由原来的不喜欢到喜欢,感觉很有意思也很有用,可也设计一些有用的或者是自己喜欢的程序。最令我收益的是写程序的过程和调试修改的过程,因为没有把知识学习全面,因此编写起来是有难度的,在预先想好程序结构后,就开始看书,一个函数一个函数来编写,不懂的地方就上网搜或是请教一下同学和老师,当终于把程序写出来的时候,内心里又有一种说不出来的激动,我感觉这很符合大学的教育观念,是对个人自主学习能力的一个锻炼。在接下来就是调试,虽然出了很多的错误,虽然自己也被搞的焦头烂额,但我还是很兴奋,我感觉自己就像是个侦探,一点点找线索,找到问题,再解决,每次成功都带给自己一次激动。现在程序终于能较好的运行出来了,当然,还存在一些瑕疵,但通过这近两周的实践学习,我收获的不仅仅是这一个程序,我的自学能力,以及寻找问题解决问题的能力也得到了很好的锻炼!

中南大学微机课程设计报告交通灯课案

微机课程设计报告

目录 一、需求分析 1、系统设计的意义 (3) 2、设计内容 (3) 3、设计目的 (3) 4、设计要求 (3) 5、系统功能 (4) 二、总体设计 1、交通灯工作过程 (4) 三、设计仿真图、设计流程图 1、系统仿真图 (5) 2、流程图 (6) 3、8253、8255A结构及功能 (8) 四、系统程序分析 (10) 五、总结与体会 (13) 六、参考文献 (13)

一、需求分析 1系统设计的意义: 随着社会经济的发展,城市问题越来越引起人们的关注。人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一。城市交通控制系统是用于城市交通数据检测、交通信号灯控制与交通疏通的计算机综合管理系统,它是现代城市交通监控指挥系统中最重要的组成部分。 随着城市机动车量的不断增加,组多大城市如北京、上海、南京等出现了交通超负荷运行的情况,因此,自80年代后期,这些城市纷纷修建城市高速通道,在高速道路建设完成的初期,它们也曾有效地改善了交通状况。然而,随着交通量的快速增长和缺乏对高速道路的系统研究和控制,高速道路没有充分发挥出预期的作用。而城市高速道路在构造上的特点,也决定了城市高速道路的交通状况必然受高速道路与普通道路耦合处交通状况的制约。所以,如何采用合适的控制方法,最大限度利用好耗费巨资修建的城市高速通道,缓解主干道与匝道、城市同周边地区的交通拥堵状况,越来越成为交通运输管理和城市规划部门亟待解决的主要问题。 十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。交通灯的控制方式很多,本系统采用可编程并行I/O接口芯片8255A为中心器件来设计交通灯控制器,实现本系统的各种功能。同时,本系统实用性强,操作简单。 2、设计内容 采用8255A设计交通灯控制的接口方案,根据设计的方案搭建电路,画出程序流程图,并编写程序进行调试 3、设计目的 综合运用《微机原理与应用》课程知识,利用集成电路设计实现一些中小规模电子电路或者完成一定功能的程序,以复习巩固课堂所学的理论知识,提高程序设计能力及实现系统、绘制系统电路图的能力,为实际应用奠定一定的基础。针对此次课程设计主要是运用本课程的理论知识进行交通灯控制分析及设计,掌握8255A方式0的使用与编程方法,通从而复习巩固了课堂所学的理论知识,提高了对所学知识的综合应用能力。 4、设计要求: (1)、分别用C语言和汇编语言编程完成硬件接口功能设计; (2)、硬件电路基于80x86微机接口;

中南大学C++实验报告

《C++程序设计》上机实验报告 上机内容:C++程序的运行环境和运行一个C++程序的方法 数据类型和表达式 专业班级:电气信息类1203班 学号:0909120320 姓名:李湖 日期:2013年3月16日

目录 1.实验目的 2.实验内容 3.程序源码 4.调试结果 5.实验心得

程序设计实验(一) 1、实验目的 (1)了解所用的计算机系统的基本操作方法,学会独立使用该系统。 (2)了解在该系统上如何编辑、编译、连接和运行一个C程序 (3)通过运行简单的C++程序,初步了解C++源程序的结构和特点。 应学会在一种以上的编译环境下运行C++的程序,建议学习并 掌握Visual C++ 6.0和GCC(RHIDE和DJGPP)的使用方法。2、实验内容和步骤 (1)检查所用所用的计算机系统是否已安装了C++编译系统,并确定他所在的子目录。如果使用的是Windows操作系 统,可以按以下步骤进行: 如果想查找Visual C++ 6.0,可以单击Windows桌面上“开 始”按钮,在菜单中选择“查找”窗口,在“名称”栏中 输入文件名“Microsoft Visual C++ 6.0”,请注意搜索范围, 应当使“搜索”栏中的内容为“C:\”,表示从C盘根目录 开始寻找,即搜索整个C盘。单击“开始查找”按钮, 系统会自动在指定的范围内找寻所需的文件,如果找到, 就会显示出文件路径,如“C:\Windows 000\Start Mean\Program\Microsoft Visual Studio 6.0,表示在

C:\Windows 000\Start Mean\Program\Microsoft Visual Studio 6.0文件中有Visual C++ 6.0。也可以选择Windows 桌面上的“开始”—>“程序”命令,在其弹出的菜单中 选择“Microsoft Visual Studio 6.0”命令,再在其子菜单中 查有无“Microsoft Visual C++ 6.0”命令。如果在安装时采 用系统提供的默认方式安装,应该在这个位置找到 Microsoft Visual C++ 6.0。 如果想查找RHIDE和DJGPP,只须选择“开始”—>“查找(F)”—>“文件或文件夹(F)”命令,并指定RHIDE 和DJGPP即可。 (2)在Visual C++环境下编译和运行C++程序。 在第一次上机时,按以下步骤建立和运行C++程序: ①先进入Visual C++ 6.0环境。 ②按照第15章15.2节介绍的方法,在自己指定的子目录中 建立一个名为test.cpp的新文件(此事尚未向文件输入内 容)。 ③从键盘输入以下程序(第1章第8题): int main(); { int a,b; c=a+b; cout>>”a+b=”>>a+b;

信号与系统实验报告

中南大学 信号与系统试验报告 姓名: 学号: 专业班级:自动化 实验一 基本信号的生成 1.实验目的 ● 学会使用MATLAB 产生各种常见的连续时间信号与离散时间信号; ● 通过MATLAB 中的绘图工具对产生的信号进行观察,加深对常用信号的 理解; ● 熟悉MATLAB 的基本操作,以及一些基本函数的使用,为以后的实验奠 定基础。 2.实验内容 ⑴ 运行以上九个例子程序,掌握一些常用基本信号的特点及其MATLAB 实现方法;改变有关参数,进一步观察信号波形的变化。 ⑵ 在 k [10:10]=- 范围内产生并画出以下信号: a) 1f [k][k]δ=; b) 2f [k][k+2]δ=; c) 3f [k][k-4]δ=; d) 4f [k]2[k+2][k-4]δδ=-。

源程序: k=-10:10; f1k=[zeros(1,10),1,zeros(1,10)]; subplot(2,2,1) stem(k,f1k) title('f1[k]') f2k=[zeros(1,8),1,zeros(1,12)]; subplot(2,2,2) stem(k,f2k) title('f2[k]') f3k=[zeros(1,14),1,zeros(1,6)]; subplot(2,2,3) stem(k,f3k) title('f3[k]') f4k=2*f2k-f3k; subplot(2,2,4) stem(k,f4k) title('f4[k]') ⑶ 在 k [0:31]=范围内产生并画出以下信号: a) ()()k k 144f [k]sin cos π π=; b) ()2k 24f [k]cos π =; c) ()()k k 348f [k]sin cos π π=。 请问这三个信号的基波周期分别是多少? 源程序: k=0:31; f1k=sin(pi/4*k).*cos(pi/4*k); subplot(3,1,1) stem(k,f1k) title('f1[k]') f2k=(cos(pi/4*k)).^2; subplot(3,1,2) stem(k,f2k) title('f2[k]') f3k=sin(pi/4*k).*cos(pi/8*k); subplot(3,1,3) stem(k,f3k) title('f3[k]') 其中f1[k]的基波周期是4, f2[k]的基波周期是4, f3[k]的基波周期是16。

中南大学JAVA实验报告

中南大学 《JAVA语言与系统设计》 实验报告 题目运用运用JavaFx画时钟运用JavaFx实现时钟动画学生姓名 指导教师 学院信息科学与工程学院 专业班级 完成时间

目录 第一章绪论............................................................................................... 1.1实验背景............................................................................................... 1.2实验意义.............................................................................................. 1.3JavaFX介绍......................................................................................... 第二章需求分析..................................................................................... 2.1题目描述............................................................................................. 2.1.1 实验一.................................................................................... 2.1.2 实验二.................................................................................... 2.2 概要设计........................................................................................... 2.2.1 实验一.................................................................................... 2.2.2 实验二.................................................................................... 2.3 程序清单........................................................................................... 2.3.1 实验一代码............................................................................ 2.3.2 实验二代码............................................................................ 第三章调试分析.................................................................................... 3.1 结果分析......................................................................................... 3.1.1 实验一结果............................................................................ 3.1.2 实验二结果............................................................................ 3.2 调试报告........................................................................................ 心得体会.................................................................................................

中南大学机械制造工艺学实验报告

机械制造工艺学实验报告 班级机械1301 姓名黄佳清 学号 07

中南大学机电学院 《机械制造工艺学》课程实验报告 实验名称:加工误差的统计分析 姓名:黄佳清班级:机械1301 学号: 07 实验日期: 2015 年 10 月 18 日指导教师:成绩: 1. 实验目的 (1)掌握加工误差统计分析方法的基本原理和应用。 (2)掌握样本数据的采集与处理方法,要求:能正确地采集样本数据,并能通过对样本 数据的处理,正确绘制出加工误差的实验分布曲线和图。 (3)能对实验分布曲线和图进行正确地分析,对加工误差的性质、工序能力及工艺 稳定性做出准确的鉴别。 (4)培养对加工误差进行综合分析的能力。 2. 实验内容与实验步骤

1.按加工顺序测量工件的加工尺寸,记录测量结果。 2.绘制直方图和分布曲线 1)找出这批工件加工尺寸数据的最大值x max和最小值x min,按下式计算出极差R。 R=x max一x min 2)确定分组数K(K一般根据样本容量来选择,建议可选在8~11之间)。 3)按下式计算组距 d。 4)确定组界(测量单位:微米)。 5)做频数分布表。 6)计算x和 。 7)画直方图 以样本数据值为横坐标,标出各组组界;以各组频率密度为纵坐标,画出直方图。 8)画分布曲线 若工艺过程稳定,则误差分布曲线接近正态分布曲线;若工艺过程不稳定,则应根据实际情况确定其分布曲线。画出分布曲线,注意使分布曲线与直方图协调一致。 9)画公差带 在横轴下方画出公差带,以便与分布曲线相比较。 3.绘制图 1)确定样组容量,对样本进行分组

样组容量m 通常取4或5件。按样组容量和加工时间顺序,将样本划分成若干个样组。 2)计算各样组的平均值和极差 对于第i 个样组,其平均值和极差计算公式为: ∑==m j ij i x m x 1 1 式中 ——第i 个样组的平均值; ——第i 个样组的标准差; ——第i 个样组第j 个零件的测量值; ——第i 个样组数据的最大值; ——第i 个样组数据的最小值 3)计算图控制限(计算公式见实验原理) 4)绘制 图 以样组序号为横坐标,分别以各样组的平均值和极差R 为纵坐标,画出图,并在图上标出中心线和上、下控制限。 4. 按下式计算工序能力系数Cp 5. 判别工艺过程稳定性 可按下表所列标准进行判别。注意,同时满足表中左列3个条件,工艺过程稳定;表中右列条件之一不满足,即表示工艺过程不稳定。

计算机网络课程设计实验报告

中南大学课程设计报告 课程:计算机网络课程设计 题目:基于Winpcap的网络流量统计分析 指导教师:张伟 目录 第一章总体设计 一、实体类设计 --------P3 二、功能类设计 --------P3 三、界面设计 --------P3

第二章详细设计 一、实体类实现 --------P4 二、功能类实现 --------P4 三、界面实现 --------P5 第三章源代码清单及说明 一、CaptureUtil.java --------P7 二、MyPcapPacketHandler.java --------P9 三、PacketMatch.java --------P9 四、Windows.java --------P13 第四章运行结果 --------P19 第五章心得体会 --------P21 第一章总体设计 一、实体类设计 TCP、UPD、ICMP、ARP、广播数据包五个包的数据结构设计 二、功能类设计 (1)网卡获取 (2)包的抓捕

(3)包的处理 三、界面设计 (1)布局 (2)按钮功能连接 第二章第二章详细设计 一、实体类实现 TCP、UPD、ICMP、ARP、广播数据包五个包的数据结构设计。 本程序采用Java编写,基于win10pcap。Win10pcap是winpcap在win10系统上的适用版本。Java对于winpcap使用jnetpcap进行支持。对于TCP、UPD、ICMP、ARP、广播数据包五种类型的包,在jnetpcap的jar包中大部分已经封装好了相关的实体类型。对应如下:ARP 实体类:https://www.doczj.com/doc/3c14661887.html,work.Arp; UPD 实体类:https://www.doczj.com/doc/3c14661887.html,work.Icmp;

大学物理实验--霍尔效应实验报告

实验报告模板 实验题目:霍尔效应实验 学 号 姓名实验日期 实验目的1.了解霍尔效应的物理过程。 2.学习用对称测量法消除负效应的影响,测量试样的霍尔电压。 3.确定试样的导电类型,载流子浓度以及迁移率。 实验原理将一个半导体薄片放在垂直于它的磁场中(B的方向沿z轴方向),当沿y方向的电极 、 ′上施加电流I时,薄片内定向移动的载流子(设平均速率为u)受到洛伦兹力的作用。无论载流子是负电荷还是正电荷,均在洛伦兹力的作用下,载流子发生偏移,产生电荷积累,从而在薄片 、 ′两侧产生一个电位差,形成一个电场E。电场使载流子又受到一个与洛伦兹力方向相反的电场力。达到稳定状态时,两力相等。此时两侧的电压称为霍尔电压。

实验内容1.开机调零 2.正确接线 3.保存接线状态 4.零磁场条件下,测量不等位电压 5.保持励磁电流不变,改变工作电流的值,测量霍尔电压值 6.保持工作电流不变,改变励磁电流的值,测量霍尔电压值 7.计算霍尔效应系数,霍尔元件载流子浓度,霍尔元件电导率,霍尔元件载流子迁移率 8.关机整理仪器 数据处理

误 差 分 析 及 思 考 题思考题:霍尔元件为什么选用半导体薄片?答:霍尔效应,一般在半导体薄片的长度方向上施加磁感应强度为B 的磁场,则在宽度方向上会产生电动势UH,这种现象即称为霍尔效应。UH 称为霍尔电势,其大小可表示为:UH=RH/d*I*B,RH 称为霍尔系数,由导体材料的性质决定;d 为导体材料的厚度,I 为电流强度,B 为磁感应强度。设RH/d=K,则公式可写为:UH=K*I*B 可见,霍尔电压与控制电流及磁感应强度的度乘积成正比,K 值越大,灵敏度就越高,输出电压也越大,所以要选用薄片。霍尔系数:K=1/(n*q),n 为载流子密度,一般金属中载流子密度很大,所以金属材料的霍尔系数很小,霍尔效应不明显;而半导体中的载流子的密度比金属要小得多,所以半导体的霍尔系数比金属大得多,能产生较大的霍尔效应,所以用半导体。 教师 总 评 (教师填写,每个实验按10分记。 )分说明:实验报告最终以“学号-姓名-实验名称”为文件名,在实验当日内上传实验报告。

中南大学程序设计语言C++(课程设计2015级) - 副本

智能15级《程序设计语言(C++)》 课程设计任务书 一、课程设计目的 本课程设计是智能科学与技术专业的重要实践性课程。是学习完《计算机与程序设计语言基础》课程后进行的一次全面的综合练习。通过课程设计,一方面可以结合课程的教学内容循序渐进地进行设计方面的实践训练,另一方面,在参与一系列综合项目的实践过程中,还能提高如何综合运用所学知识解决实际问题的能力,以及获得相关项目管理和团队合作等众多方面的具体经验。为后续课程面向对象程序设计等课程奠定必要的实践基础。 设计目的如下: 1.进一步培养学生结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解。 2.针对C++语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。 3.掌握C++语言的编程技巧和上机调试程序的方法。 4.掌握程序设计中的常用算法。 为了使学生从课程设计中尽可能取得比较大的收获,对课程设计题目分成二类,一类为基础训练题目,从中学习到程序设计的常用算法,另一类为综合题目。学生可根据自己的能力和兴趣从两类中各选择一个设计题完成。 二、课程设计内容 分组形式:可2-4人组队 题目要求:A类题目必须全部完成,B类题目3题内选择2题完成 A组题型:基本知识单项训练() 设计题1、数据连接 编写函数实现两个字符单向链表的连接。函数以对两个链表头的引用作为参数,把第二个链表连接到第一个链表后面。 设计题2、字符处理 设计函数,实现英文字符的大小写转换并去除其他字符。要求:字符串中的小写字

符自动变换成对应的大写字符,而大写字符则变换成对应的小写字符。另,如果字符串中存在除英文大小写之外的字符请去除掉。 设计题3、数据统计 求数组中离平均数最近的那个数。假定函数int mid(int a[], int len); 计算数组a中所有数的平均值,并返回数组中离该平均值最近的那个数。 设计题4、抓交通肇事犯 一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号中后4位数字的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号刚好是一个整数的平方。满足上述要求的车牌号只有一个。请根据以上线索求出该车号后4位数字。 B组题型:综合训练类 设计题5、投票管理系统 设计一个如图1所示的投票管理系统界面 图1投票管理系统界面 要求输入候选人名单后,点击确认按钮实现使用选择框代表候选人,计选择框的名字就是候选人的名字。点击取消按钮候选人输入框为空,重新输入候选人名单。选中候选人的选择框时,表示给该候选人投一票。点击确定按钮时表示产生一张选票。点击刷新

学生成绩管理系统_课程设计报告

中南大学 《C语言程序设计》 课程设计报告课题名称:学生成绩管理系统 专业电气信息 学生姓名舒畅 班级0914 学号0909091424 指导教师穆帅 完成日期2010年7月10日 信息科学与工程学院

目录 1 课程设计的目的 (1) 2 设计内容与要求 (1) 3 主要技术指标及特点 (2) 3.1 登录界面显示 (2) 3.2登记学生资料 (4) 3.3保存学生资料 (5) 3.4 删除学生资料 (6) 3.5修改学生资料 (7) 3.6 查询学生资料 (8) 3.6统计学生资料(自加功能) (8) 3.8对学生资料进行排序 (9) 3.9程序主要代码 (9) 4 设计小结 (31)

成绩管理系统 1 课程设计的目的 1.加深对《C语言程序设计》课程知识的理解,掌握C语言应用程序的开发方法和步骤; 2.进一步掌握和利用C语言进行程设计的能力; 3.进一步理解和运用结构化程序设计的思想和方法; 4.初步掌握开发一个小型实用系统的基本方法; 5.学会调试一个较长程序的基本方法; 6.学会利用流程图或N-S图表示算法; 7.掌握书写程设计开发文档的能力(书写课程设计报告)。 2 设计内容与要求 设计内容:成绩管理系统 现有学生成绩信息,内容如下: 姓名学号 C 数学英语 shuchang 12 99 98 99 jiutian 32 87 68 87 changzi 33 98 89 99 jiutia 13 7 43 45 设计要求: ?封面(参见任务书最后一页) ?系统描述:分析和描述系统的基本要求和内容; ?功能模块结构:包括如何划分功能模块,各功能模块之间的结构图,以及各模块 的功能描述; ?数据结构设计:设计数据结构以满足系统的功能要求,并加以注释说明; ?主要模块的算法说明:即实现该模块的思路; ?运行结果:包括典型的界面、输入和输出数据等; ?总结:包括C语言程序设计实践中遇到的问题,解决问题的过程及体会、收获、

中南大学C语言课程设计-学生成绩管理系统

中南大学 二○一三~二○一四学年第一学期 信息科学与工程学院 程序设计基础实践 设计报告 课程名称:程序设计基础实践 班级:2013级物联网工程1302班学号:0919130205 姓名:X晨 指导教师:杨希

二○一三年十二月 目录/Contet 课程设计题目 (1) 题目初步分析 (1) 程序总体设计 (2) 程序具体设计……………………………………………………… 10 程序调试测试……………………………………………………… 12 心得与体会………………………………………………………… 33 源代码……………………………………………………………… 33

课程设计题目 学生成绩管理系统 学生信息为:学号、XX、年龄、性别、出生年月、地址、、各科成绩等,试设计一个学生信息管理系统,使之能提供以下功能。 1.学生信息录入; 2.学生信息浏览; 3.按学号、XX查询; 4.学生成绩排序; 5.学生信息修改与删除。 6.综合信息输出。 题目初步分析 对对象的处理 1.由于每一个对象都包括多个成属性,所以要考虑数据的存储形式要用结构体类型来实现。 2.假如以数组的方式来存储,当然可以,但是定义一个数组,首先必须知道学生人数大概是多少,以便我们确定数组的大小,但是题目中没有给出,而且题目要求中有大量的删除、插入操作,所以用链表的方式比较方便。 3.由于题目中的数据需要长期保存,用普通的函数来写已经不可以满足要求了,所以需要用到文件来存储。 对过程的处理 1.输入学生信息(设计一个生成链表程序,并将链表中的数据保存到一个数据文件中); 2.插入(修改)学生信息(设计一个从数据文件中读数据的程序并将数据存放在链表中进行操作,最后将处理后链表中的数据再次保存到一个数据文件中); 3.删除学生信息(设计一个从数据文件中读数据的程序并将数据存放在链表中进行操作,最后按照要求将链表中的某个数据删除后再次保存到一个数据文件中);

中南大学软件体系结构实验报告-实验1

实验1 UML实验 实验学时: 4 每组人数:1 实验类型:3 (1:基础性2:综合性3:设计性4:研究性) 实验要求:1 (1:必修2:选修3:其它) 实验类别:3 (1:基础2:专业基础3:专业4:其它) 一、实验目的 1.学会安装和使用建模工具PowerDesigner,熟练使用PowerDesigner绘制常用的UML 图形,熟悉常用的UML建模符号; 2.构建用例模型来描述软件需求,包括绘制用例图,撰写用例文档并制作用例检查矩阵; 3. 学习使用状态图描述对象的状态及转换; 4.学习使用活动图为业务流程建模; 5. 学习使用顺序图描述对象之间的交互; 6. 学习类图的绘制; 7. 学习从系统需求中识别类,并构建相应的面向对象模型; 8. 学习使用PowerDesigner实现正向工程和逆向工程; 9. 学习使用组件图描述每个功能所在的组件位置以及它们之间的关系; 10. 学习使用部署图描述软件中各个组件驻留的硬件位置以及这些硬件之间的交互关系。 二、实验内容 1. 某酒店订房系统描述如下: (1) 顾客可以选择在线预订,也可以直接去酒店通过前台服务员预订; (2) 前台服务员可以利用系统直接在前台预订房间; (3) 不管采用哪种预订方式,都需要在预订时支付相应订金; (4) 前台预订可以通过现金或信用卡的形式进行订金支付,但是网上预订只能通过信用卡进行支付; (5) 利用信用卡进行支付时需要和信用卡系统进行通信; (6) 客房部经理可以随时查看客房预订情况和每日收款情况。 绘制该酒店订房系统的用例图。 2. 根据以下场景绘制用例图: 某企业为了方便员工用餐,为企业餐厅开发了一个订餐系统(COS:Cafeteria Ordering System),企业员工可通过企业内联网使用该系统。该系统功能描述如下: (1) 企业的任何员工都可以查看菜单和今日特价;

中南大学C++课程设计实践报告!

中南大学 本科生课程设计(实践)任务书、设计报告 (C++程序设计) 题目学生成绩管理系统 学生姓名 指导教师 学院 专业班级 学生学号 计算机基础教学实验中心 年月日

学生成绩管理系统 关键字:学生成绩 MFC 编写系统 内容:定义一个结构体,存放下列信息: 学号、姓名、性别、系名、班级名、成绩等 1.学生成绩管理系统开发设计思想 要求: 一:数据输入:输入学生的相关信息,若用户输入数据或信息不正确,给出“错误”信息显示,重复刚才的操作;至少要输入10个学生的数据;可以随时插入学生信息记录; 二:每个学生数据能够进行修改并进行保存; 三:可以根据学号或者姓名删除某学生数据; 四:查询模块要求能按学号,按姓名,按班级等条件进行查询; 五:界面要求美观,提示信息准确,所有功能可以反复使用。 学生成绩管理程序从总体设计方面来看,基本的功能包括主控模块,数据输入模块,数据修改模块,数据查询模块等。 设计模块图:

2.系统功能及系统设计介绍 详细设计: 对于总体设计说明的软件模块,进一步细化,要说明各个模块的逻辑实现方法。下面逐个说明。 主控模块:主要完成初始化工作,包括屏幕的初始化,显示初始操作界面。初始界面中主要包括功能的菜单选择项。 输入处理:利用链表技术输入多名学生的数据,直到输入学生的学号以“@”开头,则结束数据的输入。程序运行流程图如下:删除处理:利用链表技术删除某学号的学生成绩信息,如果找到该学号则进行删除,否则输出“未找到”的信息。程序运行流程图略。 查找处理:利用链表技术根据学生学号或姓名等方式查找某学号

的学生成绩信息,其程序流程图略。 排序处理:利用链表技术根据学生学号对学生数据进行排序,其 部分源代码如下:/***********xuesheng.c***********/ /******头文件(.h)***********/ #include "stdio.h" /*I/O函数*/ #include "stdlib.h" /*其它说明*/ #include "string.h" /*字符串函数*/ #include "conio.h" /*屏幕操作函数*/ #include "mem.h" /*内存操作函数*/ #include "ctype.h" /*字符操作函数*/ #include "alloc.h" /*动态地址分配函数*/ #define N 3 /*定义常数*/ typedef struct z1 /*定义数据结构*/ { char no[11]; char name[15]; char sex[5]; char major[15]; char class[15];

中南大学 计算机体系结构实验报告

计算机体系结构课程设计 学院:信息科学与工程学院 专业班级: 指导老师: 学号: 姓名:

目录 实验1 对指令操作码进行霍夫曼编码 (3) 一、实验目的 (3) 二、实验内容 (3) 三、设计思路 (4) 四、关键代码 (4) 五、实验截图 (5) 六、源代码 (5) 实验2 使用LRU 方法更新Cache (8) 一、实验目的 (8) 二、实验内容 (8) 三、设计思路 (9) 四、程序截图 (9) 五、实验代码 (9) 实验总结 (16) 参考文献 (16)

实验1 对指令操作码进行霍夫曼编码一、实验目的 了解和掌握指令编码的基本要求和基本原理 二、实验内容 1. 使用编程工具编写一个程序,对一组指令进行霍夫曼编码,并输出最后的编码结果以及对指令码的长度进行评价。与扩展操作码和等长编码进行比较。 2. 问题描述以及问题分析 举例说明此问题,例如: 下表所示: 对此组指令进行 HUFFMAN 编码正如下图所示: 最后得到的HUFFMAN 编码如下表所示:

最短编码长度为: H=0.45*1+0.30*2+0.15*3+0.05*4+0.03*5+0.01*6+0.01*6=-1.95. 要对指令的操作码进行 HUFFMAN 编码,只要根据指令的各类操作码的出现概率构造HUFFMAN 树再进行 HUFFAM 编码。此过程的难点构造 HUFFMAN 树,进行 HUFFAM 编 码只要对你所生成的 HUFFMAN 树进行中序遍历即可完成编码工作。 三、设计思路 观察上图,不难看出构造 HUFFMAN 树所要做的工作:1、先对各指令操作码的出现概率进行排序,构造一个有序链表。2、再取出两个最小的概率节点相加,生成一个生的节点加入到链表中,同时从两表中删除此两个节点。3、在对链表进行排序,链表是否只有一个节点,是则 HUFFAN 树构造完毕,否则继续做 2 的操作。为此设计一个工作链表(链表的元素时类,此类的功能相当结构。)、HUFFMAN 树节点、HUFFMAN 编码表节点。 四、关键代码 哈夫曼树重点在于如何排列权值大小不同的结点的顺序 private int leafNum; //叶子结点个数 private HaffmanNode[] hnodes; //哈夫曼树的结点数组 public HaffManCode(double[] weight) //构造指定权值集合的哈夫曼树 { int n = weight.length; //n个叶子结点 this.leafNum = n; this.hnodes = new HaffmanNode[2*n-1]; //n个叶子结点的哈夫曼树共有2n-1个结点 for(int i=0; i

中南大学Linux实验报告

Central South University UNIX/Linux 实验报告 学院: 信息科学与工程学院 班级: 物联网1102班 学号: 0909111612 姓名: 田刚 时间: 2014年5月4

实验一 Linux的安装 1、实验目的 (1)了解硬盘分区的概念和方法; (2)掌握硬盘的分区规划; (3)掌握Linux操作系统的安装和配置过程。 2、实验设备 一台pc机、RedHat Linux 7.2以上版本、VMware Workstation v5.5 3、实验原理 Linux可以以多种方式安装在PC机上: (1)独立分区安装、 (2)DOS分区安装和 (3)虚拟机VMWare下安装。鉴于VMware下安装对原来系统影响较小且不影响本实验目的,因此采用VMWare下安装方式。 4、实验步逐 (1) 在Windows XP下安装VMware 5.5 (2)配置虚拟机 (3)启动虚拟机 (4)启动Linux安装过程 (5)安装过程配置 (6)安装后配置 (7)第1次启动 VMWare下Linux操作系统 5、实验记录

(1)记录详细安装过程 这是在本机安装的VM,VM软件安装比较简单,详细过程 不再贴图。 (2)安装过程中出现的问题及其解决措施 此安装过程按照默认安装即可,其中要特别注意的是该 软件需要注册,所以必须要提前准备好注册码。 实验2 Linux基本操作 1、实验目的 (1)复习Linux基本命令。 (2)掌握常用Linux命令 2、实验内容 (1)练习命令行模式下的常用命令: man:命令帮助 ALT-Fx:虚终端切换 常用命令:cat、Ls、ps、chmod、kill、ln、cp、mv、rm、cd、pwd、mkdir、chown、who、w、wc、whoami、date、uname 等 (2) 编辑器vi的使用:使用vi建立并修改一个文本文件

中南大学课程设计报告

CENTRAL SOUTH UNIVERSITY 课程设计说明书 现代铝电解槽新型阳极结构设计 题目(单槽日产量2.4t,电流密度0.76A·cm-2) 学生姓名刘冬 专业班级冶金 00906 班 学生学号0503090706 指导教师伍上元 学院冶金科学与工程学院 完成时间2012年9月11日

目录 第一章概述 1.1现代铝电解槽结构发展趋势 (3) 1.2所设计电解槽阳极结构的特点 (4) 第二章铝电解槽结构简介 2.1 上部结构 (5) 2.1.1 阳极炭块组 (6) 2.1.2 阳极升降装臵 (6) 2.1.3 承重结构 (7) 2.1.4 加料装臵 (7) 2.1.5 集气装臵 (8) 2.2 阴极结构 (9) 2.2.1 槽壳与摇篮架 (10) 2.2.2 槽内衬 (11) 2.3 母线结构 (13) 2.3.1 阳极母线 (13) 2.3.2 阴极母线 (14) 2.4 绝缘设施 (15) 第三章铝电解结构计算 3.1 阳极电流密度 (15) 3.2 阳极炭块尺寸 (15) 3.3 阳极炭块数目 (17) 3.4 槽膛尺寸 (17) 3.5 槽壳尺寸 (17) 3.6 阴极碳块尺寸 (17) 第四章阳极结构设计 4.1 阳极炭块组 (18) 4.2 换极周期与顺序 (19) 4.3 阳极炭块质量要求与组装 (20) 4.3.1 阳极炭块质量要求 (20) 4.3.2 阳极组装 (21) 第五章参考文献 (22) 2

第一章概述 1.1现代铝电解槽结构发展趋势 20世纪80年代以前,工业铝电解的发展经历了几个重要阶段,其标志的变化有:电解槽电流由24kA、60kA增加至100-150kA;槽型主要由侧插棒式(及上插棒式)自焙阳极电解槽改变为预焙阳极电解槽;电能消耗由吨铝22000kW·h降低至15000kW·h;电流效率由70%-80%逐步提高到85-90%。 1980年开始,电解槽技术突破了175kA的壁垒,采用了磁场补偿技术,配合点式下料及电阻跟踪的过程控制技术,使电解槽能在氧化铝浓度变化范围很窄的条件下工作,为此逐渐改进了电解质,降低了温度,为最终获得高电流效率和低电耗创造了条件。在以后的年份中,吨铝最低电耗曾降低到12900-13200 kW·h,阳极效应频率比以前降低了一个数量级。 80年代中叶,电解槽更加大型化,点式下料量降低到每次2kg氧化铝,采用了单个或多个废气捕集系统,采用了微机过程控制系统,对电解槽能量参数每5s进行采样,还采用了自动供料系统,减少了灰尘对环境的影响。进入90年代,进一步增大电解槽容量,吨铝投资较以前更节省,然而大型槽(特别是超过300kA)能耗并不低于80年代初期较小的电解槽,这是由于大型槽采取较高的阳极电流密度,槽内由于混合效率不高而存在氧化铝的浓度梯度;槽寿命也有所降低,因为炉帮状况不理想,并且随着电流密度增大,增加了阴极的腐蚀,以及槽底沉淀增多,后者是下料的频率比较高,而电解质的混合程度不足造成的。尽管如此,总的经济状况还是良好的。 90年代以来,电解槽的技术发展有如下特点: (1)电流效率达到96%; (2)电解过程的能量效率接近50%,其余的能量成为电解槽的热损而耗散; (3)阳极的消耗方面,炭阳极净耗降低到0.397kg/kg(Al); (4)尽管设计和材料方面都有很大的进步,然而电解槽侧部仍需要保护性的炉帮存在,否则金属质量和槽寿命都会受负面影响; (5)维护电解槽的热平衡(和能量平衡)更显出重要性,既需要确保极距以产生足够的热能保持生产的稳定,又需要适当增大热损失以形成完好的炉帮,提高槽 寿命。 我国的电解铝工业可自1954年第一家铝电解厂(抚顺铝厂)投产算起,至2010年已有56年历史,在电解槽设计中,已掌握“三场”仿真技术,在模拟与优化方面采用了ANSYS 3

中南大学现代控制理论实验报告

中南大学 现代控制理论实验报告 指导老师:年晓红、郭宇骞 姓名: 学号: 专业班级: 实验日期: 2015.6.11 学院:信息科学与工程学院

实验1 用MATLAB分析状态空间模型 1、实验设备 PC计算机1台,MATLAB软件1套。 2、实验目的 ①学习系统状态空间表达式的建立方法、了解系统状态空间表达式与传递函数 相互转换的方法; ②通过编程、上机调试,掌握系统状态空间表达式与传递函数相互转换方法学 习系统齐次、非齐次状态方程求解的方法,计算矩阵指数,求状态响应; ③通过编程、上机调试,掌握求解系统状态方程的方法,学会绘制状态响应曲 线; ④掌握利用MATLAB导出连续状态空间模型的离散化模型的方法。 3、实验原理说明 参考教材P56~59“2.7 用MATLAB分析状态空间模型” 参考教材P99~101“3.8 利用MATLAB求解系统的状态方程” 4、实验步骤 ①根据所给系统的传递函数或A、B、C矩阵,依据系统的传递函数阵和状 态空间表达式之间的关系式,采用MATLAB编程。 ②在MATLAB界面下调试程序,并检查是否运行正确。 ③根据所给系统的状态方程,依据系统状态方程的解的表达式,采用 MATLAB编程。

④ 在MATLAB 界面下调试程序,并检查是否运行正确。 5、实验习题 题1.1 已知SISO 系统的传递函数为 2432 58 ()2639 s s g s s s s s ++=++++ (1)将其输入到MATLAB 工作空间; (2)获得系统的状态空间模型。 解: (1) num=[1,5,8] ; den=[1,2,6,3,9] ; G=tf(num , den) Transfer function: s^2 + 5 s + 8 ----------------------------- s^4 + 2 s^3 + 6 s^2 + 3 s + 9 (2) G1=ss(G) a = x1 x2 x3 x4 x1 -2 -1.5 -0.75 -2.25 x2 4 0 0 0 x3 0 1 0 0

中南大学数据库课程设计报告

数据库课程设计报告 学院:信息科学与工程学院专业班级:物联网工程1201班指导老师:盛津芳 学号:0909120122 姓名:李浩

日期:2015年1月10日

目录 课程设计要求 (4) 概要设计:(数据库) (6) 概要设计:(程序) (8) 详细设计(数据库) (9) 详细设计(程序) (12) 系统展示 (13) 安全性控制 (20) 关键技术 (21) 心得体会 (21)

《数据库课程设计》任务书 1 任务概述 某医院拟开发一个挂号系统,以方便患者就医,提高医疗服务水平。患者在医院就诊前需要提供姓名、身份证号码、联系电话等个人信息并办理一张诊疗卡,该诊疗卡在每次挂号时需要出示给挂号的工作人员。患者在挂号时,需说明科室名称以及医生的职称。挂号以半个工作日为一个班次,系统中保存各科室门诊医生的排班表,每位医生每个班次能够接诊的病人人数可设置一个上限。 本次课程设计要求设计并实现一个虚拟的医院挂号系统。系统中包含两个子系统,即由医院内部工作人员使用的挂号系统,以及患者使用的网上预约挂号系统。其中网上预约挂号系统的前端要求是浏览器,即采用B/S模式开发。医院工作人员使用的挂号系统采用C/S 模式开发,前端开发工具不限,可采用PowerBuilder, Delphi, VB,VC,Java等。后台数据库要求采用SQL SERVER2005或Oracle 11g及以上版本。 2 功能描述 2.1 医院工作人员使用的挂号系统 该系统仅供医院内部工作人员使用,主要分为挂号人员和系统管理人员两类角色,需提供以下功能: 1)办理诊疗卡。患者提供姓名、身份证号码、联系电话等个人信息,挂号人员为其办理一张长期有效的诊疗卡。 2)挂号。挂号人员根据患者要求的科室、医生职称分配一个候诊号,并收取相应的诊疗费用,诊疗费用根据医生的职称分为不同的档次。医生当班次接诊患者人数 不能超过预先设定的上限。 3)修改挂号。患者可更改就诊的科室,挂号人员根据更改后的科室和医生职称,重新计算诊疗费用的差值,多退少补。 4)查询挂号情况。挂号人员可查询某位医生目前的挂号情况。 5)挂号费当班结转。系统对每个班次收取的挂号费生成相应的统计表,并提供查询功能,包括该班次总的挂号费用、各个挂号人员该班次总的挂号费用、各位医生 该班次总的挂号费用。 6)参数维护。系统管理人员负责维护各种参数,包括科室、医生、医生排班表、号类字典。医生的基本信息、排班表、诊疗费标准、各班次医生接诊人数上限都是 可以修改的,尽量提高系统的灵活性和可扩展性。 7)系统维护。系统管理人员负责管理用户、分配权限、管理密码。 2.2 网上预约挂号系统 该系统供患者使用,需提供以下功能: 1)用户注册。提供注册所需基本信息,必须实名注册。 2)用户可修改注册信息。 3)用户可查询指定时间的某科室的医生排班表。

相关主题
文本预览
相关文档 最新文档