无线餐饮点菜系统–去年的毕业设计

by 曾经沧海
5.1K 阅读

无线点菜
仿龙脉
截图:


PDF文件:毕业设计文件下载

源代码文件:代码下载
==========================================
安装步骤:
一、安装步骤
假设全部安装在同一台计算机上,将本光盘全部文件复制到目标计算机上
1、安装sql2000
2、进入目录“SQL服务器”,安装sp4
3、进入目录“SQL服务器”,还原数据库yunfei

4、进入目录“IIS服务器\Microsoft SQL Server 2005 Mobile Edition”,安装Sqlce30setupcn.msi
5、进入目录“IIS服务器\Microsoft SQL Server 2005 Mobile Edition”,安装sql2kcnsp4.msi
6、(确认所在计算机已经安装了IIS)将目录“IIS服务器\wwwroot”指定为IIS根目录
7、运行Microsoft SQL Server 2005 Mobile Edition的“配置 Web 同步向导”,
在出现的步骤中新建立虚拟目录sqlce,路径指定为“IIS服务器\wwwroot”,
客户端身份验证选择“以匿名方式”,
在“匿名访问”界面取消复选框的选择

8、进入目录“测试机器(虚拟PDA端)”,安装netsvwrap(Virtual PC Network Driver).msi
9、进入目录“测试机器(虚拟PDA端)”,安装Windows Mobile 5.0 Pocket PC SDK.msi
10、进入目录“测试机器(虚拟PDA端)”,安装Windows Mobile 5.0 Emulator Images for Pocket PC – CHS.msi

11、进入控制面板——添加硬件——添加新的硬件设备——“安装我手动从列表选择的硬件(高级)”——网络适配器——Microsoft Loopback

Adapter

二、演示步骤
(1)客户端
1、禁用除Microsoft Loopback Adapter的其他网络连接,为Microsoft Loopback Adapter连接配置IP
2、进入C:\Program Files\Microsoft Device Emulator\1.0, 运行dvcemumanager.exe,右键选择“Pocket PC 2003 SE仿真程序”——连接
3、为打开的“Pocket PC 2003 SE仿真程序”配置IP地址和代理服务器地址,IP地址应和本地计算机同一网段,代理服务器地址为本地计算机的IP
4、打开“Pocket PC 2003 SE仿真程序”的“文件——配置——网络”,选择“启用NE2000 PCMCIA网络适配器并绑定到”,确定。
5、打开“Pocket PC 2003 SE仿真程序”浏览器,在地址栏输入本地计算机的IP地址,若配置无误,则会出现一个HTML页面,按顺序安装。
6、打开“Pocket PC 2003 SE仿真程序”——程序——资源管理器——Program Files——yunfei——运行程序
SQL服务器名:当前SQLserver所运行的实例的名称
SQL代理地址:当前计算机的IP地址(即运行IIS服务的计算机地址)
默认用户名:haijun,密码:haijun

(2)管理端
进入目录“管理端”,安装,即可使用
首先配置网络,默认用户名:111,密码:111

========================================================================

基本代码:

using System;
using System.Text;
using System.IO;
using System.Data;
using System.Windows.Forms;
using System.Collections;
using System.Data.Common;
using System.Data.SqlServerCe;
using System.Data.SqlClient;
using System.Reflection;

