面向对象程序设计课程设计报告

面向对象程序设计课程设计报告
面向对象程序设计课程设计报告

学生课程实验报告书

14 级计算机与信息科学系系

软件专业 1401 班

学号 3148907101 姓名钟媛媛

学号 3148907107 姓名蔡丽萍

2015 --2016 学年第 2 学期实验项目:

模拟实现银行ATM自动取款机系统

实验时间: 2016.5

实验内容:

一、课程设计的目的

1、掌握面向对象编程的思想和方法;

2、熟悉C++项目开发代码风格;

3、理解项目需求,划分项目模块,学会设计数据库或数据结构及接口;

4、掌握C++编程调试的基本技能;

5、掌握项目实现流程。

二、具体内容

模拟实现银行ATM自动取款机系统。系统主要功能:

(1)客户登录

(2)余额查询

(3)取款

(4)转账

(5)借存记录查询

1 项目分析

了解项目应用领域的ATM流程、操作规范,明确项目需求、确定项目功能。

1.1功能描述

画出功能结构图,介绍系统中各模块的主要功能。

1.2 ATM流程

画出系统ATM流程图。

1.3数据库设计

根据系统数据需求,进行数据库概念设计、数据表设计。用户信息表:

1.4功能模块分

record

id

name

states zmoney 记录查询

介绍系统的功能模块设计思路,画出模块工作流程图。

2 项目实现

使用C++编程实现项目。

2.1 功能模块设计

系统中各类关系图,类的设计(类的定义)。

class ATM

{

public:

int withdraw();//取款

void zhuan();//转账

void balance();//余额查询

int interfac();//登陆

int menu1();//菜单

void record_info();//记录查询

public:

string name;//用户名

string number;//账号

float money;//余额

string password;//密码

};

2.2 项目实现

系统中各类的实现(各类成员函数的实现)。 void ATM::record_info()//记录查询

{

HRESULT

hr=db.Connect("(local)","ATMinfo","li","123","1433"); //链接数据库

cout<<"---------------------------------"<

cout<<"请输入查询的账号:";

string number;

cin>>number;

string sql="select * from record where id ='"+number+"'";

RECORDSET rs=db.JExecuteWithRecordset(sql);

while(rs->rsEOF)

{

cout<<"---------------------------------"<

cout<<"该卡号不存在,请重新输入:";

cin>>number;

sql="select * from record where id ='"+number+"'";

rs=db.JExecuteWithRecordset(sql);

}

while(!rs->rsEOF)

{

cout<<"*********************************"<

cout<<"用户卡号:"<

cout<<"姓名:"<

cout<<"状态类型:"<

cout<<"时间"<

cout<<"金额: "<

cout<<"*********************************"<

rs->MoveNext();

}

db.Close();

}

void ATM::zhuan()//转账

