欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    高级语言程序设计C#项目十七 学校成绩管理系统.docx

    • 资源ID:17462843       资源大小:238.81KB        全文页数:26页
    • 资源格式: DOCX        下载积分:6金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要6金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    高级语言程序设计C#项目十七 学校成绩管理系统.docx

    1、高级语言程序设计C#项目十七 学校成绩管理系统教案教 师班级科 目C#程序设计开课时间地 点机房课题名称项目十七 学校成绩管理系统课时数60背景分析本课程是为软件技术专业的学生开设的一门很重要的程序设计类课程。根据课程教学目标和学生的专业特点,教学中应当注重培养学生的操作能力、思维能力和学习能力。本课采用以项目教学为主,边讲边做,让学生在做的过程中学会探索、学会合作。学习目标设 定1. 控件属性及事件,ADO.NET等知识的综合运用。2. 培养学生积极思考、敢于尝试,让学生体验学习的乐趣,激发学生对本课程的学习兴趣。学习任务描 述学习任务围绕学生成绩管理系统的设计与实现而展开,根据教师设计的项

    2、目,并将其分解为七个任务完成。通过任务的设定,在对比中,引导学生自主学习、合作学习、竞争学习。教学情境创 设本节课通过对一个贴近学生生活的项目学习,引导学生做中学习、合作学习。围绕课堂总目标,让学生在不断的成功体验中进行快乐学习。教学资源准 备时间资源:课前资料收集、课堂教学、课后资料整理、完成作业信息资源:教案、教学素材人员资源:1位专业教师,1位专业指导教师,学生小组设备资源:2.2 GHz 或速度更快的 CPU、1GB或更大容量的 RAM、1280x1024 显示器、7200 RPM 或更高转速的硬盘;操作系统:Windows XP 、Vista或2000以上;开发软件:Visual S

    3、tudio 2005/2008 中文版(含MSDN);教 学 过 程 实 施内 容方法【导入】当今是21世纪,在工、农业不断的发展的同时,Internet也迅速发展起来,并且已经飞速改变人们的生活和工作。现在,学校需要统计不同班级在不同学期的各个课程的成绩统计,在C#中可以利用ADO.NET技术开发此系统。【新课】项目十七 学校成绩管理系统【项目描述】需求分析是成功管理系统的基础,因此在下面将会对学校成绩管理系统做详细的需求分析。在对学校成绩管理系统机制进行详细了解与分析后,一个功能完备的学校成绩管理系统必须具备一下主要功能:1. 学期管理:添加学生在校学期,自动生成学期编号。2. 课程管理:

    4、添加开设的课程,自动生成课程编号。3. 班级管理:添加学校班级,自动生成班级序号。4. 学生信息管理:添加每个学生的详细信息,并添加所属班级。5. 班级课程管理:管理某个班级,某学期开设的课程,并生成班级课程序号。6. 用户权限管理:管理用户账号、密码、权限。7. 学生成绩录入:某个班级的班主任只能对本班级的学生进行成绩录入。8. 学生成绩统计:进行全校学生的成绩进行统计。因该项目有很多模块雷同的地方,故我下面会提出一个模块进行分析,其他请参考。【项目分析】系统总体功能需求如图所示。系统总体功能需求任务一建立一个空解决方案并添加3个子项目【任务描述】为系统建立一个空解决方案, 并建立3个子项目

    5、(BLL)、(DAL)和(UIL),设置“UIL”为启动项目。【任务实施】1. 建立一个空解决方案“SchoolClassScoreManageSystem”,【文件】【新建】【项目】如图2. 建立3个子项目,右击【解决方案】【添加】【新建项目】如图左图中,包括了如下三个项目,被突出显示的“UIL”是启动项目: BLL层:逻辑层是系统的中间层,它利用数据层的接口获得需要的数据,并对数据进行操作。 DAL层:数据层是系统的低层,定义了系统的最基础的操作。 UIL层:显示层是系统的最上层,在用户输入相应的指令时,它通过调用逻辑层定义的操作来响应用户的意图,并显示出结果。任务二 完成登录窗口绘图功能

    6、【任务描述】绘制系统名称和版本号,如图技巧:1. 添加数据库连接,选择数据集所在项目,【项目】【属性】【设置】点击【值】后面的按钮配置如图 最后确定。系统自动生成连接字符串。2. 用户权限的控制(数据表User的Keys字段),给这个字段定义varchar(50)类型,如管理员则值内不包含“,”如:“0512”,如班主任则用“,”间隔如:“0512,0511”(因为一个老师可能是两个不同班级的班主任)。【任务实施】1. 在项目BBL新建一个类(LogicLayer.cs)并在类里添加一个过程(PaintImage)。2. 实现PaintImage过程。/ / 画图/ / 项目标题/ 版本号/

    7、字体/ 版本号字体/ 呈现图片的控件public void PaintImage(string sExeCapion, string sVersion, string sFontName, string sVerFontName, PictureBox picBoxLogin)const int DecWidth = 2;RectangleF rect = picBoxLogin.ClientRectangle;Image image = new Bitmap(int)rect.Width, (int)rect.Height);Graphics g = Graphics.FromImage(i

    8、mage);/清除锯齿效果g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;/画黑色Brush brush = new SolidBrush(Color.FromArgb(47, 67, 115);g.FillRectangle(brush, rect);brush.Dispose();/画红色rect.Offset(DecWidth, DecWidth);rect.Height = rect.Height - DecWidth * 2;rect.Width = rect.Width - DecWidth

    9、 * 2;Color beginColor = Color.FromArgb(255, 255, 255);Color endColor = Color.FromArgb(163, 184, 226);try/填充渐变色背景brush = new LinearGradientBrush(rect, beginColor, endColor, LinearGradientMode.Vertical);g.FillRectangle(brush, rect);finallybrush.Dispose(); /画白色字体 Font font = new Font(sFontName, 26, Fon

    10、tStyle.Bold);SizeF sSize = g.MeasureString(sExeCapion, font);PointF point = new PointF(10, (rect.Height - sSize.Height) / 2 + DecWidth);g.DrawString(sExeCapion, font, Brushes.White, point);/画绿色字体point.X = point.X - 1;point.Y = point.Y - 1;g.DrawString(sExeCapion, font, Brushes.Green, point);/画版本号str

    11、ing version = Assembly.GetExecutingAssembly().GetName().Version.ToString();/画白色字体 font.Dispose();font = new Font(sVerFontName, 9, FontStyle.Bold);sSize = g.MeasureString(sExeCapion, font);point.X = rect.Width - sSize.Width * 2 + 40;point.Y = rect.Height - (float)(sSize.Height * 1.5);g.DrawString(sVe

    12、rsion + version, font, Brushes.Black, point);picBoxLogin.Image = image;g.Dispose();font.Dispose();3. 转到登录窗体(FrmLogin.cs)下重写OnLoad。4. 重写OnLoad,传递参数给PaintImage过程。protected override void OnLoad(EventArgs e)base.OnLoad(e);LogicLayer ll = new LogicLayer();ll.PaintImage(学校成绩管理, 版本, 华文行楷, Arial, this.picBo

    13、xLogin);5. 请按F5键,查看运行结果。任务三 将用户信息保存到注册表【任务描述】为了能保存用户信息,减少不必要的记住输入密码麻烦,我们将用户的信息保存到注册表。【任务实施】1. 声明一些私有的静态变量保存对注册表的设置参数。private const string userRoot = HKEY_CURRENT_USER;private const string subKey = AddressList;private const string keyName = userRoot + SoftWare + subKey;private const string loginInfo

    14、= LoginInfo;2. 在LogicLayer类里添加一个私有的类,用来序列化用户信息。SerializableAttribute /序列化 标识private class LoginUserInfopublic string UserNo;public string UserPwd;public bool SaveUserPwd;3. 保存数据到注册表。/ / 保存信息到注册表/ public void SaveInfoToRegistry(string UserNo, string UserPwd, bool SaveUserPwd)LoginUserInfo userInfo =

    15、new LoginUserInfo();userInfo.UserNo = UserNo;userInfo.UserPwd = UserPwd;userInfo.SaveUserPwd = SaveUserPwd;MemoryStream stream = new MemoryStream();try/创建二进制序列化类BinaryFormatter binFmt = new BinaryFormatter();/序列化类binFmt.Serialize(stream, userInfo); stream.Position = 0;/将流的二进制信息写到注册表Registry.SetValue

    16、(keyName, loginInfo, stream.GetBuffer(), RegistryValueKind.Binary); catchthrow;finallystream.Close();stream.Dispose();4. 读取保存在注册表的信息。/ / 读取保存在注册表的信息/ public void ReadUserInfo(TextBox TxtUserNo, TextBox TxtUserPwd, CheckBox ChkMemPwd)/读取注册表信息byte bytes = (byte)Registry.GetValue(keyName, loginInfo, nu

    17、ll);if (bytes != null) & (bytes.Length 0)MemoryStream stream = new MemoryStream();try/将信息写入流中 stream.Write(bytes, 0, bytes.Length); stream.Position = 0; BinaryFormatter binFmt = new BinaryFormatter(); LoginUserInfo userInfo = new LoginUserInfo(); /反序列 userInfo = (LoginUserInfo)binFmt.Deserialize(str

    18、eam); ChkMemPwd.Checked = userInfo.SaveUserPwd; if (userInfo.SaveUserPwd) TxtUserNo.Text = userInfo.UserNo; TxtUserPwd.Text = userInfo.UserNo; catch throw; finally stream.Close(); stream.Dispose();5. 转到登录窗体(FrmLogin.cs)下,在重写的OnLoad下读取注册表信息(ReadUserInfo)。6. 在登录按钮下保存用户信息(SaveInfoToRegistry)。7. 请按F5键,查

    19、看运行结果。任务四 新建登录窗体,添加控件,并设置其属性【任务描述】以登录窗口为例,演示一下本项目,添加窗体和控件的规范。其他窗体请仿照。【任务实施】右击UIL项目层,添加Windows窗口,命名为FrmLogin.cs。1. 设置窗体属性,字体和大小,边框样式,窗体图标,是否最大化,是否最小化,窗体大小可以自作调整,窗体出现的位置,窗体显示标题,其它属性默认值。2. 在窗体上添加必要的控件并命名,控件NameText用途其它PictureBoxpicBoxLogin无显示GDI+图片无LabelLabNo账号:显示账号:提示AutoSize为TrueLabelLabPwd密码:显示密码:提示

    20、AutoSize为TrueTextBoxTxtUserNo无接受用户账号无TextBoxTxtUserPwd无接受用户密码PasswordChar为*LinkLabelLikResumePwd取回密码弹出取回密码窗体AutoSize为TrueCheckBoxChkMemPwd记住密码记住用户登陆信息AutoSize为TrueGroupBoxgroupBox1无分隔符Size为280,8ButtonBtnLogin登陆用户登陆无ButtonBtnReset重置清除数据无ButtonBtnExit退出取消登陆无3. 请按F5键,查看运行结果。任务五 建立强类型数据集【任务描述】在日常开发中,为了编

    21、写数据的增加、更新、修改、删除等功能而不得不面对枯燥的代码,做重复又重复的工作。.NET 2.0正式版的发布,对我们程序开发人员来说无疑是一件很大的喜事,Visual Studio 2005 的一些新的增强功能和ADO.NET 2.0的新特性让我们开发高可伸缩的多层数据库应用程序更加简单和快捷。 下边通过一个例子来详细介绍如何通过vs2008来生成强类型DataSet简化开发流程,生成可伸缩性的多层数据库应用程序。【任务实施】1. 在数据层DAL上右击【添加】【新建项】数据集(StuBase.xsd)确定后出现下图2. 单击【服务器资源管理器】右击【数据连接】【添加连接】会出现下图,跟添加数据

    22、库连接一样配置。选择服务器名(.),使用Sql Server 省份验证(sa),选择数据库。3. 将【服务器资源管理器】中的表或视图直接拖到右边的数据集中。上面是表,呈现表的架构,下面是表适配器,用来对表进行操作。可以右击【添加查询】因为我这已经完成,所以我不在重复,其实很简单跟数据中新建查询一样,你可以自己试试。任务六 强类型数据集的使用【任务描述】使用强类型数据集进行有效编码。下面的实例在逻辑层(BLL)DataLayer类中添加分别添加4个函数,查询学期(GetSemester)、添加学期(InsertSemester)、删除学期(DeleteSemester)和修改学期(UpDateS

    23、emester)。【任务实施】1. 添加查询学期(GetSemester)函数,获取学期信息。/ / 查询学期/ / public DataTable GetSemester()/实例化数据集StuBase ds = new StuBase();/学期表适配器SemesterTableAdapter da = new SemesterTableAdapter();/实例化一个学期表实例StuBase.SemesterDataTable dt = ds.Semester;/填充学期表实例da.Fill(dt);return dt;2. 添加添加学期(InsertSemester)函数,插入学期信

    24、息。/ / 添加学期/ / 学期名称/ public int InsertSemester(string SemesterName)/实例化数据集StuBase ds = new StuBase();/学期表适配器SemesterTableAdapter da = new SemesterTableAdapter();/实例化一个学期表实例StuBase.SemesterDataTable dt = ds.Semester;/如果找到表里有记录则表示重复键,反之插入数据if (da.FillBySemesterName(dt, SemesterName) = 1)return 0;elsere

    25、turn da.InsertQuery(SemesterName);3. 添加删除学期(DeleteSemester)函数,删除学期信息。/ / 删除学期/ / 学期编号/ 学期名称/ public int DeleteSemester(int SemesterID,string SemesterName)SemesterTableAdapter da = new SemesterTableAdapter();return da.DeleteQuery(SemesterID, SemesterName);4. 添加修改学期(UpDateSemester)函数,修改学期信息。/ / 修改学期/

    26、/ 原学期编号/ 原学期名称/ 学期名称/ public int UpDateSemester(int Ole_SemesterID,string Ole_SemesterName,string SemesterName)SemesterTableAdapter da = new SemesterTableAdapter();return da.UpdateQuery(SemesterName, Ole_SemesterID, Ole_SemesterName, Ole_SemesterID);任务七 学生信息的统计【任务描述】学生信息是从多个不同的数据源等到,其中还用到了交叉表显示某门课程的

    27、成绩。下图是运行结果:在这里显示的数据不是一张完整的表而是几张表的“合成”,尤其是显示课程名和成绩更是用到了交叉表。技巧:设计思路是通过学生成绩表一层一层的解剖与插入数据正好相反。学生成绩表学生信息表班级课程表学期表课程表班级表通过上面一些表的结构可以得到显示和插入的正反操作思路:显示数据:1. 用户登录,通过用户的权限(0512)和学生成绩表(StuScore)的StuNo前4位进行比较(0512),选择出他们班的同学。2. 遍历(0512)班的所有同学,到学生信息表(StuInfo)匹配出学生姓名(StuName)。3. 遍历(0512)班的所有同学,到班级课程表(ClassCourse)匹配出对应的记录。4. 通过上一步匹配出的记录的学期编号(SemesterID)到学期表里找出相应的学期名称(SemesterName)。5. 通过第3步匹配出的记录的课程编号(CourseID)到课程表里找出相应的课程名称(CourseName)。6. 手动建立表,添加列(StuNo)、(StuName)、(SemesterName),遍历课程表的所有记录把课程名称添加成列。插入数据:1. 用户登录,通过用户的权限(0512),到学生


    注意事项

    本文(高级语言程序设计C#项目十七 学校成绩管理系统.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开