C# 课程设计

时间:2024.4.20

吉林工程技术师范学院

信息工程学院

《 C#程序设计 》

课程设计报告

        题    目:   学生成绩管理系统  

专    业:      软件工程       

班    级:        R1241        

姓    名:       李继聪        

学    号:      120111423      

指导教师:     刘明  陈泰宇    

时    间:    20##年5月8日  


摘 要

学生成绩管理系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备、易使用、界面美观等特点。本次开发使用了 Microsoft 公司的 visualstudio2008 开发工具,利用其提供的各种面向对象的开发工具,尤其是数据窗口这一能方便而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。

关键词:sql2005,C#.NET,成绩管理系统,信息管理系统。

 

一、课程设计的目的 ……………………………..………2

二、设计方案的论证(背景、意义、技术路线)………3

三、设计实现过程 ………………………………..………4 

四、调试运行及结果分析 ………………………..………9

五、测试及问题探讨 ……………………………………14

六、课设总结与体会 ……………………………………15

七、致谢 …………………………………………………16

八、参考文献 ……………………………………………17

九、附录 …………………………………………………18

一、课程设计的目的

本课程设计的目的是使学生能熟练掌握简单的简单Windows窗体应用程序的设计和ADO.net的应用,希望通过本次课程设计锻炼学生使用C#语言解决实际问题的能力。

开发出新一代的学生成绩信息管理系统,使该系统具有快捷,灵活,安全可靠,高效敏捷的特点:

(1)通过计算机使学生成绩实现管理系统信息化;

(2)提高运行效率,从而实现灵活,方便的操作;

(3)功能比较完善的数据管理软件,要具有数据操作方便高 效,迅速等优点;

可通过访问权限控制等确保数据的安全性。

二、设计方案的论证(背景、意义、技术路线)

2.1背景

本系统后台数据库采用Microsoft SQL Server 数据库,该数据库系统在安全性、准确性和运行速度方面有绝对的优势,并且处理数据量大,效率高;前台采用Microsoft 公司的Visual Studio 2008作为主要开发工具,可与SQL Server 2005数据库无缝链接。

2.2意义

本报告详细的介绍了学生信息管理系统的开发过程,主要涉及到的工作如下:系统的需求分析、系统的总体设计、系统的概念设计、系统各模块的详细设计、系统运行与测试。希望通过本次课程设计锻炼学生使用C#语言解决实际问题的能力。

2.3技术路线

系统开发平台:Microsoft Visual Studio2005

系统开发语言:C#

数据库管理软件:SQL Server 2005

三、设计实现过程

系统总体结构及功能模块划分

经过对系统的需求分析,学生信息管理系统主要划分为三个部分:学生信息查询,学生信息管理,学生成绩录入三个功能模块。如图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.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.1.1 用户登录界面所示。

图4.1.1 用户登录界面

4.2学生信息查询模块

图4.2.3 详细信息窗口

4.3.3学生信息管理模块

学生信息管理:通过右击程序主界面的相应记录弹出的上下文菜单(如图4.3.4 上下文菜单)可对当前选定学生信息进行详细信息查询(如图4.2.3 详细信息窗口)、修改信息(如图4.3.5 修改信息窗口)、删除信息(如图 4.3.6 删除信息提示)。更新时如果输入的学号不存在,可选择是否添加学生信息。通过程序主界面的新建信息记录可添加学生信息(如图 4.3.7 添加信息窗口)。

图4.3.4 上下文菜单

4.3.5 修改信息窗口

图4.3.6 删除信息提示

图4.3.7 添加信息窗口

五、测试及问题探讨

     在这次实训中出现了很多的错误,出现的最多的错误就是把函数名的错误,还有就是窗口不可预览,尤其是在主界面出现的错误,特别是窗口布局设计时还是比较美观的,但是运行之后就变得很丑,一波三折之后还是收获颇丰。主界面的背景图片我运行很多次都没有很好的结果,我通过教科书,网页百度最后才将结果运行出来。最后一部分难点就是数据库的建立,链接数据库的部分很简单的,但是数据库存取问题很大,我通过一步一步查阅资料和网上查找相关的函数才将最后的结果运行出来。

六、课设总结与体会

为期一周的课程设计结束了,在老师和同学的帮助下,我基本完成系统的设计。我按照系统工程软件设计的要求,从需求分析,概念设计,总体设计,详细设计,系统测试等各个步骤,分步完成系统的各项任务,实现了系统中的学生信息查询,学生信息更新,学生信息添加等模块的功能。

在这短短的五天里我收获如下:

1、巩固和加深了对C#的理解,提高综合运用本课程所学知识的能力。

2、培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。

3、通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。

根据我在课程设计中遇到的问题,我将在以后的学习当中注意以下几点:

1、认真上好专业实验课,多在实践中锻炼自己。

2、写程序的过程中要考虑周到,严密。

3、在做设计的时候要有信心,有耐心,切勿浮躁。

4、认真的学习课本知识,掌握课本中的知识点,并在此基础上学会灵活运用。

5、在课余时间里多写程序,熟练掌握在调试程序的过程中所遇到的常见错误,以便能节省调试程序的时间。

七、致谢

这次的课程设计是历时两周。报告整理包括需求分析、概念结构设计、逻辑结构设计、数据库实施、C#界面设计及程序逻辑代码设计、文档排版等。

通过课程设计的整个过程,我了解了一个简单系统实现的全过程。从最开始的需求分析,概念结构设计,逻辑结构设计和物理结构设计,到最后的实施,每一步都需要认真严谨,不能有半点的马虎,否则就会给下一阶段的工作造成麻烦。这次能够成功的实现系统的功能,与小组成员间的团结合作有关。小组的讨论让我得到了很多想法,真正感觉到集体力量的强大,同时系统功能的实现也得益于老师的严格要求和耐心指导。在系统设计的整个过程中,老师也给出了许多宝贵的意见,使系统的功能更加完善。

当然,我们目前的能力总是很有限的,这个简易的系统还是存在很多问题的。我相信通过进一步的学习,这些问题都可以迎刃而解。

总而言之,通过这次的课程设计,我受益匪浅。

八、参考文献

[1] 王小科,吕双,梁冰.C#程序开发范例宝典.第二版[M].人民邮电出版社,2009

[2] 王珊,萨师煊 .数据库系统概论 [M].高等教育出版社,2006

[3] 黄明.C#+SQL Server中小型信息系统开发实例精选[M].机械工业出版社,2007

[4] 张跃廷,韩阳,张宏宇.C#数据库系统开发实例精选[M].人民邮电出版社,2007

九、附录

 namespace MySql

    {

        public class mySql

        {

            public String connectionString = @"SERVER=.\SQLEXPRESS;AttachDbFilename=D:\学习\C#\课程设计\StuScoreManSystem\StuScoreManSystem\StuScoManSys.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.Tables[0].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.Tables[0].Rows.Count; i++)

                        {

                            result = result+ds.Tables[0].Rows[i][require].ToString()+"\n";

                        }

                    }

                    else

                    result=ds.Tables[0].Rows[0][require].ToString().Trim();

                    return result;

                }

                catch

                {

                    return "无";

                }

            }

            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(), "提示");

                }

            }

          

               

        }

}

9.2登录界面代码设计

            private void login_Click(object sender, EventArgs e)

        {//用户名及密码组合判断

            if (username.Text.ToString().Trim() != "" && password.Text.ToString().Trim() != "")

            {

                mySql sql = new mySql();

                sql.commondText = "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("请输入用户名和密码","提示");

            }

        }

9.3添加模块代码设计

    private void addbtOK_Click(object sender, EventArgs e)

        {

            if (addStuNo.Text.Trim() != "" && addStuName.Text.Trim() != ""&& addStuMajor.Text.Trim()!="")

            {

                mySql sql = new mySql();

                sql.commondText = "SELECT CNO FROM C WHERE CN='" + listmn.Text.ToString().Trim()+ "'";

                sql.runSql();

                String temp = sql.table.Table.Rows[0]["CNO"].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();

                sql.commondText = "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()!=""){

                    sql.commondText = "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();

            sql.commondText = "SELECT DISTINCT CN FROM C";

            SqlDataAdapter sda = new SqlDataAdapter(sql.commondText, sql.connectionString);

            DataSet ds = new DataSet();

            sda.Fill(ds);

            listmn.DataSource = ds.Tables[0].DefaultView;

            listmn.DisplayMember = "CN";

            listmn.DisplayMember = listmn.DisplayMember.ToString().Trim();

           

        }

9.4更新模块代码设计

    private void upbtOK_Click(object sender, EventArgs e)

        {

            mySql sql = new mySql();

            sql.commondText = "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();

                        sqlme.commondText = "SELECT CNO FROM C WHERE CN='" + listmn.Text.ToString().Trim() + "'";

                        sqlme.runSql();

                        String temp = sqlme.table.Table.Rows[0]["CNO"].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();

                        sqlme.commondText = "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() != "")

                        {

                            sqlme.commondText = "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() != "")

                {

                    sql.commondText = "SELECT CNO FROM C WHERE CN='" + listmn.Text.ToString().Trim() + "'";

                    sql.runSql();

                    String temp = sql.table.Table.Rows[0]["CNO"].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();

                    sql.commondText = "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();

                            scTemp.commondText = "SELECT CNO FROM C WHERE CN='" + listmn.Text.ToString().Trim() + "'";

                            scTemp.runSql();

                            String cntemp = scTemp.table.Table.Rows[0]["CNO"].ToString();//获取课程号

                            scTemp.commondText = "SELECT SNO FROM SC WHERE SNO=" + upStuNo.Text.ToString().Trim() + " AND CNO=" + cntemp;

                            scFlag = scTemp.getFlag();

                            if (scFlag)

                            {

                                sql.commondText = "UPDATE SC SET SCORE='" + upStuScore.Text.ToString().Trim() + "' WHERE SNO=" + upStuNo.Text.ToString().Trim() + " AND CNO=" + temp;

                                sql.update();

                            }

                        }

                        catch

                        {

                            sql.commondText = "INSERT INTO SC(SNO,CNO,SCORE) VALUES (" + upStuNo.Text.ToString().Trim()

                                          + "," + temp + "," + upStuScore.Text.ToString().Trim() + ");";

                            sql.update();

                        }

                    }

                    this.Close();

                }

                else

                {

                    MessageBox.Show("学号、姓名和专业名称都不可以为空!!!", "错误!");

                }

            }

        }