{

gettime();

HRESULT

hr=db.Connect("(local)","ATMinfo","li","123","1433"); //链接数据库

if(hr==-1)

{

cout<<"Connection fail!"<

return;

}

cout<<"************************************"<

cout<<"请输入您的卡号:";

string number;

cin>>number;

cout<<"请输入您的姓名:";

string user_name;

cin>>user_name;

string sql="select id from user_bank_info where id ='"+number+"'";

RECORDSET rs=db.JExecuteWithRecordset(sql);

while(rs->rsEOF)

{

cout<<"##################################"<

cout<<"该账号不存在,请重新输入:";

cin>>number;

sql="select id from user_bank_info where id ='"+number+"'";

rs=db.JExecuteWithRecordset(sql);

}

cout<<"**************************************"<

cout<<"请输入对方卡号:";

string number2;

cin>>number2;

cout<<"请输入对方姓名:";

string user_name2;

cin>>user_name2;

string sql1="select id from user_bank_info where id ='"+number2+"'";

RECORDSET rs1=db.JExecuteWithRecordset(sql1);

while(rs1->rsEOF)

{

cout<<"###################################"<

cout<<"无此卡号,请重新输入:";

cin>>number2;

sql1="select id from user_bank_info where id ='"+number2+"'";

rs1=db.JExecuteWithRecordset(sql1);

}

cout<<"请输入您要转账的金额:"<

string money;

cin>>money;

string take_state;

take_state= "转账";

string sql3="update user_bank_info set blance=blance-"+money+" where id='"+number+"'";

long status=db.JExecuteWithoutRecordset(sql3);

if(status>0)

{

cout<<"***********************************"<

cout<<"转账成功!"<

}

else

{

cout<<"***********************************"<

cout<<"转账失败!"<

}

string sql4="update user_bank_info set blance=blance+"+money+" where id='"+number2+"'";

long status2=db.JExecuteWithoutRecordset(sql4);

if(status>0)

{

cout<<"************************************"<

cout<<"收款成功!"<

}

else

{

cout<<"************************************"<

cout<<"收款失败!"<

}

string sql5="insert into record values('"+number+"','"+user_name+"','"+take_state+"', '"+money+"','"+time2+"') ";

long status1=db.JExecuteWithoutRecordset(sql5);

if(status1>0)

{

cout<<"---------------------------------"<

cout<<"您的转账记录添加成功!"<

}

else

{

cout<<"---------------------------------"<

cout<<"您的转账记录添加失败!"<

}

string take_state2="收款";

string sql6="insert into record values('"+number2+"','"+user_name2+"','"+take_state2+ "','"+money+"','"+time2+"') ";

long status3=db.JExecuteWithoutRecordset(sql6);

if(status3>0)

{

cout<<"---------------------------------"<

cout<<"对方转账记录添加成功!"<

}

else

{

cout<<"---------------------------------"<

cout<<"对方转账记录添加失败!"<

}

db.Close();

}

void ATM::balance()//余额查询

{

gettime();

HRESULT

hr=db.Connect("(local)","ATMinfo","li","123","1433"); //链接数据库

if(hr==-1)

{

cout<<"Connection fail!"<

return;

}

cout<<"*************************************"<

cout<<"请输入您要查询的账号:";

string number1;

cin>>number1;

cout<<"请输入姓名:"<

string user_name1 ;

cin>>user_name1;

string sql="select * from user_bank_info where id ='"+number1+"'";

RECORDSET rs=db.JExecuteWithRecordset(sql);

while(rs->rsEOF)

{

cout<<"*********************************"<

cout<<"该账号不存在,请重新输入:";

cin>>number1;

sql="select * from user_bank_info where id ='"+number1+"'";

rs=db.JExecuteWithRecordset(sql);

}

cout<<"*********************************"<

cout<<"当前余额:"<

db.Close();

}

int ATM::withdraw()//取款{

gettime();

HRESULT

hr=db.Connect("(local)","ATMinfo","li","123","1433"); //链接数据库

if(hr==-1)

{

cout<<"Connection fail!"<

return 0;

}

cout<<"---------------------------------"<

string number;

string user_name;

string take_state;

cout<<"请输入您的卡号:";

cin>>number;

string sql="select id from user_bank_info where id ='"+number+"'";

RECORDSET rs=db.JExecuteWithRecordset(sql);

while(rs->rsEOF)

{

cout<<"---------------------------------"<

cout<<"该账号不存在,请重新输入"<

cin>>number;

sql="select id from user_bank_info where id ='"+number+"'";

rs=db.JExecuteWithRecordset(sql);

}

cout<<"---------------------------------"<

string sql2="select name from user_bank_info where id ='"+number+"'";

RECORDSET rs2=db.JExecuteWithRecordset(sql2);

user_name =db.GetTextFiledVal(rs2,"name");

cout<<"请输入取款金额:"<

string cash;

cin>>cash;

string sql3="update user_bank_info set blance=blance-"+cash+" where id ='"+number+"'";

long rs3=db.JExecuteWithoutRecordset(sql3);//主要用于增删改

if(rs3>0)

{

cout<<"&&&&&&&&&&&&&交易成功!&&&&&&&&&&&&&&&&"<

}

else

{

cout<<"&&&&&&&&&&&&&余额不足!&&&&&&&&&&&&&&&"<

}

take_state = "取款";

string sql4="insert into record values('"+number+"','"+user_name+"','"+take_state+"', '"+cash+"','"+time2+"') ";//将信息插入到record表 RECORDSET rs4=db.JExecuteWithRecordset(sql4);

