C#课程设计人民币大小写转换器(含源代码)_第1页
C#课程设计人民币大小写转换器(含源代码)_第2页
C#课程设计人民币大小写转换器(含源代码)_第3页
C#课程设计人民币大小写转换器(含源代码)_第4页
C#课程设计人民币大小写转换器(含源代码)_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、沈 阳 工 程 学 院课 程 设 计课程设计题目:C#.NET程序设计课程设计 - 人民币大小写转换器 系 别 信息学院 班级 学生姓名 学号 指导教师 张楠、关颖 职称 讲师、讲师 起止日期:2015 年6月22日起至 2015 年6月28日止沈 阳 工 程 学 院课程设计任务书课程设计题目: C#.NET程序设计课程设计 - 人民币大小写转换器 系 别 信息工程系 班级 学生姓名 学号 指导教师 张楠、关颖 职称 讲师、 讲师 课程设计进行地点: 实训F 任 务 下 达 时 间: 2015 年 6 月 3 日起止日期: 2015 年 6 月 22 日起至 2015年 6月 28 日止教研室

2、主任 2015年6月 3 日批准1.设计的原始资料及依据通过课程设计使学生进一步加深对课程内容的理解,利用程序设计的基本思想进行程序的开发,进一步掌握编程方法和技巧,提高学生用程序的思想来解决实际问题的能力。2设计的主要内容及要求 (22)人民币大小写转换器软件的设计与实现编写一个简易人民币大小写转换器的Winform程序,要求用户输入一个人民币的数据,要求转换器可以获取数据,并且可以以大写的方式显示出来,如 1对应 壹。要求可区分元、角、分。3.对设计说明书撰写内容、格式、字数的要求 学生应撰写的内容为:中文摘要和关键词、目录、正文、参考文献等。课程设计说明书(论文)的结

3、构及各部分内容要求可参照沈阳工程学院毕业设计(论文)撰写规范执行。应做到文理通顺,内容正确完整,书写工整,装订整齐。 装订格式封面、任务书、成绩评审意见表、摘要和关键词、目录、正文、结论、致谢、参考文献。 课程设计说明书(论文)是体现和总结课程设计成果的载体,一般不应少于3000字。打印时采用A4纸,页边距均为20mm,正文采用宋体小四号字,行间距18磅。文中大标题采用黑体小三号字,一级节标题采用黑体四号字,二级节标题采用黑体小四号字,三级节标题采用黑体小四号字,表题与图题采用宋体五号字。4. 设计完成后应提交成果的种类、数量、质量等方面的要求 课程设计报告1 需求分析2 

4、总体设计   21 设计的总体思想与算法描述22 模块结构图  23 各功能模块的功能与处理流程描述24 界面设计3  各功能模块程序设计按照功能模块的功能与处理流程描述给出详细的程序代码,并给出重点语句的注释。 设计成品(光盘)5.时间进度安排顺序阶段日期计 划 完 成 内 容备注1第16周第1天在查阅资料,充分解读题目内容,小组分工,确定每个人的具体任务的基础上进行数据库设计。1天2第16周第2天设计界面并编制程序。1天3第16周第3天完善程序和测试。1天4第16周第4天程序整合,综合调试。1天6第1

5、6周第5天撰写课程设计报告。1天6.主要参考资料(文献)1葛昊晗.Visual C.NET网络编程案例解析,清华大学出版社。2刘烨.C编程及应用程序开发教程,清华大学出版社。3郑宇军.C语言程序设计基础,清华大学出版社。4王晟.Visual C# .NET数据库开发经典案例解析,清华大学出版社。5 杨树林、胡洁萍.C程序设计与案例教程,清华大学出版社。沈 阳 工 程 学 院C#.NET程序设计课程设计成绩评定表系(部): 信息学院 班级: 学生姓名: 指 导 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分调研论证能独立查阅文献,收集资料;能制定课程设计方案和日程安排。0.1543