namespace Yunfei_Client
{
public class SQLServerCEWrapper
{
public static string ceUser =null;// "haijun";

public static string SqlServer =null;// "HAIJUN";
public static string SqlAgent_ip = null;//192.168.0.254
public static string SqlAgent =null;

public static string RemoteConnection = "Provider=sqloledb;Data Source=" + SqlServer + ";Initial Catalog=yunfei;User ID=sa;Password=sa;";
public static string LocalDatabase = string.Format(@"{0}\yunfei.sdf", Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase));
public static string LocalConnection = string.Format(@"Data Source = {0}", LocalDatabase);

public SQLServerCEWrapper()
{

}

public bool CreateDatabase()
{

if (File.Exists(LocalDatabase))
{
File.Delete(LocalDatabase);
SqlCeEngine SQLCEEngine = new SqlCeEngine(LocalConnection);
SQLCEEngine.CreateDatabase();
SQLCEEngine.Dispose();
// MessageBox.Show("数据库创建成功!");
return true;
}
else
{
SqlCeEngine SQLCEEngine = new SqlCeEngine(LocalConnection);
SQLCEEngine.CreateDatabase();
SQLCEEngine.Dispose();
return true;
}

}

public void DeleteDatabase()
{
// Delete the local database!
// *****************************
try
{
if (File.Exists(LocalDatabase) == true)
{
File.Delete(LocalDatabase);
}
}
catch (SqlCeException ex)
{
ShowErrors(ex);
}
}

public void Pull(bool KeepLocalData, string TableName, string sqlSelectString)
{
// 将表请求下载到本地数据库中。
// *****************************

try
{
string SQL=null;
SqlCeConnection cn=null;
SqlCeCommand cmd=null;
SqlCeRemoteDataAccess RDA = null;

// 创建并启动新的 RDA 对象
RDA = new SqlCeRemoteDataAccess(SqlAgent, LocalConnection);

// 是否保留本地数据?如果要保留,请先强制上载这些数据!
if (KeepLocalData)
{
RDA.Push(TableName, RemoteConnection, RdaBatchOption.BatchingOff);
}

// 在 Pull 之前,必须先删除本地表
// 打开本地数据库连接
cn = new SqlCeConnection(LocalConnection);
cn.Open();

// 删除本地表
SQL = "DROP TABLE " + TableName;
cmd = new SqlCeCommand(SQL, cn);
// 如果该表不存在,则出错。
// 如果出错,可以置之不理。
try
{
cmd.ExecuteNonQuery();
}
catch
{

}

// 关闭连接
cmd.Dispose();
cn.Close();
cn.Dispose();
// 最后,请求下载远程表!
SQL = sqlSelectString;
RDA.Pull(TableName, SQL, RemoteConnection, RdaTrackOption.TrackingOnWithIndexes);

// 清理
SQL = null;
RDA.Dispose();
}
catch (SqlCeException ex)
{
ShowErrors(ex);
}

}

public void Push(string localTableName)
{
try
{
SqlCeRemoteDataAccess RDA = null;
// 创建并启动新的 RDA 对象
RDA = new SqlCeRemoteDataAccess(SqlAgent, LocalConnection);
RDA.Push(localTableName, RemoteConnection, RdaBatchOption.BatchingOff);
RDA.Dispose();
//MessageBox.Show("数据上传成功!");
}
catch (SqlCeException ex)
{
ShowErrors(ex);
}
}

public DataSet GetResult(string TableName, string sqlSelectString)
{
// 从本地数据库获取数据。作为 DataSet 返回。
// *****************************
//try
//{
string SQL=null;
SqlCeConnection cn=null;
SqlCeCommand cmd=null;
DataSet ds=null;
SqlCeDataAdapter da=null;

// 初始化新的连接
cn = new SqlCeConnection(LocalConnection);

// 打开连接
cn.Open();

// 生成 SQL
SQL = sqlSelectString;

// 初始化新的命令
cmd = new SqlCeCommand(SQL, cn);

// 初始化新的 DataSet
ds = new DataSet();
da = new SqlCeDataAdapter(SQL, cn);

// 通过适配器,使用数据来填充 DataSet
da.Fill(ds, TableName);
// 清理
da.Dispose();
cmd.Dispose();
cn.Close();
cn.Dispose();
SQL = null;

// 返回 DataSet
return ds;
//}
//catch (SqlCeException ex)
//{
// ShowErrors(ex);
//}

}

public int CountResult(string sqlCountString)
{
// Count the result.
// *****************************
//try
//{

int Count = 0;
string SQL=null;
SqlCeConnection cn=null;
SqlCeCommand cmd=null;
cn = new SqlCeConnection(LocalConnection);
cn.Open();
SQL = sqlCountString;
cmd = new SqlCeCommand(SQL, cn);
cmd.CommandText = SQL;
Count =(int)cmd.ExecuteScalar();
cmd.Dispose();
cn.Close();
cn.Dispose();
SQL = null;
return Count;
//}
//catch (SqlCeException ex)
//{
// ShowErrors(ex);
//}

}

//public void DoResult(string sqlInsertString)
//{
// try
// {
// string SQL;
// SqlCeConnection cn;
// SqlCeCommand cmd;
// cn = new SqlCeConnection(LocalConnection);

// cn.Open();

// SQL = sqlInsertString;
// cmd = new SqlCeCommand(SQL, cn);
// cmd.CommandText = SQL;
// int ccc=cmd.ExecuteNonQuery();

// cmd.Dispose();
// cn.Dispose();
// }
// catch (SqlCeException ex)
// {
// ShowErrors(ex);
// }

//}

public void Submit(string sqlString)
{
try
{
SqlCeRemoteDataAccess RDA = null;
// 创建并启动新的 RDA 对象
RDA = new SqlCeRemoteDataAccess(SqlAgent, LocalConnection);
RDA.SubmitSql(sqlString,RemoteConnection);
RDA.Dispose();
//MessageBox.Show(远程执行命令成功!");
}
catch (SqlCeException ex)
{
ShowErrors(ex);
}
}

public static void ShowErrors(SqlCeException e)
{
SqlCeErrorCollection errorCollection = e.Errors;

StringBuilder bld = new StringBuilder();
Exception inner = e.InnerException;

foreach (SqlCeError err in errorCollection)
{
bld.Append("\n Error Code: " + err.HResult.ToString("X", System.Globalization.CultureInfo.CurrentCulture));
bld.Append("\n Message : " + err.Message);
bld.Append("\n Minor Err.: " + err.NativeError);
bld.Append("\n Source : " + err.Source);

foreach (int numPar in err.NumericErrorParameters)
{
if (0 != numPar) bld.Append("\n Num. Par. : " + numPar);
}

foreach (string errPar in err.ErrorParameters)
{
if (String.Empty != errPar) bld.Append("\n Err. Par. : " + errPar);
}
}
MessageBox.Show(bld.ToString());
}
}
}