long status=db.JExecuteWithoutRecordset(sql4);

if(status>0)

{

cout<<"……………………………………………"<

cout<<"取款记录添加成功!"<

}

else

{

cout<<"………………………………………………"<

cout<<"取款记录添加失败!"<

}

return 0;

db.Close();

menu1();

}

int ATM::interfac()//登陆

{

HRESULT

hr=db.Connect("(local)","ATMinfo","li","123","1433"); //链接数据库

cout<<"请输入您的卡号:";

string user_number;

cin>>user_number;

string sql="select id from user_bank_info where id ='"+user_number+"'";

RECORDSET rs=db.JExecuteWithRecordset(sql);//主要用于查询和链接

while(rs->rsEOF)

{

cout<<"---------------------------------"<

cout<<"该账号不存在,请重新输入"<

cin>>user_number;

sql="select id from user_bank_info where id ='"+user_number+"'";

rs=db.JExecuteWithRecordset(sql);

}

cout<<"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"<

cout<<"请输入您的密码:";

string user_password ;

cin>>user_password;

string sql1="select passwd from user_bank_info where

id ='"+user_number+"' and passwd='"+user_password+"'";

RECORDSET rs1=db.JExecuteWithRecordset(sql1);

while(rs1->rsEOF)

{

cout<<"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"<

cout<<"密码错误,请重新输入:";

cin>>user_password;

sql1="select password from user_bank_info where id ='"+user_number+"' and passwd='"+user_password+"'";

rs1=db.JExecuteWithRecordset(sql1);

}

cout<<"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"<

cout<<"登陆成功!"<

db.Close();

return 1;

}

2.2 主控模块实现

void main()

{

HRESULT

hr=db.Connect("(local)","ATMinfo","li","123","1433"); //链接数据库

if(hr==-1)

{

cout<

}

cout<<"\t\t\t\t欢迎使用ATM机 "<

int flag = 0;//记录登陆状态

ATM atm;

flag = atm.interfac();

if(flag = 1)

{

while(1)

{

int index=atm.menu1();

switch(index)

{

case 1:

atm.withdraw();break;//取款 case 2:

atm.zhuan();break;

case 3:

atm.balance();break;

case 4:

atm.record_info();break;

case 5:

exit(0);

}

}

}

}

2.3 效果展示

3项目总结

在实验开始时,很迷茫,不知道如何下手,老师发的例子也不理解,看了几遍还是不清楚,不知如何把数据写进数据库?看了同学的代码,似乎有点理解,和合作的同学一起构造思路,询问班里的学霸,一点点改错,增加功能,每写一个功能就测试下,花了很多时间,但是能把项目做出来还是很欣慰的。

在这次试验,在数据库连接上花了一定时间,可能是SQL没有安装好的原因,一直连接不上,对此都快吐血了,然后借了别的宿舍的电脑才成功连接上。

通过这次试验,让我懂得了,不懂要多多询问,充分理解过程,理清思路,写代码前的设计也是很重要的,敲代码的过程中也要仔细认真,不得马虎。再者是合作也是很重要的,能节省很多时间,事半功倍。

指导教师评语:

实验成绩_______________ 指导教师_______________

课程设计实验报告

竭诚为您提供优质文档/双击可除 课程设计实验报告 篇一:课程设计(综合实验)报告格式 课程设计报告 (20XX--20XX年度第一学期) 名称:题目:院系:班级:学号:学生姓名:指导教师:设计周数: 成绩:日期:《软件设计与实践》课程设计计算机系软件设计与实践教学组 20XX年1月14 日 《软件设计与实践》课程设计 任务书 一、目的与要求 1.了解网络爬虫的架构和工作原理,实现网络爬虫的基本框架;2.开发平台采用JDK1.60eclipse集成开发环境。 二、主要内容 1.了解网络爬虫的构架,熟悉网页抓取的整个流程。

