数据库学生成绩管理系统课程设计报告_第1页
数据库学生成绩管理系统课程设计报告_第2页
数据库学生成绩管理系统课程设计报告_第3页
数据库学生成绩管理系统课程设计报告_第4页
数据库学生成绩管理系统课程设计报告_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、洛 阳 理 工 学 院课 程 设 计 报 告 课程名称数据库课程设计设计题目 学生成绩查询系统 专 业 计算机科学与技术 班 级 B100506学 号 B10050634姓 名孙帅杰完成日期 2013年1月6号 课 程 设 计 任 务 书设计题目: 学生成绩管理系统 设计内容与要求:设计内容:教务员可以输入学生、教师、班级、课程信息,一个班级只属于一个专业,一个学生只属于一个班级。教务员负责输入每个专业、每个班级需要学习哪些课程,指定课程的任课教师。一个教师可以教授多个班的多门课程。教师可以查看学习该课程的学生名单.课程结束后,教师可以录入课程成绩.课程分两类,必修课和选修课。学生可以选修课程

2、,每学期几门。学生可以查看自己各门课程的成绩.学生还可以进行评教,给老师打分.系统管理员可以输入教室信息,并结合班级、课程、教室信息实现自动排课。设计要求:要求完成需求分析,写出功能需求和数据需求描述;在需求分析的基础上完成数据库的概念结构设计、逻辑结构设计、物理结构设计;用C语言,完成管理系统的部分程序模块的界面设计。指导教师: 陶 荣2012年12月28日课 程 设 计 评 语 成绩: 指导教师:年月日洛 阳 理 工 学 院 课 程 设 计 报 告目录1。绪论11。1 设计目的11。2 开发工具选择11.3 开发环境11.4 本报告的主要内容12。需求分析12。1系统需求简介13.总体设计

3、23。1设计概述23.2系统总体结构及功能模块划分23。3系统数据库概念结构设计43。4 逻辑结构设计74。主程序设计104.1登录系统104.2学生信息查询、保存、及修改124。3用户管理185。设计总结与心得体会226。参考文献231。绪论1.1 设计目的本课程设计的目的是使学生能熟练掌握简单的简单Windows窗体应用程序的设计和ADO.net的应用,希望通过本次课程设计锻炼学生使用C语言解决实际问题的能力.1。2 开发工具选择本系统后台数据库采用Microsoft SQL Server 数据库,该数据库系统在安全性、准确性和运行速度方面有绝对的优势,并且处理数据量大,效率高;前台采用M

4、icrosoft 公司的Visual Studio 2010作为主要开发工具,可与SQL Server 2008数据库无缝链接.1。3 开发环境系统开发平台:Microsoft Visual Studio2010系统开发语言:C数据库管理软件:SQL Server 20081。4 本报告的主要内容本报告详细的介绍了学生成绩管理系统的开发过程,主要涉及到的工作如下:系统的需求分析、系统的总体设计、系统的概念设计、系统各模块的详细设计、系统运行与测试。2.需求分析2。1系统需求简介(1)系统目标1。根据查询条件实现学生信息的查询2。学生选课信息查询、成绩信息的查询3.学生信息、课程信息、成绩信息的

5、增加、删除、修改4.对基本信息完成增加、删除、修改时,需注意表与表之间的关联(2)功能需求分析本系统的功能需求分析如下:1。学生信息查询:学生可以根据学号、姓名、专业进行查询。2。学生信息管理:主要是用于学生信息更新、插入、删除;3.学生成绩录入:用于学生成绩管理,录入学生成绩,也可以更新;(3)性能需求分析1.登录、用户界面需求:简洁、易懂、易用、友好的用户界面。2。安全保密性需求:只有凭借用户名和密码登陆系统,才能进行信息的管理等.3.总体设计3。1设计概述根据需求把整个系统分化成不同的模块,每个模块完成一个特定的子功能.把这些模块结合起来组成一个整体。逐一实现各个功能。3。2系统总体结构

