一 : KTV点歌系统毕业论文
KTV点歌系统
前言
随着现如今经济文化水平的显著提高,人们对生活质量及工作环境的要求也越来越高。同时,随着生活节奏的加快,每个人都处于忙碌繁乱的社会当中,不论是在家庭,工作场所,或是学校中,无时无刻充满着生活和学习上的压力。在工作之余,找到一种能够缓解压力,释放疲劳的娱乐方式,已成为大家共同的愿望。因此娱乐业在服务行业中占有越来越重要的地位。然而,受到工作条件和时间的限制,越来越多的人们选择了去KTV唱唱歌,跳跳舞。因为去KTV既方便省事,又能更好更快地愉悦心情。为了满足广大消费者的需求,也为了娱乐业经营者的利益,并进一步完善和加快娱乐业管理信息化进程,针对我国娱乐业的特点和需求,结合以往娱乐软件的开发经验,以娱乐业管理科学化规范化为出发点,开发了这一个具有实用性、高效性、功能划分细致及较高的灵活性和可扩充性的KTV视频点播系统。
本系统的设计比较人性化,它包括了登录验证、后台数据维护和前台点歌三大模块,其中涉及到了数据库中四张表:明星信息表、歌曲信息表、用户表和歌曲类型信息表。
1、登录验证:输入用户名称和密码,经过核实验证选择操作界面。
2、后台数据维护:针对四张表的数据进行增删改等操作。
3、前台点歌:包括了拼音点歌、歌名点歌、数字点歌、明星点歌和全部歌曲播放五个模块。
本系统有两种合法用户,一是管理员身份admin,一是客户身份user。管理员可以进入后台数据维护和前台点歌,客户只能进入点歌界面。
我们是初学者本系统还有许多需要改进的地方,希望能够给予指点,同时也希望能给大家带来乐趣。
在这个项目中,我主要负责前台设计与系统测试。
I
毕业论文设计
摘要
随着现如今经济文化水平的显著提高,人们对生活质量及工作环境的要求也越来越高。同时,随着生活节奏的加快,每个人都处于忙碌繁乱的社会当中,不论是在家庭,工作场所,或是学校中,无时无刻充满着生活和学习上的压力。在工作之余,找到一种能够缓解压力,释放疲劳的娱乐方式,已成为大家共同的愿望。然而,受到工作条件和时间的限制,越来越多的人们选择了去KTV唱唱歌,跳跳舞。因为去KTV既方便省事,又能更好更快地愉悦心情。
为了满足广大消费者的需求,进一步完善和加快娱乐业管理信息化进程,针对我国娱乐业的特点和需求,结合以往娱乐软件的开发经验,以娱乐业管理科学化规范化为出发点,开发了这一个具有实用性、高效性、功能划分细致及较高的灵活性和可扩充性的KTV点歌系统。
论文详细论述了系统总体设计思想、数据库设计以及功能模块设计等,给出了自动点歌系统一般流程。该系统主要包括:按拼音点歌、按数字点歌、按歌名点歌、按歌星点歌等四大点歌模块。
关键词:娱乐;自动点歌;模块
II
KTV点歌系统
Abstract
Now with economic and cultural level of the improved significantly and people to the quality of life and working environment request more and more is also high. At the same time, along with the speeding up of the pace of life, everyone in the society of FanLuan busy, both in the family, the workplace, or school, always full of life and the pressure in study. In the interim, find a can relieve pressure, release fatigue of entertainment, has become a common desire. However, by working conditions and time limit, more and more people chose to the KTV sing sing and dance. Because to the KTV, which is convenient for save trouble, and can better and faster cheerful mood.
In order to meet the needs of the consumers, to further improve the entertainment industry and to speed up the process of information management, in view of the characteristics and needs of the entertainment industry, combining with the development of the entertainment software past experience, with the scientific management of the entertainment industry standardization as the starting point, the development of this is practical, high efficiency, functional division meticulous and high flexibility and scalability of KTV the song system.
Paper discusses the overall design thought, system function module design database design, and etc, and gives the general flow system to the song. The system mainly include: the pinyin, according to the song, according to the title song digital song by song singer, and so on four big song module.
Key words: entertainment;automatic ;song module
III
毕业论文设计
目录
前言................................................................................................................................ I 摘要............................................................................................................................... II ABSTRACT ............................................................................................................... III
第一章 概述 ................................................................................................................. 1
1.1项目背景 .............................................................................................................. 1
1.2项目现状与分析 .................................................................................................. 1
1.3研究意义 .............................................................................................................. 2
第二章 系统设计 ......................................................................................................... 3
2.1系统分析 .............................................................................................................. 3
2.1.1需求分析 ........................................................................................................ 3
2.1.2开发工具选择 ................................................................................................ 3
2.2系统功能设计 ...................................................................................................... 4
2.2.1系统规划 ........................................................................................................ 4
2.2.2系统功能结构 ................................................................................................ 4
2.3系统数据库设计与实现 ...................................................................................... 5
2.3.1实体E-R图 .................................................................................................. 5
2.3.2数据库结构设计 ........................................................................................... 6
2.3.3系统数据库实现 ........................................................................................... 7
2.4项目文件夹设计 .................................................................................................. 9
2.4.1创建项目 ........................................................................................................ 9
2.4.2创建项目文件夹 ............................................................................................ 9
第三章 详细设计及代码实现 ................................................................................... 11
3.1界面设计 ............................................................................................................ 11
3.1.1登录验证窗体设计 ...................................................................................... 11
3.1.2后台数据维护界面设计 .............................................................................. 12
3.1.2.1选项卡的设计 ....................................................................................... 12
3.1.3前台点歌系统界面设计 .............................................................................. 13
3.2公共类的设计 .................................................................................................... 15
3.3代码的实现 ........................................................................................................ 16
3.3.1方法的调用和参数的传递 .......................................................................... 16
3.3.1.1方法的调用 ........................................................................................... 16
3.3.1.2 参数的传递 .......................................................................................... 17
3.3.2登录界面的实现 .......................................................................................... 17
3.3.3系统点歌的实现 .......................................................................................... 18
第四章 系统测试 ....................................................................................................... 24
4.1 登录测试 ........................................................................................................... 24 IV
KTV点歌系统
4.1.1 业务流程图 ................................................................................................. 24
4.1.2 测试用例 ..................................................................................................... 25
4.2 前台点歌测试 ................................................................................................... 25
4.2.1 业务流程图 ................................................................................................. 26
4.2.2 测试用例 ..................................................................................................... 27
4.3问题分析 ............................................................................................................ 28
总结.............................................................................................................................. 29
参考文献 ..................................................................................................................... 30
致谢.............................................................................................................................. 31 V
KTV点歌系统
第一章 概述
1.1项目背景
迅速发展的计算机科学技术应用越来越广泛,已经渗透到了人类社会生产和生活的各个领域。数据库技术是计算机科学技术的一个重要分支,是现代化管理的重要手段,是研究数据共享的一门科学。近年来,人们利用数据库技术对海量的数据进行处理,然后结合其他技术开发出了各种软件,为人类生产生活提供了便利。
娱乐是人的一生中不可或缺的部分。随着现如今经济文化水平的显著提高,人们对生活质量及工作环境的要求也越来越高。同时,随着生活节奏的加快,每个人都处于忙碌繁乱的社会当中,不论是在家庭,工作场所,或是学校中,无时无刻充满着生活和学习上的压力。在工作之余,找到一种能够缓解压力,释放疲劳的娱乐方式,已成为大家共同的愿望。因此娱乐业在服务行业中占有越来越重要的地位。然而,受到工作条件和时间的限制,越来越多的人们选择了去KTV唱唱歌、跳跳舞或者在自己家里自娱自乐。KTV点歌系统也因此有了广阔的发展前景。
随着KTV行业的迅猛发展,点歌系统在KTV里的重要性越来越大,特别是在面向普通消费者的量贩式KTV,投资方在选系统的时候无不练就一双金睛火眼,千挑万选,而且更是在配套设备上重金投入,确保为消费者营造出一个更
【1】 好的消费环境。
1.2项目现状与分析
自动点歌系统从很早以前就开始进行研发与应用,经过多年的经验摸索,不断地完善改进和升级,使得它更安全、更稳定、更完善。无论夜总会型,还是量贩式型的KTV都可以使用,该系统加上优质的歌库,并与点歌辅助工具和外围歌厅设备一起使用时,可称之为一套功能强大、可靠性高、实用性好、画优音美的全自动卡拉OK点歌系统,绝对领导着KTV点歌设备的新潮流。
全套系统是架构在计算机网络上的,由电脑来自动管理,无需碟机亦无需人员操作,极大地提高了经营效率。该系统从歌曲录制编辑、歌曲库的自动生成、点歌软件的功能、界面的多样性和美观性、客人的使用人性化、前后台管理的多样性和方便性、与各种外围点歌设备的结合、有各类歌曲的提供等方面,形成了完整的解决方案,是一套集大成的全面先进的系统。
随着计算机技术的发展,人们不仅使用单一的文字作为信息的载体,还可以通过各种各样的媒体来传递、存储信息。我们通常所说的"媒体"(Media)包括其中的两点含义。一是指信息的物理载体(即存储和传递信息的实体),如书本、挂图、磁盘、光盘、磁带以及相关的播放设备等;另一层含义是指信息的表现形式(或者说传播形式),如文字、声音、图像、动画等。多媒体计算机中所说的媒体,是指后者而言,即计算机不仅能处理文字、数值之类的信息,而 1
毕业论文设计
且还能处理声音、图形、电视图像等各种不同形式的信息。
对各种信息媒体的"处理",是指计算机能够对它们进行获取、编辑、存储、检索、展示、传输等各种操作。一般而言,具有对多种媒体进行处理能力的计算机可称为多媒体计算机。
自动点歌系统是一款及多媒体播放,音频消原唱,歌词显示于一体的大众化软件。如果你想在自己的电脑上过把KTV瘾,那么本软件将实现你的愿望。无须复杂的设置,即刻让你感受到在家里演唱卡拉OK的氛围。愿这款软件给你
【2】 的生活带来一种新的乐趣。
1.3研究意义
该系统是在实际调研的基础上,针对现在人们现实生活当中需求情况来进行系统开发,因此它具有较强的实用性.该系统有如下特点:
1、先进的管理思想——歌曲信息数据集中管理,最大程度上实现高效管理。
2、模块化的软件结构——各个模块都可以单独运行。
3、提供良好的人机交互界面,操作简单快捷。
4、可以对大量歌曲信息进行处理,检索迅速,查找方便,可靠性高。 当今社会里人们的生活水平在不断提高,工作压力也越来越大,人们需要有个能够减少压力的环境,唱歌是一个比较好的方式,所以开发了自动点歌系统.该系统实现了对各种歌曲管理,满足人们的点歌要求,这样人们可以点播各种各样的歌曲进行选唱。
2
KTV点歌系统
第二章 系统设计
2.1系统分析
2.1.1需求分析
随着计算机的发展和进步,多媒体应用逐渐深入民心。随着硬件技术的进步,绚丽的多媒体已经走进了大众生活当中。近几年随着网络技术的发展,多媒体应用已经由单机走向了网络。视频播放也采用了网络数字流,即视屏点播(VOD),以快速、灵活的特点逐渐得到了各领域用户的青睐,并逐渐成为时尚潮流。VOD技术已经被用于政府、教育、智能小区、宾馆、KTV等领域。
通过实际调查,要求本系统具有以下功能:
1、良好的人机界面。
2、如果系统的实用对象较多,则要求有较好的权限管理。
3、方便的添加、删除和修改数据功能。
4、方便的点歌功能。
5、其他辅助功能。
2.1.2开发工具选择
近几年来微软公司不断发布了升级版的Visual Studio.NET 开发环境,增强了许多功能。标准化的开发流程、规范化的项目管理、紧密的团队协作、流畅的信息交流是开发现代软件系统的共同要求, Visual Studio 2005满足了工业化软件开发要求,它集成了众多适应软件工业化生成的新特性,除此以外更重要的是我们比较熟悉这个环境,运用起来比较方便灵活。
后台数据库的开发工具有很多,比如Orcale、SQL Server、MySQL、Access等。这里我们选用了Access来创建后台数据库,它适用于中小型应用系统的开发,能够完善地管理各种数据库对象,具有强大的数据组织、用户管理、安全检查等功能。除此以外,Access使用起来比较方面灵活。其他数据库开发工具功能比较强大,涉及内容较多,占用较多空间浪费不必要的资源。
C#是一种简单、现代、面向对象且类型安全的编程语言,C#语言从C和C++语言演化而来,同时C#具备了应用程序快速开发语言的高效率和C++固有的强大能力,并吸收了Java和Delphi等语言的特点和精华,是目前.NET开发的首选语言。
C/S(Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。
综上所述本系统采用了Microsoft Office Access 2003(2007)创建后台数据库,前台开发工具利用Visual Studio 2005进行开发,编程语言采用C#,程序架构采用C/S架构。
3
毕业论文设计
2.2系统功能设计
2.2.1系统规划
要设计一个完备的点歌系统,需涉及大量的信息。为了简化本系统的设计,只选取了一些基本的与点歌相关的明星信息、歌曲信息、歌曲类型信息、用户信息以及基本点歌等。具体规划的模块如下:
1、明星信息:包括添加、修改和删除等数据维护操作。 2、歌曲信息:包括添加、修改和删除等数据维护操作。 3、歌曲类型信息:包括添加、修改和删除等数据维护操作。 4、用户信息:包括添加、修改和删除等数据维护操作。
5、基本点歌:包括数字点歌、拼音点歌、歌名点歌、明星点歌等功能。 2.2.2系统功能结构
根据功能的关联关系,将系统功能细化如图2-1所示的功能结构图。其业务流程如图2-2所示,此系统有两种合法用户身份,一是管理员身份,可以进入后台数据维护和前台点歌,一是客户身份,只可直接进入前台点歌界面。
图2-1系统功能结构图
4
KTV点歌系统
图2-2业务流程图
2.3系统数据库设计与实现
数据库设计的合理与否,对数据的完整性、安全性、程序运行的效率和程序设计的复杂程度等有着十分密切的关系。数据库设计的内容包括数据库管理系统的选择、数据实体的确定和数据库的具体实现。
2.3.1实体E-R图
根据KTV点歌系统的系统分析与功能设计,KTV点歌系统中主要包括明星信息实体、歌曲类型信息实体、歌曲信息实体、用户信息实体等。下面给出它们的E-R图,如图2-3到2-6所示。
图2-3明星信息E-R图
5
毕业论文设计
图2-4歌曲类型信息E-R图
图2-5歌曲信息E-R图
图2-6用户信息E-R图
2.3.2数据库结构设计
KTV点歌系统数据库的名称设置为“db_KTV”,其中包括4个数据表:明星的基本信息表、系统用户的信息表、歌曲类型信息表、歌曲信息表。以下是这些表的结构:
1、明星的基本信息表:用于保存所有的明星信息,其结构如图2-7所示。
6
KTV点歌系统
图2-7明星的基本信息表
2、系统用户的信息表:用于保存所有的用户信息,其结构如图2-8所示。
图2-8系统用户信息表
3、歌曲类型信息表:用于保存所有的歌曲类型信息,其结构如图2-9所示。
图2-9歌曲类型信息表
4、歌曲信息表:用于保存所有的歌曲信息,其结构如图2-10所示。
图2-10歌曲信息表
2.3.3系统数据库实现
创建数据库,如图2-11:
7
毕业论文设计
图2-11创建数据库图
打开数据库db_KTV新建表,具体操作流程如图2-12所示:
图2-12新建表流程
8
KTV点歌系统
2.4项目文件夹设计
2.4.1创建项目
启动程序“Microsoft Visual Studio 2005”创建项目,如图2-17所示。
图2-17新建项目图
单击“确定”按钮后,出现创建项目的开发环境,如图2-18所示。
图2-18项目开发环境
2.4.2创建项目文件夹
项目文件夹的创建使得项目目录更加清晰,资源放置更加方便,在项目开发环境中,按照图2-19所示创建文件夹结构,用来存放项目中的各种文件。 9
毕业论文设计
存放数据库
存放所有的公共类
存放所有的音乐文件
存放所有的图片资源
点歌系统窗体
登录窗体
主窗体(后台数据维护窗体)
图2-19项目文件夹结构
在开发时只需将相应文件放置到对应文件夹下即可,新建DataBase文件夹用于存放数据库,KTVclass文件夹用于存放所有的公共类,Music文件夹用于存放所有的音乐文件,Resource文件夹用于存放所有的图片资源。
10
KTV点歌系统
第三章 详细设计及代码实现
3.1界面设计
3.1.1登录验证窗体设计
本系统登录验证身份有客户和管理员两种身份,登录验证窗体需要合法用户输入用户名称和密码,当用户输入用户名称时,系统会自动显示其权限,根据其权限选择登录界面,管理员身份可以登录后台数据维护和前台点歌,客户只可进入前台点歌。若输入的用户名和密码在数据库db_KTV的用户信息表(tb_manager)中有记录,则允许用户登录,同时也可以选择操作界面(后台数据维护和前台点歌系统);若输入的信息有误,则提示用户重新输入。
登录窗体及主要组件的属性设置如表3-1所示。
表3-1登录界面及主要组件的属性设置
设置好的登录验证界面窗体如图3-2所示。
11
毕业论文设计
图3-2登录验证界面
3.1.2后台数据维护界面设计
后台数据维护窗体主要是对数据库信息的增删改等操作,也是能够成功实现整个系统的重要依据。在这里主要是对明星信息表、歌曲信息表、歌曲类型信息表和用户信息表四张表的操作。
后台数据维护窗体及主要组件属性的设置如表3-3所示。
3.1.2.1选项卡的设计
本系统涉及的数据信息量比较大,我选用了选项卡来存放数据信息,使得浏览更加方便,数据存放更加丰富。运用选项卡集合编辑器添加选项卡的项,如图3-4所示。
12
KTV点歌系统
图3-4选项卡集合编辑器
除了放置选项卡控件外,还要在选项卡TabControl的每一个tabPage上放置一个ListView控件和三个按钮,它们分别是lvAuton、lvMuscie、lvDitcy、LvUser四个ListView控件和添加、修改、删除按钮。
选项卡的使用可让你打开多个界面,通过点击要查看的选项卡可以切换界面,减少了页面窗体的显示数量,使用起来更加方便灵活。
最终设置好的后台数据维护界面如图3-5所示。
图3-5后台数据维护界面
3.1.3前台点歌系统界面设计
前台点歌系统是本系统的核心内容,它包括了数字点歌、拼音点歌、歌名点歌和明星点歌四个子模块。除此以外还有一个播放媒体控件,用于播放歌曲使之更加具有动感。
13
毕业论文设计
点歌系统窗体及主要组件属性的设置,如表3-6所示。
Windows Media Player控件的一些常用属性:
1、axWindowsMediaPlayer1.URL音乐文件的播放路径。
2、axWindowsMediaPlayer1.Ctlcontrols.stop();停止播放。
3、axWindowsMediaPlayer1.Ctlcontrols.pause();暂停播放。
4、axWindowsMediaPlayer1.Ctlcontrols.play();播放文件。
5、axWindowsMediaPlayer1.fullScreen;是否全屏播放,值为bool类型。
6、axWindowsMediaPlayer1.Ctlcontrols.PlayCount;文件播放次数。
7、axWindowsMediaPlayer1.Ctlcontrols.AutoRewind;是否循环播放。 ??
最后设置好的界面如图3-8所示。
14
KTV点歌系统
图3-8点歌系统界面
3.2公共类的设计
公共类的设计是整个项目功能实现的核心和基础,整个公共类分为数据库连接、歌曲信息参数和歌曲信息操作处理三个部分。为了便于后期维护,整个项目基于面向对象的思想,实现了模块化设计功能。
1、数据库连接
定义类getConnection,此类封装了连接数据库的方法,因为只是对数据库的操作,所以需要引入一些和数据库相关的命名空间,因为所用的数据库是Access,所以引入的命名空间为using System.Data.OleDb。对应的连接方法代码如下:
public OleDbConnection OledCon()
{
string reportPath = Application.StartupPath.Substring(0,
Application.StartupPath.Substring(0,
Application.StartupPath.LastIndexOf("\\")).LastIndexOf("\\"));
reportPath += @"\DataBase\db_KTV.mdb";
string ConStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + reportPath; OleDbConnection con = new OleDbConnection(ConStr);
return con;
}//连接数据库
2、歌曲信息参数和歌曲信息处理如表3-9所示。
15
毕业论文设计
3.3代码的实现
因为在此项目中我主要负责登录界面和前台点歌系统,所以在代码实现部分就仅对着这两个模块进行详细说明分析。在实现此功能的过程中涉及到了许多方法的调用和参数的传递。
3.3.1方法的调用和参数的传递
3.3.1.1方法的调用
在C#中,方法的调用主要采用以下2中格式。
格式一:表达式=方法名(实参列表)。
格式二:方法名(实参列表)。
16
KTV点歌系统
使用带返回值的方法时往往使用格式一来调用方法。如果不需要使用方法的返回值,则可以采用格式二来调用方法,这时将执行方法的所有操作而忽略返回值。不过有一点需要注意的是,在调用返回类型为void的方法时,不能在表达式中或赋值语句中使用其名称来调用它。
3.3.1.2 参数的传递
参数可以分为形参和实参两种。在定义方法时,方法名后面的圆括号中的变量名称为“形参”,在调用方法时,方法名后面圆括号中的表达式称为“实参”。它们的区别是一个表示声明时的参数,另一个表示调用时的参数。
从参数的传递机制来说,C#中方法的参数可以有以下4种类型。
1、值参数,不含任何修饰符。
2、引用型参数,以ref修饰符声明。
3、输出参数,以out修饰符声明。
4、数组型参数,以params修饰符声明。
3.3.2登录界面的实现
本系统登录验证身份有客户和管理员两种身份,登录验证窗体需要合法用户输入用户名称和密码,当用户输入用户名称时,系统会自动显示其权限,根据其权限选择登录界面,管理员身份可以登录后台数据维护和前台点歌,客户只可进入前台点歌。若输入的用户名和密码在数据库db_KTV的用户信息表(tb_manager)中有记录,则允许用户登录,同时也可以选择操作界面(后台数据维护和前台点歌系统);若输入的信息有误,则提示用户重新输入。
具体的运行流程如图3-10所示。
具体的处理流程如图3-11所示。实例化类对象:tb_manger
computer=new tb_manger(),调用类对象里的变量。
图3-10登录运行流程图
17
毕业论文设计
图3-11登录处理流程
当管理员输入登录名称和登录密码时,通过实例化tb_manager,调用其中的变量strmgr_Name和strmgr_Paww,将文本框的内容赋值给它们,传递到数据库,将其与数据库表中的记录进行比较。若输入的信息在表tb_manager中有记录,那么输入的信息正确,调用方法tb_managerLogin进行登录界面的选择;若输入的信息在表中没有记录,则提示输入有误,提示重新输入。
相关代码如下:
tb_manager computer = new tb_manager();//实例化对象
computer.strmgr_Name=txtUser.Text;
computer.strmgr_Paww=txtPwd.Text;
if (computer.tb_managerLogin(computer, 2) == 1)//调用方法,传递参数,是否有该用户
通过对表达式computer.tb_managerLogin(computer, 2) == 1的判断,来进行登录界面的选择。
3.3.3系统点歌的实现
点歌系统包含数字点歌、拼音点歌、歌名点歌和歌星点歌四个模块。当用户选择不同的点歌方式时,系统就会响应用户要求弹出查询选择条件的对话框。在此界面中还涉及到了媒体播放,它包括播放、暂停、停止、上一曲、下一曲和全屏播放。
此界面主要分为全部歌曲、已点歌曲、歌曲播放和一些按钮四大块。
具体的运行流程如图3-12所示。
18
KTV点歌系统
{
图3-12点歌系统运行流程图
具体的处理流程如下所述。在此界面中用户可以有多种选择。 1、显示全部歌曲
点击显示全部歌曲按钮,所有的歌曲信息将会显示在右边的全部歌曲列表中,选中其中任何一首歌之后,点击“播放”按钮即可播放,点击“添加”即可将此歌曲添加到已播放列表。用户既可以选择从右边全部歌曲列表中直接点播放又可以将其添加到已播放列表再播放。
利用string strAdd = "select * from tb_musicinfo ";来对歌曲信息表进行查询。oleRed = oledcmd.ExecuteReader();获取查询的信息。通过如下代码将查询到的前几列记录显示在列表中:
??
ListView lv = listView1;//定义ListView对象
while (oleRed.Read())
ListViewItem lv1 = new ListViewItem(oleRed[0].ToString()); lv1.SubItems.Add(oleRed[1].ToString()); lv1.SubItems.Add(oleRed[2].ToString()); lv1.SubItems.Add(oleRed[3].ToString()); lv.Items.Add(lv1); }//添加数据信息到对应的单元格
??
2、数字点歌
当点击数字点歌时,将会弹出数字点歌查询条件对话框,若用户输入的条件数据库中没有记录,将会提示“没有查到结果,请重新输入信息!”;若用户输入的条件有记录,那么信息将会被自动添加到已点歌曲列表中。
19
毕业论文设计
??
frmDianGe daige = (frmDianGe)this.Owner;
if (intFalg == 1)//数字点歌
{
if (tbMusice.tbFill(daige.lvPlay, txtName.Text.Trim(), 1) != 0)
//传递参数,获取歌曲信息显示在控件中
{
intFalg = 0;//释放空间
this.Close();
}
else
{
intFalg = 1;
MessageBox.Show("没有查到结果,请输入其它条件");
txtName.Text = "";
txtName.Focus();
}
}
??
3、拼音点歌
当点击拼音点歌时,将会弹出拼音点歌查询对话框,此时用户可以通过输入明星的拼音码或歌曲名的拼音码找到对应的歌曲,若用户输入的条件数据库中没有记录,将会提示“没有查到结果,请重新输入信息!”;若用户输入的条件有记录,那么信息将会被自动添加到已点歌曲列表中。
??
if (intFalg == 2)//拼音点歌
{
if (tbMusice.tbFill(daige.lvPlay, txtName.Text.Trim(), 2) != 0)
{
intFalg = 0;
this.Close();
}
else
{
intFalg = 2;
MessageBox.Show("没有查到结果,请输入其它条件");
txtName.Text = "";
txtName.Focus();
}
}
??
4、明星点歌
当点击明星点歌按钮时,将会弹出明星点歌查询条件对话框,用户需要输入明星的中文姓名才可以查询到正确的信息。若用户输入的条件数据库中没有 20
KTV点歌系统
记录,将会提示“没有查到结果,请重新输入信息!”;若用户输入的条件有记录,那么信息将会被自动添加到已点歌曲列表中。
??
if (intFalg == 3)//明星点歌
{
if (tbMusice.tbFill(daige.lvPlay, txtName.Text.Trim(), 3) != 0)
{
intFalg = 0;
this.Close();
}
else
{
intFalg = 3;
MessageBox.Show("没有查到结果,请输入其它条件");
txtName.Text = "";
txtName.Focus();
}
}
??
5、歌名点歌
当点击歌名点歌按钮时,将会弹出歌名点歌查询条件对话框,用户需要输入歌曲的具体名称才可查询。若用户输入的条件数据库中没有记录,将会提示“没有查到结果,请重新输入信息!”;若用户输入的条件有记录,那么信息将会被自动添加到已点歌曲列表中。
??
if (intFalg == 4)//歌名点歌
{
if (tbMusice.tbFill(daige.lvPlay, txtName.Text.Trim(), 4) != 0)
{
intFalg = 0;
this.Close();
}
else
{
intFalg = 4;
MessageBox.Show("没有结查,请输入其它条件\n 可以断续输入查询条件或退出","查询提示");
txtName.Text = "";
txtName.Focus();
}
}
??
不同点歌方式具体的实现流程:
21
毕业论文设计
通过窗体的切换实现不同点歌方式,frmNumber frm1 = new frmNumber(1); frm1.Owner = this; frm1.ShowDialog();不同的点歌方式通过传递的参数不同来实现,这里的“1”就是所传递的参数,将参数传递到类frmNumber。那么又是如何得到不同点歌方式所得到的数据的呢?通过实例化对象tbMusicinfoMenthod tbMusice = new
tbMusicinfoMenthod();来引用tbMusicinfoMenthod类中的一些封装的方法。同时实例化窗体frmDianGe daige = (frmDianGe)this.Owner;以便调用此窗体中的一些控件。调用对象tbMusic中tbFill(object obj,string strResult,int intFalg)将所点的歌曲显示到对象daige 的列表控件lvPlay中。
6、媒体播放
①播放
播放按钮主要用于播放文件,当用户选中文件之后,点击播放按钮即可播放文件,需要注意的是选择的文件必须是以.mp3、.avi、.mav为后缀名的音乐文件,否则会跳出警告框“您所选择的文件播放格式有误,请重新选择!”。
在播放之前必须先选中歌曲,再将选中的信息记录下来传递到后台调用实例化对象tbMusicinfoMenthod tbMend = new tbMusicinfoMenthod();中tbFillName()方法找到歌曲所在的路径,然后将路径值赋给媒体控件的URL this.axWindowsMediaPlayer1.URL = stringName;实现歌曲的播放。
??
if (stringName != null)
{
stringName = tbMend.tbFillName(stringName);
MessageBox.Show("选择歌曲<<" + strigName2 + ">>完成,您确定要播放此歌曲吗!", "提示");
this.axWindowsMediaPlayer1.URL = stringName;
stringName = null;
}
else
{
MessageBox.Show("请选择要播放的歌曲!","提示");
}
??
②暂停、继续
此按钮主要用于对播放歌曲的人性化控制,当用户需要暂停播放时即可点击暂停,若想继续,点击继续即可。当用户点击此按钮时,按钮上的功能也会随之变化。
当按钮btnZan的文本值为“暂停(&K)”时,点击时播放器将暂停播放,btnZan按钮的文本值也将会变成“继续(&K)”;同样,当按钮btnZan的文本值为“继续 (&K)”时,点击时播放器将继续播放,btnZan按钮的文本值也将会变成“暂停(&K)”。this.axWindowsMediaPlayer1.Ctlcontrols.pause();//暂停bntZan.Text = "继续(&K)";。
this.axWindowsMediaPlayer1.Ctlcontrols.play();//继续播放bntZan.Text = "暂停(&K)";。 ③上一曲、下一曲
在这一功能中主要涉及到了索引的变化,上一曲播放索引递减,下一曲播放索引递增。当播放上/下一首歌时,需要释放原先选择的歌曲信息,我们用以下语句实现索引的释放lvPlay.Items[index].Selected = false;,而且所选歌曲的索引 22
KTV点歌系统
不能超出范围,比如选中第一首歌就不能实现上一曲的播放,因为它已经是第一首歌了,而且最大值不能超过lvPlay.Items.Count;同理,选中最后一首歌就不能实现下一曲的播放,而且最大值不能超出lvPlay.Items.Count-1。
④全屏播放
全屏播放使得系统更加人性化,能够充分满足客户的视觉需求。
this.axWindowsMediaPlayer1.fullScreen = true;//全屏播放
7、添加和删除
添加按钮主要是将右边列表中的信息添加到已点歌曲列表中。删除按钮主要是将不需要的歌曲从已点歌曲列表中删除。
通过lvPlay.SelectedItems[0].Remove();来实现删除;通过以下代码实现添加:
??
ListView lv = lvPlay;
if (listView1.SelectedItems != null)
{
ListViewItem lv1 = new
ListViewItem(listView1.SelectedItems[0].SubItems[0].Text);
lv1.SubItems.Add(listView1.SelectedItems[0].SubItems[1].Text); lv1.SubItems.Add(listView1.SelectedItems[0].SubItems[2].Text); lv1.SubItems.Add(listView1.SelectedItems[0].SubItems[3].Text); lv.Items.Add(lv1);
}
??
如果列表listView1有被选中的项,则将所选中的内容添加到列表lvPlay中。
23
毕业论文设计
第四章 系统测试
系统测试是将已经集成好的软件系统,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行(使用)环境下,对计算机系统进行一系列的测试活动。它是系统完成前的一项重要的工作,应该尽可能完整地测试自己的系统,检查所有的代码是否正确规范,文字是否准确,效果是否恰当,功能是否完善。
测试要注意的问题:整个系统风格是否一致,包括色彩、字体、链接、菜单等等,单击某一按钮不能有似乎换一个系统的感觉;编码规范是对一个程序员的基本要求,要尽量使系统的代码规范,还要避免冗余,释放系统资源。同时要考虑服务器的承受能力。
4.1 登录测试
本系统登录验证身份有客户和管理员两种身份,登录验证窗体需要合法用户输入用户名称和密码,当用户输入用户名称时,系统会自动显示其权限,根据其权限选择登录界面,管理员身份可以登录后台数据维护和前台点歌,客户只可进入前台点歌。
在登录测试中要考虑是否不输入名称和密码也可以进入,当输入错误信息时系统是否会报错,若忘记选择界面是否会弹出提示框。在系统数据库用户信息表中插入两条记录,第一条:用户名称“zy”,用户密码“123”,权限“admin”;
第二条:用户名称“gl”,用户密码“111”,权限“user”。
4.1.1 业务流程图
图4-1 业务流程图
登录验证窗体需要合法用户输入用户名称和密码,当用户输入用户名称时,系统会自动显示其权限,根据其权限选择登录界面,管理员身份可以登录后台数据维护和前台点歌,客户只可进入前台点歌。
24
KTV点歌系统
4.1.2 测试用例
测试用例(Test Case)是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,并形成文档。
不同类别的软件,测试用例是不同的。不同于诸如系统、工具、控制、游戏软件,管理软件的用户需求更加不统一,变化更大、更快。笔者主要从事企业管理软件的测试。因此我们的做法是把测试数据和测试脚本从测试用例中划分出来。测试用例更趋于是针对软件产品的功能、业务规则和业务处理所设计的测试方案。对软件的每个特定功能或运行操作路径的测试构成了一个个测试用例。
登录测试用例如表4-2所示。
表4-2 登录测试用例表
在上述测试用例中主要是针对于用户名、密码以及权限的测试,测试过程中遇到许多问题,例如因操作者粗心导致的数据为空现象;数据库连接异常导致输入的数据无此记录;不合法的用户身份登录等。经过测试使得登录界面更加完善安全。
4.2 前台点歌测试
点歌系统包含数字点歌、拼音点歌、歌名点歌和歌星点歌四个模块。当用户选择不同的点歌方式时,系统就会响应用户要求弹出查询选择条件的对话框。在此界面中还涉及到了媒体播放,它包括播放、暂停、停止、上一曲、下一曲
25
毕业论文设计
和全屏播放。在系统数据库明星信息表和歌曲信息表中插入一些数据,明星信息测试表如图4-3所示,歌曲信息测试表如图4-4所示。
图4-3 明星信息测试表
图4-4 歌曲信息测试表
4.2.1 业务流程图
前台点歌系统是本系统的核心,因而它的测试尤为重要。它包含了数字点歌、拼音点歌、歌名点歌、明星点歌四个子模块,还涉及了许多媒体播放功能。
图4-5 点歌业务流程图
26
KTV点歌系统
4.2.2 测试用例
前台点歌测试用例分为选歌用例和播放用例两种形式。选歌用例如表4-6所示,播放用例如表4-7所示。
表4-6 选歌用例表
27
毕业论文设计
在进行播放用例测试前,需要添加几条记录到已点列表中,在这里我们就将歌曲信息表中的四条记录添加到已点列表中。
在播放测试中遇到的问题,在播放歌曲时,有时可能因为没有选中歌曲就
直接播放导致播放失败,有时因播放控件无效导致播放失败。在进行上一曲和下一曲的操作时,有时候因没有及时释放索引记录而导致失败,有时因超出了索引范围而导致失败。
4.3问题分析
1、问题产生的原因
(1)操作者粗心不够认真,例如忘记输入信息、胡乱的点击等。 (2)数据库连接异常。 (3)SQL语句语法有误
(4)相关控件的属性和方法的误用。 2、问题处理
(1)在编写代码时,进行相关的异常处理,如try??catch。 (2)周全考虑,人性化处理,弹出相应的提示信息。
28
KTV点歌系统
总结
通过几个月的毕业设计,我们已经基本完成了KTV点歌系统的所有功能,管理各种歌曲,然后分别按数字点歌,按拼音点歌,按明星点歌,按歌名点歌。实现歌曲的媒体播放功能,包括播放、暂停\继续、上一曲和下一曲。
本系统并不是十分完美,在以后的学习和工作中,还需要不断的完善和改进。比如在系统中可以加入如下一些功能:在管理员登录的时候能够加入验证信息,使其传递的信息更加的安全。播放器的功能相对较少,点歌时声道切换并不能实现,视频效果也不太清晰。在歌曲的查询方面做的还不够好,现在的消费者都追求简单时尚,如果把查询功能做的更智能、能简练,如只输入歌名的首字母,符合条件的歌曲都罗列出来,供用户选择,并显示歌星的照片,相信系统会变得更加完美。
29
毕业论文设计
参考文献
【1】 扶松柏.深入体验C#项目开发[M].第1版.北京清华大学:清华大学出版
社.2011.108-150
【2】 王小科.吕双.梁冰.C#范例完全自学手册[M].第1版.人民邮电:人民邮电出版
社.2009.118-121
【3】 陈广.C#程序设计基础[M].第1版.北京:北京大学出版社.2008
【4】 郑耀东等.C#从入门到实践[M].第1版.北京:清华大学出版社.2009
【5】 [1] [2] 沈阳航空工业学院.自动点歌系统论文[EB/OL]. http://www.61k.com
【6】 参考网址:http://www.61k.com
30
KTV点歌系统
致谢
经过这几个月的毕业设计,基本上完成了KTV点歌系统的开发。从可行性分析到需求分析,概要设计,到详细设计和最后阶段的毕业论文的撰写,在整个设计阶段指导老师一直陪伴着我们指导我们。在设计阶段孙老师给了我很多宝贵意见,无论从资料上还是从技术上,孙老师都给了我极大的支持,也给了我很大的启发。从正式开始毕业设计起到现在论文的完成,老师随时关心我的进度。我表示衷心的感谢!孙老师那种认真负责的工作态度,严谨的治学精神也使我受益匪浅,这在我以后工作中会有很大的帮助,再次感谢孙老师﹗
非常感谢系里各位老师在毕业设计阶段为我们所做的一切工作,感谢他们为我们提供良好的环境,并对我们的毕业设计进行督促,让我们能按时完成任务。通过此次毕业设计,使我受益匪浅,同时也认识到了自己的不足。在此,再次向全系老师表示我由衷的感谢!
31
二 : 库存管理系统毕业论文
毕 业 设 计 [论 文]
题目: 库存管理系统
系 别:专 业:姓 名:学 号:指导教师: xxxxxxx
xxxxxx学院 年 月 日
库存管理系统 库存管理系统毕业论文
库存管理系统
摘 要
从21世纪以来企业信息化的趋势来看,企业的仓库管理也趋向于信息化、网络化和高度集成化。[www.61k.com]仓库管理信息化作为企业信息化的一部分是现代企业的灵魂,是现代企业发展的必然要求和基石。随着信息技术的高速发展和国外大型企业的纷纷涌入,作为现代企业的仓库管理系统的核心部分——库存管理,也要适应时代的发展。现代企业应该利用新的库存管理技术,开发库存管理系统,这样才能在激烈的市场竞争中占据主动地位。
本文首先介绍了仓库管理的必要性,然后分析了仓库管理现状,并在此基础上,进一步分析仓库管理的具体功能及模块。然后根据时下流行的.Net技术及工厂开发模式(多层开发模式),利用所掌握的知识,用B/S结构进行仓库管理系统的开发,以适应企业仓库管理的发展,提高企业的经济效率。作为系统实现的一部分本文还描述了库存管理系统的功能模块,本系统主要分为六大模块:入库模块,出库模块,查询模块,统计模块,用户管理模块,信息管理模块。
关键词:仓库管理,库存管理,NET技术,B/S结构
1
库存管理系统 库存管理系统毕业论文
Abstract:
From 20 companies since the 1960s the trend of information technology, enterprise
management of the circulation of materials tend to information, networking and a high degree of integration. Logistics Management Information System as part of Enterprise Information is the soul of modern enterprises, the development of modern enterprise is the inevitable requirement and the cornerstone. With the rapid development of information technology and foreign influx of large enterprises have, as a modern enterprise management system of materials circulation part of the core - inventory management, we must adapt to the development of the times. Modern enterprises should take advantage of new inventory management technology, the development of inventory management systems, so as to the fierce competition in the market occupied the initiative. This paper first introduced the need for material flow management ,circulation of materials management status, and on this basis, further analysis of materials circulation and management functions of the specific module. According to a popular then. Net technology and plant development model (the development of multi-mode), use the knowledge gained, with B / S
structure of the material flow management system development, materials circulation enterprises to adapt to the development of management, improve business Economic efficiency. As part of the system to achieve this also describes the flow of materials management system of functional modules, the system can be divided into six modules: storage module, to the module, for module, statistics module, the user management module, information management module.
Key words: circulation of materials management, inventory management, NET technology,
B / S structure,
2
库存管理系统 库存管理系统毕业论文
目录
1 前言 ........................................................................ 5
1.1 选题背景 ................................................. 5
1.2 课题目的和意义 ............................................ 5
1.3 系统的必要性分析 .......................................... 5
1.4 系统的可行性分析 .......................................... 6
1.5 技术可行性分析 ............................................ 6
2 系统开发工具 ........................................................... 6
2.1 c# ..............................................................6
2.2 ASP.NET .........................................................7
2.3 数据库简介 ......................................................8
3 需求分析 ............................................................... 8
3.1 库存概况 ........................................................9
3.1.1 库存管理的重要性 ..........................................9
3.1.2 库存的业务流程图及分析 ....................................9
3.2 库存管理的功能及流程分析.........................................9
3.2.1 库存管理的主要功能 ........................................9
3.2.2 库存管理业务分析 ..........................................9
3.2.3 库存管理的流程分析图 .....................................10
4 系统分析 ................................................................... 10
4.1 库存管理系统的功能模块..........................................10
4.1.1 系统的基本数据子系统分析 .................................11
4.2 系统的业务功能模块分析..........................................11
5 系统设计 ................................................................... 11
5.1 管理模块的设计 .................................................12
5.1.1 人员管理模块 .............................................12
5.1.2 系统通知管理子模块 .......................................12
5.1.3 基本信息管理子模块 .......................................12
5.2 仓库模块的设计 .................................................12
5.2.1 管理员模块设计 ...........................................12
5.2.2 入库管理子模块的设计 .....................................12
5.2.3 出库管理子模块的设计 .....................................12
5.2.4 调拨管理子模块的设计。[www.61k.com] ...................................12
5.2.5 盘点、报损管理子模块的设计。 .............................13
5.3 数据字典 .......................................................13
5.4 根据表与表之间的关系,可以画出E-R图 ...........................15
6 系统界面设计 ............................................................... 16
6.1 界面设计思想 ...................................................16
6.2 详细界面设计 ...................................................16
6.2.1 首页登陆界面设计 .............................................17
6.2.2 系统用户界面 .................................................18
6.2.3 管理员基础数据维护界面........................................19 3
库存管理系统 库存管理系统毕业论文
6.2.4 管理员信息查询模块的功能 ......................................21
6.2.5 统计信息模块的功能 ...........................................23
6.2.6 操作员模块的功能 ..............................................23
7系统测试 .................................................................... 29
7.1 软件测试的意义 .................................................29
7.2 软件测试的重要性 ...............................................29
7.3 软件测试的范围 .................................................29
7.4 软件测试的方法 .................................................29
7.5 软件测试的目的和原则 ...........................................30
总 结 ......................................................................... 31
系统的总结 ..........................................................31
开发过程的总结 ......................................................32
致谢 .......................................................................... 34
参考文献 ...................................................................... 35
附录 .......................................................................... 36
4
库存管理系统 库存管理系统毕业论文
1 前言
1.1 选题背景
兵马未出,粮草先行。[www.61k.com]古代行兵打仗,最先要考虑的就是物资的准备和管理,否则要取得胜利是非常困难的一件事。商场如战场,商家不仅要掌握大量的物资,同时这些物资还要尽可能满足顾客的需要,这样才能在激烈的市场竞争中获取胜利。然而管理物资却是最烦琐的事情,无论数量还是种类,都是数以万计,用人手工来做,不仅是难于完成,而且可以说是不可能的。
在计算机普及的今天,用电脑管理物资是必然的趋势。以市场为例,走进市场,琳琅满目,各式各样的商品应有尽有,顾客大都满载而归,买到称心如意的商品。而在顾客得到极大方便的同时,商家在管理这些商品上却花费了大量的心血。
首先,商品种类繁多,数量庞大,经营者必须时刻了解自己商品的库存和各种商品的供求,如果盲目购进顾客不需要的商品或没有购进畅销的商品,对经营者来说都是极大的损失。其次,由于市场瞬间万变,很多商品价格可能变动较大,经营者可能要不时改变商品价格,否则太高则可能无人问津,太低则无利可图。再次,在商品社会的环境下,竞争激烈,为了保证在竞争中处于有利地位,经营者必须时刻了解市场的需要。
当然,作为实际的经营者,要了解的东西远比这几点多,但无论怎样,物资的管理是一切工作中的重点,如何管理物资是成败的关键。对小经营者来说,也许可以是一本账本,再加算盘或计算器即可。但对于大公司而言,根本不可能单纯依靠账本,那样不仅费人费力,而且当出现差错时,难于查改。所以必须借助电脑,把所有数据输入数据库,然后用系统对这些数据进行管理,通过统计和分析得到各种有用的信息。
1.2 课题目的和意义
随着计算机行业的不断发展,企业管理的应用也在不断随着其发展速度进行着更新。而现今对于一个网络应用非常广泛的社会,企业管理对计算机管理企业要求更加紧密,更加完善,特别是针对物资管理方面,企业的需求更为广泛,谨慎,所以一个好的仓库管理系统对于企业来说是由为重要的。
系统开发的总体任务是实现企业物资管理的系统化、规范化和自动化,从而达到提高企业管理效率的目的。
作为计算机应用的一部分,使用计算机对仓库信息进行管理,有着手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高仓库管理的效率。
1.3 系统的必要性分析
仓库信息化,是指企业运用现代信息技术对仓库过程中产生的全部或部分信息进行采集、分类、传递、汇总、识别、跟踪、查询等一系列处理活动,以实现对物资流动过程的控制,从而降低成本、提高效益的管理活动。仓库信息化是现代企业物资管理的灵魂,是现代企业物资管理发展的必然要求和基石。
库存管理系统是一个企业不可缺少的部分,它的内容对于各类生产企业的决策者和管理者来说都至关重要。生产企业库存管理系统广泛的应用计算机网络系 5
库存管理系统 库存管理系统毕业论文
统将会极大的提高效率减少费用,促使企业走向正规化、科学化,与世纪接轨。[www.61k.com)因此,为生产企业开发计算机仓库管理系统意义重大。库存管理系统是通过对企业当前运行的数据进行处理以获得有关信息,从而达到控制企业的行为,所以它是可以能够为企业提供充足的信息和快捷的数据处理手段的系统。
用传统人工的方式进行库存管理存在着许多缺点,如:效率低,成本高,保密性差。随着时间一长,将产生大量的文件和数据,不利于查找及维护。另外为及时结清每笔业务盘点库存和货物流通情况,确保企业生产正常运行,管理人员要花费大量的人力物力及时间作数据记录和统计汇总工作。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人深刻认识并进入各个领域发挥着重要作用。作为计算机应用的一部分,使用计算机对仓库进行管理与手工管理比较有着无法比拟的优点,如:检索迅速、查找方便、存储量大、数据处理快捷、保密性好、成本低。这些优点能够极大的提高仓库存理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。因此,开发这样的管理软件是一项有意义,有必要的工作
1.4 系统的可行性分析
通过以上系统的必要性分析,为了实现整个库存管理,为了让企业决策者对整个修理厂的生产用料及库存物资情况有一个整体的把握,为了保障生产的顺利进行,现开发一套基于B/S模式的企业库存管理系统。
本系统采用B/S模式,internet就是计算机,无需平台,无需安装,功能扩张性非常强,尤其对于使用人群广而多的系统而言,更能体现它的优越性。企业库存管理系统面向仓库管理用户、企业管理者、及维修车间,所以采用B/S是明智的选择。
开发这样的库存管理系统是极其必要和迫切的,对提高企业的生产效率及管理水平有极大的帮助。
1.5 技术可行性分析
本系统设计是应用ASP.NET技术实现网络环境下的库存管理。利用Microsoft Visual Studio 2005工具结合使用SQL Server 2005数据库,ASP.NET、C#等技术的工作原理及特点,并以此为理论技术依据开发仓库管理系统的结构设计和具体的实现过程。
采用.net技术入门迅速,开发相对容易,开发速度也比较快,.net具有功能强大的集成开发环境,它是完全的面向对象,更易于创建动态页面,提供了丰富的服务器端控件。并且三层架构的设计是相互独立的,更有利于维护、修改和移植。
2 系统开发工具
2.1 c#
现在ASP.NET支持的开发语言包括VB.NET、C#.NET、JSCRIPT.NET、VC++.NET以及其它.NET Framework所支持的语言。我们所做的通用网络问卷调查系统是用C#语言。所以,在这里我介绍一下C#语言。
6
库存管理系统 库存管理系统毕业论文
C# (C sharp)是一种最新的、面向对象的编程语言。(www.61k.com]它使得程序员可以快速地编写各种基于Microsoft .NET平台的应用程序,Microsoft .NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。
正是由于C#面向对象的卓越设计,使它成为构建各类组件的理想之选——无论是高级的商业对象还是系统级的应用程序。使用简单的C#语言结构,这些组件可以方便的转化为XML 网络服务,从而使它们可以由任何语言在任何操作系统上通过Internet进行调用。
C#有以下特性:
⑴ 效率与安全性
⑵ 支持现有的网络编程新标准
⑶ 消除大量程序错误
⑷ 对版本的更新提供内在的支持降低了开发成本
⑸ 商业过程和软件实现的更好对应
⑹ 扩展交互性
2.2 ASP.NET
提到ASP.NET,就不得不首先搞清楚什么是ASP。ASP的全称是Active Server Pages,即活动服务器页面,为什么称之为活动服务器页面,这是因为以前的互联网全部是由静态的HTML页面组成,如果需要更新你的网站内容,你不得不制作大量的HTML页面。有了ASP以后,我们就能够根据不同的用户,在不同的时间向用户显示不同的内容。网站的内容更新也不再是一个乏味的重复过程,它开始变得简单而有趣。也因此在国内掀起了一股学习ASP的热潮。
但是由于ASP程序和网页的HTML混合在一起,这就使得程序看上去相当的杂乱。在现在的网站设计过程中,通常是由程序开发人员做后台的程序开发,前面有专业的美工设计页面,这样,在相互配合的过程中就会产生各种各样的问题。同时,ASP页面是有脚本语言解释执行的,使得其速度受到影响。受到脚本语言自身条件的限制,我们在编写ASP程序的时候不得不调用COM组件来完成一些功能。所以,微软推出了ASP.NET。
ASP.NET不仅仅只是ASP 3的一个简单升级,它更为我们提供了一个全新而强大的服务器控件结构。从外观上看,ASP.NET和ASP是相近的,但是从本质上是完全不同的。ASP.NET几乎全是基于组件和模块化,每一个页,对象,和HTML元素都是一个运行的组件对象。在开发语言上,ASP.NET抛弃了VBSCRIPT和JSCRIPT,而使用.NET Framework所支持的VB.NET,C#.NET等语言做为其开发语言,这些语言生成的网页在后台被转换成了类并编译成了一个DLL。由于ASP.NET是编译执行的,所以它比ASP拥有了更高的效率。
ASP.NET有以下技术特点:
Microsoft .NET平台的出现在应用程序开发这一领域开创了一个新时代,它将推动下 一代Internet的进步。作为Microsoft .NET平台的一部分,ASP.NET是一个革命性的编程框架,它实现了企业级Web应用程序的快速开发。它提供了最简便、最具有扩展能力的方式来开发、部署和运行可以将任何浏览器或设备作为目标的Web应用程序。实际上,这只是令ASP.NET成为程序员创建Web应用程序的首选的众多特色中的一小部分。
与以前使用的ASP相比,ASP.NET使应用程序的开发工作简单得多,因此它在很大程度上提高了程序员的工作效率。ASP.NET让程序员可以只编写最少量的 7
库存管理系统 库存管理系统毕业论文
代码便能够给Web应用程序提供更为丰富的功能。[www.61k.com]最好的一点则是ASP.NET使程序员可以选择任何一种可用的.NET编程语言。
除了常见的Web应用程序,利用ASP.NET还可以创建其他的一些类型,这就使我们的应用程序的范围可以延伸到新的客户和业务合作伙伴。
对程序员来说,部署服务器应用程序一直是一件很痛苦的事。不过,有了ASP.NET,程序员根本不必担心这个问题,因为ASP.NET大大简化了部署过程。要部署Web应用程序,只要把它复制到Web服务器上就可以了。
除了提供了丰富的程序员这方面的经验,ASP.NET还提供了丰富的用户经验。ASP.NET Web应用程序比传统的ASP应用程序速度要快很多,因为ASP.NET令我们可以使用经过编译的编程语言。因此,ASP.NET应用程序不需要明确的编译步骤,结果便是执行得更快了。
2.3 数据库简介
随着科学技术的进步,信息已成为各行各业的重要资源。数据库以其强大的操作和管理功能成为高速信息表达的途经。据我所知,数据库的类型有很多,比如:"sql server","vf","framework","access","Oracle""MySQL""SYBASE""DB2"等等,然而本软件选择了用SQL Server2005来作为数据库软件。Microsoft SQL Server2005(简称SQL Server)由一系列相互协作的组件构成,能满足最大的Web站点和企业数据处理系统存储和分析数据的需求。
用SQL Server2005作为数据库软件的理由为:SQL Server 2005的失败转移集群和数据库镜像技术确保企业向员工、客户和合作伙伴提交高度可靠和可用的应用系统。引进了一套集成的管理工具和管理应用编程接口(APIs),以提供易用性、可管理性、及对大型SQL Server配置的支持。旨在通过数据库加密、更加安全的默认设置、加强的密码政策和细化许可控制、及加强的安全模型等特性,为企业数据提供最高级别的安全性。SQL Server 2005可伸缩性的先进性包括表格分区、复制能力的增强和64位支持。引入了使用Microsoft .NET 语言来开发数据库目标的性能。提供一种新的XML数据类型,使在SQL Server数据库中存储XML片段或文件成为可能。新的查询类型和在交易过程中使用错误处理的功能,为开发人员在SQL Server查询开发方面提供了更高的灵活性和控制力。SQL服务代理为各个级别的可伸缩性提供一种创新的、分发的、异步的应用系统体系结构。分析服务对数据仓库、商务智能和line-of-business解决方案的可伸缩性、可管理性、可靠性、可用性和可规划性提供扩展。对DTS结构合工具的全部重新设计为开发人员和数据库管理员提供了增强的灵活性和可管理性。报表服务是一种新的报表服务器和工具箱,用于创建、管理和配置企业报告。数据挖掘的功能得以增强,主要归功于四种新的运算法则、改进的数据模型和处理工具。 3 需求分析
需求分析是对目标系统提出完整、准确、清晰、具体的要求。
满足用户的需求是制作软件的宗旨,而对软件的需求是用户对系统提出的要求,这种要求可能是原始的、笼统的,也可能是抽象的、细节化的。但一个软件系统的开发必须以一组需求化为出发点,软件的系统需求分析不断修改以满足用户的想要得到的软件模型。因此,必须用行之有效的方法对软件需求进行严格的审查验证。需求分析过程是整个系统开发的重要阶段,分析的成功与否,决定着整个系统功能的完善性以及稳定性。在该阶段需求分析人员需要确定整个产品的 8
库存管理系统 库存管理系统毕业论文
功能要求,并且将现实事务抽象成对象并建模。[www.61k.com)
3.1 库存概况
3.1.1 库存管理的重要性
库存管理是一个企业赖以生存和发展的根本,如果没有一个良好的仓库管理模式,那企业只能逐渐的走向消亡,良好的仓库管理可以优化企业配置,提高生产效率,进而为企业的发展提供及时优质的信息服务。
3.1.2 库存的业务流程图及分析
仓库业务主要流程如下图所示:
图3.1.2 仓库业务流程图
3.2 库存管理的功能及流程分析
3.2.1 库存管理的主要功能
库存管理的主要功能就是对库存产品数据化统计,对货物出入库以及库存现状进行详细记录。通过控制现有库存产品数量保证企业正常的运转资金,降低企业风险,使其能够保证企业正常的维修作业的运行,进而提高企业的核心竞争力。
企业库存管理业务主要有对物料的收发管理工作,根据物料的不同物理与化学属性做好物料存储与防护工作,降低各种库存管理费用,分析并提供库存管理所需要的各种数据报表等。
3.2.2 库存管理业务分析
1. 物料出入库、调动管理
对日常的生产领料、销售提货、采购入库、生产入库和物料库位移动等工作进行管理,产生出、入和移动单据,改变仓库、货位的库存数量,登记数量帐。 9
库存管理系统 库存管理系统毕业论文
2. 库存物料定期盘点,做到帐物相符
根据物料的盘点周期对每一种库存物料做盘点,并按照实盘数量调整物料库存数量。(www.61k.com]盘点方法一般有冻结盘点法和循环盘点法两种。正在冻结盘点的物料需停止进行入出库操作。而循环盘点则可以进行入出库处理,盘点结果产生盘点报表,经过财务审核确认产生库存数量帐调整。
3. 库存物料管理信息分析
从各种角度对库存物料信息做分析。如物料库存数量分析(是否超储或短缺)、物料来源和去向分析和物料分类构成分析等。
因此,库存管理子系统的重要设计功能为:1.对生产作业(或其他)的物料领用进行管理,编制领料单,并按凭单发料;2.对仓库的日常库存操作,如入库、出库、调拨等业务处理进行管理,并编制有关出、入单据,同时凭单记录库存账目;3.按物料的盘点周期进行盘点和清查工作,编制盘点表,报给财务部门,审批后按实盘量调整库存。
3.2.3 库存管理的流程分析图
仓库的管理主要是对一些单据数据的管理操作,其管理过程贯穿于整个库存过程,通过对入库,库存盘点及出库过程的控制达到企业对仓库的掌控,进而为
企业服务。
图3.2.3 仓库管理系统主要流程图
4 系统分析
4.1 库存管理系统的功能模块
对库存管理系统的设计主要解决:
1. 物料出入库、移动管理;
10
库存管理系统 库存管理系统毕业论文
2. 库存物料定期盘点,调整物料存量做到帐物相符;
3. 库存物料管理信息分析。(www.61k.com]
将库存业务分成基本数据管理、库存业务管理两个子系统。
4.1.1 系统的基本数据子系统分析
该系统主要分用户管理、仓库管理、仓库产品管理、通知管理几个模块。
1.用户管理模块分析
根据汽车厂的厂房仓库等设置,本系统设计成为多用户多仓库的管理系统,这就要求对权限的设置具体到仓库及个人用户,所以该模块的设计为每个用户角色对应一个仓库,每个仓库又设置有仓库管理员、入库员、出库员。仓库管理员的功能为对本仓库的数据的维护及库存盘点,数据报表打印。入库员和出库员分管本仓库的入库和出库。这样设置可以做到责任到人,方便以后数据查看及对责任人的追查。
2.仓库管理模块分析
仓库管理模块主要是管理员对仓库进行添加及相关数据维护,以满足生产扩张的需要。
3.仓库产品管理模块分析
这一模块为管理员对各个类别,产品信息等进行增加删除和修改操作。
4.通知管理模块分析
通知管理模块的设置是为了满足仓库管理系统管理员同整个系统用户之间的信息交流而设置。管理员可以发布通知,系统用户可以查看通知。
4.2 系统的业务功能模块分析
根据库存管理的业务流程分析,可以对系统进行纵向分析,也就是按整个业务流程,对系统进行业务逻辑分析。
系统的业务功能主要为入库、出库、调拨、库存盘点、库存报损等这几个功能模块。
1.模块分析
入库模块主要是本仓库的入库员对产品进行入库操作,同时系统自动向仓库插入货物信息并保存入库操作记录。
2.模块分析
出库模块主要是本仓库的出库员根据生产需求进行出库操作。同时系统自动向指定的仓库减少货物信息并保存出库操作记录。
3.调拨模块分析
该模块为系统用户及时了解各个库存货物状况,如果一个仓库出现货物紧缺,可以及时从其他的仓库调入货物,做到高效率的货物运转,提供了良好的帮助。
4.盘点、报损模块分析
该模块为系统人员定期对库存货物的现有情况进行全方位的了解,及时的核对库存中货物数量,以及调整由于其他不可抗力的原因造成的货物损失,损坏,以及人为计算错误等造成的库存货物与实际不符的情况,及时更正库存货物数据信息。
5 系统设计
11
库存管理系统 库存管理系统毕业论文
库存管理系统的功能模块主要分系统管理、库存管理两大模块,系统管理模块主要使用用户为拥有系统最高管理员权限的用户。[www.61k.com)该模块又分为人员管理、系统通知管理、仓库基本信息管理、所有仓库数据维护等这几个模块。库存管理模块主要针对管理员细分的仓库管理人员。仓库管理模块又分为入库管理、出库管理、库存数据维护、库存、库存以及库存等模块。
5.1 管理模块的设计
5.1.1 人员管理模块
1. 系统管理员可以增加、删除、编辑用户。
2. 用户可以对管辖的仓库和货物进行日常操作管理。
3. 由于本系统支持多仓库操作,所以对仓库的日常操作提供了更多方便的
功能。
4. 修改本用户密码。
5.1.2 系统通知管理子模块
1. 发布系统通知,方便管理员和整个系统用户的信息交流。
2. 显示通知列表及内容。
5.1.3 基本信息管理子模块
1. 对仓库进行增加、删除、及相关编辑,以满足生产扩张的需要。
2. 对货物类别、货物信息进行增删改管理。
5.2 仓库模块的设计
5.2.1 管理员模块设计
1.通知列表及内容展示功能。
2.库存产品查询功能。
3.所管理仓库的库存产品数量超限警报功能。
4.所管理仓库的库存盘点、单据管理及数据报表打印功能。
5.修改密码功能。
5.2.2 入库管理子模块的设计
1.通知列表及内容展示功能。
2.库存产品查询功能。
3.入库管理提供产品入库及单据写入(单据写入为隐藏功能)功能。
4.修改密码功能。
5.2.3 出库管理子模块的设计
1.通知列表及内容展示功能。
2.库存产品查询功能。
3.出库管理提供产品出库及单据写入(单据写入为隐藏功能)功能。
4.修改密码功能。
5.2.4 调拨管理子模块的设计。
12
库存管理系统 库存管理系统毕业论文
1.通知列表及内容展示功能。(www.61k.com) 2,库存产品查询功能。
3.调拨管理提供产品调拨业务,单据写入(单据写入为隐藏功能)功能。 4.修改密码功能。
5.2.5 盘点、报损管理子模块的设计。
1.通知列表及内容展示功能。 2.库存产品查询功能。
3.盘点管理提供产品库存数据的真实性比对,报损管理提供为由于各种不同原因造成的损失及时地记录,单据写入(单据写入为隐藏功能)功能。
4.修改密码功能。
5.3 数据字典
序号 1. 2. 3. 4. 5. 6.
序号 1. 2.
序号 1. 2. 3. 4. 5. 6.
序号 1. 2. 3. 4.
字段名 帐号 密码 姓名 所属部门 工作内容 用户级别
用户 类型 长度 Varchar 50 Varchar 50 Varchar 50 Varchar Varchar 50 Varchar 货物类别 类型 长度 Int Varchar 50 货物信息 类型 长度 Int Varchar 50 Varchar 50 Varchar 50 Varchar 50 Int 仓库 类型 长度 Int Varchar 50 Varchar 50 Varchar 50
13
索引 备注
P 管理员,操作员
字段名
代码 类别名称 索引 P 备注
字段名 代码 名称 规格 计量单位 特殊 类别代码 索引 备注 P 不能重复 关联 货物类别
字段名
代码 名称 货位数 地址 索引 P 备注 不能重复
库存管理系统 库存管理系统毕业论文
5.
序号 1. 2. 3. 4. 5. 6.
序号 1. 2. 3. 4. 5. 6.
序号
1.2. 3. 4.
序号 1. 2. 3. 4. 5. 6. 7.
序号 1. 2. 3. 4. 5.
介绍 字段名 入库号 入库时间 货物代码 数量 帐号 仓库代码
字段名 出库号 出库时间 货物代码 数量 帐号 仓库代码 字段名 代码 货物代码数量 仓库代码字段名 调库号 调库时间 货物代码 数量 帐号 出库代码 入库代码 字段名 盘点号 盘点时间 货物代码 库存数量 盘点数量 Varchar 50 入库
类型 长度 Int DateTime Int Varchar 50 Varchar 50 Int 出库
类型 长度 Int DateTime 50 Int Varchar 50 Varchar 50 Int
库存
类型 长度 Int Int Int Int 调库
类型 长度 Int DateTime 50 Int Int Varchar 50 Int Int 盘点
类型 长度 Int DateTime 50 Int Int Int
14
索引
备注 P 不能重复
关联 货物
关联帐号 关联 仓库
索引 备注 P 不能重复
关联 货物
关联 帐号 关联 仓库
索引 备注 P 不能重复 关联 货物
关联 仓库
索引 备注 P 不能重复
关联 货物
关联 帐号 关联 仓库 关联 仓库
索引 备注 P 不能重复
关联 货物
关联 帐号
库存管理系统 库存管理系统毕业论文
6. 7.
仓库代码 帐号 Int Varchar 关联 仓库 关联 用户
序 号
2. 3. 4. 5. 6. 7.
长度 1. 2. 3. 4.
5.4 报损 字 段 名 类型 长 度 索引
1.
报损号 Int P 报损时间 DateTime 50 货物代码 Int 损失数量 Int 仓库代码 Int 帐号 Varchar 50 损失原因
Varchar 50 系统通知 字段名 类型 长
索引 度
代码 Int P 时间 DateTime 主题 Varchar 50 内容
Text
根据表与表之间的关系,可以画出E-R图
15
备注 不能重复
关联 货物 关联 帐号 关联 仓库 关联 用户
备注 不能重复
库存管理系统 库存管理系统毕业论文
6 系统界面设计
6.1 界面设计思想
库存管理系统为Web型管理信息系统(MIS)应用项目。[www.61k.com]由于所采用的实现技术不是传统的单机或C/S桌面技术,而是基于B/A/D三层架构的动态网页技术,所以其界面设计的思想与传统习惯是有较大区别的,这主要是因为以HTML为核心的动态网页交互技术有着多媒体整合优势和交互功能缺陷,交互效率劣势的缘故。
虽然最终的软件成果是Web站点,但不能采用一般网站那种界面元素繁杂,渲染强烈的流行做法.作为MIS应用,首先强调的是功能、效率、稳定、安全和易上手,其次才是界面表现上的适当修饰。
按照一致性原则,各画面的设计要遵循相同或相似的风格。作为计算机辅助管理应用系统,一般遵循"简洁明快"的屏幕设计风格。
6.2 详细界面设计
本系统界面主要分首页登陆界面、用户使用界面、报表设计。
16
库存管理系统 库存管理系统毕业论文
6.2.1 首页登陆界面设计
登陆界面应尽量作到简洁大方,登陆模块一目了然。(www.61k.com]主页遵循简洁、淡雅、高效的设计风格。
要避免鲜艳刺眼色彩的大量运用而加快用户的视觉疲劳,一个界面中颜色数一般控制在五种以内,而且主、次色调明晰,选用清楚大方的字体字型,
不宜使用字型太复杂或软弱无力的字体(如斜体字等),越简洁清楚则辨识性越佳。
首页适当运用浅色背景光条,以产生布局版式的信息分类效果。
在IE里运行本系统,出现系统的主界面,如图:
图6.2.1 系统登陆界面 其代码如下:
protected void LinkButton1_Click(object sender, EventArgs e)
{
DataTable tmprs = new DataTable();
tmprs = db.GetData("select * from 用户 where 帐号='" + this.TextBox1.Text + "' and 密码='" + this.TextBox2.Text + "'");
if (tmprs.Rows.Count > 0)
{
//正确存储登陆信息 跳转页面
Session["ID"] = this.TextBox1.Text;
if (tmprs.Rows[0]["用户级别"].ToString() == "管理员")
{
Response.Redirect("Admin/index.aspx");
}
else
{
Response.Redirect("Czy/index.aspx");
}
}
17
库存管理系统 库存管理系统毕业论文
else
{
//提示错误
Page.RegisterClientScriptBlock("onload", "<script>alert('帐号或密码错误
');</script>");
return;
}
}
6.2.2 系统用户界面
用户界面是面向管理员及本系统用户的,因此用户界面设计主要考虑的是效率,安全,简洁和实用。(www.61k.com)
信息呈现风格上,承接传统,严格遵照信息系统设计的"直观紧凑"原则.所有网页的布局规划都严格限定在770
象素宽度内,以避免800×600屏幕模式下需要左右滚动。同时,将整个页面内容居中,以免在1024×768模式下靠边。
通信功能是MIS系统界面设计的核心。为使人与机交互准确高效,应保证业务信息可读、突出。这一方面通过文字精炼和适当修饰,另一方面则要减
少视觉干扰和动作干扰。像一般网站上的众多广告、宣传、招贴等强暴访客的内容和媒体是不应发生在MIS系统中的。还要尽可能避免使用与鼠标有关的浏览器脚本动感修饰,减少因用户移动鼠标,转动鼠标滚轮等寻的行为误激意外动作。
用户界面详细设计如下图所示:
图6.2.2 系统管理员界面
18
库存管理系统 库存管理系统毕业论文
图6.2.2 操作员界面
6.2.3 管理员基础数据维护界面
这一部分主要包括几个小模块:人员信息列表,货物类别列表、货物信息列表、仓库列表以及系统通知列表等,其主要是对基础数据的相关维护,界面不一一列举,典型界面如图所示:
图6.2.3管理员基础数据维护界面 相关代码如下:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//调用函数
initDg();
}
}
19
库存管理系统 库存管理系统毕业论文
private void initDg()
{
//绑定货物信息列表
this.GridView1.DataSource = db.GetData("SELECT 货物信息.*,货物类别.类别名称 FROM dbo.货物类别 INNER JOIN dbo.货物信息 ON dbo.货物类别.代码 = dbo.货物信息.类别代码");
this.GridView1.DataBind();
}
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) {
string idKey = this.GridView1.DataKeys[Convert.ToInt32(e.CommandArgument)]["代码"].ToString();
if (e.CommandName == "Mod")
{
//传递修改的标志 跳转页面
Response.Redirect("HwxxEdit.aspx?ID=" + idKey);
}
else if (e.CommandName == "Del")
{
//删除当前的货物信息
db.Execute("delete from 货物信息 where 代码=" + idKey + "");
initDg();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
//跳转页面
Response.Redirect("HwxxEdit.aspx");
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//绑定货物类别列表
this.DropDownList1.DataTextField = "类别名称";
this.DropDownList1.DataValueField = "代码";
this.DropDownList1.DataSource = db.GetData("select * from 货物类别 "); this.DropDownList1.DataBind();
DataTable dt = new DataTable();
//显示当前的货物信息信息
if (Request.QueryString["ID"] != null)
20
库存管理系统 库存管理系统毕业论文
{
this.TextBox1.ReadOnly = true;
dt = db.GetData("select * from 货物信息 where 代码=" +
Request.QueryString["ID"] + "");
if (dt.Rows.Count > 0)
{
this.TextBox1.Text = dt.Rows[0]["名称"].ToString();
this.TextBox2.Text = dt.Rows[0]["规格"].ToString();
this.TextBox3.Text = dt.Rows[0]["计量单位"].ToString();
this.TextBox5.Text = dt.Rows[0]["特殊"].ToString();
this.DropDownList1.SelectedValue = dt.Rows[0]["类别代码"].ToString(); }
}
}
}
protected void Button1_Click(object sender, EventArgs e)
{
//跳转页面
Response.Redirect("HwxxList.aspx"); }
protected void Button2_Click(object sender, EventArgs e) {
//根据标志 添加或修改货物信息
if (Request.QueryString["ID"] != null)
{
db.Execute("update 货物信息 set 名称='" + TextBox1.Text + "',规格='" +
TextBox2.Text + "',计量单位='" + TextBox3.Text + "',特殊='" + TextBox5.Text + "',类别代码=" + DropDownList1.SelectedValue + " where 代码=" + Request.QueryString["ID"] + "");
}
else
{
db.Execute("insert into 货物信息(名称,规格,计量单位,特殊,类别代码) values('" + this.TextBox1.Text + "','" + TextBox2.Text + "','" + TextBox3.Text + "','"+ TextBox5.Text +"'," + DropDownList1.SelectedValue + ")");
}
Response.Redirect("HwxxList.aspx");
}
6.2.4 管理员信息查询模块的功能
这一部分主要包括几个小模块:入库信息列表,出库信息列表、调拨信息列表、盘点信息列表以及报损信息列表等,其主要是对操作人员日常库存操作的
21
库存管理系统 库存管理系统毕业论文
相关记录,界面不一一列举,典型界面入库列表如图所示:
图6.2.4 入库列表界面 相关代码如下:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//绑定仓库列表
this.DropDownList1.DataTextField = "名称";
this.DropDownList1.DataValueField = "代码";
this.DropDownList1.DataSource = db.GetData("select * from 仓库");
this.DropDownList1.DataBind();
Button3_Click(sender, e);
}
}
protected void Button3_Click(object sender, EventArgs e)
{
//显示全部入库信息
this.GridView1.DataSource = db.GetData("SELECT dbo.入库.*, dbo.仓库.名称 AS 仓库名称, dbo.货物信息.名称 AS 货物名称 FROM dbo.入库 INNER JOIN dbo.仓库 ON dbo.入库.仓库代码 = dbo.仓库.代码 INNER JOIN dbo.货物信息 ON dbo.入库.货物代码 = dbo.货物信息.代码");
this.GridView1.DataBind();
}
protected void Button2_Click(object sender, EventArgs e)
{
//显示指定仓库的入库信息
this.GridView1.DataSource = db.GetData("SELECT dbo.入库.*, dbo.仓库.名称 AS 仓库名称, dbo.货物信息.名称 AS 货物名称 FROM dbo.入库 INNER JOIN dbo.仓库 ON dbo.入库.仓库代码 = dbo.仓库.代码 INNER JOIN dbo.货物信息 ON dbo.入库.货物代码 = dbo.货物信息.代码 where 22
库存管理系统 库存管理系统毕业论文
仓库.代码 ='" + DropDownList1.SelectedValue + "' ");
this.GridView1.DataBind();
}
6.2.5 统计信息模块的功能
主要是对操作员日常操作的统计计算,共能不一一列举。[www.61k.com]
6.2.6 操作员模块的功能
主要是对仓库日常操作的管理功能:功能模块较多,大体包括 货物入库管理、货物出库管理、货物调拨管理、货物盘点管理、货物报损管理等模块。此
模块下一共介绍两个典型模块:货物调拨管理、货物盘点管理
1. 货物调拨模块
:
主要含义:将仓库之间货物的调动流通。使仓库间货物保持相对平衡,
不会出现货物过多积压以及货物短缺等情况发生,具体界面如下:
图6.2.6 调拨单据列表页面1_1
图6.2.6 调拨单页面1_2
23
库存管理系统 库存管理系统毕业论文
相关代码如下:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//绑定 调出 和调入仓库
this.DropDownList1.DataTextField = "仓库信息";
this.DropDownList1.DataValueField = "代码";
this.DropDownList1.DataSource = db.GetData("SELECT 名称 + '--' + 货位数 + '--' + 地址 + '--' + 介绍 AS 仓库信息, 代码 FROM dbo.仓库");
this.DropDownList1.DataBind();
this.DropDownList3.DataTextField = "仓库信息";
this.DropDownList3.DataValueField = "代码";
this.DropDownList3.DataSource = db.GetData("SELECT 名称 + '--' + 货位数 + '--' + 地址 + '--' + 介绍 AS 仓库信息, 代码 FROM dbo.仓库");
this.DropDownList3.DataBind();
TextBox4.Text = DateTime.Now.ToString();
Button2.Attributes.Add("onclick", "return confirm('调拨单据不能作废,请仔细核对数据,是否继续?')");
}
}
protected void Button2_Click(object sender, EventArgs e)
{
//调出仓库减少库存
DataTable dt = new DataTable();
dt = db.GetData("select * from 库存 where 代码=" + DropDownList2.SelectedValue + " ");
if (dt.Rows.Count > 0)
{
if (Convert.ToDecimal(dt.Rows[0]["数量"].ToString()) <
Convert.ToDecimal(TextBox3.Text))
{
Page.RegisterClientScriptBlock("onload", "<script>alert('库存数量不足');</script>");
return;
}
}
db.Execute("update 库存 set 数量=数量 -" + TextBox3.Text + " where 代码=" + DropDownList2.SelectedValue + " ");
//调入仓库增加库存
string hwid = db.GetData("select * from 库存 where 代码=" +
DropDownList2.SelectedValue + "").Rows[0]["货物代码"].ToString();
if (db.GetData("select * from 库存 where 货物代码=" + hwid + " and 仓库代码=" + 24
库存管理系统 库存管理系统毕业论文
DropDownList3.SelectedValue + "").Rows.Count > 0) {
db.Execute("update 库存 set 数量=数量 +" + TextBox3.Text + " where 货物代码=" + hwid + " and 仓库代码=" + DropDownList3.SelectedValue + "");
}
else
{
db.Execute("insert into 库存(货物代码,数量,仓库代码) values(" + hwid + "," + TextBox3.Text + " ," + DropDownList3.SelectedValue + ")");
}
//保存调库单
db.Execute("insert into 调库(调库时间,货物代码,数量,帐号,出库代码,入库代码)
values('"+ DateTime.Now.ToString() +"','"+ hwid +"'," + TextBox3.Text + ",'" +
Session["ID"].ToString() + "'," + DropDownList1.SelectedValue + ","+ DropDownList3.SelectedValue +")");
Response.Redirect("HwdbList.aspx");
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
//动态刷新不同库存
this.DropDownList2.DataTextField = "库存货物";
this.DropDownList2.DataValueField = "库存代码";
this.DropDownList2.DataSource = db.GetData("SELECT (dbo.货物信息.名称 + '--' + dbo.货物信息.规格 + '--' + dbo.货物信息.计量单位 + '--' + dbo.货物类别.类别名称 + '--库存:' + convert(varchar(10),dbo.库存.数量)) AS 库存货物, dbo.库存.代码 AS 库存代码 FROM dbo.货物信息 INNER JOIN dbo.货物类别 ON dbo.货物信息.类别代码 = dbo.货物类别.代码 INNER JOIN dbo.库存 ON dbo.货物信息.代码 = dbo.库存.货物代码 where 库存.仓库代码=" + DropDownList1.SelectedValue + "");
this.DropDownList2.DataBind();
}
2. 货物盘点模块:
此模块是对库存中货物的实际情况进行核对,及时调整货物库存量的功能:与其他单据不同的是,此单据是批量调整模式,方便库存管理人员的操作,对提高库存现代化管理起到了决定性作用,具体如图所示:
25
库存管理系统 库存管理系统毕业论文
图6.2.6 盘点列表界面
2_1
图6.2.6 盘点编辑界面2_2 相关代码如下:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack) {
//显示过滤重复的盘点单据
this.GridView1.DataSource = db.GetData("SELECT distinct 盘点.盘点时间, 仓库.名称,仓库代码,盘点时间,帐号 FROM 盘点 INNER JOIN 仓库 ON 盘点.仓库代码 = 仓库.代码 where 帐号='" + Session["ID"].ToString() + "'");
this.GridView1.DataBind();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
//跳转页面
Response.Redirect("KcpdEdit.aspx");
26
库存管理系统 库存管理系统毕业论文
}
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) {
string idKey = this.GridView1.DataKeys[Convert.ToInt32(e.CommandArgument)]["帐号"].ToString();
string idCk = this.GridView1.DataKeys[Convert.ToInt32(e.CommandArgument)]["仓库代码"].ToString();
string idHw = this.GridView1.DataKeys[Convert.ToInt32(e.CommandArgument)]["盘点时间"].ToString();
if (e.CommandName == "See")
{
//传递标志 显示盘点详细内容
Page.RegisterClientScriptBlock("onload",
"<script>window.open('../KcPdSee.aspx?ryid="+ idKey +"&ckid="+ idCk +"&time="+ idHw +"')</script>");
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//绑定仓库
this.DropDownList1.DataTextField = "仓库信息";
this.DropDownList1.DataValueField = "代码";
this.DropDownList1.DataSource = db.GetData("SELECT 名称 + '--' + 货位数 + '--' + 地址 + '--' + 介绍 AS 仓库信息, 代码 FROM dbo.仓库");
this.DropDownList1.DataBind();
Button1.Attributes.Add("onclick", "return confirm('是否确认保存并调整库存?')");
}
}
protected void Button3_Click(object sender, EventArgs e)
{
//显示当前仓库的库存
this.GridView1.DataSource = db.GetData("select * from 库存,货物信息 where 库存.货物代码=货物信息.代码 and 仓库代码=" + DropDownList1.SelectedValue + "");
this.GridView1.DataBind();
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) {
//显示库存值
if (e.Row.RowType == DataControlRowType.DataRow)
{
27
库存管理系统 库存管理系统毕业论文
((TextBox)e.Row.Cells[2].Controls[1]).Text = e.Row.Cells[1].Text;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
//循环更新当前的盘点值 保存盘点记录
string dd = DateTime.Now.ToString();
for (int i = 0; i < this.GridView1.Rows.Count; i++)
{
db.Execute("update 库存 set 数量=" +
((TextBox)this.GridView1.Rows[i].Cells[2].Controls[1]).Text + " where 代码=" +
this.GridView1.DataKeys[i]["代码"].ToString() + "");
db.Execute("insert into 盘点(盘点时间,货物代码,库存数量,盘点数量,仓库代码,帐号) values('" + dd + "'," + this.GridView1.DataKeys[i]["货物代码"].ToString() + " " +
" ," + this.GridView1.Rows[i].Cells[1].Text + "," +
((TextBox)this.GridView1.Rows[i].Cells[2].Controls[1]).Text + "," + DropDownList1.SelectedValue + ",'" + Session["ID"].ToString() + "')");
}
Response.Redirect("KCPdList.aspx");
28
库存管理系统 库存管理系统毕业论文
7系统测试
测试是开发时期最后一个阶段,是保证软件质量的重要手段。[www.61k.com)软件测试就是在受控制的条件下对系统或应用程序进行操作并评价操作结果的过程,所谓控制条件应包括正常条件与非正常条件。软件测试过程中应该故意地去促使错误的发生,也就是事情在不该出现的时候出现或者在应该出现的时候没有出现。从本质上说,软件测试是"探测",在"探测"中发现软件的毛病。
7.1 软件测试的意义
软件危机曾经是软件界甚至整个计算机界最热门的话题。为了解决这场危机,软件从业人员、专家和学者做出了大量的努力。现在人们已经逐步认识到所谓的软件危机实际上仅是一种状况,那就是软件中有错误,正是这些错误导致了软件开发在成本、进度和质量上的失控。有错是软件的属性,而且是无法改变的,因为软件是由人来完成的,所有由人做的工作都不会是完美无缺的。问题在于我们如何去避免错误的产生和消除已经产生的错误,使程序中的错误密度达到尽可能低的程度。
7.2 软件测试的重要性
软件测试在软件生命周期中占据重要的地位,在传统的瀑布模型中,软件测试学仅处于运行维护阶段之前,是软件产品交付用户使用之前保证软件质量的重要手段。近来,软件工程界趋向于一种新的观点,即认为软件生命周期每一阶段中都应包含测试,从而检验本阶段的成果是否接近预期的目标,尽可能早的发现错误并加以修正,如果不在早期阶段进行测试,错误的延时扩散常常会导致最后成品测试的巨大困难。
事实上,对于软件来讲,不论采用什么技术和什么方法,软件中仍然会有错。采用新的语言、先进的开发方式、完善的开发过程,可以减少错误的引入,但是不可能完全杜绝软件中的错误,这些引入的错误需要测试来找出,软件中的错误密度也需要测试来进行估计。测试是所有工程学科的基本组成单元,是软件开发的重要部分。自有程序设计的那天起测试就一直伴随着。统计表明,在典型的软件开发项目中,软件测试工作量往往占软件开发总工作量的40%以上。而在软件开发的总成本中,用在测试上的开销要占30%到50%。如果把维护阶段也考虑在内,讨论整个软件生存期时,测试的成本比例也许会有所降低,但实际上维护工作相当于二次开发,乃至多次开发,其中必定还包含有许多测试工作。
7.3 软件测试的范围
软件测试贯穿于软件定义与开发的整个周期 ,软件的需求规格说明书 ,结构设计及程序编码,都属于软件测试的对象。
7.4 软件测试的方法
测试在软件开发过程中一直都是备受关注的,即使在传统的软件工程中,也有一个明确、独立的测试阶段。随着软件危机的频频出现以及人们对于软件本质的进一步认识,测试的地位得到了前所未有的提高。测试已经不仅仅局限于软件开发中的一个阶段,它已经开始贯穿于整个软件开发过程,人们已经开始认识到:测试开始的时间越早,测试执行的越频繁,所带来的整个软件开发成本的下降就 29
库存管理系统 库存管理系统毕业论文
会越多。[www.61k.com)Extreme Programming更是把测试推到了极限的位置,一切软件开发活动都要从首先编写测试代码开始。
7.5 软件测试的目的和原则
在开发大型软件系统的过程中,需要面对错综复杂的问题,因此,在软件生存周期的每个阶段都不可避免地会产生错误。我们力求在每个阶段结束之前通过严格的技术审查,尽可能早的发现并纠正错误。测试的目的就是在软件投入生产性运行之前,尽可能多地发现软件中的错误。目前软件测试仍然是保证软件质量的关键步骤,它是对软件规格说明、设计和编码的最后复审。
尽管面向对象技术的基本思想保证了软件应该有更高的质量,但无论采用什么样的编程技术,编程人员的错误都是不可避免的,而且由于面向对象技术开发的软件代码重用率高,更需要严格测试,避免错误的繁衍。因此,软件测试在面向对象编程里更具有它的重要性。
与开发过程类似,测试过程也必须分步骤进行,每个步骤在逻辑上是前一个步骤地继续。大型软件系统通常由若干个子系统组成,每个子系统又由许多模块组成。因此,大型软件系统的测试的基本层次如图所示:
图7.5 测试的基本层次
(1) 单元测试 单元测试的用例从单元详细设计中导出。在单元测试中可以采用功能性测试和结构性测试两种。
(2) 集成测试 在这个测试步骤中所发现的往往是概要设计的错误。
(3) 系统测试 在这个测试步骤中所发现的往往是需求规格说明的错误。一般来说,系统测试是功能性测试,不是结构性测试。
为了使本软件运行更加稳定,我对它进行了全面的测试,测试分为二部分来进行,一是:界面测试;二是功能测试。
首先是界面测试,为了使软件在不同的的操作系统平台上运行界面能保持原来的风格。在Windowsxp环境下,程序运行界面正常,界面上的字体等设置都保持得相当好。没有出现类似字体变形的情况!
二是进行功能的测试。经过测试,所有功能都能得以实现,没有任何变形。至此到这里在功能的测试上也已经比较圆满的完成了!
30
库存管理系统 库存管理系统毕业论文
总 结
系统的总结
本系统由于是应用计算机对企业仓库管理进行管理,所以对于过去纯手工操作有着较为明显的优点,如:检索迅速、查找方便、可靠性高、存储量大、寿命长、成本低等。[www.61k.com)这些优点能够极大地提高仓库管理的效率。
在本文中,作者针对实际需要将系统的功能进行了细化分析与总结,这极大成度上满足了用户操作方便的需求。并采用Asp.net +SQL server 的开发模式进行开发,以保证本系统的可靠性和存储量大等特点。
其中本系统所达到的主要功能具体表述如下:
一、 能满足用户对仓库基本信息的录入、删除管理,并同时可修改数据库中的数据信息;
二、 能够按所存入的信息进行查询、更新;能对信息进行删除查询操作。
三、 提供多种添加和修改数据库中记录的方式,操作起来比较灵活,同时还可以保持数据的一致性。
该系统经过一段时间的纠错测试,并无重大漏洞或错误代码,运行及维护都比较简便易懂,对于操作本仓库管理系统的人员的水平要求不高。因此,比较适合一般的简易仓库的管理。
本系统尚有很多不足之处,作者会在今后的学习、工作中改进、完善它,并在此基础上进一步挖掘客户的需求,添加或修改相应的功能模块,来扩展本系统,使之更加具有实用性。
本系统已经从功能上满足了仓库管理的需要,但是从技术上来说这个系统还并不是一个高水平的作品。任何一个项目想做的完美都不是一件很容易的事情。
本系统在以下几个方面还存在缺陷:
1.产品入库操作应该结合硬件刷条形码。
2.数据报表模块应该有图形化的展示界面,这样更加直观。
31
库存管理系统 库存管理系统毕业论文
开发过程的总结
开发过程是快乐的。[www.61k.com)因为在开发中不但能充实生活,同时自己的技能也得到了很好锻炼。但是在开发过程中暴露出自己的一些问题或不足也是很值得思考的:
首先,在对一个系统的整体理解上,还不够充分,因此功能模块的设计和开发出现过技术上的调整。其次,在进行开发时,还不能深入的理解ASP.NET的思想,所以虽然是在.NET下开发程序,有些时候却还是在用面向过程的程序算法来实现……
这个系统主要的页面都是由C#语言和.Net技术编写而成的,数据库则是通过微软公司的SQL SERVER 2005建立的,开发工具是Visual Studio 2005。
开始设计系统时,主要是定义数据库,并初始化其中的数据。这项工作的技术性并不强,只是简单的输入各种数据。到了数据库设计完成,进入网络页面编程的时候,才是最为耗费时间的工作。在这过程中,碰到的问题大都是业务逻辑问题,还有少部分则出现在与数据库的连接访问过程之数据类型问题。
在系统设计过程中,我得到了指导老师的细心指导和其他同学的热心帮助,他们使我的开发进度没有出现停滞,让我少走了不少弯路。这也使我明白了一个道理,没有人可以事无巨细,全部做到没有遗漏,总有些你能力无法企及的地方。相互交流才是解决这些问题的最佳方法。通过这次的毕业论文设计,不仅提高了我解决问题的能力,更是锻炼了我自己动手编程能力,为我今后的发展提供了宝贵的实践经验。
整个系统使用微软的.Net技术来完成,在系统设计的时候合理的设计数据库是系统的关键。还有就是在整个系统的设计过程中尽量使用英语,避免大量使用中文来标识文件名和变量名,这样降低了系统程序的执行效率。而且更可怕的是有些中文标识和中文参数计算机并不认识形成了乱码,出现了许多致命的错误了系统运行异常。
在几个月的系统开发和论文撰写过程中,通过查阅、研究大量的相关文献,分析相关领域的特色系统并结合实际,论文先论述了库存管理方面的理论知识,包括对它的定义,内涵,特点,功能,技术等方面的研究。然后按照软件工程的严格要求,对一个库存的应用系统进行了需求分析,概要设计,详细设计,编码与测试等方面进行分析和讨论,初步建立了一个库存管理系统。虽说是模拟的系统,但可使学习者能够首先从感性认识上加强对电子商务的理解,对电子商务的运作方式初步有所了解,并最终有感性认识上升到理性认识。
通过与数据库的连接,运行本操作系统实现了建立数据库通过SQL语句对数据库中的信息进行调用,以及把网站信息及时的存储入数据库表单中。另外通过C#脚本语言实现对网站的动态连接。
当然由于时间有限,这个系统还不够完善,还有许多地方有待改进。世界电子商务的内涵、标准和技术等也日新月异,而电子商务又是一个涉及多学科的新领域,且文理渗透,很难从整体上把握,难免存在疏漏,恳请各位老师批评赐教。
总的来说,毕业设计虽然结束了,所编写的系统虽然还有很多的漏洞,相信在老师眼里还有很多幼稚和不足的地方,但这次毕业设计确实起到了很大的效果,它是对我们整个大学生涯中所学到的知识的大检查,也对我们将来从事的工作有了一个新的认识。我觉得设计得出的结果并不重要,最重要的是总结出来的 32
库存管理系统 库存管理系统毕业论文
经验以及在制作过程中所学会的知识。(www.61k.com)相信有了这次开发经历,以后再做类似的开发项目,应该就会少栽很多跟头了。
33
库存管理系统 库存管理系统毕业论文
致谢
时光飞逝,短暂的四年大学生活就要结束了。(www.61k.com]但即使做完全部的事情,合上扉页,四年的生活也绝不仅如时光逝去那样匆匆无痕。毕业在即,论文的撰写工作使我有机会对过去的学习生活作个总结。四年的时间中,许多人给予了我无私的指导和帮助,给我的生活和工作平添了许多乐趣。下面的致谢永远也表达不完四年来他们对我的指导和帮助。
首先,我要衷心感谢我的导师,是她给我论文的写作提供了指导和帮助,在我论文的整个写作过程中,从组织到内容,自始至终指导着我。她耐心、详细、实际的指导给我了许多计算机方面专业知识,她丰富的学识使我受益匪浅,她对我的毕业设计给予了很多建议和意见,给了我极大的帮助、鼓励和关怀,在此向她表示深深的谢意。同时,我还要感谢所有任课教师,在我的大学学习生涯中,老师们严谨的工作作风和对我的悉心指导将一直激励着我今后的生活与工作。
通过进行毕业设计使我综合运用所学的基础理论、专业知识和基本技能,提高分析与解决实际问题的能力,也培养了我的创新精神和实践能力。感谢自己成长过程中关心和帮助过我的所有亲人、师长、同学和朋友们!感谢论文答辩委员会的诸位老师能在百忙之中审阅我的论文,并出席论文答辩会。
时光的流逝也许是客观的,然而流逝的快慢却是一种主观的感受。四年已经过去,到了该告别的时候了。一念至此,竟有些恍惚,所谓白驹过隙、百代过客云云,想来便是这般惆怅了。
我的大学生活即将接近尾声,感谢学校对我这几年的教育,我会永远记住这美好的大学时光。
最后,再次对关心、帮助我的老师和同学表示衷心地感谢!
34
库存管理系统 库存管理系统毕业论文
参考文献
1 顾自新.王炳同.物流信息系统开发策略研究.物流科技,2006,1:10-13
2 蒋宝家.郑荣.董绍华. 可视化仓库管理系统的设计. 物流科技, 2005,9:178-180 3 郝刚.ASP.NET服务器控件开发技术与实例.北京:人民邮电出版社,2003 4 邹建峰.ASP.NET开发技术详解.北京:人民邮电出版社,2003.07.28 5 李勇平.ASP.NET Web 应用开发教程/NET 自学教程.科学出版社,2002 6 孙运动.用ASP.NET 开发三层结构应用程序.赛迪网,2004.8.2
7 薛华成.管理信息系统.北京:清华大学出版社,1999
35
库存管理系统 库存管理系统毕业论文
附录
附录图1
附录图2
36
库存管理系统 库存管理系统毕业论文
附录图3
附录图4
37
库存管理系统 库存管理系统毕业论文
附录图5
附录图6
38
库存管理系统 库存管理系统毕业论文
附录图7
附录图8
39
库存管理系统 库存管理系统毕业论文
附录图9
40
三 : 谁有学生学籍管理系统论文及VB原代码谁有学生学籍管理系统的毕业设
谁有学生学籍管理系统论文及VB原代码
谁有学生学籍管理系统的毕业设计论文及原代码?有的话请尽快传上啊,急用。谢谢
我有
四 : 毕业论文--网上订餐管理系统
摘要
时代在进步,科技在发展,当今时代网络已经成了我们生活中一个不可或缺的部分。网络的发展也给我们带来了无限的商机与便利,有人可以足不出户就赚钱,有人可以足不出户就买到想买的东西、订票等等。在餐饮业,网络也同样能够发挥它巨大的作用—网上订餐管理系统。
网上订餐管理系统旨在通过网站的形式实现想要订餐的用户的订餐过程。本课题基于Web2.0,使用ASP.NET2.0实现B/S模式的订餐系统。用户通过访问餐馆的网站就能够看到该餐馆的菜肴种类、价格等信息,从而做出订餐的决定,然后使用唯一的账号登陆,通过一定的支付方式来付款,仅需几分钟就完成了一次订餐。而餐馆也能够及时地看到用户在自己餐馆网站上下的订单,从容准备,及时送达用户指定的就餐地点。相比一般的电话订餐方式,网上订餐不仅给用户节省了大量电话询问时间和电话费,也为餐馆提供了收款保障,餐馆可以选择网上银行或是充值系统等的预先付款方式,也可以选择货到付款的方式。在信息的准确性方面,网上订餐也比电话订餐高出一等,网上订餐则是由用户自己填写,不太容易造成错误。
关键词:网上订餐,B/S
ABSTRACT
When the era is going ahead, the technology developing quickly, the Internet has become a prerequisite part of our life. The development of the internet has brought us infinite opportunity of business and advantages of life. People can earn, buy things they need, order tickets and so on without going out. In the eatery area the internet can also play an important role which can be called” The System of Dinner-Order through the Internet”.
“The system of dinner-order through the Internet“aims at realizing the process of dinner order in the form of website. This paper bases on Web2.0; uses ASP.NET 2.0 to realize the system of dinner-order through the internet of B/S module. The user who wants to order dinners can see the information of dish such as kinds, price, and introduction through suffering the website which contains the system, and then decides to order or not. After entering the system with his unique account, paying for the dinner through some way, he can finish the order in several minutes. And the eatery can see the orders which are delivered by the users quickly, prepare for the dinner leisurely, and send it to the destinations which are appointed by the users. Compare to the common dinner-order way, dinner-order through telephone, dinner-order through the Internet not only saves a mass of time and telephone fee to ask, but also offers the eatery the protection of receiving the payment. The eatery can choose both payoff beforehand as Net-Bank or Recharge System, and payoff after the dinner has sent to the destination. In the aspect of veracity of information, dinner-order through the internet is advantaged because its information is written by the users themselves and can not go wrong easily.
Key Words: Dinner-Order through the internet, B/S
目 录
1. 引言 .............................................................................................................................. 1
1.1项目背景 .............................................................................................................. 1
1.2国内外现状 .......................................................................................................... 1
1.3项目意义 .............................................................................................................. 2
2. 相关技术介绍 .............................................................................................................. 3
2.1 Web 2.0技术 ........................................................................................................ 3
2.2 ASP.NET技术 ..................................................................................................... 5
2.3 AJAX技术 ........................................................................................................... 6
2.4 SQL Server 2005技术 ......................................................................................... 8
3. 系统功能分析与概要设计 ........................................................................................ 10
3.1 功能分析 ........................................................................................................... 10
3.2 界面设计 ........................................................................................................... 14
3.3 数据库设计 ....................................................................................................... 15
4. 系统详细设计与编码实现 ........................................................................................ 18
4.1 管理员模块 ....................................................................................................... 18
4.2 会员模块 ........................................................................................................... 23
4.3 公共模块 ........................................................................................................... 27
5. 系统测试 .................................................................................................................... 28
5.1 测试计划制定 ................................................................................................... 28
5.2 测试用例设计与执行 ....................................................................................... 28
5.3 测试报告 ........................................................................................................... 30
6. 总结 ............................................................................................ 错误!未定义书签。 致谢 ................................................................................................. 错误!未定义书签。
参考文献 ......................................................................................................................... 33
1. 引言
1.1项目背景
时代在进步,科技在发展,当今时代网络已经成了我们生活中一个不可或缺的部分。网络的发展也给我们带来了无限的商机与便利,有人可以足不出户就赚钱,有人可以足不出户就买到想买的东西、订票等等。在餐饮业,网络也同样能够发挥它巨大的作用—网上订餐管理系统。
“民以食为天”,餐饮业系百业之首。中国加入WTO后,我国餐饮业己形成了高中低档多层次,东西南北菜系多样化,中西餐相互补充的格局。与此同时,一些先进的餐饮管理技术也进入中国。目前,网络热潮正冲击着我们生活的方方面面。具体到餐饮业网络营销,网上订餐是一种主要的形式。网上订餐分为两种类型,一种是通过英特网预订某饭店的席位及菜品,另外一种是通过英特网预订某饭店的菜品,并由该餐厅负责送货上门。本课题就是要实现后者,通过实现网上订餐,以期能从互联网技术方面为餐饮业提供强大的动力,促进餐饮业的蓬勃发展。
1.2国内外现状
在我国,网上订餐最早出现在20世纪90年代末期,98年广州等大城市己出现网上订餐业务。2000年7月,北京丽华快餐公司为了探索餐饮业网络经营的道路,寻求新的经济增长点,也推出了网上订餐,成为探索网上订餐的先驱。
2003年非典之后,为尽快恢复遭受非典疫情严重影响的餐饮业和住宿业的发展,全面振兴我国餐饮业和住宿业。2003年7月30日,商务部制订了《全国餐饮业和住宿业振兴计划》,开展网上订餐服务等拓展服务领域措施作为振兴计划的主要内容被提了出来。随后,一些餐饮公司纷纷在自己的网站上开设了网上订餐业务。
目前网上订餐已逐渐普及,特别是在快餐业发达的东部地区。但目前网上订餐在我国并未成气候,很多大的餐饮公司网上订餐业务经营惨淡,很多网站每天只有几十份,经营较好的也只有几百份。如果单纯依靠网上订餐,公司根本无法生存。相反,一些小的个体饮食店老板巧妙地利用QQ、MSN等即时通信软件作为网上订餐工具,却取得了相当不错的效益。他们随着网上订餐业务的扩大,建立了自己的订餐网站,但最初单纯的网上订餐却发展成了网上送花、网上送票等的网上送货网站或者综合类的饮食网站,已经偏离了网上订餐的初衷[4]。
在美国,食品网(www.61k.com是目前美国网上订餐行业中的先驱。设在三藩市的食品网在99年已服务于全美一万三千间餐馆,有七十万的网上消费者。任
1
何消费者只要轻松上网,输入邮区号码,就可以了解到在周围有哪些餐馆提供网上送餐服务,并可以浏览到这些餐馆的菜单,做出预订。仅在二分钟内,预订者就可以通过电子邮件得到确定。再过一会,就可以收到所订的美食了。食品网发言人说:在参加该公司网上联网销售的餐馆中,网上订餐的数量实际上比普通的电话订餐高出22%。此外,网上订餐中多功能性的服务还可以让消费者从容地上网浏览餐馆的菜单,或进行价格上的比较,来选择所需要的美食佳肴。目前,通过上网提供外卖和送餐服务的餐厅多于独立餐馆经营者,外卖与送餐服务占餐饮生意额的一半以上。全美餐饮消费者越来越趋向于使用网上订餐的形式来购买外卖,特别是年轻一族的消费者。显而易见,网上订餐将成为餐馆业扩大生意的金矿源,有眼光的餐馆业主应该尽早考虑如何利用英特网上网销售。对于网上预订餐位,三藩市一家餐厅的总经理说该餐厅每周至少可以接到20个网上订餐。不过,他认为网上订餐最有价值的地方是大大地方便了消费者。因为如果通过电话订餐,往往会遇上电话线繁忙、占线的问题,客人也因此会另外选择其它店家。如今,使用网上订餐,这些问题不仅迎刃而解,而且客人什么时候想订餐位都可以,凌晨三四点都不成问题了。据资料报道,国外一些高档的餐厅有的不准备采用网上订购后送餐的服务方式,但是他们会偏向于利用英特网提供预订餐位的服务。如三藩市的entable.com完全利用英特网预订取代了传统的前台用纸用笔接受预订的方法。网上订餐带来了方便、实惠和个性化[3]。
总的说来,单独的网上订餐还不足以支撑网站的经营。目前的状况是规模大的不盈利,小的有盈利。原因是规模大的范围广,运营成本高,规模小的由于运营成本低,客户群相对稳定,故有一定的利润空间。
1.3项目意义
网上订餐业务的兴起, 折射出餐饮业善抓机遇、抢占利润第二落点的经营理念,同时也显示出消费者在日常所需中, 运用网络观念的意识正逐渐增强。但比起如今火爆的网上购物, 网上订酒店住宿等服务, 网上订餐服务在一些餐饮企业中仍未引起足够的重视, 对于消费者来说, 许多人对这一新兴业务尚缺乏了解。但因这种消费方式顺应了当前信息社会的快捷、便利等趋势, 网上订餐仍存在着广阔的发展空间。网上订餐的发展也将给餐饮业带来勃勃的生机。
2
2. 相关技术介绍
2.1 Web 2.0技术
Web2.0的概念最早是去年在美国提出来的,通过Blog口口相传,网上很多IT人士试图都在给 Web2.0 一个具体的定义,事实上却很难。
2.1.1 Web2.0 概述
Web2.0是为了区别于过往的以门户为代表的 Web1.0的称呼,Web2.0只是一个符号,它表明的是正在变化中的互联网,这些变化相辅相成,彼此联系在一起,它让社会性、用户、参与和创作这些元素浮出水面成为互联网文化的中坚力量。
Web2.0的最大特点是个人化、去中心化,同时强调社会化,强调开放、共享, 强调参与、创造。基本上Web2.0的绝大部分服务都存在一个个人标识明确的页面。Web2.0的最大改变就是普通人开始改变、创造网络,草根性质的、或者说更准确的说法是非专业、业余性质的参与。需要说明的是草根并不是是社会底层。 Web2.0要凸现每个用户的价值,每个人在互联网上都可以创造自己的价值。
2.1.2 Web2.0的技术与典型应用
? RSS ,这个是Web2.0标杆式的技术,它以XML为基础,是站点用来和其他站点之间共享内容的一种简易方式(也叫聚合内容),通常被用于新闻和其他按顺序排列的网站, 例如Blog。一段项目的介绍可能包含新闻的全部介绍等。或者仅仅是额外的内容或者简短的介绍。这些项目的链接通常都能链接到全部的内容。网络用户可以在客户端借助于支持RSS的新闻聚合工具软件( 例如 Sharp Reader, News Crawler, Feed Demon),在不打开网站内容页面的情况下阅读支持RSS输出的网站内容。网站提供RSS输出,有利于让用户发现网站内容的更新。
? XML ,Web2.0的基础技术,原来作为HTML的父集出现,现在以其为基础的周边应用越来越多,比如XSL、RSS、Ajax 等。
? Ajax ,很旧的技术,采用 Javascript+XML,克服了以往页面更新请求将所有页面内容重新提交到了服务器, 然后再由服务器重新升成整个页面的低效率方式,Ajax通过XML技术将只向服务器请求更新的数据,然后通过Javascript 技术在客户端运算生成整个页面, 这种技术可以提高数据传输效率,增强用户体验。
? Trackback ,Trackback中文称作“引用通告”,简称“引用”。用处就是通知被你所引用的日志,你引用了它。这样Blog之间就通过Trackback互相连接了起来,因此有人将之称为“思想的桥梁”。
? Tag ,Tag是什么,网上目前也没有一个准确的说法,但是大家都能按照自己的方式去用,其实Tag就是一个文章或者一个Blog的标签,这个标签命名可以
3
来自关键词,也可以来自分类,作为关键词标记,你可以用几个关键词来概括你的文章或者Blog,这个关键词可以是文章中出现过的,也可以是没有的,作为分类标记,Tag又不同于一般的目录结构的分类方法,可以自由地不考虑目录结构的给文章进行分类,各个Tag之间的关系是一种平行的关系但是又可以根据相关性分析,将经常一起出现的Tag关联起来,而产生一种相关性的分类。前面我们提到的RSS、Ajax和Trackback也可以说是Web2.0的Tag。
? Blog ,Web2.0时代最典型代表的应用就是Blog,Blog是Weblog的简写,翻译成中文叫网上日志,Blog是一种平台,也是一种技术,更是一种思潮,Blog是管理个人内容的一种工具。Blog是以 WEB( 网页)方式显示和发布,借助于互联网,人们就可以彼此分享自己的经验、想法、感受等,并由此形成一种新型的网络虚拟社群和人际交往方式。
? Wiki ,Wiki一词来源于夏威夷语的“weekee”,原本是“快点”的意思。在这里 Wiki指的是一种网上共同协作的超文本系统,可由多人共同对网站内容进行维护和更新。我们可以通过网页浏览器对Wiki文本进行浏览、创建、更改,而且创建、更改、发布的代价远比HTML文本为小,您并不需要懂得HYTML代码,只要简单了解少量的Wiki的语法的约定,您就可以在系统中发布您的页面。与其它超文本系统相比,Wiki有使用方便及开放的特点,所以Wiki系统可以帮助我们在一个社群内共同收集、创作某领域的知识,发布大家都关心和感兴趣的话题。
? SNS ,SNS即Social network software的英文缩写, 即社会性网络软件, 社会性网络软件依据六度理论,以认识朋友的朋友为基础,扩展自己的人脉。并且无限扩张自己的人脉,在需要的时候,可以随时获取一点,得到该人脉的帮助。SNS网站,就是依据六度理论建立的网站,帮你运营朋友圈的朋友。六度关系理论:美国著名社会心理学家米尔格伦 (Stanley Milgram)于20 世纪60年代最先提出,在人际脉络中,要结识任何一位陌生的朋友,这中间最多只要通过六个朋友就能达到目的。就是说你想认识一个人,托朋友找朋友,找认识他的人,之间不会超过六个人。
? 网摘 , 网摘就是一种在网上保存网页链接的服务,通俗的说就是一个放在网络上的海量收藏夹。网摘服务作为一种个人的信息整理平台,基于它在网络上的这一独特的优势,它能提供很多本地收藏夹所不能提供的功能。其核心价值已经从保存浏览的网页,发展成了一个新的信息共享的中心,能够真正做到“共享中收藏、收藏中分享”。如果每日使用网摘的用户数量较大,用户每日提供的链接收藏数量足够,网摘站就成了汇集各种新闻链接的门户网站。国外代表网站有Delicious,国内有365key.com。
? Podcast,中文译名尚未统一,但最多的是将其翻译为“播客”。它是数字广播技术的一种, 出现初期借助一个叫“iPodder”的软件与一些便携播放器相结
4
合而实现。Podcasting录制的是网络广播或类似的网络声讯节目,网友可将网上的广播节目下载到自己的 iPod、MP3播放器或其它便携式数码声讯播放器中随身收听,不必端坐电脑前,也不必实时收听,享受随时随地的自由。更有意义的是,你还可以自己制作声音节目,并将其上传到网上与广大网友分享。就像博客颠覆了被动接受文字信息的方式一样,播客颠覆了被动收听广播的方式,使听众成为主动参与者。
? IM,即时通讯(Instant Messenger,简称IM)软件可以说是目前我国上网用户使用率最高的软件。聊天一直是网民们上网的主要活动之一,网上聊天的主要工具已经从初期的聊天室、论坛变为以MSN、QQ为代表的即时通讯软件。大部分人只要上网就会开着自己的MSN或QQ。作为使用频率最高的网络软件,即时聊天已经突破了作为技术工具的极限,被认为是现代交流方式的象征,并构建起一种新的社会关系。它是迄今为止对人类社会生活改变最为深刻的一种网络新形态,没有极限的沟通将带来没有极限的生活。
2.2 ASP.NET技术
ASP.NET是微软提供的新一代的Web开发平台,它为开发人员提供了生成企业级Web应用程序所需要的服务、编程模型和软件基础结构,同其他Web开发平台相比,ASP.NET具有下面三大优势。
2.2.1支持编译型语言
目前流行的几种脚本语言比如VBScript、JavaScript和ASP等都有两个主要的缺点。第一,不支持强数据类型。在JavaScript中定义变量只有一个关键字var,使用var关键字定义的变量,如果赋值是字符串,该变量就是字符串变量;如果赋值是整数,则该变量就是整型变量。在VBScript和ASP中,定义变量只通过一个关键字DIM,该变量也没有具体的类型。第二,脚本语言是解释型的。通常情况下,解释型的脚本语言在性能上抵不上编译型的语言。
自推出.NET开发平台以来,微软在Web服务器端开发语言方面,主推VB.NET和C#.NET这两种编译型语言。通过这两种开发语言,程序员可以像开发普通的Windows程序一样来开发Web程序,只不过在Windows程序中用于开发GUI界面的各种控件,在Web程序开发中也有它们相应的Web版本。
程序员通过C#语言,利用VS.NET提供的各种Web控件,可以非常容易地开发ASP.NET Web程序。开发的ASP.NET程序被编译成MSIL语言,这种中间语言具有平台无关性,而且,由于ASP.NET页面在执行前会被编译,所以ASP.NET的性能得到了很大的提高。
2.2.2程序代码与页面内容的成功分离
通常的动态网页开发,往往是在一个网页上混合多种脚本语言。比如在HTML脚本语言上可以嵌入JavaScript或VBScript等客户端脚本语言,也可以同时嵌入
5
ASP或JSP等服务器端脚本语言。这种多语言混合的Web开发模式通行已久,但是它的代码可读性很差,程序代码同页面内容混合在一起,程序员要在多种语言的思维上频繁切换,如果程序很复杂的话,这种开发模式非常不利于程序的开发,而且日后的维护也将成为大问题。
ASP.NET Web开发技术为程序员提供了一种非常好的开发模式,即Code Behind技术,它通过Web控件将程序代码与页面内容成功分离,从而使ASP.NET的程序结构异常清晰,开发和维护的效率也得到了很大的提高。另外可以利用Visual Studio.NET集成环境下开发ASP.NET应用程序,该环境不仅提供了强大的调试能力,而且还集成了“所见即所得”的HTML编辑器,为开发人员开发Web页面提供了方便的图形化支持。
2.2.3引入服务器端控件
在ASP中,可以给页面手动添加HTML控件,对这些控件的响应有两种办法。一种是在客户端的脚本语言中响应用户对这些控件的输入,另一种是把该页面提交给服务器。这两种办法都存在问题,第一种办法产生的问题是不同的浏览器以不同的方式执行客户端脚本语言,我们很难编写在多种浏览器上都能良好运行的复杂的Web页面。第二种办法存在的问题是,如果我们把Web页面重新提交给服务器,那么Internet的无状态特性就会导致页面上存储在变量中的信息丢失,除非我们编写了复杂的代码,把它们存储在HTML元素或URL查询字符串中。
ASP.NET通过服务器控件解决了上述问题。服务器端控件会生成发送给浏览器的HTML代码,显示控件,它们还能生成隐藏的HTML元素来存储它们当前的状态。在提交页面时,这些信息就会传送回服务器,控件将自动处理这些信息,改变HTML,显示控件[11]。
2.3 AJAX技术
AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。
2.3.1与传统的web应用比较
传统的web应用允许用户填写表单(form),当提交表单时就向web服务器发送一个请求。服务器接收并处理传来的表单,然后返回一个新的网页。这个做法浪费了许多带宽,因为在前后两个页面中的大部分HTML代码往往是相同的。由于每次应用的交互都需要向服务器发送请求,应用的响应时间就依赖于服务器的响应时间。这导致了用户界面的响应比本地应用慢得多。
与此不同,AJAX应用可以仅向服务器发送并取回必需的数据,它使用SOAP或其它一些基于XML的web service接口,并在客户端采用JavaScript处理来自服务器的响应。因为在服务器和浏览器之间交换的数据大量减少,结果我们就能看到响应更快的应用。同时很多的处理工作可以在发出请求的客户端机器上完成,
6
所以Web服务器的处理时间也减少了。
2.3.2 Ajax应用程序的优势
? 通过异步模式,提升了用户体验
? 优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用
? Ajax引擎在客户端运行,承担了一部分本来由服务器承担的工作,从而减少了大用户量下的服务器负载。
2.3.3 优点和缺点
使用Ajax的最大优点,就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变过的信息。
Ajax不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。就像DHTML应用程序那样,Ajax应用程序必须在众多不同的浏览器和平台上经过严格的测试。随着Ajax的成熟,一些简化Ajax使用方法的程序库也相继问世。同样,也出现了另一种辅助程序设计的技术,为那些不支持JavaScript的用户提供替代功能。
对应用Ajax最主要的缺点就是,它可能破坏浏览器后退按钮的正常行为。在动态更新页面的情况下,用户无法回到前一个页面状态,这是因为浏览器仅能记下历史记录中的静态页面。一个被完整读入的页面与一个已经被动态修改过的页面之间的差别非常微妙;用户通常都希望单击后退按钮,就能够取消他们的前一次操作,但是在Ajax应用程序中,却无法这样做。不过开发者已想出了种种办法来解决这个问题,当中大多数都是在用户单击后退按钮访问历史记录时,通过建立或使用一个隐藏的IFRAME来重现页面上的变更。
2.3.4 Ajax的工作原理
Ajax的核心是JavaScript对象XmlHttpRequest。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术。简而言之,XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。
在创建Web站点时,在客户端执行屏幕更新为用户提供了很大的灵活性。下面是使用Ajax可以完成的功能:
? 动态更新购物车的物品总数,无需用户单击Update并等待服务器重新发送整个页面。
? 提升站点的性能,这是通过减少从服务器下载的数据量而实现的。例如,在某购物车页面,当更新篮子中的一项物品的数量时,会重新载入整个页面,这必须下载整个页面的数据。如果使用Ajax计算新的总量,服务器只会返回新的总量值,因此所需的带宽仅为原来的百分之一。 消除了每次用户输入时的页面刷新。
7
例如,在Ajax中,如果用户在分页列表上单击Next,则服务器数据只刷新列表而不是整个页面。
? 直接编辑表格数据,而不是要求用户导航到新的页面来编辑数据。对于Ajax,当用户单击Edit时,可以将静态表格刷新为内容可编辑的表格。用户单击Done之后,就可以发出一个Ajax请求来更新服务器,并刷新表格,使其包含静态、只读的数据[12]。
2.4 SQL Server 2005技术
SQL Server 是一个全面的、集成的、端到端的数据解决方案,它为企业中的用户提供了一个安全、可靠和高效的平台用于企业数据管理和商业智能应用。
2.4.1 SQL Server 数据平台
SQL Server 2005 为IT专家和信息工作者带来了强大的、熟悉的工具,同时减少了在从移动设备到企业数据系统的多平台上创建、部署、管理及使用企业数据和分析应用程序的复杂度。 通过全面的功能集、和现有系统的集成性、以及对日常任务的自动化管理能力,SQL Server 2005 为不同规模的企业提供了一个完整的数据解决方案。图1显示了SQL Server 2005数据平台的组成架构。
2.4.2 SQL Server 支持工具
关系型数据库: 安全、可靠、可伸缩、高可用的关系型数据库引擎,提升了性能且支持结构化和非结构化(XML)数据。
? 复制服务: 数据复制可用于数据分发、处理移动数据应用、系统高可用、企业报表解决方案的后备数据可伸缩存储、与异构系统的集成等,包括已有的Oracle数据库等。
? 通知服务: 用于开发、部署可伸缩应用程序的先进的通知服务能够向不同的连接和移动设备发布个性化、及时的信息更新。
? 集成服务: 可以支持数据仓库和企业范围内数据集成的抽取、转换和装载能力。
? 分析服务: 联机分析处理(OLAP)功能可用于多维存储的大量、复杂的数据集的快速高级分析。
? 报表服务: 全面的报表解决方案,可创建、管理和发布传统的、可打印的报表和交互的、基于Web的报表。
? 管理工具: SQL Server 包含的集成管理工具可用于高级数据库管理和调谐,它也和其他微软工具,如MOM和SMS紧密集成在一起。标准数据访问协议大大减少了SQL Server和现有系统间数据集成所花的时间。此外,构建于SQL Server内的内嵌Web service支持确保了和其他应用及平台的互操作能力。
? 开发工具: SQL Server 为数据库引擎、数据抽取、转换和装载(ETL)、数据挖掘、OLAP和报表提供了和Microsoft Visual Studio? 相集成的开发工具,
8
以实现端到端的应用程序开发能力。SQL Server中每个主要的子系统都有自己的对象模型和API,能够以任何方式将数据系统扩展到不同的商业环境中。
2.4.3 SQL Server 2005的特点与优势
? 充分利用数据资产: 除了为业务线和分析应用程序提供一个安全可靠的数据库之外,SQL Server 2005也使用户能够通过嵌入的功能,如报表、分析和数据挖掘等从他们的数据中得到更多的价值。
? 提高生产力: 通过全面的商业智能功能,和熟悉的微软Office系统之类的工具集成,SQL Server 2005为组织内信息工作者提供了关键的、及时的商业信息以满足他们特定的需求。SQL Server 2005目标是将商业智能扩展到组织内的所有用户,并且最终允许组织内所有级别的用户能够基于他们最有价值的资产——数.提供了工业上最低的规划、实现和维护成本,使数据库投资能快速得到回报[13]。
9
3. 系统功能分析与概要设计
3.1 功能分析
本网上订餐管理系统共涉及了三种类型的角色,包括:管理员、注册会员(以下简称会员)和游客。故在功能上也根据这三种角色划分了三种类型的功能。每种功能都需要有相应的角色权限才能使用,比如说游客不能使用会员的一些功能,而会员也不能使用管理员的一些功能,但是游客的功能是会员和管理员都可以使用的。下面将一一介绍。
3.1.1 管理员功能
在用户登陆时可以选择账户的类型,如果选择了管理员的话,则系统将从数据库中判断该用户是否为管理员,如果是的话则跳转到管理员专有的页面上进行操作。(见图3 - 1到
3 - 4)
图 3 - 1 管理员选择管理员类型登陆
图 3 - 2 管理员登陆后的页面头部分
10
图 3 - 3 会员选择管理员类型登陆
图 3 - 4 会员选择管理员类型登陆后的产生错误
管理员功能主要分为以下几个大的部分,首先,最重要的是订单的管理,在该项功能中包含了对当前待处理的定单的处理、查看、排序、删除(见图3 - 5),以及对已处理的历史订单的查看、排序等(见图3 - 6和3 - 7)。
图 3 - 5 所有待处理的定单
图 3 - 6 所有已处理的定单
图 3 - 7 点击“详情”后显示的订单详情(未处理定单中同)
其次,菜品管理也是重要的一个部分。在菜品管理中包括了添加、删除和修改菜品。(见图3 - 8和3 - 9)
管理员通过点击按钮来添加菜品,每个菜品都可以添加有自己的名称、价格、图片和介绍等信息(见图3 - 10)。
图 3 - 8 菜品管理部分功能
11
图 3 - 9 修改菜品信息
图 3 - 10 点击“添加新菜”后的添加菜品
最后的一个部分就是会员的管理。在该功能中,管理员可以查看每个会员的所有订单,对每个订单还能看到他订了些什么、消费了多少等等。 (见图3 - 11)
图 3 - 11 会员管理操作
管理员功能部分的结构图如下图所示:
3.1.2 会员功能 图 3 - 12 管理员功能结构图 在会员功能中,最重要的就是点菜功能了。因此将点菜页面作为了系统的主页,一经登陆就可以看到主页上的热门菜、新品上市和选菜下订单部分。(见图 3 -
13)会员只需点击每个菜品片下面的按钮,就可以将该菜品加入购物车中,然后在页面的底部也将动态地显示出当前购物车中的物品、数量及价格,也
12
可以删除。(见图 3 - 14)在会员认为完成了点菜之后,点击
电话等信息。(见图3 - 15) 按钮,就会显示出当前订单的所有详细的内容,以及要求会员填写就餐时间、地点、联系
其次,会员功能还包括了会员服务和留言反馈。在会员服务中,会员可以修改自己的基本信息,也可以看到自己所有的订单、订单的详细情况以及订单现在有没有被送出等信息。(见图3 - 16)在留言反馈中,会员可以留下对本订餐管理系统中的一些不足之处的意见和建议或者是赞美之词。(见图
3 - 17)
图 3 - 13选菜下订单主页
图 3 - 14购物车
图 3 - 15 点击“ok,去收银台后”的提交菜单
图 3 - 16会员服务页面
图 3 - 17 留言反馈页面
会员功能部分的结构图如下图所示:
13
3.1.3 游客功能 图 3 - 18 会员功能结构图 游客是指没有在本订餐管理系统中注册过的访问者。当游客访问时首先看到的是选餐的页面,游客可以选择菜品,加入购物车,当游客点击按钮时,就会显示出没有登陆的信息并要求登陆后才能使用下订单的功能。对于会员服务,游客点击进去之后所有的内容都是空的,对于留言反馈,游客点击进去之
后只能查看所有的留言而不能发表留言。(见图3 - 19)
图 3 - 19 游客点击“ok,去收银台”之后
3.2 界面设计
本系统的所有界面都采用了红色色调,美工效果比较少,整体比较简洁有序。另外像注册、登陆、收银台和添加新菜这些页面都采用了弹出式的方式,使页面看上去比较有动感。(登陆见图3 – 20,其余弹出框类似)
图 3 - 20 在点击了登陆后弹出的登陆框
3.2.1 管理员界面
在登陆时,管理员选择管理员类型登陆后,即跳转到管理员专用的页面,在管理员部分中将所有的功能分布在三个页面上:订单处理、菜品管理和会员管理。(见图3 - 21)
14
图 3 - 21 管理员页面部分
3.2.2 会员界面
在登陆时,会员选择会员类型登陆后,即跳转到会员的页面,在会员部分中也将所有的功能分布在三个页面上:选餐订餐、会员服务和留言反馈。这部分的页面和游客和页面是一样的,只不过当游客访问某些页面的时候会因为没有登陆而无法访问。(见图3 –
22)
图 3 - 22 会员页面部分
3.3 数据库设计
数据库往往是一个管理信息系统的核心,因为它存储了该系统的所有数据和信息,所以极其重要。在数据库设计中,既要关心到数据的冗余问题,又要关心到表与表之间的关系。
3.3.1 数据库结构
本系统的数据库名称为“DinnerOrder”,数据库中包含了以下几个表:FoodAndDrink, Member, MemberReback, Orders, Orders_Detail。其中FoodAndDrink表中存放了所有菜品的信息,包括:菜品ID、菜品名称、价格、介绍、种类、图片、被订次数;Member表中存放了所有会员的信息,包括会员ID、会员姓名、性别、邮箱、电话、密码、地址、类型、订餐次数、订餐总额;MemberReback表中存放了会员的反馈信息,信息ID、留言人姓名、留言标题、留言内容和留言时间;Orders表中存放了所有的订单,包括订单ID、订单会员ID、菜品数量、总额、用餐地点、订餐时间、用餐时间、状态、联系电话和处理时间;Order_Detail表中存放了每个订单的详细菜单,包括订单ID、菜品ID、每样菜品的数量、菜品名称和价钱。(图3 – 21显示了FoodAndDrink表的结构)
15
图 3 - 23
在这些表中存在一些关系:Orders表中的会员ID参考了Member表中的会员ID,Order_Detail表中的订单ID参考了Orders表中的订单ID,每个表中都是以ID作为主码的。考虑到菜品是随时要修改的,而订单的数据是要一直保存在数据库中的,所以没有将订单中的菜品ID号与FoodAndDrink中的ID号参照起来,虽然这样做产生了一定的数据冗余,但是这保证了在个性菜品信息以后,此前订单中曾经订过该菜品的数据不会丢失,这样,管理员也可以根据历史数据做出合理的安排,此外,将订单的详细数据存放在一张表中虽然有冗余,但是在一定程度上却加快了数据库表查询的速度。
3.3.2 数据库操作
数据库操作主要是指对数据库中每个表的查询、插入、修改和删除等操作。在本系统中,FoodAndDrink和Orders表包含了所有的操作,另外的三个表没有删除的操作。在插入和修改表数据的时候都必须考虑到表中字段的数据类型及完整性约束,如:非空、整型与小数、图像的二进制类型及字符串的定长与可变长度等,必须在程序中对输入的数据进行相应的转换后才可以保存到数据库中,在删除订单时候,由于Order_Detail表中参照了Order表中的ID号,所以必须进行级联删除,即删除订单的时候也删除Order_Detail表中相应订单的数据。而在其他的表中没有这样的问题,因为没有涉及到参照。
3.3.3 数据字典 数据字典
1 菜品表
A 表名
字段名
FoodID
FoodName
FoodPrice
FoodIntro
FoodKind
FoodImg FoodAndDrink 类型 备注 int 非空,自增标识 nvarchar 非空,名称 numeric 非空,价格 text 介绍 nchar 非空,类型,菜肴和酒水 image 图片
16 B 表结构
FoodOrderTimes
2 会员表 A 表名
int 初始值为0
B 表结构
Member
字段名 类型 MembID int MembName nvarchar MembGender nvarchar MembEmail nvarchar MembPhone nchar MembPwd varchar MembAddress nvarchar MembType nchar MembOrderTimes int
MembTotalMoney numeric
备注
非空,自增标识 非空,会员名 非空,性别 会员邮箱
非空,会员电话 非空
会员地址 会员/管理员
订餐次数,初始值为0
订餐消费总额,初始值为0.00
3 反馈表 A 表名
字段名 RebackID MembName RebackTitle RebackContent RebackDate
B 表结构
MembReback 类型 备注 int 非空,自增标识 nvarchar 非空,反馈者会员名 nvarchar 非空,反馈标题 text 非空,反馈内容 datetime 非空,反馈时间 Orders 类型 int int int
numeric nvarchar datetime varchar datetime varchar datetime
4 订单表 A 表名
字段名 OrderID MembID TotalNum TotalMoney
B 表结
Location
构
HaveDinnerTime PhoneNumber OrderTime Deliverd DeliverTime
5 订单详情表 A 表名
字段名
Order_Detail_ID OrderID
B 表结
FoodID
构
FoodTotalNum FoodName FoodPrice
备注
非空,自增标识
非空,外键,引用Member中ID 非空,本订单的菜品数量 非空,本订单的价格总额 非空,用餐地点 非空,用餐时间 非空,联系电话 非空,订餐时间
非空,是否已处理,默认未处理 处理的时间,未处理时为空
Order_Detail 类型 备注 int 非空,自增标识 int 非空,外键,引用Orders中的ID int 非空,菜品ID int 非空,所订该菜品的数量 nvarchar 该菜品名称 numeric 该菜品价格
表 3 - 1 数据字典
17
4. 系统详细设计与编码实现
4.1 管理员模块
管理员模块主要涉及了订单管理、菜品管理和会员管理三个部分,这个模块当中涉及的数据库操作比较多。
4.1.1 订单管理
订单管理主要对会员提交的处理工作,包含了显示订单、在订单派送后更改订单的状态和对于不合理的定单的删除。
在显示订单方面分为未处理订单和已处理订单两个部分,但是都是放在一个页面上,其中未处理订单显示在页面的最上方,有利于管理员登陆后马上就能看到并处理,使用GridView来显示数据,从数据库中把数据读到DataReader中,再建立一张DataTable,把数据放进去,最后将这张DataTable绑定到GirdView中(由于后面的数据显示基本上都是采用这种方法,所以后面不再详述)。将数据对订单的显示也有排序方式可选择,分为:按用餐的时间排序、按订餐时间排序、按订单金额排序和按菜品数量排序四种。排序方式放在DropDownList中,并启用AutoPostBack,值一经改变就马上更新显示的方式并显示。(代码如下,一些变量的定义不在其中,后面的代码都是这样)
/*
*创建gridview的数据,通过strDe_UnDe来判断是哪个
*/
protected void BindOrderUndeliverd()
{
this.gridviewOrderUndeliverd.DataSource =
CreateSourceOrder(strSelOrderUnDeliverd, "UnDe");
this.gridviewOrderUndeliverd.DataBind();
lbnNextPageUnde.Enabled = true;
lbnPrevPageUnde.Enabled = true;
if (intCurrentPageUnde == (intPageCountUnde - 1))
{
lbnNextPageUnde.Enabled = false;
}
if (intCurrentPageUnde == 0)
{
lbnPrevPageUnde.Enabled = false;
}
lblCurrentPageUnde.Text = (intCurrentPageUnde + 1).ToString(); this.updatepanelOrderUndeliverd.Update();
}
/*
*创建gridview的数据,通过strDe_UnDe来判断是哪个
18
*/
protected ICollection CreateSourceOrder(string strSelOrder, string strDe_UnDe) {
SqlCommand sqlCmd = new SqlCommand(strSelOrder, sqlConn); DataTable dtOrders = new DataTable();
dtOrders.Columns.Add("ID", typeof(int));
dtOrders.Columns.Add("MembID", typeof(int));
dtOrders.Columns.Add("MembName", typeof(string));
dtOrders.Columns.Add("TotalNum", typeof(int));
dtOrders.Columns.Add("TotalMoney", typeof(decimal));
dtOrders.Columns.Add("OrderTime", typeof(string));
dtOrders.Columns.Add("HaveDinnerTime", typeof(string)); dtOrders.Columns.Add("Location", typeof(string));
dtOrders.Columns.Add("OrderID", typeof(int));
int intStartIndex = 0;
if (strDe_UnDe == "De")
{
intStartIndex = intCurrentPageDe * intPageSize;
dtOrders.Columns.Add("DeliverTime", typeof(string)); }
else
{
intStartIndex = intCurrentPageUnde * intPageSize;
}
int i = 0, j = intStartIndex + 1;
if (sqlConn.State == ConnectionState.Closed)
{
sqlConn.Open();
}
SqlDataReader dr = sqlCmd.ExecuteReader();
while (dr.Read())
{
i++;
if (i > intStartIndex && i <= intStartIndex + intPageSize) {
DataRow drow = dtOrders.NewRow();
drow["ID"] = j++;
drow["MembID"] = dr["ID"];
drow["TotalNum"] = dr["NUM"];
drow["TotalMoney"] = dr["MONEY"];
drow["OrderTime"] = dr["OTIME"];
drow["HaveDinnerTime"] = dr["HDTIME"];
drow["Location"] = dr["ADDR"];
drow["OrderID"] = dr["ODID"];
if(strDe_UnDe == "De")
{
drow["DeliverTime"] = dr["DTIME"];
}
dtOrders.Rows.Add(drow);
}
19
if (i > (intStartIndex + intPageSize))
{
break;
}
}
dr.Close();
sqlConn.Close();
for (int k = 0; k < dtOrders.Rows.Count; k++ )
{
dtOrders.Rows[k]["MembName"] =
SelectName_ID(int.Parse(dtOrders.Rows[k]["MembID"].ToString()),
"MembID", "MembName", "Member");
}
return dtOrders.DefaultView;
}
为了实现订单处理,在负责显示的GridView中添加一个链接按钮,显示的标题栏为“更改状态”,在数据栏中显示的内容为“未送出”,管理员只要点击这个链接就可以将该订单的状态改为“已处理”。由于在GirdView中每个数据的链接按钮都是相同的,所以在这个链接按钮上使用了CommandName来绑定GridView中的OrderID,在后台中读取到这个ID,然后再更改数据库中该ID的状态。在实现显示订单详情上也采用了类似的方法,这里不再详述。(代码如下)
/*
* 点击“未送出”链接按钮后触发的修改订单的状态事件
*/
protected void lkbtnChangeStatue_Command(object sender, CommandEventArgs e) {
int intOrderIDUnde = int.Parse(e.CommandName.ToString());
string strUpdateOrderState = "UPDATE [Orders] SET Deliverd = '已送出'
WHERE OrderID = " + intOrderIDUnde + ";";
string strUpdateOrderDeliverTime = "UPDATE [Orders] SET DeliverTime =
'" + DateTime.Now.ToString() + "'
WHERE OrderID = " +
intOrderIDUnde + ";";
SqlCommand sqlcmd = new SqlCommand(strUpdateOrderState, sqlConn); SqlCommand sqlcmd2 = new SqlCommand(strUpdateOrderDeliverTime,
sqlConn);
if(ConnectionState.Closed == sqlConn.State)
{
sqlConn.Open();
sqlcmd.ExecuteNonQuery();
sqlcmd2.ExecuteNonQuery();
sqlConn.Close();
}
BindOrderDe();// 重新绑定数据
BindOrderUndeliverd();// 重新绑定数据
}
20
4.1.2 菜品管理
菜品管理主要包括添加菜品、删除和修改菜品三块内容。菜品的显示也是采用了GridView,在这前面已经详述过,这里不再叙述。添加菜品是采用了AjaxControlToolkit中的Animations组件来实现弹出的效果,关于如何实现的代码如下:
<ajaxControlToolkit:AnimationExtender id="OpenAnimation" runat="server" TargetControlID="imgbtnNewFood">
<Animations>
<OnClick>
<Sequence>
<EnableAction Enabled="false" />
<ScriptAction
Script="Cover($get('ctl00_ContentPlaceHolder1_imgbtnNewFood'),
$get('flyout'));" />
<StyleAction AnimationTarget="flyout" Attribute="display"
Value="block"/>
<Parallel AnimationTarget="flyout" Duration=".3" Fps="25"> <Move Horizontal="150" Vertical="-50" />
<Resize Width="260" Height="280" />
<Color PropertyKey="backgroundColor" StartValue="#AAAAAA"
EndValue="#FFFFFF" />
</Parallel>
<ScriptAction Script="Cover($get('flyout'), $get('info'), true);" /> <StyleAction AnimationTarget="info" Attribute="display"
Value="block"/>
<FadeIn AnimationTarget="info" Duration=".2"/>
<StyleAction AnimationTarget="flyout" Attribute="display"
Value="none"/>
<Parallel AnimationTarget="info" Duration=".5">
<Color PropertyKey="color" StartValue="#FF0000"
EndValue="#666666" />
<Color PropertyKey="borderColor" StartValue="#FF0000"
EndValue="#666666" />
<FadeIn AnimationTarget="btnCloseParent" MaximumOpacity=".9" /> </Parallel>
</Sequence>
</OnClick>
</Animations>
</ajaxControlToolkit:AnimationExtender>
以上是实现弹出式添加菜品中的弹出部分的内容,关闭部分与打开部分相似,另外还需要一些层来实现,由于比较简单,这里不再详述。AjaxControlToolkit都是采用了标签式的方式来配置各种属性,与HTML代码类似,这方便了将其嵌入HTML代码中方便使用和查看。添加菜品需要注意的问题有以下几个:一是检验信息的完整性,二是检验信息的合法性(在这部分主要是菜品价格的合法性,因为必须是数字),三是如何将图片上传到数据库中保存起来。下面一一叙述。
21
首先检验信息的完整性使用了ASP.NET中Validation中的RequiredFieldValidator控件来控制TextBox框的内容必须被填写,当点击页面上的按钮后,系统会自动触发该控件来检测需要填写的内容是否被正确地填写了,如果还有未被填写的,则按钮事件不会被触发,并将显示出预先设定好的ErrorMessage的内容。(效果如图
4 - 1)
图 4 - 1
其次信息的合法性上,添加菜品这部分涉及了价格的数字特性。在这里采用了AjaxControlToolkit中的MaskedEditExtender来控制文本框中只能被输入0至9的数字。(代码如下)
<ajaxControlToolkit:MaskedEditExtender ID="MaskedEditExtender2" runat="server" TargetControlID="tbFoodPrice"
Mask="99,999.99"
MessageValidatorTip="true"
OnFocusCssClass="MaskedEditFocus"
OnInvalidCssClass="MaskedEditError"
MaskType="Number"
InputDirection="RightToLeft"
AcceptNegative="Left"
DisplayMoney="Left"
/>
最后是图片上传到数据库中保存。在数据库存放菜品信息的表中有一个image字段,这在前面数据库设计部分已经讲到过,在SQL中,这种类型的字段是以二进制的形式来存储的,所以在上传图片的时候要将图片转化成二进制的数组,然后再将这个数组中的内容存储到数据库中进行保存。在这里使用了IO流先把图片打开到流中,再从流中将图片的信息转化为二进制并保存到字节数组中,最后在把这个字节数组中的内容存入数据库中的image字段。(代码如下)
//获得图象并把图象转换为byte[]
22
HttpPostedFile upPhoto = this.fileFoodImg.PostedFile;
System.IO.Stream PhotoStream;
int upPhotoLength;
if(0 == upPhoto.ContentLength)
{
string strPath = "~/resource/pic/NoImage.jpg";
string strPhotoPath = Server.MapPath(strPath);
PhotoStream = File.Open(strPhotoPath, FileMode.Open);
upPhotoLength = (int)PhotoStream.Length;
}
else
{
upPhotoLength = upPhoto.ContentLength;
PhotoStream = upPhoto.InputStream;
}//没有图片使用默认
byte[] PhotoArray = new Byte[upPhotoLength];
PhotoStream.Read(PhotoArray, 0, upPhotoLength);
strSql = "INSERT INTO [FoodAndDrink](FoodName, FoodPrice, FoodIntro,
FoodKind, FoodImg) VALUES('"
+ strFoodName + "'," + dubFoodPrice + ",'" + strFoodIntro + "','" +
strFoodKind + "', @foodImg)";
cmd = new SqlCommand(strSql, conn);
cmd.Parameters.Add("@foodImg", SqlDbType.Image);
cmd.Parameters["@foodImg"].Value = PhotoArray;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
4.1.3 会员管理
会员管理部分主要是显示会员以及显示会员的所有订单和订单的详细情况。显示会员信息与前面显示订单部分类似,这里不再详述。显示所有订单和订单的详细情况都是采用了AJAX Extensions中的UpdatePanel组件,这个组件的功能是可以进行页面的部分刷新,提高了显示的速度。将所有订单和订单的详细情况的分别放在两个GridView中,再将这两个GridView分别放入两个UpdatePanel中,初始默认为隐藏,等到触发了显示事件的时候再显示出来。有关显示哪个订单的问题还是采用了链接按钮的CommandName来判断,前面已经详述过。
4.2 会员模块
会员模块中包含了订餐管理、会员服务和留言反馈三个部分,其中会员服务和留言反馈部分都没有什么难的内容,在选餐订餐方面涉及到了购物车的实现。
4.2.1 选餐订餐
如概要设计中所述,选餐订餐是本系统的主页,在每个菜品下面都有一个加入菜单的链接,在点击这个链接以后就可以将这个菜品加入本次会话的购物车中,再次点击则购物车中该菜品的数量会增加。那么购物车如何实现呢?
23
我认为用Session加上Datatable实现比较方便,因为Cookie的话有可能在有的电脑上被禁止了,而DataSet等这些方法的操作都比较麻烦。Session的话不用管数据是什么类型,所以类型的东西都使用同一种方式读取,数据集合也一样。
所以在实现的时候,可以先把自己的数据从数据库中读取出来,存放在一个DataTable中,当会话开始的时候把这个表和里面的内容放入Session中,每次对表修改的时候也对Session修改,或者可以一次性修改。(代码如下)
/*
*初始化菜单
*/
protected void CreateOrderCar()
{
if (Session["FoodOrderCar"] == null)
{
dtOrderCar.Columns.Add("FoodName", typeof(string));
dtOrderCar.Columns.Add("FoodPrice", typeof(double));
dtOrderCar.Columns.Add("FoodNum", typeof(int));
dtOrderCar.Columns.Add("FoodPriceSum", typeof(double)); Session.Add("FoodOrderCar", dtOrderCar);
}//刷新后dtOrderCar就没有了,要从Session中读取
else
{
dtOrderCar = (DataTable)Session["FoodOrderCar"];
}
this.GridViewFoodOrder.DataSource = dtOrderCar.DefaultView; this.GridViewFoodOrder.DataBind();
this.GridViewFoodOrder.Visible = true;
updatePanelOrder.Update();
}
/*
*加入一个菜
*/
protected void AddFoodIntoOrder(string strFoodName, double dubFoodPrice) {
dtOrderCar = (DataTable)Session["FoodOrderCar"];
foreach (DataRow dr in dtOrderCar.Rows)
{
if (dr[0].ToString() == strFoodName)
{
dr[2] = double.Parse(dr[2].ToString()) + 1;
dr[3] = double.Parse(dr[2].ToString()) *
double.Parse(dr[1].ToString());
CaculateTotalMoney();
UpdateOrderUpdatePanel();
return;
}
}// 判断是否已存在于定单中
DataRow drNewFood = dtOrderCar.NewRow();
24
drNewFood[0] = strFoodName;
drNewFood[1] = dubFoodPrice;
drNewFood[2] = 1; //第一次一次点击,数量为1
drNewFood[3] = dubFoodPrice * 1;
dtOrderCar.Rows.Add(drNewFood);
UpdateOrderUpdatePanel();
UpdateSubmitOrder();
}
protected void CaculateTotalMoney()
{
double dubTotalMoney = 0;
foreach (DataRow dr in dtOrderCar.Rows)
{
dubTotalMoney += (double.Parse(dr[1].ToString()) *
double.Parse(dr[2].ToString()));
}
lbOrderTotalMoney.Text = dubTotalMoney.ToString();
}
在选餐订餐部分还有一个收银台的功能,收银台也是采用了前面添加菜品中的弹出方式来实现。所不同的是去收银台要求是已经是点了至少一个菜了并且用户必须已经登陆才可以。这里还是用Validation来实现,但是与前面的方式有所不同。因为有没有点菜和有没有登陆不是靠用户自己输入数据来判断的,而是要从Session中读取的,而如果将Session中的数据读出来输出到Label中的话,Validation的使用对象是不能为Label的。我结合了这两个内容,把从Session中读取的购物车信息和用户信息写到收银台中的TextBox中去,然后把这个TextBox设置为ReadOnly,这样就可以为TextBox加上Validation了。并且在收银台中还有一个用餐时间的填写问题,用户在订餐后要选择就餐时间,但是这个时间不能是比现在还早的时间,也不能是餐馆来不及准备和送餐的时间(我这里设置了30分钟),所有要加上时间的判断和计算。(代码如下)
/*
*提交菜单事件
*/
protected void btnSubmitOrder_Click(object sender, EventArgs e)
{
DateTime dtNow = DateTime.Now;
int intYear = dtNow.Year;
int intMonth = int.Parse(dplistMonth.SelectedValue.ToString());
int intDay = int.Parse(dplistDay.SelectedValue.ToString());
int intHour = int.Parse(dplistHour.SelectedValue.ToString());
int intMinute = int.Parse(dplistMinute.SelectedValue.ToString());
DateTime dtSelectTime;
try
{
dtSelectTime = new DateTime(intYear, intMonth, intDay, intHour,
intMinute, 0);
25
}
catch
{
this.lbSubmitError.Text = "您选择的时间有错误,请重新选择"; this.lbSubmitError.Visible = true;
UpdatePanel3Update();
return;
}
if(CaculateMinute(intMonth, intDay, intHour, intMinute) < 30)
{
this.lbSubmitError.Text = "订餐失败,对不起,我们需要至少半个小
时的准备时间!";
this.lbSubmitError.Visible = true;
UpdatePanel3Update();
return;
}
else
{
// 更新orders, orders_detatil表
string strUserName = Session["userName"].ToString();
string strAddr = this.tbUseFoodAddress.Text.ToString();
string strPhoneNum = this.tbSubmitPhoneNumber.Text.ToString(); int intTotalNum = int.Parse(this.tbTotalFoodNum.Text.ToString()); decimal decTotalMoney =
decimal.Parse(this.lbSubmitTotalMoney.Text.ToString());
if(0 == InsertTableOrders(strUserName, strAddr, intTotalNum,
decTotalMoney, dtSelectTime, strPhoneNum)
|| 0 ==
InsertTableOrders_DetailAndFood((DataTable)Session["FoodOr
derCar"]))
{
this.lbSubmitError.Text = "出现错误,请重试!";
this.lbSubmitError.Visible = true;
UpdatePanel3Update();
return;
}
this.lbSubmitError.Text = "谢谢你订餐,我们会及时送达!"; this.lbSubmitError.Visible = true;
//Session.Remove("FoodOrderCar");
UpdatePanel3Update();
UpdateOrderUpdatePanel();
}
}
4.2.2 会员服务和留言反馈
会员服务和留言反馈这两块内容比较简单,而且涉及到的显示方式前面基本上都讲到过。在会员服务中的内容在刚加载的时候就从数据库中读取出来存放在页面上,需要修改的话直接在页面上相应的地方修改,完成后点击“确定修改”按钮
26
即可,若是有不合法的内容,也都是通过Validation来提示。密码修改单独做成一个弹出式的窗口,因为密码修改部分需要有密码验证等,将它单独列出来处理比较方便。会员自己的所有订单及订单详情也采用了前面订单管理部分的显示方式。在这两个部分中如果要进行操作的话只能是已经登陆的用户,在验证有没有登陆上也是采用了与收银台中相同的方法。
4.3 公共模块
在本系统中的公共模块其实就两个部分,一是选餐订餐部分,二是留言反馈部分。在选餐订餐部分游客和会员都可以选餐,但是在提交订单到收银台的时候,游客会被要求登陆。在留言反馈部分,游客和会员都可以查看所有的反馈信息,但是游客是不能发表反馈的,必须经过登陆。
27
5. 系统测试
5.1 测试计划制定
为了使本系统能够正确运行,故在完成了系统编码以后对本系统进行黑盒测试(白盒测试在代码的编写过程中已经完成)。测试主要是对系统进行功能性的测试,即为系统的每个功能设计若干个测试用例,然后执行,由于本系统功能不是很多,所以这样测试实现起来并不复杂,而且这种测试覆盖比较全。
测试时间共3天,其中第一天设计测试用例,后两天执行用例和完成测试报告。测试的离开准则为所有的测试用例都通过。
5.2 测试用例设计与执行
本次测试主要是针对系统的所有功能进行测试,分为以下几个功能部分:注册与登陆、选餐与订餐、修改会员信息及查看会员订单、发表反馈及查看反馈、处理未送出的订单及查看订单、添加菜品、修改菜品信息和查看所有会员及会员的订单详情。由于全部用例数量比较多,这里主要列出选餐与订餐功能部分的用例。(见表格5 - 1) 用
例用例目的 号
选择排序方式能否正常显示 直接点击提交订单能否成功 选择某个菜能否加入菜单 选择某个菜,菜单中的金额是否正确变化 再次选择该菜,菜单中的数
通过/不通过 通过 通过 通过
测试动作 测试数据 期望结果 实际结果
1
2
3
选择按价格从低到高方式排序 直接点击“去收银台”
点击“香菇青菜”的链接 点击“香菇青菜”的链接 再次点击“香菇青菜”的链接
无
按价格从低到高排序 提示错误 在菜单中显示该菜,数量为1 在菜单中显示总金额为8元 在菜单中的该菜数量增1
按价格从低到高排序
提示没有选择任何菜品等信息 在菜单中显示该菜,数量为1
无
无
4 无
在菜单中显示总金额为8元 通过
5 无
在菜单中的该菜数量增1 通过
28
量是否增加 接上用例,菜单6
中的金额是否正常变化 再选择另外一个7
菜,菜单中的金额是否正常变化 删除菜单8
中的一个菜能否成功
点击“去9
收银台”能否提交
登陆后再去收银台
能否提交 接上用例,用餐时间选择比当前时间早,能否提交 接用例 10,用餐时间选择比现在时
间晚30分钟以内能否提交 接用例9,用餐时间选择比现在时间晚
30分钟以上能否提交
无 点击“西湖啤酒”的链接
点击菜单中“香菇青菜”
后的删除链接
点击“去收
银台”,再点击提交
用测试数据
登陆,再同
用例8步骤
使用测试数据的用餐时间,点击提交
使用测试数据的用餐时间,点击提交 使用测试数据的用餐时间,点击提交 在菜单中显无
示总金额为16元
在菜单中显无
示总金额为19元
无
菜单中没有香菇青菜 无 提示没有登陆 用户名:
gcc1
提示填写必密
须的信息
码:111111 时间比当前时间早提示用餐时一天
间不正确
时间比当
前时间晚提示用餐时20-30分间不正确 钟
时间比当
前时间晚提示订餐成至少30分功 钟
表格 5 - 1
29
在菜单中显示总金额为16元 在菜单中显示总金额为19元 菜单中没有香菇青菜 提示没有登陆,且
必须的信息未填
写,不能提交 提示填写必须的信息,不能提交
提示需要至少半个小时时间来准备,不能提交
提示需要至少半个小时时间来准备,不能提交
提示订餐成功
通过
通过
通过
通
过
通过
通过
通过
通过
10 11
12 13
五 : 在线交友系统毕业论文
本 科 毕 业 设 计
1 引言 第 1 页 共 36 页
在科技不断发展的今天,利用计算机进行现代化通讯已经成为身边必不可少的工具。身处在一个知识日新月异、时刻充满挑战的时代,科技飞速发展、知识不断创新的社会。所以利用新的交友方式增进同学间的友谊,加深朋友之间的了解是时代所要求的。 随着时代的进步,网络技术的发展,人们越来越多的事情都在网上解决,出线了宅男宅女,与周围人的交流沟通变得越来越少。朋友交际圈也越来越小,而交友网站的出现则提供了一个很方便的交友的平台,有利于人们之间的沟通交流,交际圈的扩大,同时加强沟通交流有利于了解不同地方的风土人情,风俗习惯,加强了解。减少不同习俗文化之间的摩擦,有利于不同地域人们的和谐相处。
网络交友较之其它交友方式更加经济,安全,健康。现在的上网条件非常的便利,上网费用也极其低廉,无须耗费大笔的资金去请朋友们吃喝玩乐以增加感情,友情,恋情。网上交友因其可以异地开展文字,音频,视频聊天,无须去面对面的处在一起,这样就减少了部分人士犯罪的几率。网络交友因其所进行的活动都是通过网络进行,很大程度减少了网络之外的交友开销,进而减少了对地球的污染与浪费,因此是种健康的交友方式。
把互联网作为交友的途径与工具,是互联网的基本应用之一。由于用互联网交友既轻松自由,又方便快捷,更有着不受地域限制的优势,所以各种交友网站应运而生。 互联网的迅速发展,使中国网上交友市场在不断壮大。到2008年末,我国网络交友网站已超过1000家,并有16家网站获得了近1亿美元的风投资金。但随着竞争的激烈,收费与流量之间的矛盾正逐渐突出。免费服务还需不需要坚持下去?还能维持多久?已成为所有交友网站都要直面的经营问题。
据某市场咨询公司研究表明,中国网上交友市场近几年发展比较迅猛,使用各种网上交友服务的网民由2005年的4640万人上升至2008年的11160万人,年增长率为34%。使用各种网上交友服务的网民所占互联网民用户的比例由2005年的42%上升至2008年的60%。而在市场方面,2004年底网上交友市场规模达到1.27亿元,其中网上休闲交友市场规模为9000万元,网上婚恋交友市场规模为3700万元,网上商务交友暂时没有收入。该市场咨询公司预计,随着互联网用户的快速发展和成熟,网上交友市场规模还将进一步增长,于2008年到达9.91亿元,其中网上婚恋交友市场规模为6.53亿元,
本 科 毕 业 设 计
友市场规模年均年增长率达71.7%。 第 2 页 共 36 页 网上休闲交友市场规模为3.2亿元,网上商务交友市场规模为1620万元。整个网上交
在市场动作上,有关网络交友融资和战略合作的消息不断传出。其中中国最大的职业人士门户网站中华网与欧洲最大的婚恋交友网站蜜糖网正式结成战略合作伙伴,在中国市场提供领先的网络交友服务。而著名国际风险投资机构软银亚洲也斥资上千万美元注入浩天集团“交友旗舰”。据悉在中国,目前期待靠交友服务赚钱的网站已经有近1000家。
有关专家认为,中国网上交友市场竞争会越来越激烈。目前几家经营时间较长的网站运营商,如中国交友中心、亚洲交友中心、e友网等,具有一定的运营经验和行业影响力。但是由于社会习俗、经济条件、技术形势和支付体系等因素的制约,市场还不尽如人意。2006年该市场的进入者主要是国际网上交友运营商和传统婚介的网上机构。前者有丰富的国际运营经验和雄厚的财力可为前期的运营打基础,劣势是受到中国政策法规的制约,以及对市场人文环境的不熟悉。后者由于线下的运营基础,拥有一大批优质客户和完整的服务经验,但是对网上运营往往定位不明确,另外受地域性局限较多。总体而言,网上交友市场进入壁垒较高,竞争激烈程度较高,先进入者优势比较明显,新进入者须有比较雄厚的财力作为前期推广费用。
另外风险投资的热潮过后,婚恋网站不得不直面运营难题。据了解,交友网站的收入来源主要是来自会员费和网络广告费。但目前大部分网站的状况是,网络广告业务不足以支撑网站开支,会员收费制更是难以推行。有关专家指出,虽然俗话说“天下没有免费的午餐”,可在中国,网民们有更愿意享受免费互联网服务的习惯,这使得大部分婚恋网站和网络购物、电子邮箱、博客等,仍采取免费会员策略来吸引用户、聚拢人气。不收费的时候,人气很旺,一旦收费,人气必定有所影响。这样的两难境地,已成为网络交友网站必须直面的问题。
与国内刚刚起步的婚恋网站相比,国外的婚恋网站发展相对要成熟许多。国外婚恋网站的发展比国内领先5年左右的时间,市场已经相对成熟。在1996-1997年间,美国最大的“搜索制”婚恋网站match.com的付费会员已经达到100万。2000年,美国第一家“推荐制”的婚恋网站e Harmony诞生。2004年12月份,e Harmony从风险投资商处成功融资1.1亿美元,成为2004年全球互联网数额最高的风险投资。而在同一年,该网站收入即达到7000万美元,是同年中国网上婚恋交友市场规模的15倍以上,注册
本 科 毕 业 设 计 第 3 页 共 36 页 用户达700万,其中付费用户比例占20%,每月会员费为49.95美元。在美国,2005年婚恋网站的人均消费达67美元,整个市场的金额高达5亿美元。网络交友的注册用户为5000万人。而法国的meetic.com在2005年成功上市,成为全球第一家上市的婚恋网站。
虽然运营问题依然困惑着中国市场,但由于国外企业成功上市,并有着比较成熟的模式,再加上中国婚恋交友市场的诱惑,仍然有境外企业不断进入中国市场,并采用直接并购或者注资的方式。他们期待网络交友市场成为第二个网络招聘行业。
网站的发展趋势众说纷纭,无论是现在能够想象得到的或是没有想象到的,都有可能成为互联网明天的现实。总之,网络会越来越贴近人们的生活,互联网的应用会越来越广泛,互联经济会成为重要的产业,将大幅推动全球化经济的发展。互联经济现在仍处于萌芽阶段,才刚刚开始,未来的路还很长很长,互联网的发展需要每一个网络参与者共同努力,共同促进。
本 科 毕 业 设 计
2 开发工具及技术简介
第 4 页 共 36 页 该课题结合开发的实际情况以及用户的需求,通过运用B/S结构模式、Java语言结合JSP网站开发技术、MyEclipse开发环境,MySQL数据库及SQL语句及其来完成该系统的数据库及应用程序的开发设计系统将会根据在线交友的需要,实现在线交友系统的登录与退出,用户注册信息、个人资料管理、相片管理、交友请求管理、交友回复管理、留言管理等。用Java编程语言实现程序的开发;采用MySQL实现数据库的设计;用SQL语句实现数据库的操作;用JDBC技术连接数据库。下面将对系统的开发工具和主要技术作一个简单的介绍。
2.1 JSP技术
JSP(Java Server Pages)是由 Sun Microsystems 公司倡导许多公司参与一起建立的一种动态网页技术标准 JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(Tag),从而形成JSP文件(*.jsp) 用JSP开发的 Web 应用是跨平台的,既能在 Linux下运行,也能在其他操作系统上运行 基于 JSP技术做成的网页还能通过 Tags和 Scriptlets 访问存在于服务端的资源的应用逻辑 JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于 Web 的应用程序的开发变得迅速和容易[1]。
在性能方面,目前在国内 PHP(Personal Home Page Hypertext preprocessor) 与 ASP 应用最为广泛。而 JSP(Java Server Page)由于是一种较新的技术,国内采用的较少。但在国外,JSP 已经是比较流行的一种技术,尤其是电子商务类的网站,多采用JSP。三者中, JSP 应该是未来发展的趋势。有人做过试验,对这三种语言分别做循环性能测试及存取Oracle 数据库测试。 在循环性能测试中,JSP 只用了令人吃惊的四秒钟就结束了 20000*20000 的循环。而 ASP、PHP 测试的是 2000*2000 循环(少一个数量级),却分别用了 63 秒和 84 秒。数据库测试中,三者分别对 Oracle8 进行 1000 次 Insert,Update, Select 和 Delete: JSP 需要 13 秒,PHP 需要69 秒,ASP 则需要 73 秒。 可见, JSP 在性能方面是非常优秀的[2]。
JSP/Servlet支持 HTTP请求/响应模型,以线程工作方式响应来自客户端浏览器的请求。对客户端的 Servlet请求,直接由 Servlet引擎处理 JSP将静态 HTML从动态内容中分出来。本系统利用JSP,Servlet各自特点,让 JSP程序着重于表示逻辑,
本 科 毕 业 设 计
Servlet着重于业务逻辑。 第 5 页 共 36 页
使用 JSP技术,Web页面开发人员可以使用HTML或者 XML标记来设计和格式化最终页面。Sun推出的JSP是一种执行于服务器端的动态网页开发技术,它基于Java技术
[3]。生成动态内容的程序代码封装在 JavaBean组件、EJB组件或JSP脚本段中。在最终页面中使用JSP标记或脚本将 JavaBean组件中的动态内容引入。这样,可以有效地将内容生成和页面显示分离,使页面的设计人员和编程人员可以同步进行工作,也可以保护程序的关键代码。
可重用的、跨平台的JavaBeans和EJB( Enterp rise JavaBeans)组件 ,为JSP程序的开发提供了方便。JSP页面调用bean,可有效地分离静态工作部分和动态工作部分[4]。
JSP全称为 Java Server Pages是 Sun公导、 多家公司参与, 1999年提出的一种 We技术标准。它主要的编程脚本为 Java语言还支持 JavaBeans/Servlet等技术,利用这些可以建立安全、 跨平台的 Web应用程序。当JSP第一次被请求时,JSP页面转换成Servlet,然后被编译成.class文件,以后(除非页面有改动或 Web服务器被重新启动)再有客户请求该 JSP页面时,JSP页面不被重新编译,而是直接执行已编译好的.class文件,因此执行效率高。
JSP 在技术结构上有着其他语言如 PHP、ASP 所没有的优势。JSP 可以通过 JavaBean 等技术实现内容的产生和显示相分离,并且 JSP 可以使用 JavaBeans 或者 EJB 来执行应用程序所要求的更为复杂的处理,进而完成企业级的分布式的大型应用。 因此,不少国外的大型企业系统和商务系统都使用 JSP技术。作为采用 Java 技术家族的一部分,JSP 技术也能够支持高度复杂的基于 Web 的应用,对于脚本语言来讲,JSP 还是拥有相当大的优势的,虽然其配置和部署相对其他脚本语言来说要复杂一些,但对于跨平台的中大型网站系统来讲,基于 Java技术的 JSP,结合 JavaBean 和 EJB 几乎成为唯一的选择[5]。
2.2 MySQL数据库
MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。而2009年,SUN又被Oracle收购。对于MySQL的前途,没有任何人抱乐观的态度。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站
本 科 毕 业 设 计
为了降低网站总体拥有成本而选择了MySQL作为网站数据库。 第 6 页 共 36 页
与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQL Cluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。
目前Internet上流行的网站构架方式是LAMP(Linux+Apache+MySQL+PHP),即使用Linux作为操作系统,Apache作为Web服务器,MySQL作为数据库,PHP作为服务器端脚本解释器。由于这四个软件都是免费或开放源码软件(FLOSS),因此使用这种方式不用花一分钱(除开人工成本)就可以建立起一个稳定、免费的网站系统。
索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。索引不是万能的,索引可以加快数据检索操作,但会使数据修改操作变慢。每修改数据记录,索引就必须刷新一次。为了在某种程序上弥补这一缺陷,许多SQL命令都有一个DELAY_KEY_WRITE项。这个选项的作用是暂时制止MySQL在该命令每插入一条新记录和每修改一条现有之后立刻对索引进行刷新,对索引的刷新将等到全部记录插入/修改完毕之后再进行。在需要把许多新记录插入某个数据表的场合,DELAY_KEY_WRITE选项的作用将非常明显。另外,索引还会在硬盘上占用相当大的空间。因此应该只为最经常查询和最经常排序的数据列建立索引。注意,如果某个数据列包含许多重复的内容,为它建立索引就没有太大的实际效果。从理论上讲,完全可以为数据表里的每个字段分别建一个索引,但MySQL把同一个数据表里的索引总数限制为16个。
与InnoDB数据表相比,在InnoDB数据表上,索引对InnoDB数据表的重要性要大得多。在InnoDB数据表上,索引不仅会在搜索数据记录时发挥作用,还是数据行级锁定机制的苊、基础。“数据行级锁定”的意思是指在事务操作的执行过程中锁定正在被处理的个别记录,不让其他用户进行访问。这种锁定将影响到(但不限于)SELECT、LOCKINSHAREMODE、SELECT、FORUPDATE命令以及INSERT、UPDATE和DELETE命令。出于效率方面的考虑,InnoDB数据表的数据行级锁定实际发生在它们的索引上,而不是数据表自身上。显然,数据行级锁定机制只有在有关的数据表有一个合适的索引可供锁定的时候才能发挥效力。
本 科 毕 业 设 计 第 7 页 共 36 页 如果WHERE子句的查询条件里有不等号(WHEREcoloum!=),MySQL将无法使用索引。类似地,如果WHERE子句的查询条件里使用了函数(WHEREDAY(column)=),MySQL也将无法使用索引。在JOIN操作中(需要从多个数据表提取数据时),MySQL只有在主键和外键的数据类型相同时才能使用索引。如果WHERE子句的查询条件里使用比较操作符LIKE和REGEXP,MySQL只有在搜索模板的第一个字符不是通配符的情况下才能使用索引。
在ORDERBY操作中,MySQL只有在排序条件不是一个查询条件表达式的情况下才使用索引。(虽然如此,在涉及多个数据表查询里,即使有索引可用,那些索引在加快ORDERBY方面也没什么作用)。如果某个数据列里包含许多重复的值,就算为它建立了索引也不会有很好的效果。比如说,如果某个数据列里包含的净是些诸如“0/1”或“Y/N”等值,就没有必要为它创建一个索引。
2.3 JDBC连接数据库技术
JDBC(Java Data Base Connectivity,Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序,同时,JDBC也是个商标名。有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。 Java数据库连接体系结构是用于Java应用程序连接数据库的标准方法。JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。作为API,JDBC为程序开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。JDBC使用已有的SQL标准并支持与其它数据库连接标准,如ODBC之间的桥接。JDBC实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现的接口。
本 科 毕 业 设 计 第 8 页 共 36 页 Java 具有坚固、安全、易于使用、易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰出语言。所需要的只是 Java应用程序与各种不同数据库之间进行对话的方法。而 JDBC 正是作为此种用途的机制。JDBC 扩展了 Java 的功能。例如,用 Java 和 JDBC API 可以发布含有 applet 的网页,而该 applet 使用的信息可能来自远程数据库。企业也可以用 JDBC 通过 Intranet 将所有职员连到一个或多个内部数据库中(即使这些职员所用的计算机有 Windows、 Macintosh 和UNIX 等各种不同的操作系统)。随着越来越多的程序员开始使用Java 编程语言,对从 Java 中便捷地访问数据库的要求也在日益增加。
MIS 管理员们都喜欢 Java 和 JDBC 的结合,因为它使信息传播变得容易和经济。企业可继续使用它们安装好的数据库,并能便捷地存取信息,即使这些信息是储存在不同数据库管理系统上。新程序的开发期很短。安装和版本控制将大为简化。程序员可只编写一遍应用程序或只更新一次,然后将它放到服务器上,随后任何人就都可得到最新版本的应用程序。对于商务上的销售信息服务,Java 和JDBC 可为外部客户提供获取信息更新的更好方法。
2.4 HTML技术
设计HTML语言的目的,是为了能把存放在一台电脑中的文本或图形,与另一台电脑中的文本或图形方便地联系在一起,形成有机的整体。人们不用考虑具体信息是在当前电脑里还是在网络上其它电脑里,只需使用鼠标在某一文档中点取一个图标,Internet就会马上转到与此图标相关的内容上去。而这些信息可能存放在网络的另一台电脑中。一个完整的HTML文件由标题、段落、列表、表格、及嵌入的种对象所组成[6]。 另外,HTML是网络的通用语言,一种简单、通用的全置标记语言。也许你听说过许多可以编辑网页的软件,事实上你不需要用任何专门的软件来建立HTML页面,而只需一个文本编辑器或字处理器(如Office Word/记事本/写字板/Gedit等等)以及HTML的工作常识。JavaScript是一种面向对象的描述语言,通常被嵌入HTML文档,它能做到响应浏览者的需求事件而不用通过网络回传资料[7]。
2.5 Tomcat服务器
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了
本 科 毕 业 设 计 第 9 页 共 36 页 Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5 支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
Tomcat 很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的 Tomcat标志改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。Tomcat 是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。这里的诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。
2.6 MyEclipse集成开发环境
MyEclipse,是一个十分优秀的用于开发Java, J2EE的Eclipse插件集合。有了基本的JDK工具包,就可以进行Java程序开发了。在实际编程时,还可以借助一些辅助工具来加快程序的设计[8]。MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开元产品的支持十分不错。
MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSP, CSS, Javascript, SQL, Hibernate。
在结构上,MyEclipse的特征可以被分为7类:JavaEE模型,WEB开发工具,EJB开发工具,应用程序服务器的连接器,JavaEE项目部署服务,数据库服务,MyEclipse整合帮助。对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse结构上的这种模块化,可以让在不影响其他模块
本 科 毕 业 设 计 第 10 页 共 36 页 的情况下,对任一模块进行单独的扩展和升级。简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的JavaEE集成开发环境,支持代码编写、配置、测试以及除错,MyEclipse6.0以前版本需先安装Eclipse。MyEclipse6.0以后版本安装时不需安装Eclipse。
Genuitec发布了MyEclipse Enterprise Workbench 5.0,更智能、更快捷、更简单和更便宜的J2EE工具的新版本的诞生。它的价格对于个人和企业开发人员来说都是非常有吸引力的。这是J2EE IDE市场一个重量级的选手。通过增加UML双向建模工具、WYSIWYG的JSP/Strutsdesigner、可视化的Hibernate/ORM工具、Spring和Web services支持,以及新的Oracle数据库开发,MyEclipse 5.0继续为业界提供全面的产品。 Genuitec 总裁Maher Masri 说,“今天,MyEclipse已经提供了意料之外的价值。其中的每个功能在市场上单独的价格都比MyEclipse要高。但是,承诺为顾客提供全面并且可以买得起的解决方案。按照这个传统,顾客将继续享受年度订购活动的好处,该活动提供了所有发布功能的入口以及伴随MyEclipse5.0一起的专业技术支持。” MyEclipse 8.6 M1下载地址发布了,关注MyEclipse 8.6的朋友可以去MyEclipse官方获取最新的MyEclipse 8.6 M1下载地址下载试用的说(需要特殊手段)。随着MyEclipse 8.5的发布,很多MyEclipse都已经开始转型成MyEclipse 8.5工作了,MyEclipse 8.5不但集成最新版本的Eclipse 3.5.2同时包含了大量当前最新版的开源框架的插件支持。当浏览MyEclipse官方网站的时候,会发现MyEclipse 8.6的第一个M版本-MyEclipse 8.6 M1下载地址已经发布了,作为目前最新版本的MyEclipse 8.6来说包含了不少吸引人的新特性,尤其是在对主流Java框架的支持都更新了不少,由于目前MyEclipse 8.6还只是M1版本,因此作为开发版本使用估计不太可能(当然如果喜欢试用新的工具,装个来体验一下应该是没问题),相信在MyEclipse 8.6正式版下载地址发布的时候会有更新的开源框架版本的支持。
本 科 毕 业 设 计
3 需求分析
3.1 项目背景 第 11 页 共 36 页
随着时代的进步,网络技术的发展,人们越来越多的事情都在网上解决,出现了宅男宅女,与周围人的交流沟通变得越来越少。朋友交际圈也越来越小,而交友网站的出现则为提供了一个很方便的交友的平台,有利于人们之间的沟通交流,交际圈的扩大,同时加强沟通交流有利于了解不同地方的风土人情,风俗习惯,加强了解。减少不同习俗文化之间的摩擦,有利于不同地域人们的和谐相处。
网络交友较之其它交友方式更加经济,安全,健康。现在的上网条件非常的便利,上网费用也极其低廉,无须耗费大笔的资金去请朋友们吃喝玩乐以增加感情,友情,恋情。网上交友因其可以异地开展文字,音频,视频聊天,无须去面对面的处在一起,这样就减少了部分人士犯罪的几率。网络交友因其所进行的活动都是通过网络进行,很大程度减少了网络之外的交友开销,进而减少了对地球的污染与浪费,因此是种健康的交友方式。
据某市场咨询公司研究表明,中国网上交友市场近几年发展比较迅猛,使用各种网上交友服务的网民由2005年的4640万人上升至2008年的11160万人,年增长率为34%。使用各种网上交友服务的网民所占互联网民用户的比例由2005年的42%上升至2008年的60%。而在市场方面,2004年底网上交友市场规模达到1.27亿元,其中网上休闲交友市场规模为9000万元,网上婚恋交友市场规模为3700万元,网上商务交友暂时没有收入。该市场咨询公司预计,随着互联网用户的快速发展和成熟,网上交友市场规模还将进一步增长,于2008年到达9.91亿元,其中网上婚恋交友市场规模为6.53亿元,网上休闲交友市场规模为3.2亿元,网上商务交友市场规模为1620万元。整个网上交友市场规模年均年增长率达71.7%。
在市场动作上,有关网络交友融资和战略合作的消息不断传出。其中中国最大的职业人士门户网站中华网与欧洲最大的婚恋交友网站蜜糖网正式结成战略合作伙伴,在中国市场提供领先的网络交友服务。而著名国际风险投资机构软银亚洲也斥资上千万美元注入浩天集团“交友旗舰”。据悉在中国,目前期待靠交友服务赚钱的网站已经有近1000家。
本 科 毕 业 设 计
3.2 可行性分析 第 12 页 共 36 页
可行性研究(Feasibility Study)是通过对项目的主要内容和配套条件,如市场需求、资源供应、建设规模、工艺路线、设备选型、环境影响、资金筹措、盈利能力等,从技术、经济、工程等方面进行调查研究和分析比较,并对项目建成以后可能取得的财务、经济效益及社会环境影响进行预测,从而提出该项目是否值得投资和如何进行建设的咨询意见,为项目决策提供依据的一种综合性的系统分析方法。可行性研究应具有预见性、公正性、可靠性、科学性的特点。
可行性分析的主要内容有:投资必要性、经济可行性、技术可行性、财务可行性、组织可行性、社会可行性、风险因素及对策等。下面主要从经济可行性,技术可行性,功能可行性三方面进行分析。
本系统的开发所需人员较少,而且开发平台用到的部分开发软件是免费的,相对其他开发技术和开发平台,这就为开发商减少了一笔不小的开支。还有,本系统在互联网时代的优势是显而易见的,可以为开发商提高工作效率,带来很大的利润。对于本系统来说,维护所需要的精力和费用不会很多。对于用户来说,本系统所具有的功能,已基本能满足用户的需要了。所以,本系统在维护方面所需要的费用也是很低的。而且能节约人力。因此经济代价不大,经济效益可行。技术可行性研究是根据现有的和准备充实的设备条件与技术力量来分析系统在技术上实现的可能性,弄清现有技术条件能否保证顺利地完成系统的开发工作。在技术可行性研究过程中,主要是采集系统性能、可靠性、可维护性和可生产性等方面的信息,分析实现系统功能所需要的各种设备、技术、方法和过程;分析项目开发在技术方面可能负担的风险,以及技术问题对开发成本的影响等。可以从三个方面来考虑本系统技术上的可行性。
页面开发工具上采用Myeclipse,开发语言采用jsp,它们的功能强大,完全能够实现此用户信息管理系统的开发。还要考虑现有的计算机硬件和软件能否支持被研究开发的系统。因为本系统的数据不是特别复杂,数据传输和数据存储上对数据库的要求不是很高。而Mysql数据库在现代使用非常普遍,对于一个企业来说使用Mysql不但能增强数据的安全性,也能适用技术的发展方向。本系统在这方面的技术是完全可行的。要考虑在规定的平台之上,利用现有技术能否实现和研究开发的系统。为本系统完全符合上述所提出的要求,能够将本系统的各项功能清晰的展现出来,并加以实现。因此,本系统在这方面的技术是完全可行的。
本 科 毕 业 设 计 第 13 页 共 36 页 交友网站属于社会网络服务。一定程度上,涉及到社会学、心理学等方面。交友网站应该满足人们的高效交友的需求。因此,交友网站的搜索引擎,应该是最重要的部分。 也许可以从如下几个方面重点着手。
a) 照片管理功能。这是重中之重。无论如何强调都不过分。上传,管理,浏览等等。功能越丰富越准确越好,速度越快越好。
b) 搜索的命中率。用户可以定义各种关键字作为Tag(标签Label)。可以加入兴趣组、感兴趣的话题等。也可以自定义一些问题,让潜在的追求者回答。 这方面有大量的潜力可以挖掘。
3.3 系统功能图
根据在线交友系统的需求,在汇总分析后,对系统各功能进行模块划分,并制作出系统的主要功能图,如图3.1所示。
图3.1 系统功能图
本 科 毕 业 设 计
4 数据库设计
4.1 数据库的结构分析 第 14 页 共 36 页
根据系统功能设计要求和模块划分,本站的数据库主要存储用户注册信息、留言信息、好友信息、照片信息、管理员信息、申请好友者信息、交友请求回复信息等。 网上交友主要包含以下数据项和数据结构。
a) 用户简单注册信息:user_id(自动编号)、用户名、密码和注册日期。
b) 用户详细注册信息:lar_id(自动编号)、用户ID、姓名、生日、年龄、学历、职业、单位、邮政编码、电话、简历、性格和星座等。
c) 留言信息表:id(自动编号),留言者姓名、留言内容、留言时间、对方用户id和留言者id。
d) 好友信息表:id(自动编号)、对方用户id、申请好友者用户id、申请好友者用户名、性别和地区。
e) 照片信息表:id、fid(自动编号)、图片文件夹、图片存储方式等。
f) 交友请求回复信息表:id(自动编号)、对方用户id、申请好友者用户id、申请好友者用户名、 网名、性别和地区、日期。
g) 申请好友信息表:id(自动编号)、对方用户id、申请好友者用户id、网名、性别、年龄等。
h) 管理员信息表:管理员用户名、密码。
4.2 数据库表设计
根据需求分析中对系统功能的各方面做出的定义,系统设计了相应的数据库表。进行开发时,在MySQL数据库中应该严格按照此结构进行表的定义,而且一定要注意在设计的过程中,对各字段大小所做的限制。
根据功能模块的设计,以及规范化的设计要求,该系统共涉及到8个表: a) 用户简单注册信息表rser_reg,用来保存用户注册信息,如表4.1所示。
本 科 毕 业 设 计
表4.1
编号
1 2 3 4
字段名称 user_id user_name password date
用户简单注册表(user_reg)
数据类型 Bigint(19) varchar(18) Varchar(18) timestamp
第 15 页 共 36 页
说明 用户编号,主键
用户名 用户密码 注册日期
b) 用户详细注册表larchives,用来记录用户的详细信息,如表4.2所示。
表4.2 用户详细注册表(larchives)
编号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
字段名称 lar_id user_id name birthday sex age home education job company postcalcode
tel fresume netname homepage email netcall chatroom
数据类型 bigint(19) bigint(19) varchar(50) varchar(50) varchar(50) varchar(50) varchar(50) varchar(50) varchar(50) varchar(50) varchar(50) varchar(50) varchar(50) varchar(50) varchar(50) varchar(50) varchar(50) varchar(50)
说明 自动编号,主键 用户编号 用户姓名 用户生日 用户性别 用户年龄 用户籍贯 用户学历 用户职业 工作单位 邮政编码 联系电话 个人简历 用户网名 个人主页 电子邮件 网络联系方式 聊天室
本 科 毕 业 设 计
续表4.2
编号 19 20 21 22 23 24 25 26 27 28 29 30 31
字段标识 adage sport interest people charac book music ip renqi click photonum date date1
用户详细注册表(larchives) 数据类型 varchar(50) varchar(50) varchar(50) varchar(50) varchar(50) varchar(50) varchar(50) varchar(50) varchar(50) bigint(19) bigint(19) timestamp date
第 16 页 共 36 页
说明 格言 喜欢的运动 爱好或特长 喜欢的名人 性格 喜欢的书籍 喜欢的音乐 注册ip地址
人气 被查看次数 照片数量 时间变量 日期变量
c) 留言信息表leaveword,存贮留言信息,如表4.3所示。
表4.3 留言信息表(leaveword)
编号 1 2 3 4 5 6
字段标识 id netname word date for_id user_id
数据类型 Bigint(19) Varchar(10) Varchar(255) timestamp bigint bigint
说明 消息编码,主键
网名 留言内容 留言时间 留言用户编号 用户编号
d) 好友信息列表friend,用来保存好友信息,如表4.4所示。
本 科 毕 业 设 计
编号 1 2 3 4 5 6
字段标识 id netname for_id user_id sex home
表4.4 好友信息列表(friend)
数据类型 Bigint(19) Varchar(50) Bigint(19) Bigint(19) Varchar(50) Varchar(50)
第 17 页 共 36 页
说明 好友编码,主键
网名 好友编号 用户编号 好友性别 好友籍贯
e) 照片信息列表friendimg,用来保存用户照片信息,如表4.5所示。
表4.5 照片信息列表(friendimg)
编号 1 2 3
字段标识 fid id fimgae
数据类型 Bigint(19) Bigint(19) blob
说明 文件编号,主键
编号 存储图片
f) 交友请求回复信息列表back,用来保存已发送的交友请求信息,如表4.6所示。
表4.6 交友请求回复信息列表(back)
编号 1 2 3 4 5 6 7 8 9
字段标识 id user_id for_id name sex netname home result back_date
数据类型 Bigint(19) Bigint(19) Bigint(19) Varchar(20) Varchar(10) Varchar(10) Varchar(10) Varchar(20) timestamp
说明 编号 用户编号 被回复编号 好友名子 性别 网号 籍贯 结果 回复日期
本文标题:人事管理系统毕业论文-KTV点歌系统毕业论文61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1