2.学习宽度优先和深度优先算法,实现宽度crawler应用程序的编写、调试和运行。 3.学习主题爬行及内容分析技术。 4.实现网络爬虫的基本框架。 三、进度计划 四、设计成果要求 1.要求按时按量完成所规定的实验内容; 2.界面设计要求友好、灵活、易操作、通用性强、具有实用性; 3.基本掌握所采用的开发平台。五、考核方式 平时成绩+验收+实验报告。 学生姓名:于兴隆指导教师:王蓝婧20XX年1月2日 一、课程设计的目的与要求1.目的: 1.1掌握crawler的工作原理及实现方法;1.2了解爬虫架构; 1.3熟悉网页抓取的整个流程及操作步骤; 1.4掌握宽度优先,深度优先算法,并实现宽度crawler 应用程序的编写、调试和运行;1.5掌握主题爬行及内容分析技术;1.6实现一个最基础的主题爬虫的过程;1.7理解pageRank算法,并编程验证;二、设计正文 网络爬虫研究与应用 [摘要]:本文通过对网络爬虫研究的逐步展开,讨论了爬虫的相关概念与技术,并通过实验设计了简单的基于宽度

贪吃蛇游戏课程设计实验报告全解

辽宁科技大学课程设计说明书 设计题目:基于C#的贪吃蛇游戏 学院、系:装备制造学院 专业班级:计算机科学与技术 学生姓名:叶佳佳 指导教师:丁宁 成绩: 2015年12月12日

目录 一、概述 (1) 1、用C#实现该设计的方法 (1) 2、贪吃蛇游戏说明 (1) 二、实验目的及设计要求 (1) 1、实验目的 (1) 2、实验要求 (2) 三、课程设计具体实现 (2) 1、概要设计 (2) 1.1、设计思想 (2) 1.2、主模块实现 (2) 1.3、主函数流程图 (4) 2、详细设计 (5) 2.1、设计思想 (5) 2.2、具体模块实现: (5) 四、调试过程及运行结果 (10) 1、调试过程 (10) 2、实验结果 (11) 五、实验心得 (12) 六、参考资料 (13) 七、附录:源代码 (13)

一、概述 1、用C#实现该设计的方法 首先应该了解设计要求,然后按照功能设计出实际模块,每个模块都要完成特定的功能,要实现模块间的高内聚,低耦合。设计模块是一个相当重要的环节,模块的数量不宜太多,也不宜太少,要是每个模块都能比较简单的转换成流程图。模块设计完成后,就该给每个模块绘制流程图。流程图要尽可能的简单且容易理解,多使用中文,补一些过长的代码,增加理解难度。此外,流程图应容易转换成代码。 根据流程图编写好代码后在WindowsXP操作系统,https://www.360docs.net/doc/357689205.html,2008开发环境下进行运行测试,检查错误,最终设计出可行的程序。 2、贪吃蛇游戏说明 游戏操作要尽可能的简单,界面要尽可能的美观。 编写程序实现贪吃蛇游戏,贪吃蛇游戏是一个深受人们喜欢的游戏:一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物,则表示食物被吃掉,这时蛇的身体长一节,同时计10分;接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁、障碍物或身体交叉(蛇头撞到自己的身体),则游戏结束。游戏结束时输出相应得分。 具体要求有以下几点: (1)对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理; (2)系统设计要实用,采用模块化程序设计方法,编程简练、可用,功能全面; (3)说明书、流程图要清楚; 二、实验目的及设计要求 1、实验目的 .NET课程设计是教学实践环节中一项重要内容,进行此课程设计旨在掌握基础知识的基础上,进一步加深对VC#.NET技术的理解和掌握; 提高和加强学生的计算机应用及软件开发能力,使学生具备初级程序员的基本素质; 培养学生独立分析问题、解决问题、查阅资料以及自学能力,以适应信息管理行业日新 1

网络协议分析实验报告