6、及功能模块划分经过对系统的需求分析,学生信息管理系统主要划分为三个部分:学生信息查询,学生信息管理,学生成绩录入三个功能模块。系统的总体结构如图31所示.学生成绩录入学生信息管理学生信息管理系统学生信息查询图31 系统的总体结构示意图(1)学生信息查询模块学生信息查询学号查询姓名查询学生信息查询:学生可以根据本人学号、姓名进行信息查询。学生信息查询模块结构如图32所示.图32 学生信息管理模块结构示意图(2)学生信息管理模块学生信息管理:主要是用于学生信息更新、插入、删除。学生管理模块结构如图33所示。基本信息录入成绩录入基本信息更新成绩更新学生信息删除学生信息录入学生信息管理学生信息更新图3

7、-3 学生信息管理模块结构示意图3。3系统数据库概念结构设计根据对数据项与数据结构的分析,设计出能够满足系统需求的各种实体,及它们之间的关系,为后面的逻辑结构设计打下基础.(1)系统E-R图系统ER图可以将各个实体之间的关系显示出来,将各个实体间的属性依赖表示明白.教师与课程之间的关系:教师与课程之间是m: n的关系,即一个老师能教多门课程,一门课程可以由多个老师讲授. 图3-4教师与课程实体图学生与教师之间的关系:学生与教师之间是n:m的关系,即一名老师可以教授多个学生,而一个学生可以由多个教师来教.图35教师与学生的实体图学生与课程之间的关系:学生与课程之间是n:m的关系,即一个学生可以选

8、修多门课程,一门课程可以被多个学生选学。图3-6学生与课程的实体图学生与成绩之间的关系是n:m的关系: 图37学生与成绩的实体图管理员与用户的关系: 图3-8管理员与用户的实体图图39学生成绩管理全局ER 图3。4 逻辑结构设计(1)将ER图转化为关系模型为:管理员(用户名,密码)学生(学号,姓名,性别,系名,专业,出生日期)教师(教师号,姓名,性别,院系,联系电话)课程(课程号,课程名,学分,教师)成绩(学号,课程号,姓名,课程名,成绩,授课老师)管理(教师号,学号,密码)教授(教师号,课程号,课程名)选修(学号,课程号,成绩)讲授(教师号,课程号)(2)将以上数据关系模型进行优化处理得关系

9、模型:学生信息(学号,姓名,性别,系名,专业,出生日期)教师信息(教师号,姓名,性别,院系,联系电话)管理员信息(用户名,密码,用户级别)课程表(课程号,课程名,学分,教师)成绩表(学号、课程号、成绩)(3)物理模型设计学生信息表具体有学号,姓名,性别,系名,专业,出生日期,如表31所示表31学生信息表字段类型长度约束索引学号字符型8主键约束有姓名字符型10性别字符型2系名字符型20专业数值型20出生日期字符型8教师信息具体有教师号,姓名,性别,院系,专业,联系电话,如表3-2所示表3-2教师信息表字段类型长度约束索引教师号字符型8主键约束有姓名字符型10性别字符型2院系字符型20专业数值型2

10、0联系电话字符型11管理员信息具体有用户名、密码、用户级别,如表33所示字段类型长度备注用户名字符型8学号、教师号密码字符型6用户级别字符型10一般操作员/系统管理员表3-3管理员信息表课程表信息具体有课程号,课程名,学分,教师,如表3-4所示表3-4课程表信息字段类型长度约束索引课程号字符型10主键约束有课程名字符型30学分字符型2教师字符型10成绩表具体有学号,课程号,成绩,如表3-5所示表3-5成绩表字段类型长度约束索引学号字符型8主键有课程号字符型10主键有成绩数值型54.主程序设计4.1 登录系统namespace CourseDesignpublicpartialclassLogi

11、nForm : Form region 属性/summary/ 是否登录/summaryprivatebool _isLogin = false;publicbool IsLogin get return _isLogin; set _isLogin = value; /用于记录当前登录用户名;privatestaticstring _currentUser;publicstaticstring CurrentUser get return _currentUser; /用于记录当前登录用户密码;privatestaticstring _currentPsw;publicstaticstrin