36 评论

因帅得罪人 2011年11月9日 - 22:19

那个光盘的内容还有吗? 最后那个还有个管理端?

因帅得罪人 2011年11月9日 - 12:06

一点都不记得了吗?只是有点困难想问一下

Haijun 2011年11月8日 - 16:58

@因帅得罪人
早不做程序很久了啊.

因帅得罪人 2011年11月7日 - 13:13

天啊,有没有人在啊,怎么才能模拟成功啊

因帅得罪人 2011年11月7日 - 02:13

大哥,能帮帮我吗?这个程序我下了,想在我电脑模拟起来,能装的我都装了,因为我没搞过数据库,不会运行这个,能帮我模拟起来吗?谢谢了,可以的话,加我QQ:457120821

2011年5月26日 - 19:17

大哥,很强啊,佩服,现在做什么呢

丫头 2011年5月22日 - 21:45

你好,我现在在做点餐系统,可是对于这个还是一塌糊涂,你能加下我的QQ吗,我有好多问题想请教你,谢谢506307913

Haijun 2011年5月24日 - 12:55

其实不确定现在能帮到你多少,因为我早就不做程序了.
本文中有我当时的代码,论文,有编程思路,有空的花你可以看下啊,应该会比我自己解释要清楚的多.

新手 2010年12月20日 - 12:04

谢谢你!

Haijun 2010年9月14日 - 13:51

@顺
呵呵,欢迎再来。这个东西我电脑上有,之所以很难搜索到,估计是因为原始文件名是英文的缘故,它的英文名称是:Windows Mobile 5.0 Emulator Images for Pocket PC – CHS.msi , 下载地址是:http://download.microsoft.com/download/b/7/5/b7566ed3-6940-4541-8cf2-3e0fc1fafbc4/Windows Mobile 5.0 Emulator Images for Pocket PC – CHS.msi

2010年9月13日 - 17:23

Windows Mobile 5.0 Pocket PC 简体中文虚拟机,这玩意我一直没有找到,你那儿还有么?我的邮箱是zhouyanshun@yahoo.com.cn,谢谢了!

2010年9月13日 - 17:18

老兄,一晃三年过去了,我还是觉得你的东东太值得回味了,今天特意再故地重游。谢谢啊!

Haijun 2010年1月31日 - 23:40

@@XX
数据库地址是:
http://fanhaijun.com/uploads/files/yunfei
(没有后缀名的,我也忘记了为什么…)

另外有个sql语句也许可以帮你方便的建表:
=========================================
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[yunfei_class]’) and OBJECTPROPERTY(id, N’IsUserTable’) = 1)
drop table [dbo].[yunfei_class]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[yunfei_dish]’) and OBJECTPROPERTY(id, N’IsUserTable’) = 1)
drop table [dbo].[yunfei_dish]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[yunfei_menu]’) and OBJECTPROPERTY(id, N’IsUserTable’) = 1)
drop table [dbo].[yunfei_menu]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[yunfei_menu_state]’) and OBJECTPROPERTY(id, N’IsUserTable’) = 1)
drop table [dbo].[yunfei_menu_state]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[yunfei_preorder]’) and OBJECTPROPERTY(id, N’IsUserTable’) = 1)
drop table [dbo].[yunfei_preorder]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[yunfei_table]’) and OBJECTPROPERTY(id, N’IsUserTable’) = 1)
drop table [dbo].[yunfei_table]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[yunfei_unit]’) and OBJECTPROPERTY(id, N’IsUserTable’) = 1)
drop table [dbo].[yunfei_unit]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[yunfei_user]’) and OBJECTPROPERTY(id, N’IsUserTable’) = 1)
drop table [dbo].[yunfei_user]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[yunfei_zone]’) and OBJECTPROPERTY(id, N’IsUserTable’) = 1)
drop table [dbo].[yunfei_zone]
GO