实 验 报 告 课程名称 计算机网络 实验名称 网络协议分析 系别 专业班级 指导教师 学号 姓名 实验日期 实验成绩 一、实验目的 掌握常用的抓包软件,了解ARP 、ICMP 、IP 、TCP 、UDP 协议的结构。 二、实验环境 1.虚拟机(VMWare 或Microsoft Virtual PC )、Windows 2003 Server 。 2.实验室局域网,WindowsXP 三、实验学时 2学时,必做实验。 四、实验内容 注意:若是实验环境1,则配置客户机A 的IP 地址:192.168.11.X/24,X 为学生座号;另一台客户机B 的IP 地址:192.168.11.(X+100)。在客户机A 上安装EtherPeek (或者sniffer pro )协议分析软件。若是实验环境2则根据当前主机A 的地址,找一台当前在线主机B 完成。 1、从客户机A ping 客户机B ,利用EtherPeek (或者sniffer pro )协议分析软件抓包,分析ARP 协议; 2、从客户机A ping 客户机B ,利用EtherPeek (或者sniffer pro )协议分析软件抓包,分析icmp 协议和ip 协议; 3、客户机A 上访问 https://www.360docs.net/doc/357689205.html, ,利用EtherPeek (或者sniffer pro )协议分析软件抓包,分析TCP 和UDP 协议; 五、实验步骤和截图(并填表) 1、分析arp 协议,填写下表 客户机B 客户机A

2、分析icmp协议和ip协议,分别填写下表 表一:ICMP报文分析

3、分析TCP和UDP 协议,分别填写下表

扫雷的课程设计报告

西安文理学院信息工程学院课程设计报告 设计名称:数据结构课程设计 设计题目:实现一个N*M的扫雷游戏 学生学号:1402130407 专业班级:软件13级四班 学生姓名:樊秀琳 学生成绩: 指导教师(职称):谢巧玲(讲师) 课题工作时间:2015.6.22 至2015.7.3

说明: 1、报告中的任务书、进度表由指导教师在课程设计开始前填写并发给每个 学生。 2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩。 3、所有学生必须参加课程设计的答辩环节,凡不参加答辩者,其成绩一律 按不及格处理。答辩由指导教师实施。 4、报告正文字数一般应不少于3000字,也可由指导教师根据本门综合设 计的情况另行规定。 5、平时表现成绩低于6分的学生,取消答辩资格,其本项综合设计成绩按 不及格处理。

信息工程学院课程设计任务书 指导教师:院长: 日期:2015年6月22日

信息工程学院课程设计进度安排表 学生姓名:樊秀琳学号:1402130407 专业:软件工程班级:13级四班 指导教师签名: 2014年6月22日

成绩评定表 学生姓名:樊秀琳学号:1402130407 专业:软件工程班级:13级四班

摘要 摘要: 扫雷游戏是Windows操作系统自带的一款小游戏,在过去的几年里,Windows操作系统历经数次换代更新,变得越来越庞大、复杂,功能也越来越强大,但是这款小游戏依然保持原来的容貌,可见这款小游戏受到越来越多人的喜爱。扫雷游戏是比较经典的一款小游戏,实现它的方法很多,可以用很多不同算法设计和语言实现,如C,C++,VB,JAVA等。我利用eclipse编写了与它功能相似的扫雷游戏,寓学于乐。 程序的功能是随机生成地雷数,通过鼠标操作玩游戏,不接受键盘,按任意键结束程序。单击屏幕上的笑脸可以重新开始游戏。所有地雷标出后胜利,当鼠标左键单击到地雷时提示游戏失败。其功能类似于Windows操作系统自带的扫雷游戏。论文首先介绍了进行该游戏课程设计的目的,然后是任务描述和设计的相关要求,最后是最重要的需求分析和设计方案。重点介绍了在游戏过程中各事件的处理,其中又以鼠标事件和清除未靠近地雷区方块这两方面最为最要,鼠标事件是利用鼠标所发出的信息了解用户的意图,进而做出相对应的动作。清除未靠近地雷区的方块较为复杂。 关键词:算法设计;事件;Eclipse

网页制作课程设计报告

网页制作课程设计报告 学院: 专业班级: 姓名: 学号: 成绩: 阅卷教师:

目录 1.设计目的 (1) 2.设计思想 (1) 2.1网站整体结构规划思想 (1) 2.2 主页设计思想 (1) 2.3子页的设计思想 (1) 3网页详细设计分析 (1) 4结论 (2)

