ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:111.51KB ,
资源ID:26883695      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/26883695.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(人员分组.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

人员分组.docx

1、人员分组信息与电气工程学院软件程序设计 CDIO三级项目 设计说明书(2013/2014学年第一学期)题 目 : 人员分组生成工具 专业班级 : XXXXXXXXXXXXXXXX 学生姓名 : XXXXXXX 学 号: XXXXXXX 指导教师 : 吴开兴、马小进、崔冬 设计周数 : 2周 设计成绩 : 2014年1月10日1、项目设计目的1.1通过本次设计能够较熟练的掌握用C#语言建立窗体,能够独立地调试程序,改正bug。1.2掌握一个完整的软件设计过程,从设计到软件的发布。1.3巩固课本所学的知识,掌握C#语言的语法特点,综合运用所学知识来实现特定功能,提高分析和解决问题的能力。2、项目设

2、计正文2.1技术要求:2.1.1支持Excel文件的读写。 2.1.2支持打印功能。 2.1.3能按照一定的规则进行人员分组。2.2设计内容要求完成一个人员分组生成工具,可支持从excel文件读入学生信息,然后按照需要的方式对人员进行分组,最后对分组结果以excel表格形式导出。本程序可实现对人员进行按分组数、按每组人数、按学号顺序和按姓名(首字母的顺序)进行分组。2.3方案制定经过查阅资料了解有三种从excel读数据的经典方法:采用OleDB读取EXCEL文件、应用com组件导入和将EXCEL文件转化成CSV的文件然后用文件流读取。经分析,选择了第一种方法:采用OleDB读取EXCEL文件。

3、首先将excel数据导入到数据集DataSet中,然后再从DataSet导出到EXCEL文件,并且在导出文件的过程中对数据进行分组处理。2.4 OLEDB介绍OLEDB(Object Linking and Embedding,Database,(又称为OLEDB或OLE-DB),一个基于COM的数据存储对象,能提供对所有类型的数据的操作,甚至能在离线的情况下存取数据(比方说,你使用的是你的便携机,你可以毫不费力地看到最后一次数据同步时的数据映像)。OLE DB中的对象主要包括数据源对象、阶段对象、命令对象和行组对象。使用OLE DB的应用程序会用到如下的请求序列:初始化OLE、连接到数据源、

4、发出命令、处理结果、释放数据源对象并停止初始化OLE。OLEB的存在为用户提供了一种统一的方法来访问所有不同种类的数据源。OLE DB可以在不同的数据源中进行转换。利用OLE DB,客户端的开发人员在进行数据访问时只需把精力集中在很少的一些细节上,而不必弄懂大量不同数据库的访问协议。OLE DB是一套通过COM接口访问数据的ActiveX接口。这个OLE DB接口相当通用,足以提供一种访问数据的统一手段,而不管存储数据所使用的方法如何。同时,OLE DB还允许开发人员继续利用基础数据库技术的优点,而不必为了利用这些优点而把数据移出来。使用ATL、使用OLE DB数据使用程序。由于直接使用OLE

5、 DB的对象和接口设计数据库应用程序需要书写大量的代码。为了简化程序设计,Visual C+提供了ATL模板用于设计OLE DB数据应用程序和数据提供程序。利用ATL模板可以很容易地将OLE DB与MFC结合起来,使数据库的参数查询等复杂的编程得到简化。MFC提供的数据库类使OLE DB的编程更具有面向对象的特性。Viual C+所提供用于OLE DB的ATL模板可分为数据提供程序的模板和数据使用程序的模板。2.5总体设计本软件主要的功能模块如下: 图2-1 软件主要功能模块从数据导入功能开始,当单击“添加”键时,弹出路径选择对话框,从相应路径找到要操作的表来导入。导入之后,立刻弹出一个窗体来

6、预览所导入的原始数。然后选择分组方式(默认为按分组数分组),接着在对应文本框里输入想要的分组数或每组人数。最后执行数据导出功能。单击“导出分组”按键,启动计算机的microsoft office 2007以表格形式来显示导出结果,手动对结果进行保存。对于按分组数、按学号和按姓名分组默认要求用户输入分组数,若选择按每组人数进行分组,则要求用户输入每组人数。2.6系统流程图 N Y Y N 图2-2 程序流程图3、系统各功能实现部分3.1数据导入方法将excel中数据导入到DataSet中,并按照分组方式对数据进行预处理。实现代码如下: /将excel中数据导入到DataSet中public Da

7、taSet ExcelToDS(string Path)string strConn = Provider=Microsoft.Ace.OLEDB.12.0; + Data Source= + Path + ; + Extended Properties=Excel 8.0;OleDbConnection conn = new OleDbConnection(strConn);conn.Open();string strExcel = ;OleDbDataAdapter myCommand = null;DataSet ds = null; strExcel = select * from s

8、heet1$;switch (comboBox1.Text) /按条件将数据导入case 按学号:strExcel = select * from sheet1$ order by 学号 ;break;case 组数:case 按每组人数:strExcel = select * from sheet1$;break;case 按姓名:strExcel = select * from sheet1$ order by 姓名 ;break;myCommand = new OleDbDataAdapter(strExcel, strConn);ds = new DataSet();myCommand

9、.Fill(ds);return ds;3.2数据导出并实现分组方法/数据集数据导出到excel public bool DataSetToExcel(DataSet dataSet, bool isShowExcle) System.Data.DataTable dataTable = dataSet.Tables0;System.Data.DataTable newdt = dataTable.Clone();foreach (DataRow row in dataTable.Rows)DataRow dr = newdt.NewRow();dr.ItemArray = row.ItemA

10、rray;System.Threading.Thread.Sleep(50); Random random = new Random(); newdt.Rows.InsertAt(dr, random.Next(newdt.Rows.Count);/产生随机数并填充DataTableint rowNumber = newdt.Rows.Count;int columnNumber = newdt.Columns.Count;if (rowNumber = 0) MessageBox.Show(没有任何数据可以导入到Excel文件!);return false;/建立Excel对象Microso

11、ft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();excel.Application.Workbooks.Add(true);excel.Cells1, 1 = 分组;/添加表头excel.Cells1, 2 = 学号;excel.Cells1, 3 = 姓名;excel.Cells1, 4 = 性别;excel.Cells1, 5 = 班级;string x;x=comboBox1.Text;int e = Int32.Parse(txtGroup.Text

12、);int f = newdt.Rows.Count / e;int h = 0;int i = newdt.Rows.Count % e;int k = 1;if (e newdt.Rows.Count)MessageBox.Show(分组数或人数大于总人数, 出错了, MessageBoxButtons.OK, MessageBoxIcon.Error);else /填充数据for (int c = 0; c rowNumber; c+)for (int j = 1; j columnNumber; j+)excel.Cellsc + 2, j +1 = newdt.Rowsc.ItemA

13、rrayj; switch (x) /按分组条件实现相应分组case 按组数:for (int l = 2; l = i * (f + 1); l += f + 1)k += f + 1;h+;excel.Cellsl, 1 = 第 + h + 组;for (int g = k+1; g = newdt.Rows.Count; g += f)h+;excel.Cellsg, 1 = 第 + h + 组;break;case 按每组人数:for (int g = k+1; g = newdt.Rows.Count; g += e)h+;excel.Cellsg, 1 = 第 + h + 组;br

14、eak;case 按姓名:case 按学号: for (int c = 0; c rowNumber; c+)for (int j = 1; j columnNumber; j+)excel.Cellsc + 2, j + 1 = dataTable.Rowsc.ItemArrayj;for (int l = 2; l = i * (f + 1); l += f + 1)k += f + 1;h+;excel.Cellsl, 1 = 第 + h + 组;for (int g = k+1; g = dataTable.Rows.Count; g += f)h+;excel.Cellsg, 1 =

15、 第 + h + 组;break;Range oCells =excel.get_Range(A1, Missing.Value); /修改学号列的列宽 (Range)oCells.Cells1,2).EntireColumn.ColumnWidth = 10;excel.Visible = isShowExcle;/是否打开该Excel文件 return true;3.3“添加”按钮的button1_Click 事件private void button1_Click(object sender, EventArgs e) OpenFileDialog opf = new OpenFileD

16、ialog();/弹出选择路径对话框if (opf.ShowDialog() = DialogResult.OK)filepath = opf.FileName;DataSet ds = ExcelToDS(filepath);MessageShow ms = new MessageShow();ms.WantToDisplayData = ds.Tables0.DefaultView;ms.Show();else ;/空语句 3.4“导出分组”按钮的button1_Click事件private void button2_Click(object sender, EventArgs e) if

17、 (txtGroup.Text != ) DataSet ds = ExcelToDS(filepath);DataSetToExcel(ds, true); /导出数据else MessageBox.Show(请输入分组数或人数, 出错了, MessageBoxButtons.OK, MessageBoxIcon.Error);3.5点击关于作者的“访问”按钮private void button1_Click(object sender, EventArgs e)System.Diagnostics.Process.Start(http:/www.zhanglei);this.Hide()

18、;3.6单击关闭按钮设计private void frmmain_FormClosing(object sender, FormClosingEventArgs e)DialogResult rst = MessageBox.Show(this, 您真的要退出系统吗?, 提示, MessageBoxButtons.YesNo, MessageBoxIcon.Question); /单击关闭按钮弹出提示switch (rst)case DialogResult.Yes:System.Windows.Forms.Application.ExitThread();System.Windows.For

19、ms.Application.Exit();break;case DialogResult.No:e.Cancel = true;break;4、程序执行结果点击调试之后启动主窗体:点击添加按钮选择excel文件之后的数据预览窗口:点击“使用须知”后的使用说明窗口:点击关于作者后弹出的作者信息:分组或分组人数没有输入时的错误提示信息:当输入的分组数大于总人数时:当单机关闭按钮时:5、项目设计总结经过了两周的设计,终于成功完成了自己的软件,并且实现了所要求的功能。通过这次项目的设计,使我对C#语言的掌握程度更加深刻了。以前学习的知识都是在理论层面,这是一次很有必要的实践。也许在理论上觉得自己掌握

20、的还行,但是在实践上,会遇到自己遇想不到的问题,需要自己动手去解决,需要自己查阅各种资料。这次设计更加巩固了我们的基础知识,为后续的学习奠定了基础。刚刚接到这个项目的时候,没有一点头绪,想该如何去做,苦苦查了几天的资料,终于有一些了解,然后尝试着去做,一开始就遇到了问题,写了一些代码之后,点击调试之后报错了。然后根据错误提示修改自己的代码,改了几遍才改正确。导入表格的时候也出了错误,调试的时候没有任何错误,但是点击“添加”之后就报错了。后来发现语句之中对表格的操作出现了错误,导致无法找到excel中的数据。过了两天左右,实现了文件的导入,又自己查阅资料,学习如何实现数据导出。经过自己的不断努力

21、终于实现了基本的功能。后来经过自己的不断钻研,又成功实现了对成员按照姓名、按照学号、按照每组人数进行分组。又发现自己的代码有些部分做的比较繁琐,又花了一天时间进行了代码优化,还进行了窗体美化。还进行了安装版和绿色版的发布。从刚开始的无从入手,到最后完美实现各种功能,是一个很好的锻炼自己的过程。当程序报错的时候,我们要有能够根据错误提示定位错误并自行改正错误的能力。还要戒骄戒躁,不能觉得代码很枯燥,对待代码要有耐心,相信自己一定能够改正bug。其次,作为一个编程人员,需要十分严谨,时刻注意自己的代码,因为一个小小的错误,比如一个标点符号的错误,都可能导致程序不能执行。还要注意自己代码的简化程度,

22、执行效率等等,因为学习C#不太久,这方面我做得还不算好。在以后的学习过程中,应该吸取别人代码之中的优秀的地方,把它转化为自己的东西。理论与实际相结合也是非常重要的,只有理论知识是远远不够的,在实践中可能会遇到各种各样的问题,不多经历就无法感受到这一点。要在实践中提高自己的动手能力和解决问题的能力,从而学以致用。总之,以后需要学习的还很多,这只是一个开始,在以后的学习中,应该多多地去练习编程,多多地去调试程序,再接再厉,学好C#语言。6、参考文献1 罗福强,白忠建编著.Visual C#.NET 程序设计教程.人民邮电出版社,2009年3月2 陈钟,刘强,张高等编.C#编程语言设计与开发.清华大学出版社,2003年9月1日3马俊编著.C#网络应用高级编程.人民邮电出版社,2006年5月4 唐政,房大伟等编著.C#项目开发全程实录.北京:清华大学出版社,2008年6月项目设计评 语项目设计成 绩指导教师(签字) 年 月 日

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1