CREATE TABLE [dbo].[yunfei_class] (
[class_id] [int] IDENTITY (1, 1) NOT NULL ,
[class_name] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[yunfei_dish] (
[dish_id] [int] IDENTITY (1, 1) NOT NULL ,
[dish_name] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[dish_unit_id] [int] NULL ,
[dish_class_id] [int] NULL ,
[dish_price] [int] NULL
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[yunfei_menu] (
[menu_id] [int] IDENTITY (1, 1) NOT NULL ,
[menu_table_id] [int] NULL ,
[menu_dish_id] [int] NULL ,
[menu_num] [int] NULL ,
[menu_memo] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[menu_state_id] [smallint] NULL
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[yunfei_menu_state] (
[state_id] [int] NULL ,
[state_name] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[yunfei_preorder] (
[preorder_id] [int] IDENTITY (1, 1) NOT NULL ,
[preorder_table_id] [int] NULL ,
[preorder_date] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[preorder_person_num] [smallint] NULL ,
[preorder_person_name] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[preorder_person_tel] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[preorder_precost] [int] NULL ,
[preorder_time] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[yunfei_table] (
[table_id] [int] IDENTITY (1, 1) NOT NULL ,
[table_name] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[table_zone_id] [int] NULL ,
[table_person_num] [smallint] NULL ,
[table_pay] [smallint] NULL
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[yunfei_unit] (
[unit_id] [int] IDENTITY (1, 1) NOT NULL ,
[unit_name] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[yunfei_user] (
[user_id] [int] IDENTITY (1, 1) NOT NULL ,
[user_name] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[user_pass] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[user_level] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[user_login] [datetime] NULL
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[yunfei_zone] (
[zone_id] [int] IDENTITY (1, 1) NOT NULL ,
[zone_name] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
=========================================

@XX 2010年1月31日 - 23:24

还原数据库yunfei

你好,数据库可否提供,谢谢!

Haijun 2009年9月18日 - 06:52

@顺
你上次说你的项目相距很远,是这个电力抄表的吗?是怎么解决远距离通信的问题的?希望不吝赐教!

2009年8月31日 - 08:43

老兄真是谢谢你了。有你当初的支持,我的PDA手持设备开发出来了,已经用于电力抄表中了。

匿名 2009年3月25日 - 13:39

朋友 真的感谢你 无法语言感谢
能把这个源码发到我邮箱吗?我想学习下 谢谢
laosi668@qq.com

匿名 2009年3月10日 - 14:58

多谢了,已经下载了,学习!@Haijun

Haijun 2009年3月10日 - 13:04

http://fanhaijun.com/uploads/2008/09/pda.rar
我已经把地址放到文章里面了,看看啊~~如果有用的话,呵呵.

匿名 2009年3月9日 - 18:34

哥们,我想学习下,能不能把代码发到我邮箱里?先谢谢了!
whu-jiangping@163.com

匿名 2009年2月18日 - 15:49

哥们 可以把这个代码提供下  如果方便的话发我我油箱可以吗??
pig911@163.com

Haijun 2009年2月18日 - 21:50

已经发了啊~请查收..不过水平确实不匝地..

2009年1月21日 - 18:45

哥们,还想问你一下。你的Windows Mobile 5.0 Pocket PC 简体中文虚拟机,从哪儿下的。

Haijun 2009年1月21日 - 19:55

那个早就忘记了啊。不过好像是微软官方的。

2009年1月21日 - 18:04

还想问老兄一下,你德这个软件,真正定制到PDA设备没有。如果有,是怎样弄的。据说要用到
platform builder 6.0,这个你有么。有的话,能搞一个来用么!!先谢谢了。

Haijun 2009年1月21日 - 19:54

没有哦,当时没有想那么多的,只是在电脑上虚拟成功而已,也没有人有真正的pda。

2009年1月12日 - 18:54

老兄,对于第一个问题,我还想问您一下,您当时用的Pocket pc 2003是不是重新下载的一个,不是VS2005开发环境自己带的。或者,你设置了什么地方吧。这个问题网上有很多人问,但好像都没有答案,甚至,有一个冒似微软的网站上都说没有办法,所以真的要麻烦您回想一下当时是怎样搞得?您的出山是很多人的期盼呀!

Haijun 2009年1月12日 - 19:29

其实我现在记的不是很清楚了,不过当时写了一个简单的介绍的,那个东西应该是专门下载安装的:
==================================================
运行环境:
win xp
sql mobile 2005(移动端)
sql server 2000(服务器端)
IIS(服务器端)

开发必需
1. Visual Studio 2005
2. Microsoft ActiveSync 4.1
3. Virtual PC Network Driver. (netsvwrap(Virtual PC Network Driver).msi)
4. Windows Mobile 5.0 SDK for Pocket PC (Windows Mobile 5.0 Pocket PC SDK.msi)
5. Windows Mobile 5.0 Pocket PC 简体中文虚拟机(Windows Mobile 5.0 Emulator Images for Pocket PC – CHS.msi)

数据方式:
可以考虑用三种方式和sqlserver2000同步,
1.webservice
2.RDA
3.同步复制

其中webservice配置稍微简单一点,同步复制配置比较繁琐,RDA介于两者之间,RDA可以使用pull,push方法来获取,修改数据
http://www.360doc.com/showWeb/0/0/8193.aspx

——————————————————————————————-
SQL Server 复制组件要求(使用RDA)
在多服务器环境中,若要在 SQL Server Mobile 和 SQL Server 之间交换数据,则必须在运行 IIS 的计算机上安装复制组件。下表列出了如何在两个不同版本的 SQL Server 上安装复制组件:

SQL Server 2005
从 SQL Server 2005 产品 CD 安装 SQL Server 2005 复制组件。

SQL Server 2000 SP3a 或更高版本
从以下两个位置之一安装 SQL Server 2000 复制组件 (sql2kcnsp4.msi):
· Microsoft Visual Studio 2005:在 Windows 资源管理器中,查找 drive:\Program Files\Microsoft Visual Studio 8\SmartDevices\SDK\SQL Server\Mobile\v3.0,然后运行 sql2kcnsp4.msi 文件。

· 网站:有关如何从网站安装复制组件的信息,请参阅 Microsoft SQL Server 2005 Mobile Edition Home Page。

启用RDA方式:
在服务器端(sql server200)配置:
开始—程序—Microsoft SQL Server 2005 Mobile Edition—– Web 同步向导——–选择“sql server mobile edition”—
取消“UNC快照”选项

2009年1月12日 - 18:48

谢谢,老兄,第一个语言问题,我还没有解决。第二个解决了。因为你这个项目是餐厅用,距离不是很远。我的项目是好几千公里,数据库不能用实时同步的方法,只能有一个暂存的空间。比如SD卡等。但是在虚拟设备中,是没有的,这样就要用到microsoft activesync,当然方法肯定还有很多。我还在摸索。

Haijun 2009年1月12日 - 19:33

🙂 我那时候是边找资料边做的,也没有学过,所以很多很多东西我都不明了的,不过如果有我任何知道的,我都会说出来的~~

2009年1月9日 - 08:38

哥们,您真是好人。关于这个程序,我有两个问题想向您请教:一、为什么我在VS2005的模拟器下的中文全是方框,应该怎样设置。二、您的程序是采用模拟器和PC机同步数据库的方式,如果不用这种方式,WINCE中虚拟机中的*.sdf数据库文件怎样上传到PC上呢?先谢谢您了。我的邮箱还是zhouyanshun@yahoo.com.cn

Haijun 2009年1月9日 - 18:57

🙂 1 我也不知道,也许安装的中文语言文件有问题吧?2 数据都是用远程数据访问 (RDA)的push和pull方法同步的,不需要将sdf文件传到pc上去,pc上是不用sdf文件的,只需要将数据内容传上去…

2009年1月8日 - 14:51

哥们,你真的很强, 可以把这个代码提供下  本人想学习下 如果方便的话发我我邮箱么可以吗??
我的邮箱是 zhouyanshun@yahoo.com.cn

Haijun 2009年1月8日 - 18:27

🙂 已经发了~

Haijun 2008年12月3日 - 23:08

没有问题.不过都好久没有动过了,你自己慢慢看吧~~呵呵,不好的地方,不要笑啊.已经发了

zgh 2008年12月3日 - 19:28

哥们 可以把这个代码提供下  本人想学习下 如果方便的话发我我油箱可以吗??
lldd_1314@126.com

发表评论