6、2工作能力态度工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作, 0.25432工作量按期圆满完成规定的设计任务,工作量饱满,难度适宜。0.25432说明书的质量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.55432指导教师评审成绩(加权分合计乘以12) 分加权分合计指 导 教 师 签 名: 年 月 日评 阅 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分查阅文献查阅文献有一定广泛性;有综合归纳资料的能力0.25432工作量工作量饱满,难度适中。0.55432说明书的质量说明书立论正确,论述充分,结

7、论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.35432评阅教师评审成绩(加权分合计乘以8)分加权分合计评 阅 教 师 签 名: 年 月 日课 程 设 计 总 评 成 绩分沈阳工程学院课程设计报告 摘要摘 要生活中,用阿拉伯数字表示的人民币小写形式以其便于记录与存取得到了普遍应用,但若将小数点稍作修改就容易出现错误,因此在重要文件中,如合同等具有法律约束的文件中,人民币的大写形式表示必不可少。而大写人民币输入复杂,如果能将小写人民币转化成大写的人民币表示形式,就能大大提高工作效率。人民币大小写转换在购物、工作等日常活动中应用广泛,本软件是在Microsof

8、t Visual Studio 2010编程环境中,使用C#.NET语言制作的一个简易人民币大小写转换器。程序获取用户输入的数据后,利用switch判断金额的位数,决定采用哪个自定义函数来进行转换,并添加各位对应的单位,如“拾”、“佰”、“仟”、“万”、“亿”。对于自定义的具有转换功能的函数,在各自定义函数中,还需用if语句判断各位是否为零,决定是否保留必要的“零”、删除多余的“零”。实现的功能是用户输入一个人民币的数据,转换器可以获取数据,并且可以以大写的方式显示出来。关键字 人民币大小写转换 Visual Studio 2010 C#.NET编程语言I沈阳工程学院课程设计报告 目录目 录摘

9、 要I目 录II第1章 需求分析11.1 系统概述11.2 问题分析 1第2章 系统总体设计22.1 功能模块图 22.2 系统流程图 2第3章 详细设计33.1 创建界面33.2 大小写转换43.3 添加单位43.3.1 四位一组的分组43.3.2 各组的转换7第4章 系统实现124.1 登陆界面124.2 转换功能12参考文献14沈阳工程学院课程设计报告 第一章 需求分析第1章 需求分析1.1 系统概述人民币转换器问题是算法中的一个经典命题之一,研究此类型的问题对提高我们的算法提升是有所帮助,有关这个问题的讲述在讲解循环控制和switch基本都将涉及本系统,同

10、样选择使用这些方法实现该过程。该程序运用的是基于对话框的类。建立对话框并添加相应的编辑框,用来存储输入的数据和显示结果。1.2 问题分析 (1) 将接收数保存为数组。 (2) 利用循环,将小写数字变成相应的大写字符。(3) 求得整数部分的长度,根据长度定制如何转换。 (4) 根据整数位数在大写数字后面添加相应的单位。(5) 出现某位为0或接连出现0时,根据接收数的位数以及连续的0出现的个数决定输出时是保留还是删除汉字“零”。18沈阳工程学院课程设计报告 第二章 系统总体设计第2章 系统总体设计在对于整数划分系统的设计中,需要添加一个对话框,在对话框中添加两个编辑框

11、,绑定相应的变量,通过算法,然后实现编辑框的数据向另一个编辑框中输出。2.1 功能模块图 人民币大小写转换软件分为显示功能和转换功能。图2.1 功能模块图2.2 系统流程图 进入软件界面,输入你要转换的金额,点击转换则会在下方编辑框中显示大写结果,再次输入点击转换可再次转换,点击退出则退出软件。图2.1 系统模块图沈阳工程学院课程设计报告 第三章 详细设计第3章 详细设计3.1 创建界面1在Microsoft Visual Studio 2010中,新建一个窗体应用程序ltob,在“已安装的模板”中选择Visual C#,点击确定即可新建项目,如图3.1所示。图3.1 新建

