MyTask2
先把核心代码贴上
public void solve()
{
//Console.WriteLine("请输入你需要生成多少人的数据以及年龄最大值(75以内):");
//int flag,end,maxAge;
int test=0;
//flag = int.Parse(Console.ReadLine());
//maxAge = int.Parse(Console.ReadLine()); Random rd = new Random(GetRandomSeed());
Random rdd = new Random(GetRandomSeed()); clearDataPie();//每次分析之前都要对之前一次的数据清空
//数据生成
for (int i = 0; i < numPerson; i++)
{ int age = rd.Next(1, agePerson+1);
int sex = rdd.Next(0, 2); if(flagSex == 1)
{
sex = Nsex;
} PersonHabit ph = new PersonHabit(age,sex);//这里随机构造出年龄和性别
//可自己选取性别,默认为空的话则随机 calculateDataPie(ph);//每个人的数据
solveSum(ph);//生活习惯数据统计 //messagePrint+="年龄:"+age+" 性别:"+((sex==0)?"男":"女")+"\r\n"; // Console.WriteLine("年龄:"+age+" 性别:"+((sex==0)?"男":"女"));
//ph.Userid = i + 1;
string sql =
"insert into LifeHabit()";
// if(==false){ // test = 1;
// }
if(this.radioButton1.Checked == true&&this.radioButton2.Checked == false)
{
sqlExcute(sql);
this.button4.Enabled = true;
}
//Console.WriteLine("正在生成数据中... 当前为第"+(i+1)+"个人");
//System.Threading.Thread.Sleep(2000);
if (i == numPerson)
break;
//ph.print();
} countDataPie();//统计完所有数据之后进行饼状图绘制 if(test==1)
messagePrint += "-------------数据库未布置,操作失败!-------------\r\n\r\n"; messagePrint += "本次模拟数据统计:"+"\r\n\r\n";
messagePrint += "男生: " + numMen +" 女生: "+ numWomen +"\r\n\r\n";
messagePrint += "年龄数据分布: 下限-"+ageMin+"岁 上限- "+ageMax+"岁\r\n\r\n";
messagePrint += "各年龄段分布: 1-18岁 "+age1+"人 19-35岁 "+age2+"人 36-50岁 "+age3+"人 51-75岁 "+age4+"人\r\n\r\n";
messagePrint += "\r\n\r\n生活习惯数据:\r\n";
messagePrint += "DietHabit : "+"优-"+menDiet1 +"("+returnPercent(menDiet1)+") 良-"+menDiet2 +"("+returnPercent(menDiet2)+") 中-"+menDiet3 +"("+returnPercent(menDiet3)+") 差-"+menDiet4 +"("+returnPercent(menDiet4)+")\r\n\r\n";
messagePrint += "DrinkHabit: "+"优-"+menDrink1+"("+returnPercent(menDrink1)+") 良-"+menDrink2+"("+returnPercent(menDrink2)+") 中-"+menDrink3+"("+returnPercent(menDrink3)+") 差-"+menDrink4+"("+returnPercent(menDrink4)+")\r\n\r\n";
messagePrint += "SportHabit: "+"优-"+menSport1+"("+returnPercent(menSport1)+") 良-"+menSport2+"("+returnPercent(menSport2)+") 中-"+menSport3+"("+returnPercent(menSport3)+") 差-"+menSport4+"("+returnPercent(menSport4)+")\r\n\r\n";
messagePrint += "SmokeHabit: "+"优-"+menSmoke1+"("+returnPercent(menSmoke1)+") 良-"+menSmoke2+"("+returnPercent(menSmoke2)+") 中-"+menSmoke3+"("+returnPercent(menSmoke3)+") 差-"+menSmoke4+"("+returnPercent(menSmoke4)+")\r\n\r\n";
messagePrint += "SleepHabit: "+"优-"+menSleep1+"("+returnPercent(menSleep1)+") 良-"+menSleep2+"("+returnPercent(menSleep2)+") 中-"+menSleep3+"("+returnPercent(menSleep3)+") 差-"+menSleep4+"("+returnPercent(menSleep4)+")\r\n\r\n"; /*
Console.WriteLine("数据生成完毕...\n***************按0键直接退出,按3键删除生成数据退出...***************"); end = int.Parse(Console.ReadLine());
if (end == 3)
{
//拼装sql
String sql = "delete from LiftHabit";
sqlExcute(sql);
Console.WriteLine("数据删除完毕...");
} for (int i = 1; i <= 75; i++)
Console.WriteLine(i); */
//return;
}
这是最原始的框架,其实最开始做的时候只是一个dos界面,然后能插入数据和取出数据的程序
后面增加了WinForm界面,然后把一些基本的数据能够显示出来
这里给一些比较常用的方法吧
public static int GetRandomSeed()//随机数种子
{
byte[] bytes = new byte[4];
System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider( );
rng.GetBytes(bytes);
return BitConverter.ToInt32( bytes , 0 );
}
public static string returnPercent(int a)//返回数值的百分比
{
double percent=Convert.ToDouble(a)/Convert.ToDouble(numPerson);
string result=string.Format("{0:0.00%}",percent);//得到5.88%
return result;
}
public bool outputExcel()//数据导出Excel模版
{ using (DbConnection connection = new SqlConnection("server=localhost; user id=sa; password=; database="))
{
connection.Open();
DbCommand command = connection.CreateCommand();
command.CommandType = System.Data.CommandType.Text;
command.CommandText = "";//sql表字段
var reader = command.ExecuteReader();
Excel.Application application = new Excel.Application();
Excel.Workbook workbook = application.Workbooks.Add();
Excel.Worksheet worksheet = workbook.ActiveSheet as Excel.Worksheet;
var index = 1;
while (reader.Read())
{
worksheet.Cells[index, 1] = reader.GetInt32(0).ToString();
worksheet.Cells[index, 2] = reader.GetString(1);
worksheet.Cells[index, 3] = reader.GetString(2); if ("NULL".Equals(reader.GetString(3))==true)
worksheet.Cells[index, 4] = "";
worksheet.Cells[index, 4] = reader.GetString(3); if ("NULL".Equals(reader.GetString(4)) == true)
worksheet.Cells[index, 5] = "";
worksheet.Cells[index, 5] = reader.GetString(4); if (reader.GetString(5) == null)
worksheet.Cells[index, 6] = "";
worksheet.Cells[index, 6] = reader.GetString(5); if (reader.GetString(6) == null)
worksheet.Cells[index, 7] = "";
worksheet.Cells[index, 7] = reader.GetString(6); if (reader.GetString(7) == null)
worksheet.Cells[index, 8] = "";
worksheet.Cells[index, 8] = reader.GetString(7); index++;
}
reader.Close();
workbook.SaveAs(@"F:\test.xls");
workbook.Close();
application.Quit();
connection.Close(); }
return true;
}
void Timer1Tick(object sender, System.EventArgs e)//监控饼状图并且在form1内传入数据
//因为之前设置的是在design里面做,是可以弄出来的,然后鉴于数据不知道怎么传输过来,我就在design里面设置timer,然后可以做到
//点击按钮之后启动
{
if(flagAgeShowPie == 1)
{
chart1.Series["Series1"].Points.DataBindXY(xValues, yValues1);
//chart1.Series["Series1"].Label = "#PERCENT{P}"; //System.Diagnostics.Debug.WriteLine("123321"+yValues2[0]+" "+yValues3[1]+" "+yValues4[2]); chart2.Series["Series2"].Points.DataBindXY(xValues, yValues2);
//chart2.Series["Series2"].Label = "#PERCENT{P}"; //chart2.Series["Series2"].LegendText = "偏低";
chart3.Series["Series3"].Points.DataBindXY(xValues, yValues3);
//chart3.Series["Series3"].Label = "#PERCENT{P}"; //chart3.Series["Series3"].LegendText = "中";
chart4.Series["Series4"].Points.DataBindXY(xValues, yValues4);
//chart4.Series["Series4"].Label = "#PERCENT{P}";
}
if(flagValueChartAreaComboBox<=10&&flagLifeHabitButton==1)//在折线图左边下拉框有值的时候并且上面的按钮也按下才绘图
{
changeValueChartAreaByIndex();//通过下拉框的值来改变数组值间接改变图形
chart5.Series["Series5"].Points.DataBindXY(xValues5, yValues5);//绑定数据
}
//chart4.Series["Series4"].LegendText = "偏高";
//System.Diagnostics.Debug.WriteLine("123123");
flagAgeShowPie = 0;
//flagLifeHabitButton = 0; }
好了,这一章主要是列出一些常用的方法分享给大家,下一章我们开始讲我遇到的困难~~
MyTask2的更多相关文章
- Java进击C#——语法之多线程
本章简言 上一章中笔者对C#一些独有的语法点进行讲解,相信也可以看C#的一些神奇之处.那么本章主要是放在多线程这方面的知识.不管是C#还是JAVA在开发过程或多或少都会用到关于多线程的编程.当然笔者不 ...
- mac机上搭建php56/nginx 1.8.x/thinkphp 3.2.x/gearman扩展/seaslog扩展/redis扩展环境
php的各种扩展配置起来实在不容易,记录一下备忘: 一.php56 安装 虽然php7出来了,但是没用过,不知道有没有坑,这里仍然使用php5.6版本 1.1 安装php/php-pfm brew u ...
- NSRunLoop的进一步理解
iPhone应用开发中关于NSRunLoop的概述是本文要介绍的内容,NSRunLoop是一种更加高明的消息处理模式,他就高明在对消息处理过程进行了更好的抽象和封装,这样才能是的你不用处理一些很琐碎很 ...
- Java多线程编程核心技术--定时器
Timer类主要负责计划任务,也就是在指定的时间开始执行某一个任务. 方法schedule(TimerTask task, Date time) public class Task { private ...
- NSRunLoop 概述和原理
NSRunLoop 概述和原理 1.什么是NSRunLoop? 我们会经常看到这样的代码: - (IBAction)start:(id)sender { pageStillLoading = YES; ...
- [Android Pro] Gradle Tips#1-tasks
reference to : http://trickyandroid.com/gradle-tip-1-tasks/ http://blog.csdn.net/lzyzsd/article/deta ...
- 如何自定义Grunt任务
任务(Tasks)是grunt的核心概念,你所做的很多工作比如资源合并(concat).压缩(uglify)都是在配置任务.每次grunt运行的时候,你指定的一个或多个任务也在运行,如果你没有指定任务 ...
- Gradle tip #1: tasks
With this post I would like to start series of Gradle-related topics I wish I knew when I first star ...
- java定时器的使用
定时器类Timer在java.util包中.使用时,先实例化,然后使用实例的schedule(TimerTask task, long delay)方法,设定指定的任务task在指定的延迟delay后 ...
随机推荐
- bzoj 3143: [Hnoi2013]游走 高斯消元
3143: [Hnoi2013]游走 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1026 Solved: 448[Submit][Status] ...
- [BZOJ 1036] [ZJOI2008] 树的统计Count 【Link Cut Tree】
题目链接:BZOJ - 1036 题目分析 这道题可以用树链剖分,块状树等多种方法解决,也可以使用 LCT. 修改某个点的值时,先将它 Splay 到它所在的 Splay 的根,然后修改它的值,再将它 ...
- 搭建DirectUi开发平台
DirectUi的效果可以使用GDI.GDI+.DirectX.OpenGL实现,常用的有GDI和GDI+,后两种有杀鸡用牛刀的感觉.在网络上能找到此方面的教材 现在的软件越来越多的有很炫目的界面,看 ...
- QT5.1.1中MinGW4.8的环境变量配置
1.右击“我的电脑”图标,在弹出的菜单上选择“属性(R)”菜单项. 2.选择“高级”选项卡.点击“环境变量”按钮. 3.点击“新建(W)”按钮,新建环境变量:MINGW_HOME,变量值为MinGW的 ...
- jps命令(Java Virtual Machine Process Status Tool)
1.介绍 用来查看基于HotSpot的JVM里面中,所有具有访问权限的Java进程的具体状态, 包括进程ID,进程启动的路径及启动参数等等,与unix上的ps类似,只不过jps是用来显示java进程, ...
- Centos 6.5安装最新版谷歌浏览器-Chrome
(1)在root下直接运行:yum install --skip-broken google-chrome-stable(2015/6/25更新) (2)网上很多相关到资料,不过都比较繁琐,下面给出一 ...
- MapReduce扩展:应用程序如何运行于Hadoop Yarn之上
1. 背景 “应用程序运行于Hadoop Yarn之上”的需求来源于微博运维数据平台中的调度系统,即调度系统中的任务需要运行于Hadoop Yarn之上.这里的应用程序可以简单理解为一个普通的进程 ...
- makefile 自动处理头文件的依赖关系 (zz)
现在我们的Makefile写成这样: all: main main: main.o stack.o maze.ogcc $^ -o $@ main.o: main.h stack.h maze.hst ...
- 低压差稳压器AMS1585
(1)高效线性稳压. (2)输出高达4.6A,最高输入电压15V,推荐最低压差1.5V(最低1.35V),最大压差12V. (3)两种封装:TO220(直插式),TO230(贴片). 典型电路如下图所 ...
- UIView hitTest的原理
[转自:http://blog.sina.com.cn/s/blog_59fb90df0101ab26.html] UIView 两个方法: - (UIView *)hitTest:(CGPoint) ...