随笔 - 38  文章 - 0  评论 - 25 
  2012年2月6日

近期公司在做一个酒吧里的项目。

项目功能模块大体分3个:

1:大战游戏

2:交朋识友

3:推广介绍

4.后台管理

 

整体技术架构:

游戏采用ShiVa 3D进行开发。

交朋识友和推广介绍用WPF进行实现。

因为ShiVa 3D不支持PC机上的多点触摸功能,

故把ShiVa 3D开发的游戏嵌入到WPF程序里,以实现多点触摸的功能。

 

现在我负责的部分是后台管理,

后台管理现在主要实现的功能有两点:绑定台号和IP之间的对应关系,上传推荐介绍的图片信息。

考虑整个项目用的数据量不大,而且避免服务器和客户端安装过多的东西,

所以整个项目的数据管理,采用XML。

 

这两天一直在百度“C#读写XML文件”,

网上看到很多类似的文章和实现方式。

最终自己采用的实现方式是:用DataSet来进行读写XML文件。

读XML文件:

DataSet ds = new DataSet();
string path = "...."//xml文件地址
if (File.Exists(path))
ds.ReadXml(path);

 

读简单,写也简单。

写其实就是对DataSet里面的数据进行增、删、查、改。

因为平时项目里DataTable用的最多,

所以对DataTable的操作还是很得心应手。

 

对DataTable进行编辑后,

直接输出XML文件就ok.

//新增一条数据
DataRow dr = myds.Tables[0].NewRow();
dr[0] = "1000";
dr[1] = "1215425";
dr[2] = "cindy";
myds.Tables[0].Rows.Add(dr);
path = "....";//输出路径
myds.WriteXml(path);

总结:用DataSet的ReadXml和WriteXml方法来实现XML的读写更方便。

 

 

posted @ 2012-02-06 11:05 张曾人 阅读(32) 评论(0) 编辑
  2012年1月4日

2011年,

一去不复返。

11年没有惊天动地,

却是人生非常重要的一年。

 

4年,

老婆终于大学毕业,

异地相恋的苦和困难,

只有经历的过的人才明白。

11年里得到了双方父母的同意,

真正在一起了,

缘分这东西很难说清楚,

可遇也可求,

只有自己把握,自己争取,

才可能得到真爱。

看看身边的朋友,

有买房子的,

有结婚的,

有马上要当爸妈的,

。。。

我们没结婚,

没领红本本,

没有买房买车,

可是,

两个人为了共同的目标,

齐心协力快乐的奋斗着,

我想明天也将会是最幸福。

在此祝愿还是一个人的朋友,

12年结束自己的单身,找到真爱O(∩_∩)O~

 

11年大部分的工作嫁给了忙碌,

每天背个包包,匆匆忙忙,

地铁里冲的飞快快之一的是我,

电梯+楼梯的也有我。

大大小小的项目也参与了4,5个,

整体来说还算可以,

定义规范,使用工具,减少了大量的人工编码,

工欲善其事必先利其器嘛。

 

11年以成为历史,

不能重来,

那就学习、运动、奋战世界末日--2012 吧!

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2012-01-04 15:12 张曾人 阅读(11) 评论(0) 编辑
  2011年11月9日

绑定主要是通过设置静态数据源,然后设置绑定控件的DisplayMemberPath和SelectedValuePath

界面代码:

View Code
xmlns:c="clr-namespace:WPF1" >
<Page.Resources>
<c:EmPAll x:Key="empAll"></c:EmPAll>
<c:AllData x:Key="allData"></c:AllData>
</Page.Resources>
<Grid>
<ComboBox Height="23" ItemsSource="{ StaticResource empAll}" DisplayMemberPath="Name" SelectedValuePath="ID" HorizontalAlignment="Left" Margin="47,37,0,0" Name="comboBox1" VerticalAlignment="Top" Width="120"/>
<ListBox Height="60" ItemsSource="{ StaticResource allData}" DisplayMemberPath="Name" SelectedValuePath="ID" HorizontalAlignment="Left" Margin="48,133,0,0" Name="listBox1" VerticalAlignment="Top" Width="167"/>
<Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="197,25,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click"/>

</Grid>


后台代码:

View Code
namespace WPF1
{
///<summary>
/// 绑定Combox.xaml 的交互逻辑
///</summary>
public partial class 绑定Combox : Page
{
public 绑定Combox()
{
InitializeComponent();
}

//获取选中的值
private void button1_Click(object sender, RoutedEventArgs e)
{
string val = comboBox1.SelectedValue.ToString();
var val2 = (listBox1.SelectedItem as Emp).Name;
MessageBox.Show(val + "," + val2);
}
}

public class Emp
{
public int ID { get; set; }
public string Name { get; set; }
}

public class EmPAll : System.Collections.ObjectModel.ObservableCollection<Emp>
{
public EmPAll()
{
this.Add(new Emp { ID = 1, Name = "A" });
this.Add(new Emp { ID = 2, Name = "B" });
}
}

public class AllData : System.Collections.ObjectModel.ObservableCollection<Emp>
{
public AllData()
{
for (int i = 0; i < 10; i++)
{
this.Add(new Emp { ID = i, Name = "Name" + i });
}
}
}
}

 

