c#课程设计报告_第1页
c#课程设计报告_第2页
c#课程设计报告_第3页
c#课程设计报告_第4页
c#课程设计报告_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、 .net程序设计基础 课程设计报告题 目: .net程序设计基础 专 业: 软件工程 班 级: 姓 名: 学 号: 指导教师: 时 间: 摘 要本文描述的是基于windows环境的学生信息管理系统,主要功能模块包括:学生信查询,学生信息管理,学生成绩录入,主要工具microsoft visual studio 2010 设计窗体, sql server2005建立数据库,实现学校信息管理的各个功能,使用语言为c#。本篇报告介绍一个学生信息管理系统的从分析到设计最后到开发的全过程为,给出了学生信息管理系统的设计和技术实现的过程,特别在细节上分析功能和函数的实现思想。涉及到学生信息管理的基本功能

2、在本报告中都有相应的描述。 关键字:c# 学生成绩管理系统 sql目录一、 课程设计的目的1二、 系统需求2三、 系统设计3四、 系统实现8五、 系统测试14六、 课设总结与体会15参考文献16附录171、 课程设计的目的本课程设计的目的是使学生能熟练掌握简单的简单windows窗体应用程序的设计和ado.net的应用,希望通过本次课程设计锻炼学生使用c#语言解决实际问题的能力。c#程序设计是软件工程专业的必修专业基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。本课程的程序设计专题实际是软件技术专业学生学习完c#程序设计课程后,进行的一次全面的综合训练,c#程序设计的设计

3、目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。2、 系统需求2.1系统需求简介2.1.1系统目标(1) 根据查询条件实现学生信息的查询(2) 学生选课信息查询、成绩信息的查询(3) 学生信息、课程信息、成绩信息的增加、删除、修改(4) 对基本信息完成增加、删除、修改时,需注意表与表之间的关联2.1.2功能需求分析本系统的功能需求分析如下:(1) 学生信息查询:学生可以根据学号、姓名、专业进行查询.(2) 学生信息管理:主要是用于学生信息更新、插入、

4、删除;(3) 学生成绩录入:用于学生成绩管理,录入学生成绩,也可以更新;2.1.3性能需求分析(1) 登录、用户界面需求:简洁、易懂、易用、友好的用户界面。(2) 安全保密性需求:只有凭借用户名和密码登陆系统,才能进行信息的管理等。3、 系统设计3.1设计概述根据需求把整个系统分化成不同的模块,每个模块完成一个特定的子功能。把这些模块结合起来组成一个整体。逐一实现各个功能;3.2系统总体结构及功能模块划分学生成绩录入学生信息管理学生信息管理系统学生信息查询经过对系统的需求分析,学生信息管理系统主要划分为三个部分:学生信息查询,学生信息管理,学生成绩录入三个功能模块。如图3.2.1 系统的总体结

5、构。图3.2.1 系统的总体结构3.2.1学生信息查询模块学生信息查询学号查询姓名查询学生信息查询:学生可以根据学号、姓名、专业进行查询。如图3.2.2学生信息查询模块结构。图3.2.2 学生信息管理模块结构3.2.2学生信息管理模块基本信息录入成绩录入基本信息更新成绩更新学生信息删除学生信息录入学生信息管理学生信息更新学生信息管理:主要是用于学生信息更新、插入、删除,如图3.2.3学生管理模块结构。图3.2.3 学生信息管理模块结构3.3系统数据库概念结构设计根据对数据项与数据结构的分析,设计出能够满足系统需求的各种实体,及它们之间的关系,为后面的逻辑结构设计打下基础。3.3.1系统e-r图

6、系统e-r图可以将各个实体之间的关系显示出来,将各个实体间的属性依赖表示明白。如图3.3.1系统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

7、、 系统实现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.

8、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 删除信息提示)。更新时如果输入的学号不存在,可选择是否添加学生信息。通过程序主界面的新建信息记录可添加学生信息(如图

9、4.3.7 添加信息窗口)。图4.3.4 上下文菜单图4.3.5 修改信息窗口图4.3.6 删除信息提示图4.3.7 添加信息窗口5、 系统测试对系统进行数据的增删改查四大操作的时候,基本没出现什么错误,可以实现基本功能,满足课程设计要求。6、 课设总结与体会为期两周的课程设计结束了,在老师和同学的帮助下,我基本完成系统的设计。我按照系统工程软件设计的要求,从需求分析,概念设计,总体设计,详细设计,系统测试等各个步骤,分步完成系统的各项任务,实现了系统中的学生信息查询,学生信息更新,学生信息添加等模块的功能。在这几天里我收获如下:1、巩固和加深了对c#的理解,提高综合运用本课程所学知识的能力。

10、2、培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。3、通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。根据我在课程设计中遇到的问题,我将在以后的学习当中注意以下几点:1、认真上好专业实验课,多在实践中锻炼自己。2、写程序的过程中要考虑周到,严密。3、在做设计的时候要有信心,有耐心,切勿浮躁。4、认真的学习课本知识,掌握课本中的知识点,并在此基础上学会灵活运用。5、在课余时间里多写程序,熟练掌握在调试程序的过程中所遇到的常见错误,以便能节省调试程序的时间。参考文献c#课程设计案例精编清华大学出版社 段德亮 余健visu

11、al c#2005入门到精通清华大学出版社 周靖sql server2000数据库原理及应用高等教育出版社 附录公共类代码设计 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

12、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 sqld

13、ataadapter(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

14、 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 + requ

15、ire + 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); s

16、tring 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 无; public void update() /添加、更新语句 try using (sqlconnection connec

17、tion = new sqlconnection(connectionstring) connection.open(); sqlcommand cmdinsert = new sqlcommand(commondtext, connection); cmdinsert.executenonquery(); connection.close(); catch(exception ex) messagebox.show(ex.tostring(), 提示); 登录界面代码设计 private void login_click(object sender, eventargs e) /用户名及密码

18、组合判断 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(

19、); if (temp) this.visible = false; mainface main = new mainface(this); main.show(); catch(exception ex) messagebox.show(ex.tostring(),提示); else messagebox.show(请输入用户名和密码,提示); 查询模块代码设计 private void btquery_click(object sender, eventargs e) mysql query=new mysql(); if (sninput.text.trim() = & snoinput

20、.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

21、 总学分,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 (sninpu

22、t.text.trim() = & snoinput.text.trim() = ) messagebox.show(您输入的信息为空,请重新输入!, 错误信息); else if (query.getflag() query.runsql(); datagridview1.datasource = query.table; else messagebox.show(您查找的信息不存在, 错误信息); 添加模块代码设计 private void addbtok_click(object sender, eventargs e) if (addstuno.text.trim() != & add

23、stuname.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

24、.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().tri

25、m()+, +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.u

26、pdate(); 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 data

27、set(); sda.fill(ds); listmn.datasource = ds.tables0.defaultview; listmn.displaymember = cn; listmn.displaymember = listmn.displaymember.tostring().trim(); 更新模块代码设计 private void upbtok_click(object sender, eventargs e) mysql sql = new mysql(); mondtext = select 学号 from detail where 学号=+upstuno

28、.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

29、 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 = ups

30、tucom.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() + , + upstuma

31、jor.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(); thi

32、s.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();/获取课程号 s

33、tring 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 s

34、et 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()

温馨提示

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

评论

0/150

提交评论