第一篇:C#实训日志1
12月23日(星期一):
(一)在今天我们学习了如何创建Windows应用程序:
单击“文件”——选择“新建”——选择“项目”——选择“Windows应用程序”,在此界面中可以设置项目名称、存储位置等,然后单击“添加”,项目新建成功。
创建Windows应用程序后会自动生成一个名为Form1的窗体,一般情况下我们将它删除,自行新建新窗体。
(二)然后我们学习了如何在已经创建好的项目中创建窗体:
右键单击项目——单击“添加”——选择“新建项”——在此窗口中选择“Windows”窗体,添加的默认名字为Form2,Form3等,我们最好将名称改为“数据库表名+Form”方便记忆,然后单击“添加”,窗体新建成功。
实践后我们了解到在一个项目中我们可以创建多个窗体,如果想运行哪个窗体,则需要总在该项目的“Program.cs”文件中,将“Application.Run(new MainForm());”中的“MainForm()”改成对应的窗体名称。
(三)我们在了解了项目需求后实现了父窗体以及子窗体的设定:
由于我们需要建立的是一个有菜单,有多项功能,能打开多个窗体的项目,所以我们需要一个主窗体,以及多个下属功能窗体,也就是一个父窗体,以及多个子窗体。
我们需要一个窗体作为容器成为基类或父窗体,另一个窗体作为模板,也叫子窗体。在父窗体中可以打开多个文档,每个文档都是由一个单独的子窗体显示,所有的子窗体都是类似的,可以使用窗体的模板来创建,从类的角度来看所有的子窗体都是一个类的不同实例。创建父窗体的方法非常简单,即为将想要设定的窗体的“IsMdiContainer”属性值设为“True”,此时窗体的背景变为灰色,该窗体就变为父窗体。然后就可以在此窗体中添加菜单从而实现调用其他窗体的功能。
(四)我们在创建好窗体后熟悉了环境中的几项比较重要的工具窗口:
在创建好窗体之后我们开始在子窗体中进行界面设计,首先是熟悉环境的属性界面,在软件右侧有两个工具栏,分别是“解决方案资源管理器”和“属性”窗口。
这两项窗口都可以在视图中找到后调出。在“解决方案资源管理器”中我们可以查看当前打开的项目的文件,双击即可打开对应文件。在“属性”中我们可以查看选中的窗体或者选中的各个控件的各项属性值,同时可以对各项属性进行调整。我们可以在“属性”栏中将属性名按照字母顺序排序以方便查找,我们还可以查找对应事件并进行修改。
而在界面左侧则有一个“工具箱”,在工具箱中我们可以找到几乎所有我们所需要的控件、容器、工具栏等。只要单击工具箱中需要的控件,再单击窗体就可以添加控件成功。我们也可以用容器中控件来规划窗体,如我们可以使用“SplitContainer”空间来将窗体分割成两部分,在两部分中分别添加其他空间,进行不同的内容的添加。
(五)在今天下午的课程中我们学习了如何调整窗体的各项基本属性:
首先我们学习了如何为窗体的标题栏修改文字内容,在属性窗口中,我们找到“Text”属性,然后输入想显示的内容,如我们首先设计了工作信息窗体,所以在“Text”属性右侧框中输入“工作信息管理”字样。
然后我们了解了确定窗体的初赛可视状态属性,在属性栏中找到“WindowsState”属性,在此我们可以选择“Minimized”也就是打开时最小化显示,“Maximized”打开时最大化显示以及“Normal”标准话显示。
第二篇:C#实训日志3
12月25日(星期三):
(一)今天首先实现了“修改”按钮的功能:
在实现“修改”功能之前,首先我们需要做的是将右侧的数据显示到左侧的文本框中,然后我们才能方便进行修改和删除。我们希望做到的效果是在双击右侧数据条头部时,可以将数据提取出来然后显示在左侧,所以我们创建了一个“dgvJobs_RowHeaderMouseDoubleClick”事件,提取了数据库中的数据。
然后我们通过定义局部变量来判断想要修改成的工作编号格式是否符合要求,用“if”语句判断是否有此工作编号,然后实现了修改功能。
(二)在测试中出现了一个问题:
在我准备执行时出现了“sa登录失败”的错误,我在“JobsForm_Load”事件中添加了“this.jobsTableAdapter.Connection.ConnectionString = “ server =.;user = sa;password = 123456;database = pubs”;”语句后就解决了问题,其他同学也有遇到这个问题的,他们提供了另一种方法给我参考,就是重新绑定数据源,在登录数据库时使用“Windows验证”登录。
(三)然后我们实现了“删除”功能:
删除功能和修改功能类似,很多代码可以公用,只需要简单的复制粘贴,然后在修改一些值就可以直接使用,在此我也了解到有得时候编程序不需要一行一行的重复编写,有的时候只要你记住以前自己编写过的代码,并理解其中的道理就可以直接使用。在这里我们就用来同样的代码对工作编号的格式和是否存在该工作编号进行了判断,如果判断后没有异常则删除。
(四)实现“保存”功能:
在实现了基本的增删改功能之后,我们经过测试基本没有错误,但是此处的功能实现只是局限于左侧文本框与右侧数据显示区的交互,并没有真正的实现于数据库中,所以每次我们执行完操作以后,一旦关闭了窗体,再次运行窗体时,之前添加或修改的数据并没有显示出来。所以
我们需要完成一个保存功能,来将修改的结果同步到数据库中。我们编写了“btnSave_Click”事件来实现保存功能。定义变量“count”来计数,实现更新数据库中数据。
在这个地方老师又特殊强调了一个“pubsDataSet.RejectChanges();”,也就是回滚功能,这个语句在判断是否保存成功的语句中实现。我们进行的设计是,如果保存成功,显示“保存成功”,并显示受影响的记录的条数,条数的计数就是通过“count”来实现的。如果保存不成功,我们会将右侧数据还原到点击“添加”或“修改”按钮之前的状态,以方便用户重新操作。
(五)实现“查找”和“取消查找”功能:
查找功能我们使用“jobsBindingSource.Filter”语句实现,“Filter”用于获取或设置用于筛选查看哪些行的表达式。我们使用SQL语句进行模糊查询。
取消查询的功能实现起来也很简单,只需要将查询文本框中的文本内容清空,然后将“jobsBindingSource.Filter”也清空即可。
第三篇:C#实训日志7
12月31日(星期二):
(一)项目总结:
在之前的项目设计中,我们发现,虽然可以实现各个功能,但是对于某些细微的要求想要实现就很困难,比如在输入密码时要区分大小写等等细节功能的实现反而非常复杂。所以在设计下一个系统的时候,老师准备教我们使用另一种设计方法设计下一个“学生信息管理系统”。
(二)设计方式:
在“学生信息管理系统”的设计中,我们采用C/S的设计方法设计,设计分为界面层和数据访问层,界面层提供给用户一个视觉上的界面,通过界面层,用户输入数据、获取数据,并传给数据访问层。数据层定义、维护数据的完整性、安全性,它响应逻辑层的请求,访问数据。这一层通常由大型的数据库服务器实现,如“Oracle”、“Sybase”、“MS SQl Server”等。
C/S 结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。
Client/Server是建立在局域网的基础上的,Browser/Server是建立在广域网的基础上的。
(三)主窗体界面设计:
主窗体的总体设计与“雇员管理系统”的主窗体大概一致,只是将菜单名改变,同样有“快捷键”、“窗口”、等功能,也同样是将主窗体设置成为一个父窗体。
(四)关于界面设计:
值得一提的是,在帮助菜单下拉列表中我们添加了“关于”功能,这项功能可以实现显示此程序的版本号、设计人员名称、LOGO、设计日期等相关信息。
具体的设计方法与普通窗体设计略有不同,在“Microsoft Visual Studio”软件中,系统为我们提供了已经设计好的“关于”窗体,只要右键单击项目名——点击“添加”——选择“新建项”——选中“‘关于’框”就可以自动生成“关于”界面。只需要适当的修改图标、文本框内容等属性即可。
(五)“学生信息管理”界面设计:
我们在设计完主窗体后,就开始对“学生信息管理”进行基本的设计,也就是界面层的设计。
在这里我们基本使用的都是与之前的“工作信息管理”基本一致的界面,所以设计基本界面的时候十分的方便,只要打开之前的“工作信息管理”然后进行简单的改名等操作即可完成。在这里我们深深的发现有得时候如果懂得利用以前的资源,就可以节省很多时间,减少编写代码的量。
在这个界面上与之前稍有不同的地方是添加了性别。性别录入使用了“RadioButton”控件。这个控件的具体使用方法是当与其他单选按钮成对出现时,允许用户从一组选项中选择单个选项,其中“一组”的意思是,所有在同一容器内的这个控件,都称为一组,也就是只能选择其中一项,因为人的性别只能是男性或女性其中一种,所以选择了“RadioButton”单选按钮控件。
第四篇:C#实训日志8
1月2日(星期四):
(一)继续完成“学生信息管理”窗体的界面设计:
由于我们在学生表中有密码项,为了符合大众软件的习惯,也为用户的信息安全性着想,所以我们将密码输入文本框的“PasswordCard”属性设置为“*”,设置此属性后,当用户在输入密码文本的时候,文本信息不会显示在密码文本框中,输入的值将以“*”的形式展现出来。
(二)“学生信息管理”界面层其他方面设计:
在设计中我们在加入新的学生信息的时候我们为输入的密码设计了密码验证功能 if(txtStuPassword.Text.Equals(txtVPassword.Text)== true){ stu.Password = txtStuPassword.Text;}else{ MessageBox.Show(“两次密码输入不一致,请确认!”);return;}
使用“Equals”判断,如果输入的密码与输入在验证密码中的字符一致,则将密码赋值给数据库,否则提示“两次密码输入不一致,请确认!”这项功能的判断是为了使用户如果偶然输入错误密码,系统可以自动判断识别,提示用户,进行重新输入。
(三)“学生信息管理”“Entity”设计:
因为是C/S结构设计,所以我们新建了两个类库,只需单击“文件”——选择“新建”——选中“项目”,然后在“模版”模块下选择“类库”,这里需要注意的是我们不再是“创建新解决方案”而是选择“添入解决方案”将新建的类库加入已经创建的“StudentsApp”项目中。我们新建了“Entity”实体层和“DAL”数据访问层,其中实体层负责承载数据。
(四)“学生信息管理”“DAL”设计
在此层中我们分别实现与数据库连接的的各项功能。
如根据班级编号查询学生信息的方法中,首先我们需要实例化一个SQL数据库连接,然后实例化一个SQL命令,还需要实例化一个数据读取器。然后我们为各个对象赋值,以达到连接数据库,并对其下达命令的功能。在打开数据库连接后,我们读取一个数据库中的数据,并赋值给之前实例化的数据读取器。然后使用“while”循环语句判断数据库中的数据是否已经读取完毕,如果“dr.Read()”中没有数据,则结束此循环。最后用“return”语句将表单返回。
其他功能与数据库的连接与查询的代码相似,存在区别是使用了“ExecuteNonQuery()”语句,通过返回受影响行数来判断是否添加或删除成功。
在此,我们需要用“try-catch”判断数据是否提取成功。如果不成功,我们需要提示用户异常原因,我们需要将异常抛出,返回到界面层,由于操作层无法显示异常,所以我们要“new”一个异常,把异常原因放入此对象中,再将此对象抛出。
为了防止有人恶意篡改代码,在输入的文本中添加恶意代码,防止注入攻击,我们使用SQL参数,以保证安全。
在此我们着重实现了登录的功能,在“LoginByStudentIDAndPassword”方法中,我们使用“string sql = “select StudentID,Password from Students where StudentID = @StudentID and Password = @Password ”;”语句判断是否存在一条数据的登录名和登录密码与输入的登录名和登录密码一致。使用“ExecuteScalar()”语句,如果返回查询所返回的结果集中的第一行的第一列不为空,则返回“真”否则返回“假”。
第五篇:C#实训总结
C#实训总结
实训期间让我学到很多东西,不仅在理论上让我对it领域有了全新的认识,在实践能力上也得到了很大的提高,真正的学到了学以致用,更学到很多做人的道理,对我来说受益匪浅。特别是利用周六上午的时间山大为我们安排的讲座让我们了解it领域一些新的发展动态以及一些领先的技术,让我意识到自己知识的缺少,这激励我在以后的学习、工作、生活中要不断了解信息技术发展动态以及信息发展中出现的新的技术。
除此之外,我还学到了如何与人相处,如何和人跟好的交流,我们组成一个团队大家一起开发一个项目,大家的交流沟通显得尤为重要,如何将自己的想法清楚明白的告诉队友,如何提出自己想法的同时又不伤害其他的队友的面子,这些在我的实训生活中都有一些体会。可是说,第一次亲身体会理论与实际相结合,让我大开眼界。也是对以前学习的一个初审吧,相信这次实训多我以后的学习、工作也将会有很很大的影响,在短短的二十几天里这些宝贵的经验将会成为我以后工作的基石。
作为大二的学生,经过两年的在校学习,对程序设计有了一些基本的理性的认识和理解。在校期间一直忙于理论的学习,没有机会也没有经验来参与我们项目的开发,所以在实习之前软件按开发对我来说是非常抽象的,一个完整的项目要怎么来分工以及完成该项目所需要的基本步骤也不明确,经过这次实训让我明白一个完整项目的完成必须团队分工合作,并在每个阶段进行必要的总结和检查。在我们项目的开发过程中我们项目的步骤:详细设计、详细设计review、编码、编码review、单体测试。在项目开发过程中我也深刻的体会到详细设计对一个项目开发有明确的指引作用,它可以使开发人员对这个项目所要实现的功能在总体上有具体的认识,并能减少在开发过程中出现不必要的脱节。
经过二十多天的obbligato信息安全管理的java开发,是我对C#软件开发平台有了更深一步的了解,也对nec公司的obbligato平台有了一定的了解。
这次实训是对我们两年学习的一个检验,虽然项目中很多知识我们在日常的学习中都没有遇到,这同时提醒我:要想成为一个合格的程序员就有具备一种自学能力,在工作中会遇到很多从未接触过的问题,当有了问题时要去解决,在你不断努力,寻找答案的过程中,自己的能力也在潜移默化的提升。有时遇到问题时可能有很多想法但却不知道那个正确,这就让我们不断地去探索,不断地尝试。
这次实训也让我深刻的了解到,不管在工作中还是在生活中要和老师、同学保持良好的关系是很重要的。做事首先要先做人,要明白做人的道理,如何与人相处是现代社会的做认得一个最基本的问题,对已自己这样一个即将步入社会的人来说,需要学习的东西很多。从一起做项目的同学身上我看到了谦虚谨慎、细心努力的态度,在以后我的生活中我还会留意身边同学的优点,从他们身上找寻我所缺少的品质,不断学习。从老师那里我看到了企业人的生活面貌,没有事情可以不劳而获,今天老师们能够领导我们是他们之前努力的结果,虽然老师没有和我们讲很多公司里的事情,可是他们的言行中所表现出来的都是比我们要严谨的多的对工作的态度。