更多相关推荐:
工程预算课程设计总结

课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着工程技术发展的日新日异,工程造价已经成为当今建筑工程领域最为重要的管理环…

c++课程设计总结

课程设计总结经过一个学期对《C++程序设计》的学习,我学习到了基本的理论知识,了解到了C++语言程序设计的思想,这些知识都为我的课程实践和进一步的学习打下了坚实的基础。在为期近两周的C++课程设计中,我体会颇多…

化工原理课程设计总结

《化工原理课程设计》总结本学期顺利完成了化学工程与工艺专业共100名同学的化工原理课程设计,总体来看学生的工艺计算、过程设计及绘图等专业能力得到了真正有效的提高,可以较好地把理论学习中的分散知识点和实际生产操作…

PLC自动门课程设计心得体会

PLC自动门课程设计心得体会:通过此次C语言程序设计实践本人实在是获益不浅!C语言是上个学期开的课程所以这个学期并没怎么看过当要开始设计的时候还真不知从哪下手!结果第一次的上机我傻坐着不知道该做什么后来就写了几…

课程设计心得体会

课程设计心得体会在初学C语言的一个学期后,学校组织我们进行了C语言实训,尝试编写一些有难度的程序。在为期两周的时间中,同组同学共同的感受是:C语言实训和平时上课所接触的程序是完全不同的,所经受的考验是平时所无法…

综合实践活动课程设计练习题(判断题、填空题、名词解释、简答题)

单选题第1题(3.0)分下列以研究性为主的探究活动的实施程序哪个是正确的√A、产生问题-确定主题-组建小组-制定计划-开展活动-总结成果-展示交流-评价反思B、产生问题--组建小组-确定主题-制定计划-开展活动…

20xx年《管理信息系统》课程设计论文选题

20xx年《管理信息系统》课程设计论文选题一、管理信息系统设计与开发1、IT行业市场情报管理信息系统设计与开发2、某工业企业生产业务处理信息系统设计与开发3、某产品质量管理信息系统设计与开发4、某工业企业设备管…

消防课程设计范文.doc

课程设计课题名称所在班级同组姓名指导教师目录1前言12简介13火灾危险性分析231学生公寓的火灾特点232学生公寓的火灾危险性等级233学生公寓的耐火等级2331建筑物耐火等级的划分2332建筑物耐火等级的选定...

化工原理课程设计范文

化工原理课程设计3题目吸收量为2400mh水吸收丙酮过程填料塔设计教学院专业班级学生姓名学生学号指导教师20xx年12月24日I目录任务书1摘要2第一章绪论311吸收技术概况312吸收设备的发展313吸收过程在...

毕业论文及课程设计参考模版

摘要摘要电信营业厅顾客排队是一个常见的现象为了提高顾客满意度并为实现电信企业转型提供保障必须解决好这个问题而解决该问题的基本目标是平稳波动的顾客需求与电信营业厅有限的服务能力之间的矛盾本文基于排队论和需求管理的...

课程设计排版范本

课程设计课题名称我校顺枫公寓A6栋的消防现状分析与改进专业名称安全工程所在班级安本0803班设计者解燕同组人姜琼学号0860124031008601240212指导教师胡鸿湖南工学院课程设计任务书安全与环境工程...

创新课程设计范例

机械创新设计课程设计院系班级成员指导老师设计题目1年月日多功能平口钳设计方案一设计任务简述多功能平口钳为了实现平口钳的多功能化解决平口钳功能单一的问题设计出一种多功能平口钳其我们将钳口作成燕尾槽结构并配合以不同...

课程设计(518篇)