12、g CurrentPsw get return _currentPsw; endregionpublic LoginForm() InitializeComponent();this。labelInfo.Text = ”;this.txtBoxUser.Text = ”admin;this。txtBoxPsw。Text = ”0”; /登录privatevoid btnOK_Click(object sender, EventArgs e) if (txtBoxUser.Text.Trim() = ”) this。labelInfo.Text = 请输入您的用户名!”; elseif (txt

13、BoxPsw。Text。Trim() = ”) this。labelInfo。Text = 请输入您的密码!;/MessageBox.Show(”请输入您的密码, ”错误提示:”, MessageBoxButtons。OK, MessageBoxIcon.Warning); else Command com = newCommand();string str = select from UserInfo where userId = ” + txtBoxUser。Text。ToString() + ”;DataTable table = com。GetDataSet(str);if (tabl

14、e。Rows。Count = 0) this.labelInfo。Text = ”用户名不存在!”; txtBoxUser。Text = ”; txtBoxPsw。Text = ”;return; str = select * from UserInfo where userId = ” + txtBoxUser。Text.ToString() + ” and passWard = ” + txtBoxPsw。Text。ToString() + ”;DataTable tableUser = com。GetDataSet(str);if (tableUser.Rows。Count 0) _cu

15、rrentUser = txtBoxUser.Text; _currentPsw = txtBoxPsw。Text; IsLogin = true;this。Close(); else this。labelInfo。Text = ”密码错误!”; txtBoxPsw.Text = ”; /取消privatevoid btnCencle_Click(object sender, EventArgs e) this.Close(); /重置privatevoid btnReset_Click(object sender, EventArgs e) txtBoxUser。Text = ”; txtB

16、oxPsw.Text = ”; privatevoid txtBoxUser_Click(object sender, EventArgs e) this.labelInfo。Text = ”; privatevoid txtBoxPsw_Click(object sender, EventArgs e) this。labelInfo。Text = ”; 图41用户登录界面4.2 学生信息查询、保存、及修改namespace CourseDesignpublicpartialclassfrmViewInfo : Form region 属性private DBHelper。TypeOfOper

17、ationForBill _mOperTypeOfBill = DBHelper。TypeOfOperationForBill。nNull;public DBHelper.TypeOfOperationForBill OperTypeOfBill get return _mOperTypeOfBill; set _mOperTypeOfBill = value; /privatebool _isNew = false;publicbool IsNew get return _isNew; set _isNew = value; privatebool _isModified = false;p

18、ublicbool IsModified get return _isModified; set _isModified = value; endregionpublic frmViewInfo(DBHelper。TypeOfOperationForBill OperType) _mOperTypeOfBill = OperTypeOfBill; InitializeComponent(); SetFromText(); publicvirtualvoid SetFromText() if (OperTypeOfBill = TypeOfOperationForBill。nView) this

19、。Text = 查看学生信息; else this。Text = 编辑学生信息”; /添加privatevoid toolStripBtnAdd_Click(object sender, EventArgs e) /this。dataGridViewInfo.Rows。Add();/_isNew = true;Command com = newCommand();string strClass = select classId from ClassInfo where className = + dataGridViewInfo。CurrentRow.Cells”classid”.Value.

20、ToString() + ”;string dtClass = com。GetScalar(strClass)。ToString();string strdept = ”select sdeptNo from Sdept where name = ” + dataGridViewInfo.CurrentRow。CellsSdept”.Value。ToString() + ”;string dtDept = com。GetScalar(strdept)。ToString();string str = select * from StudentInfo where stuNum = ” + dat

21、aGridViewInfo.CurrentRow。Cells”stuNum。Value。ToString() + ”;DataTable dtable = com.GetDataSet(str);if (dtable。Rows。Count 0) dataGridViewInfo。Rows.Clear(); SelectStudentInfo();MessageBox.Show(”数据添加成功!”); else MessageBox.Show(信息填写不完整!请补充完整!”); else MessageBox.Show(该学生已存在,请审核信息!); protectedvirtualvoid f