12、窗体应用程序ltob2.添加2个Lable控件、2个TextBox控件、1个Botton控件,根据表3-1设置相应的属性项。表3.1 需要修改的属性表控件属性属性设置Label1NameLable1Text小写Label2NameLable1Text大写TextBox1NameTextBox1TextBox2NameTextBox2BottonNameBotton3.界面完成效果如图3.2所示。图3.2 界面完成效果3.2 大小写转换用户点击“转换”按钮时,系统从界面获取金额,在循环中,将小写数字变成相应的大写汉子,无金额单位。主要代码如下:enum Num 零 = 48, 壹, 贰, 叁,

13、肆, 伍, 陆, 柒, 捌, 玖 ; /定义枚举类型Num n = Num.捌, Num.捌, Num.捌, Num.捌, Num.捌, Num.捌, Num.捌, Num.捌, Num.捌, Num.捌, Num.捌, Num.捌, Num.捌 ; / 数组定义及初始化int a = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;int length = textBox1.Text.Length; /获取金额长度 for (int i = 0; i < length; i+) /将金额数值依次转换成大写汉子,无金额单位 ai = (int)textBox1.T

14、exti; ni = (Num)ai; 3.3 添加单位3.3.1 四位一组的分组人民币的大小写转换与人民币的位数有关。“个”、“拾”、“佰”、“仟”“万”等单位出现位置不同,表示的金额也不同,如“仟元”中的“仟”是小写表示的第3位数后的单位,而“仟万元”中的“仟”是小数表示的第7(即3+4)位数后的单位。因此需要判断输入金额的长度,以及每一位的数值,连续的四位数字为一组,调用相应位数的对应算法,给每一位数值添加单位。可能的情况及处理方法如下:(1)输入金额长度小于4位时,直接调用响相应位数的转换函数。(2)输入金额长度大于4位,并且小于9位时,可将金额分为两个分组,一个长度为4,调用长度为四

15、位的转换函数,另一个长度不确定,调用响相应位数的转换函数。(3)输入金额长度大于等于9位时,这是有两个分组长度为四位,需要将倒数第1、2、3、4位的大写数值保存在n 中,需要将倒数第5、6、7、8位的大写数值保存在m 中,返回值长度为4,然后主函数将返回值作为参数传递给自定义函数siwei(),函数siwei()的定义在3.3.3节详细讲述。将5、6、7、8位保存的代码如下: Num move(Num n) Num m = Num.捌, Num.捌, Num.捌, Num.捌 ; if (textBox1.Text.Length >=8) for (int j = 0; j <=

16、3; j+) mj = (Num)nj+textBox1.Text.Length%8; return m; 相应的,倒数第9、10、11、12位也应该保存,没有数值则不进行保存,因此,此函数的返回值长度在1到4不等。在代码如下: Num Mov(Num n) Num l = Num.捌, Num.捌, Num.捌, Num.捌 ; if (textBox1.Text.Length >= 8) for (int j = 0; j <= textBox1.Text.Length-9; j+) / lj = (Num)nj; return l; 因此,依据输入小写金额的长度分组及转换代码

17、如下:switch (length) case 0: textBox2.Text = "零元" break; case 1: textBox2.Text = n0 + "元" break; case 2: textBox2.Text = liangwei(n) + "元" break; case 3:textBox2.Text = sanwei(n) + "元"break; case 4: textBox2.Text ="" + siwei(n) + "元" break; c

