
免费预览已结束,剩余22页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C#课程设计安徽工业大学计算机学院姓 名:专 业:计算机科学与技术班 级:计134班学 号: 指导教师:李 伟目录 :一 绪 论31.1 设计目的1.2 开发工具选择1.3 开发环境 1.4 本报告的主要内容二 需求分析3 2.1系统需求简介2.2系统目标三 总体设计4 3.1设计概述 3.2系统总体结构及功能模块划分 3.3系统数据库概念结构设计 3.4安全保密设计四 详细设计7 4.1概述4.2系统程序流程图4.3系统登录五 主要功能模块代码125.1 公共类代码设计5.2 登录界面代码设计5.3 查询模块代码设计5.4 添加模块代码设计5.5 更新模块代码设计5.6 删除模块代码设计 六 课程设计心得23 七 实验指导书、参考书23摘 要 本文描述的是基于Windows环境的学生信息管理系统!主要功能模块包括,学生信查询!学生信息管理!学生成绩录入,主要工具Microsoft Visual Studio 2010 设计窗体, SQL server2005建立数据库,实现学校信息管理的各个功能。 本篇报告介绍一个学生信息管理系统的从分析到设计最后到开发的全过程为!给出了学生信息管理系统的设计和技术实现的过程!特别在细节上分析功能和函数的实现思想。涉及到学生信息管理的基本功能在本报告中都有相应的描述。一、绪 论 1.1 设计目的 本课程设计的目的是使学生能熟练掌握简单的简单Windows窗体应用程序的设计和ADO.net的应用!希望通过本次课程设计锻炼学生使用C#语言解决实际问题的能力。 1.2 开发工具选择本系统后台数据库采用Microsoft SQL Server 数据库!该数据库系统在安全性、准确性和运行速度方面有绝对的优势!并且处理数据量大!效率高(前台采用Microsoft 公司的Visual Studio 2008作为主要开发工具!可与SQL Server 2005数据库无缝链接。 1.3 开发环境 系统开发平台,Microsoft Visual Studio2005 系统开发语言,C# 数据库管理软件,SQL Server 2005 1.4 本报告的主要内容 本报告详细的介绍了学生信息管理系统的开发过程!主要涉及到的工作如下,系统的需求分析、系统的总体设计、系统的概念设计、系统各模块的详细设计、系统运行与测试。 二、 需求分析 2.1系统需求简介 2.1.1系统目标 (1) 根据查询条件实现学生信息的查询 (2) 学生选课信息查询、成绩信息的查询 (3) 学生信息、课程信息、成绩信息的增加、删除、修改 (4) 对基本信息完成增加、删除、修改时!需注意表与表之间的关联 2.1.2功能需求分析 本系统的功能需求分析如下, (1) 学生信息查询,学生可以根据学号、姓名、专业进行查询. (2) 学生信息管理,主要是用于学生信息更新、插入、删除( (3) 学生成绩录入,用于学生成绩管理!录入学生成绩!也可以更新( 2.1.3性能需求分析 (1) 登录、用户界面需求,简洁、易懂、易用、友好的用户界面。 (2) 安全保密性需求,只有凭借用户名和密码登陆系统!才能进行信息的管理等。三、 总体设计 3.1设计概述根据需求把整个系统分化成不同的模块!每个模块完成一个特定的子功能。把这些模块结合起来组成一个整体。逐一实现各个功能.3.2系统总体结构及功能模块划分经过对系统的需求分析!学生信息管理系统主要划分为三个部分,学生信息查询!学生信息管理!学生成绩录入三个功能模块。如图3.2.1 系统的总体结构。学生信息管理系统学生信息查询学生成绩录入学生信息管理 图3.2.1 系统的总体结构。 学生信息查询,学生可以根据学号、姓名、专业进行查询。如图3.2.2学生信息查询模块结构。 3.2.2学生信息管理模块 学生信息管理,主要是用于学生信息更新、插入、删除!如图3.2.3学生管理模块结构。 图3.2.3 学生信息管理模块结构 3.3系统数据库概念结构设计 根据对数据项与数据结构的分析!设计出能够满足系统需求的各种实体!及它们之间的关系!为后面的逻辑结构设计打下基础。 3.3.1系统E-R图 系统E-R图可以将各个实体之间的关系显示出来!将各个实体间的属性依赖表示明白。如图3.3.1系统E-R图结构。 3.3.2系统数据库的设计 综合以上分析!要实现上面的所有功能模块!主要设计表如下, 表3.3.1 用户表(usedata) 表3.3.2成绩表(SC) 表3.3.3课程表 (C)表3.3.4学生表(S)3.4安全保密设计 3.4.1用户登录安全性 系统设计了登录界面!每个合法用户有用户名及一个密码!只有当用户输入正确的用户名及密码组合后才能够对学生信息进行操作。 四、 详细设计 4.1概述详细设计阶段的根本目标是确定应该怎样具体的实现所要求的系统!也就是说!经过这个阶段的设计工作!应该得出目标系统的精确描述!从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。 4.2系统程序流程图 程序流程图又称为程序框图!它是历史悠久使用最广泛的描述软件设计的方法。它可将整个程序的总体流程清楚明白的显示出来。如图4.2.1系统总流程图结构。 图4.2.1系统总体流程图4.3系统主要功能模块简介 4.3.1系统登录 用户凭借用户名及密码登录!成功登录后可对学生信息进行操作。用户界面如图4.3.1 用户登录界面所示。图4.3.1 用户登录界面 4.3.2学生信息查询模块 学生信息查询,在程序主界面(如图4.3.2 程序主界面,学生可以根据学号、姓名进行查询。学生也可以只用一种条件进行信息查询!也可以多个条件查询。双击记录任一单元格可显示学生的更详细信息(如图4.3.3 详细信息窗口)。图4.3.2 程序主界面 图4.3.3 详细信息窗口 4.3.3学生信息管理模块学生信息管理,通过右击程序主界面的相应记录弹出的上下文菜单(如图4.3.4 上下文菜单)可对当前选定学生信息进行详细信息查询(如图4.3.3 详细信息窗口)、修改信息(如图4.3.5 修改信息窗口)、删除信息(如图 4.3.6 删除信息提示)。更新时如果输入的学号不存在!可选择是否添加学生信息。通过程序主界面的新建信息记录可添加学生信息(如图 4.3.7 添加信息窗口)。图4.3.4 上下文菜单图4.3.5 修改信息窗口图4.3.6 删除信息提示图4.3.7 添加信息窗口 五、 主要功能模块代码 5.1 公共类代码设计 namespace MySql public class mySql public String connectionString = SERVER=.SQLEXPRESS;AttachDbFilename=D:学习C#课程设计 StuScoreManSystemStuScoreManSystemStuScoManSys.mdf; Integrated Security=True;Connect Timeout=30;User Instance=True; public String commondText; public bool flag; /指示有条该条记录 public System.Data.DataView table; public void runSql() / 执行查询、删除SQL语句 using (SqlConnection connection = new SqlConnection(connectionString) connection.Open(); SqlCommand cmdQuery = new SqlCommand(commondText, connection); SqlDataAdapter sda = new SqlDataAdapter(commondText, connection); DataSet ds = new DataSet(); sda.Fill(ds); if (commondText.IndexOf(SELECT) = 0) table = ds.Tables0.DefaultView; connection.Close(); public bool getFlag() /判断是否有该条记录 using (SqlConnection connection = new SqlConnection(connectionString) connection.Open(); SqlCommand cmdQuery = new SqlCommand(commondText,connection); SqlDataReader reader = cmdQuery.ExecuteReader(); if (reader.Read() flag = true; else flag = false; reader.Close(); connection.Close(); return flag; public String getContent(String require,String SNO) /获取视图表的的指定单元格内容 try commondText = SELECT + require + FROM detail WHERE 学号= + SNO; if (require = up课程名称) commondText = SELECT 课程名称 FROM detail WHERE 学号= + SNO; if (require = up成绩) commondText = SELECT 成绩 FROM detail WHERE 学号= + SNO; SqlDataAdapter sda = new SqlDataAdapter(commondText, connectionString); DataSet ds = new DataSet(); sda.Fill(ds); String result=; if(require=课程名称|require=成绩) int i=new int(); for (i=0; i ds.Tables0.Rows.Count; i+) result = result+ds.Tables0.Rowsirequire.ToString()+n; else result=ds.Tables0.Rows0require.ToString().Trim(); return result; catch return 无; 13 public void update() /添加、更新语句 try using (SqlConnection connection = new SqlConnection(connectionString) connection.Open(); SqlCommand cmdInsert = new SqlCommand(commondText, connection); cmdInsert.ExecuteNonQuery(); connection.Close(); catch(Exception ex) MessageBox.Show(ex.ToString(), 提示); 5.2 登录界面代码设计 private void login_Click(object sender, EventArgs e) /用户名及密码组合判断 if (username.Text.ToString().Trim() != & password.Text.ToString().Trim() != ) mySql sql = new mySql(); mondText = SELECT * FROM userdata WHERE USERNAME= + username.Text.ToString().Trim() + AND PASSWORD= + password.Text.ToString().Trim() + ; try bool temp = new bool(); temp = sql.getFlag(); if (temp) this.Visible = false; mainface main = new mainface(this); main.Show(); catch(Exception ex) MessageBox.Show(ex.ToString(),提示); else MessageBox.Show(请输入用户名和密码,提示); 5.3 查询模块代码设计 private void btQuery_Click(object sender, EventArgs e) mySql query=new mySql(); if (sNInput.Text.Trim() = & sNoinput.Text.Trim()!=) mondText = SELECT SNO AS 学号,SN AS 姓名,MN AS 专业名称,SEX AS 性别,BIRDAY AS 出生日 期,TS AS 总学分,COM AS 备注 FROM S WHERE SNO=+sNoinput.Text.Trim()+; if (sNInput.Text.Trim() != & sNoinput.Text.Trim() = ) mondText = SELECT SNO AS 学号,SN AS 姓名,MN AS 专业名称,SEX AS 性别,BIRDAY AS 出生日 期,TS AS 总学分,COM AS 备注 FROM S WHERE SN= +sNInput.Text.Trim()+ ; if (sNInput.Text.Trim() != & sNoinput.Text.Trim() != ) mondText = SELECT SNO AS 学号,SN AS 姓名,MN AS 专业名称,SEX AS 性别,BIRDAY AS 出生日 期,TS AS 总学分,COM AS 备注 FROM S WHERE SN= + sNInput.Text.Trim() + and SNO= + sNoinput.Text.Trim() + ; if (sNInput.Text.Trim() = & sNoinput.Text.Trim() = ) MessageBox.Show(您输入的信息为空!请重新输入(, 错误信息); else if (query.getFlag() query.runSql(); dataGridView1.DataSource = query.table; else MessageBox.Show(您查找的信息不存在, 错误信息); 5.4 添加模块代码设计 private void addbtOK_Click(object sender, EventArgs e) if (addStuNo.Text.Trim() != & addStuName.Text.Trim() != & addStuMajor.Text.Trim()!=) mySql sql = new mySql(); mondText = SELECT CNO FROM C WHERE CN= + listmn.Text.ToString().Trim()+ ; sql.runSql(); String temp = sql.table.Table.Rows0CNO.ToString(); String sexTemp=radioButton1.Checked ? 男:女; String comTemp; if (addStuCom.Text.ToString().Trim() = ) comTemp = ; else comTemp = addStuCom.Text.ToString().Trim(); String birTemp= ; if (addStuBir.Text.ToString().Trim() = ) comTemp = ; else birTemp = addStuCom.Text.ToString().Trim(); mondText = INSERT INTO S (SNO,SN,MN,SEX,BIRDAY,COM) VALUES( +addStuNo.Text.ToString().Trim()+, +addStuName.Text.ToString().Trim()+, +addStuMajor.Text.ToString().Trim()+, +sexTemp+, +birTemp+, +comTemp+); sql.update(); if(score.Text.ToString().Trim()!=) mondText = INSERT INTO SC(SNO,CNO,SCORE) VALUES (+addStuNo.Text.ToString().Trim() +,+temp+,+score.Text.ToString().Trim()+); sql.update(); this.Close(); Else MessageBox.Show(学号、姓名和专业名称都不可以为空(,错误(); private void AddNew_Load(object sender, EventArgs e) /获取专业列表 mySql sql = new mySql(); mondText = SELECT DISTINCT CN FROM C; SqlDataAdapter sda = new SqlDataAdapter(mondText, sql.connectionString); DataSet ds = new DataSet(); sda.Fill(ds); listmn.DataSource = ds.Tables0.DefaultView; listmn.DisplayMember = CN; listmn.DisplayMember = listmn.DisplayMember.ToString().Trim(); 5.5 更新模块代码设计 private void upbtOK_Click(object sender, EventArgs e) mySql sql = new mySql(); mondText = SELECT 学号 FROM detail WHERE 学号 =+upStuNo.Text.ToString().Trim(); bool flagtemp = sql.getFlag(); if (!flagtemp) /如果表中无该条记录!提示是否进行添加新记录操作 if (MessageBox.Show(查无当前记录!无法进行更新操作(n是否进行添 加新记录的操作;, 提示, MessageBoxButtons.OKCancel) = DialogResult.OK) if (upStuNo.Text.Trim() != & upStuName.Text.Trim() != & upStuMajor.Text.Trim() != ) mySql sqlme = new mySql(); mondText = SELECT CNO FROM C WHERE CN= + listmn.Text.ToString().Trim() + ; sqlme.runSql(); String temp = sqlme.table.Table.Rows0CNO.ToString();/课程 号 String sexTemp = radioButton1.Checked ? 男 : 女; String comTemp; if (upStuCom.Text.ToString().Trim() = ) comTemp = ; else comTemp = upStuCom.Text.ToString().Trim(); String birTemp; if (upStuBir.Text.ToString().Trim() = ) birTemp = ; else birTemp = upStuCom.Text.ToString().Trim(); mondText = INSERT INTO S (SNO,SN,MN,SEX,BIRDAY,COM) VALUES( + upStuNo.Text.ToString().Trim() + , + upStuName.Text.ToString().Trim() + , + upStuMajor.Text.ToString().Trim() + , + sexTemp + , + birTemp + , + comTemp + ); sqlme.update(); if (upStuScore.Text.ToString().Trim() != ) mondText = INSERT INTO SC(SNO,CNO,SCORE) VALUES ( + upStuNo.Text.ToString().Trim() + , + temp + , + upStuScore.Text.ToString().Trim() + ); sqlme.update(); this.Close(); else MessageBox.Show(学号、姓名和专业名称都不可以为空(, 错误(); else if (upStuNo.Text.Trim() != & upStuName.Text.Trim() != & upStuMajor.Text.Trim() != ) mondText = SELECT CNO FROM C WHERE CN= + listmn.Text.ToString().Trim() + ; sql.runSql(); String temp = sql.table.Table.Rows0CNO.ToString();/获取课程号 String sexTemp = radioButton1.Checked ? 男 : 女; String comTemp;if(upStuCom.Text.ToString().Trim()=) comTemp= ; else comTemp=upStuCom.Text.ToString().Trim(); String birTemp; if (upStuBir.Text.ToString().Trim() = ) birTemp = ; else birTemp = upStuBir.Text.ToString().Trim(); mondText = UPDATE S SET SN= + upStuName.Text.ToString().Trim() + ,MN= +upStuMajor.Text.ToString().Trim()+,SEX= +sexTemp+,BIRDAY= + upStuBir.Text.ToString().Trim() + ,COM= +comTemp+ WHERE SNO=+upStuNo.Text.ToString().Trim(); sql.update(); bool scFlag = new bool(); if (upStuScore.Text.ToString().Trim() != ) try mySql scTemp = new mySql(); scTmondText = SELECT CNO FROM C WHERE CN= + listmn.Text.ToString().Trim() + ; scTemp.runSql(); String cntemp = scTemp.table.Table.Rows0CNO.ToString();/获取课程号 scTmondText = SELECT SNO FROM SC WHERE SNO= + upStuNo.Text.ToString().Trim() + AND CNO= + cntemp; scFlag = scTemp.getFlag(); if (scFlag) mondText = UPDATE SC SET SCORE= + upStuScore.Text.ToString().Trim() + WHERE SNO= + upStuNo.Text.ToString().Trim() + AND CNO= + temp; sql.update(); catch mondText = INSERT INTO SC(SNO,CNO,SCORE) VALUES ( + upStuNo.Text.ToString().Trim() + , + temp + , + upStuScore.Text.ToString().Trim() + ); sql.update(); this.Close(); else MessageBox.Show(学号、姓名和专业名称都不可以为空(, 错误( )
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 用户需求分析
- 干细胞治疗神经系统疾病临床应用临床研究项目管理报告
- 电子竞技赛事赞助策略:2025年品牌合作与赛事赞助合作前景展望报告
- 2025年医疗服务类:医疗设备市场细分领域发展研究报告
- 基于大数据的2025年城市轨道交通智慧运维系统数据挖掘与分析报告
- 2025年成人教育线上学习模式创新与学习成果认证与评价报告
- 2025年低碳环保型建筑工程油漆施工与保养服务合同模板
- 2025年度城市社区医疗废弃物处理及资源化利用服务合同
- 2025年度新能源汽车研发合作订购合同
- 2025年新能源项目研发合作资金借用协议:推动绿色技术创新
- 精神科病历书写精神科病历书写及范例
- 《乒乓裁判规则规程》考试题库(附答案)
- 依托自主化装备建设分布式能源三联供项目
- 老年肌肉衰减综合征(肌少症)课件
- PCB全制程培训教材
- 应急保障措施及处置方案
- 烟草配送车辆GPS管理方案
- 电力设备预防性试验及维护保养方案
- 融资性担保贷款保后检查表
- 公司人力资源管理制度管理制度
- 变电检修管理通用细则 第6分册 电流互感器检修细则
评论
0/150
提交评论