22、rmViewInfo_Load(object sender, EventArgs e) this。dataGridViewInfo。Rows。Clear();this.dataGridViewInfo.Columns。Clear();/this。dataGridViewInfo.EditMode = DataGridViewEditMode。EditOnEnter;DataGridViewColumn col = null; col = newDataGridViewTextBoxColumn(); col。Name = stuNum; col。HeaderText = ”学号”;this.d

23、ataGridViewInfo。Columns。Add(col); col = newDataGridViewTextBoxColumn(); col。Name = name”; col。HeaderText = ”姓名;this。dataGridViewInfo.Columns。Add(col);DataGridViewComboBoxColumn col0 = newDataGridViewComboBoxColumn(); col0。FlatStyle = FlatStyle。Flat; col0。HeaderText = 性别; col0。Name = ”sex”; col0.Item

24、s。Add(”男”); col0。Items.Add(女”);this.dataGridViewInfo。Columns。Add(col0); col = newDataGridViewTextBoxColumn(); col。Name = birthday; col。HeaderText = ”出生年月”;this。dataGridViewInfo。Columns。Add(col); col = newDataGridViewTextBoxColumn(); col。Name = nation; col.HeaderText = ”民族”;this。dataGridViewInfo。Colu

25、mns。Add(col); col = newDataGridViewTextBoxColumn(); col。Name = ”address”; col。HeaderText = 籍贯”;this。dataGridViewInfo。Columns。Add(col); col = newDataGridViewTextBoxColumn(); col.Name = ”phone”; col.HeaderText = ”联系电话;this.dataGridViewInfo。Columns。Add(col); col = newDataGridViewTextBoxColumn(); col。Na

26、me = ”classid”; col。HeaderText = ”班级”;this。dataGridViewInfo。Columns。Add(col); col = newDataGridViewTextBoxColumn(); col。Name = ”intoSchoolDate”; col.HeaderText = ”入学时间;this。dataGridViewInfo。Columns。Add(col); col = newDataGridViewTextBoxColumn(); col。Name = ”Sdept”; col.HeaderText = ”系别;this.dataGrid

27、ViewInfo.Columns。Add(col); /删除privatevoid toolStripBtnDelete_Click(object sender, EventArgs e) Command com = newCommand();if (dataGridViewInfo”stuNum”, dataGridViewInfo。CurrentRow。Index.Value != null) string numRow = dataGridViewInfo。CurrentRow。CellsstuNum.Value.ToString();string str = ”delete from

28、StudentInfo where stuNum = ” + dataGridViewInfo.CurrentRow.Cells”stuNum”。Value。ToString() + ”;if (MessageBox。Show(”你确定删除学号为:” + numRow + 的学生么?, 提示, MessageBoxButtons。OKCancel, MessageBoxIcon.Question) = DialogResult。OK) string strScore = ”select * from ScoreInfo where stuNo = + dataGridViewInfo。Curr

29、entRow。CellsstuNum”。Value。ToString() + ”;DataTable dt = com.GetDataSet(strScore);if (dt.Rows。Count 0) MessageBox。Show(请先删除该学生的成绩!”); else if (com.ExecuteCommand(str) 0) /dataGridViewInfo。Rows。Clear();/SelectStudentInfo(); dataGridViewInfo.Rows.Remove(dataGridViewInfo。CurrentRow);MessageBox。Show(”删除成

30、功!); else if (MessageBox。Show(”该数据行为空,是否删除该行?”, ”提示”, MessageBoxButtons。OKCancel, MessageBoxIcon。Question) = DialogResult。OK) dataGridViewInfo.Rows.Remove(dataGridViewInfo。CurrentRow);MessageBox。Show(删除成功!”); /publicvoid SelectStudentInfo() Command com = newCommand();string str = select s.stuNum,s。n

31、ame,s。sex ,s。birthday ,s。nation,s.address,s。phone,c.className,oSchoolDate, from StudentInfo s,ClassInfo c,Sdept sd + where s。classid = c。classID and s。Sdept = sd。sdeptNo;DataTable dt = com.GetDataSet(str);for (int i = 0; i dt。Rows。Count; i+) dataGridViewInfo.Rows。Add();for (int k = 0; k

32、dt.Columns。Count; k+) dataGridViewInfo。Rowsi。Cellsk.Value = dt.Rowsik。ToString(); dataGridViewInfo。Rowsi。Tag = false; /保存privatevoid toolStripBtnSave_Click(object sender, EventArgs e) Command com = newCommand();for (int i = 0; i dataGridViewInfo。Rows。Count 1; i+) string strClass = ”select classId fr