1.设计目的 阐述该个人网站的设计意图和创意,简单介绍自己的个人网站。 2.设计思想 阐述网站的整体设计思想,包括: 2.1网站整体结构规划思想 要求阐述网站整体结构的选择、设计的思想,绘制网站结构草图。 2.2 主页设计思想 要求对主页的布局思路进行阐述和分析。 2.3子页的设计思想 要求对子页的设计以及网页对象的选取思路进行阐述和分析。 3网页详细设计分析 要求选取一张网页,对网页的设计实现过程进行阐述和分析,详细说明制作该网页的步骤,所使用的网页对象以及该网页对象的操作方法。

4结论 对整个设计报告做归纳性总结,并分析设计过程中的困难及如何解决的,最后提出展望。 一、设计目的 本课程的设计目的是通过实践使同学们经历Dreamweaver cs3开发的全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的知识。结合具体的开发案例,理解并初步掌握运用Dreamweaver cs3可视化开发工具进行网页开发的方法;了解网页设计制作过程。通过设计达到掌握网页设计、制作的技巧。了解和熟悉网页设计的基础知识和实现技巧。根据题目的要求,给出网页设计方案,可以按要求,利用合适图文素材设计制作符合要求的网页设计作品。熟练掌握Photoshop cs3、Dreamweaver cs3等软件的的操作和应用。增强动手实践能力,进一步加强自身综合素

vf课程设计实验报告模板

vf 课程设计实验报告模板 经济管理学院 学生信息管理系统的设计与实现 09年12 月28 日 、课程设计的目的和意义 当今,人类正在步入一个以智力资源的占有和配置,知识生产、分配和使用为最重要因素的知识经济时代,为了适应知识经济时代发展的需要,大力推动信息产业的发展,我们通过对学生信息管理系统的设计,来提高学生的操作能力,及对理论知识的实践能力,从而提高学生的基本素质,使其能更好的满足社会需求。 学生信息管理系统是一个简单实用的系统,它是学校进行学生管理的好帮手。 此软件功能齐全,设计合理,使用方便,适合各种学校对繁杂的学生信息进行统筹管理,具有严格的系统使用权限管理,具有完善的管理功能,强大的查询功能。它可以融入学校的信息管理系统中,不仅方便了学生信息各方面的管理,同时也为教师的管理带来了极大地便利。 我们进行本次课程设计的主要目的是通过上机实践操作,熟练掌握数据库的设 计、表单的设计、表单与数据库的连接、SQL语言的使用和了解它的功能:数据定 义、数据操纵、数据控制,以及简单VF程序的编写。基本实现学生信息的管理, 包括系统的登录、学生信息的录入、学生信息的浏览、学生信息的查询、学生信息的修改和学生信息的删除,并对Visual FoxPro6.0 的各种功能有进一步的了解,为我们更进一步深入的学习奠定基础,并在实践中提高我们的实际应用能力,为我们以后的学习和工作提供方便,使我们更容易融入当今社会,顺应知识经济发展的趋势。 - 1 -

、系统功能设计 通过该系统可以基本实现学生信息的管理,包括系统的登录、学生信息的录 入、学生信息的浏览、学生信息的查询、学生信息的修改和学生信息的删除。系统 功能模块如下图所示。 学生信息管理系统主界面 登录 管理 学学学学学 生生生生生 信信信信信 息息息息息 录查浏修删 入询览改除 三、系统设计内容及步骤 3.1创建项目管理文件 1.启动foxpro 系统,建一个项目管理器,命名为“学生管理”。 哑 目f ■ 也 电 岂同左 矣 氏H. 0 存 JI 蛋誤曾

网络协议分析与仿真课程设计预习报告

编号:_______________本资料为word版本,可以直接编辑和打印,感谢您的下载 网络协议分析与仿真课程设计预习报告 甲方:___________________ 乙方:___________________ 日期:___________________

(计算机学院) 网络协议分析与仿真课程设计 预习报告 专业名称:__________ 网络工程_________________ 班级:_______________________________________ 学生姓名:____________________________________ 学号(8位): ________________________________ 指导教师:____________________________________ 设计起止时间:2013年12月2日一2013年12月13日