posted @ 2011-11-09 09:21 张曾人 阅读(62) 评论(0) 编辑
  2011年10月25日
IF EXISTS(SELECT *FROM sysobjects WHERE name='sp_ContestSubmit')  
DROP PROC sp_ContestSubmit
GO
-- =============================================
--
Author: zqt
--
Create date: 2011-11-25
--
Desc: 系统管理员批量给未交卷的考生交卷-竞赛
--
=============================================
Create proc sp_ContestSubmit
@GroupID int --考核ID
as
--申明一个游标
DECLARE MyCursor CURSOR
FOR select PK_UserExamID,FK_UserID,FK_ExamOrContestID from Score_UserExam where IsComplete=0 AND FK_ExamOrContestID in(select PK_ContestInfoID from Contest_Info where FK_ContestGroupID=@GroupID)

--打开一个游标
OPEN MyCursor

--循环一个游标
DECLARE @UserExamID int ,@UserID int ,@ExamManageID int
FETCH NEXT FROM MyCursor INTO @UserExamID, @UserID,@ExamManageID
WHILE @@FETCH_STATUS =0
BEGIN
--获取考试考试分数
DECLARE @UserExamScore int
select @UserExamScore=sum(Score) from Score_UserAnswer where FK_UserID=@UserID AND FK_UserExamID=@UserExamID

--修改考生交卷信息
UPDATE [Score_UserExam] SET [Score] =@UserExamScore,[IsComplete] = 1,[EndTime] = getdate(),[DurationSecs] = datediff(ss,BeginTime,getdate()) where PK_UserExamID=@UserExamID
FETCH NEXT FROM MyCursor INTO @UserExamID, @UserID,@ExamManageID
END

--关闭游标
CLOSE MyCursor
--释放资源
DEALLOCATE MyCursor

/* 测试
exec sp_ContestSubmit 1
*/
GO

posted @ 2011-10-25 11:18 张曾人 阅读(20) 评论(0) 编辑
  2011年9月6日
View Code
 1 StringBuilder sb = new StringBuilder();
2 if (arrService.Length > 0)
3 {
4 for (int i = 0; i < arrService.Length; i++)
5 {
6 if (string.IsNullOrEmpty(sb.ToString()))
7 {
8 sb.AppendFormat("INSERT INTO [SM_PackageEntry] select '{0}','{1}','{2}' ", servicePackageID, arrService[i][0], arrService[i][1]);
9 }
10 else
11 {
12 sb.AppendFormat(" UNION ALL select '{0}','{1}','{2}'", servicePackageID, arrService[i][0], arrService[i][1]);
13 }
14 }
15 //执行SQL
16 SqlHelper.ExecuteSql(sb.ToString());
17 sb.Clear();//清空SQL
18 }

posted @ 2011-09-06 08:44 张曾人 阅读(52) 评论(0) 编辑
  2011年9月1日
摘要: View Code 1 /// <summary> 2 /// 将datatable转换为json 3 /// </summary> 4 /// <param name="dtb">Dt</param> 5 /// <returns>JSON字符串</returns> 6 public static string Dtb2Json(DataTable dtb) 7 { 8 JavaScriptSerializer jss = new JavaScriptSeriali...阅读全文
posted @ 2011-09-01 12:04 张曾人 阅读(44) 评论(0) 编辑
摘要: View Code 1 /// <summary> 2 /// 将datatable转换为json 3 /// </summary> 4 /// <param name="dtb">Dt</param> 5 /// <returns>JSON字符串</returns> 6 public static string Dtb2Json(DataTable dtb) 7 { 8 JavaScriptSerializer jss = new JavaScriptSeriali...阅读全文
posted @ 2011-09-01 12:04 张曾人 阅读(40) 评论(0) 编辑
  2011年6月22日
摘要: 全屏快捷方式"C:\Program Files\Internet Explorer\IEXPLORE.EXE" -k http://localhost:8888/Login.aspx阅读全文
posted @ 2011-06-22 22:21 张曾人 阅读(23) 评论(0) 编辑
  2011年4月21日
摘要: 全屏代码: #region 设置全屏 this.WindowState = System.Windows.WindowState.Normal; this.WindowStyle = System.Windows.WindowStyle.None; this.ResizeMode = System.Windows.ResizeMode.NoResize; this.Topmost = true; this.Left = 0.0; this.Top =...阅读全文
posted @ 2011-04-21 23:12 张曾人 阅读(975) 评论(0) 编辑
  2011年3月23日
摘要: 在安装的时候出现一个错误提示“安装程序无法复制文件CONVLOG.EX_”,上网找了下资料,说是在运行-中输入”esentutl /p %windir%/security/database/secedit.sdb ” 就可以了阅读全文
posted @ 2011-03-23 15:27 张曾人 阅读(52) 评论(0) 编辑