33、om ClassInfo where className = + dataGridViewInfo。Rowsi。Cells”classid.Value.ToString() + ”;string dtClass = com。GetScalar(strClass)。ToString();string strdept = ”select sdeptNo from Sdept where name = ” + dataGridViewInfo。Rowsi。Cells”Sdept”。Value。ToString() + ”;string dtDept = com。GetScalar(strdept).

34、ToString();string sql = ”update StudentInfo set stuNum = ” + dataGridViewInfo。Rowsi。Cells”stuNum.Value。ToString() + ,name = ” + dataGridViewInfo.Rowsi。Cellsname”。Value。ToString() + ,sex = ” + dataGridViewInfo.Rowsi。Cellssex”。Value。ToString() + ”,birthday = + dataGridViewInfo.Rowsi。Cells”birthday.Val

35、ue.ToString() + ,nation = ” + dataGridViewInfo.Rowsi.Cellsnation。Value.ToString() + ”,address = ” + dataGridViewInfo.Rowsi.Cellsaddress”。Value.ToString() + ,phone = ” + dataGridViewInfo.Rowsi。Cellsphone”。Value.ToString() + ”,classid = ” + dtClass + ”,intoSchoolDate = ” + dataGridViewInfo。Rowsi.Cells

36、intoSchoolDate。Value。ToString() + ”,Sdept = ” + dtDept + ” where stuNum = + dataGridViewInfo。Rowsi。Cells”stuNum”.Value。ToString() + ”;if (com。ExecuteCommand(sql) 0) dataGridViewInfo。Rows.Clear(); SelectStudentInfo();MessageBox。Show(”数据修改成功!”); else MessageBox.Show(”数据修改失败!”); 图42查看学生信息图43学生信息显示4.3 用

37、户管理namespace CourseDesignpublicpartialclassFormPassword : Form public FormPassword() InitializeComponent();this。btnOk。Click += new System。EventHandler(this.btnOk_Click); protectedvoid btnOk_Click(object sender, EventArgs e) if (txtBoxOldPsw。Text = null | txtBoxOldPsw。Text.Trim() = ”) MessageBox.Show

38、(”请输入旧密码!。, 提醒”, MessageBoxButtons。OK, MessageBoxIcon。Information);return; if (txtBoxNewPsw。Text = null | txtBoxNewPsw。Text。Trim() = ” txtBoxEnterPsw。Text = null txtBoxEnterPsw。Text.Trim() = ”) MessageBox.Show(请输入新密码!。”, 提醒”, MessageBoxButtons。OK, MessageBoxIcon。Information);return; string currPwd =

39、 LoginForm.CurrentPsw;if (currPwd = txtBoxOldPsw。Text.Trim() if (isSame() Command com = newCommand();string str = update UserInfo set passWard = ” + txtBoxEnterPsw。Text。ToString() + where userId = ” + LoginForm.CurrentUser + ”;if (com。ExecuteCommand(str) 0) MessageBox.Show(”密码修改成功!。”, 提醒”, MessageBo

40、xButtons。OK, MessageBoxIcon。Information); else MessageBox.Show(”密码修改失败,请联系管理员!。, 提醒”, MessageBoxButtons.OK, MessageBoxIcon。Information); else MessageBox.Show(”两次密码输入不一致!, ”提醒”, MessageBoxButtons.OK, MessageBoxIcon.Information); else MessageBox。Show(”输入密码错误!”, 提醒”, MessageBoxButtons。OK, MessageBoxIcon。Information); publicbool isSame() if (txtBoxNewPsw。Text != null | txtBoxNewPsw.Text.Trim() != ”) (txtBoxEnterPsw.Text != null | txtBoxEnt

温馨提示

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

评论

0/150

提交评论