题目一网络流量分析 一、课程设计目的 里加深对IP、DNS、TCR UDP、HTTP等协议的理解; 里掌握流量分析工具的使用,学习基本的流量分析方法。 二、课程设计地点及时间 二号实验楼442网络实验室,12月2日至12月6日,每天8: 00-14: 00 三、课程设计实验条件 工具:Wireshark (Windows 或Linux), tcpdump (Linux) 要求:使用过滤器捕获特定分组;用脚本分析大量流量数据(建议用perl)。 内容:Web流量分析 四、课程设计原理 1、DNS域名解析:首先,客户端的应用层会封装数据到达传输层,在传输层标识源端口号 与目的端口号(源端口号为大于1023随机,目的端口号为UDP5狒口)及应用层服务(这 里因该是请求DN硒询服务吧)。传输层封装数据产生数据段传给网络层,在网络层标识源IP地址及目的IP地址(源IP地址为客户端IP ,目的IP地址为DNS服务器IP地址),网络层将数据段封装为数据包传给数据链路层,在数据链路层将会在数据包里加入源MACM址及目的MA砸址(源MACM址为客户端网卡MA弛址,目的MAC%址为DNS服务器MACM址),这里应该查询MA或存。数据链路层根据客户端与DNS服务器之间的链路,将数据包封装成 帧,传给物理层。物理层会将数据帧转化为电信号放到物理介质上。 电信号到达DNS服务器后会从物理层到达应用层(这里和客户端发送数据差不多,只不过这 个过程变成了解封装),DNS服务器做完域名解析后再将数据传给客户端,传输过程同客户端发送数据。 2、建立TCP/IP连接:客户端知道WE囹艮务器IP地址之后,在网络层产生建立TCP/IP三次握手的数据包(TCP/IP三次握手:客户端向服务器端发送SYN信息,服务器端收到SYN信 息后回复给客户端SYN+AC褊认信息,客户端收到确认信息后再向服务器发送ACK信息建立 连接),应用层标识HTTP服务将数据发送到传输层,传输层将数据+源端口号(大于1023)、目的端口号(80)+上层服务WW如装为数据段传给网路层。网络层将数据段+源ip与目的 ip (WW服务器的ip地址)封装为数据包发送到数据链路层。数据链路层参照ARP缓存表确定源MAC%址(本机MACM址)及目的MACM址(客户端与路由B相连端口的MACM址)将数据包封装成数据帧。这里还需要CR破验。。。。。。数据帧到达物理层后变成电信号发送 到介质上(这里还需要访问控制方法DSMA/CD 路由B收到电信号后传给路由器的数据链路层,这里还需要CRC,FC眼验。。。…确定数据 帧没有损坏后查看目的MACM址与路由器端口地址是否相同,如果相同将解封装,将数据包 发送到路由器B的物理层,路由器查看路由表确定数据包的转发端口,路由器B确定与路由 A之间的链路,创建帧。 路由B与路由A可以看成是点对点,即路由B将创建PPP帧。路由A收到电信号后,确定帧的完整性,如果完整即将数据帧解封装发送到网络层,路由A查询路由表将数据包转发到与WEBf连的路由端口。 路由A的数据链路层将查询ARP缓存表确定WW服务器的MACM址,路由A将创建源MAC 地址

WEB个人主页课程设计

Web应用开发技术 实验报告 专业:计算机科学与技术 班级: 学号: 姓名:

一、设计题目 个人网站 二、目的 1、本次设计是学生在学完ASP动态网站开发课程后的一次实践性很强的课程设计,是对ASP进行动态网站开发所学知识的综合运用。 2、掌握使用ASP技术进行网站开发设计。 3、通过本次实习,使学生加深所学知识内容的理解,并能积极地调动学生的学习兴趣,结合实际应用操作环境,真正做到理论与实际相结合。 三、功能需求描述 此网站可以对主人留言,来发表自己的心情,也可以把自己的联系方式写入其中,达到和睦相处、心灵的驿站的目的等。 四、总体设计

五、详细设计 (一)、我的主页 此页面为网站的主页,通过发布新心情,点击通讯录可以查看通讯录好友信息,点击留言板可以查看好友留言。 主要代码: 个人空间