18、ase 5: textBox2.Text = n0 + "万" + siwei(n) + "元" break; case 6: textBox2.Text = liangwei(n) + "万" + siwei(n) + "元" break; case 7: textBox2.Text = sanwei(n) + "万" + siwei(n) + "元" break; case 8: textBox2.Text = siwei(move(n) + "万"

19、+ siwei(n) + "元" break; case 9: textBox2.Text = n0 + "亿" + siwei(move(n) + "万" + siwei(n) + "元" break; case 10: textBox2.Text = liangwei(Mov(n) + "亿" + siwei(move(n) + "万" + siwei(n) + "元" break; case 11: textBox2.Text = sanwei(Mo

20、v(n) + "亿" + siwei(move(n) + "万" + siwei(n) + "元" break; case 12: textBox2.Text = siwei(Mov(n) + "亿" + siwei(move(n) + "万" + siwei(n)+"元" break; default: break;3.3.2 各组的转换分组后,需要根据各组的具体情况增删单位。如果只是单纯的将小写数值转换为大写,再添加单位,我们得到的大写表示结果并不符合我们通常的表示方法,

21、如小写金额为“1001”,我们的转换器得到的转换结果是“壹仟零佰零拾壹元”,而正确的大写表示应该为“壹仟零壹元”,即将“佰”和“拾”的单位以及百位、十位的数值“0”用数值用一个汉字“零”代替。因此,在分组之后,我们要根据各位是否为“零”决定是否增删零,是否增删单位。为了表示方便,我们用 0表示该位是“零”,1表示该位不为零,依据分组长度的不同,会有如下几种情况与处理方法:(1) 分组长度为1,直接进行转换、添加单位即可。(2) 分组长度为2,可能的情况有“10”、“11”。(3) 分组长度为3,可能的情况有“100”、“101”、“110”、“100”,调用函数sanwei()。(4) 分组长

22、度为4,表示此分组前可能仍存在有效数值,可能的情况有“0000”、“0001”、“0010”、“0011”、“0100”、“0101”、“0110”、“0111”、“1000”、“1001”、“1010”、“1011”。在这里,我们以三位分组为例,流程图如图3.4所示。长度为两位和四位的转换过程与此类似。图3.3 长度为三位的分组转换流程图不足四位的分组,转换代码如下:string sanwei(Num n) string str; if (n2 = Num.零) if (n1 != Num.零) str = n0 + "佰" + n1 + "拾" ;

23、else str = n0 + "佰" else if (n1 = Num.零) str = n0 + "佰" + n1 + n2; else str = n0 + "佰" + n1 + "拾" + n2; return str; string liangwei(Num n) string str; if (n1 = Num.零) str= n0 + "拾" ; else str= n0 + "拾" + n1; return str; 长度为四位的分组转换流程图如下:图3.4

24、 满足四位的分组转换流程图主要代码如下:string siwei(Num n) string str = "" int j=0,k,p=0; k = textBox1.Text.Length / 4; j = textBox1.Text.Length % 4; if(n.Length !=4) p = (k - 1) * 4 + j; for (int i = 0; i <= 3; i+) ni = ni + p; if (n3 = Num.零) if (n2 = Num.零) if (n1 = Num.零) if (n0 = Num.零) str = "元

25、" else str = n0 + "仟" ; else if (n0 = Num.零) str = "" + n0 + n1 + "佰" ; else str = n0 + "仟" + n1 + "佰" else if (n1 = Num.零) if (n0 = Num.零) str = "" + n0 + n2 + "拾" else str = n0 + "仟" + n1 + n2 + "拾" else

26、 if (n0 = Num.零) str = "" + n0 + n1 + "佰" + n2 + "拾" else str = n0 + "仟" + n1 + "佰" + n2 + "拾" else if (n2 = Num.零) if (n1 = Num.零) if (n0 = Num.零) str = "" + n0 + n3; else str = n0 + "仟" + n3 + "元" else if (n0

27、 = Num.零) str = "" + n0 + n1 + "佰" + n2 + n3; else str = n0 + "仟" + n1 + "佰" + n2 + n3; else if (n1 = Num.零) if (n0 = Num.零) str = "" + n0 + n2 + "拾" + n3; else str = n0 + "仟" + n1 + n2 + "拾" + n3; else if (n0 = Num.零) s

28、tr = "" + n0 + n1 + "佰" + n2 + "拾" + n3; else str = n0 + "仟" + n1 + "佰" + n2 + "拾" + n3; return str; 沈阳工程学院课程设计报告 第四章 系统实现第4章 系统实现4.1 登陆界面 点击程序进入程序界面,在上面的编辑框中输入要转换的金额,点击转换则可转换为大写金额。图4.1 登陆界面4.2 转换功能在编辑框中输入要转换的金额大小,点击转换按钮,再在编辑框中输入数字可进行第二次转换。

29、图4.2 输入金额图4.3转换结果展示(1)图4.4转换结果展示(2)沈阳工程学院课程设计报告 参考文献参考文献1葛昊晗.Visual C.NET网络编程案例解析,清华大学出版社。2刘烨.C编程及应用程序开发教程,清华大学出版社。3郑宇军.C语言程序设计基础,清华大学出版社。4王晟.Visual C# .NET数据库开发经典案例解析,清华大学出版社。5 杨树林、胡洁萍.C程序设计与案例教程,清华大学出版社。沈阳工程学院课程设计报告 完整源代码完整源代码using System;using System.Collections.Generic;using System.ComponentMode

30、l;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace ltob public partial class Form1 : Form enum Num 零 = 48, 壹, 贰, 叁, 肆, 伍, 陆, 柒, 捌, 玖 ; public Form1() InitializeComponent(); string siwei(Num n) string str = "" int j=0,k,p=0; k =

31、 textBox1.Text.Length / 4; j = textBox1.Text.Length % 4; if(n.Length !=4) p = (k - 1) * 4 + j; for (int i = 0; i <= 3; i+) ni = ni + p; if (n3 = Num.零) if (n2 = Num.零) if (n1 = Num.零) if (n0 = Num.零) str = "元" else str = n0 + "仟" ; else if (n0 = Num.零) str = "" + n0

32、+ n1 + "佰" ; else str = n0 + "仟" + n1 + "佰" else if (n1 = Num.零) if (n0 = Num.零) str = "" + n0 + n2 + "拾" else str = n0 + "仟" + n1 + n2 + "拾" else if (n0 = Num.零) str = "" + n0 + n1 + "佰" + n2 + "拾" e

33、lse str = n0 + "仟" + n1 + "佰" + n2 + "拾" else if (n2 = Num.零) if (n1 = Num.零) if (n0 = Num.零) str = "" + n0 + n3; else str = n0 + "仟" + n3 + "元" else if (n0 = Num.零) str = "" + n0 + n1 + "佰" + n2 + n3; else str = n0 + &q

34、uot;仟" + n1 + "佰" + n2 + n3; else if (n1 = Num.零) if (n0 = Num.零) str = "" + n0 + n2 + "拾" + n3; else str = n0 + "仟" + n1 + n2 + "拾" + n3; else if (n0 = Num.零) str = "" + n0 + n1 + "佰" + n2 + "拾" + n3; else str = n0

35、 + "仟" + n1 + "佰" + n2 + "拾" + n3; return str; string liangwei(Num n) string str; if (n1 = Num.零) str= n0 + "拾" ; else str= n0 + "拾" + n1; return str; string sanwei(Num n) string str; if (n2 = Num.零) if (n1 != Num.零) str = n0 + "佰" + n1 + &

36、quot;拾" ; else str = n0 + "佰" else if (n1 = Num.零) str = n0 + "佰" + n1 + n2; else str = n0 + "佰" + n1 + "拾" + n2; return str; Num move(Num n) Num m = Num.捌, Num.捌, Num.捌, Num.捌 ; if (textBox1.Text.Length >=8) for (int j = 0; j <= 3; j+) mj = (Num)nj

37、+textBox1.Text.Length%8; return m; Num Mov(Num n) Num l = Num.捌, Num.捌, Num.捌, Num.捌 ; if (textBox1.Text.Length >= 8) for (int j = 0; j <= textBox1.Text.Length-9; j+) lj = (Num)nj; return l; private void button1_Click(object sender, EventArgs e) int a = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; Num n = Num.捌, Num.捌, Num.捌, Num.捌, Num.捌, Num.捌, Num.捌, Num.捌, Num.捌, Num.捌, Num.捌, Num.捌, Num.捌 ; Num m= Num.捌, Num.捌, Num.捌, Num.捌; Num l = Num.捌, Num

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论