C#学生成绩管理系统课程设计报告

时间:2024.4.20

C#课程设计报告

20##年1月1日

目录

第一章 绪 论... 1

1.1 设计目的... 1

1.2 开发工具选择... 1

1.3 开发环境... 1

1.4 本报告的主要内容... 1

第二章 需求分析... 2

2.1系统需求简介... 2

2.1.1系统目标... 2

2.1.2功能需求分析... 2

2.1.3性能需求分析... 2

第三章 总体设计... 3

3.1设计概述... 3

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

3.2.1学生信息查询模块... 3

3.2.2学生信息管理模块... 4

3.3系统数据库概念结构设计... 4

3.3.1系统E-R图... 4

3.3.2系统数据库的设计... 5

3.4安全保密设计... 6

3.4.1用户登录安全性... 6

第四章 详细设计... 7

4.1概述... 7

4.2系统程序流程图... 7

4.3系统主要功能模块简介... 8

4.3.1系统登录... 8

4.3.2学生信息查询模块... 8

4.3.3学生信息管理模块... 9

第五章 主要功能模块代码... 11

5.1 公共类代码设计... 11

5.2 登录界面代码设计... 13

5.3 查询模块代码设计... 14

5.4 添加模块代码设计... 15

5.5 更新模块代码设计... 16

5.6 删除模块代码设计... 19

第六章 课程设计心得... 20


第一章    绪 论

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.1学生信息查询模块

学生信息查询:学生可以根据学号、姓名、专业进行查询。如图3.2.2学生信息查询模块结构。

图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.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#\课程设计\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(), "提示");

                }

            }

          

               

        }

}

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

            }

        }

5.3 查询模块代码设计

        private void btQuery_Click(object sender, EventArgs e)

        {

            mySql query=new mySql();

            if (sNInput.Text.Trim() == ""&& sNoinput.Text.Trim()!="") query.commondText = "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() == "") query.commondText = "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() != "") query.commondText = "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();

                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();

           

        }

5.5 更新模块代码设计

    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("学号、姓名和专业名称都不可以为空!!!", "错误!");

                }

            }

        }

5.6 删除模块代码设计

            private void 删除记录ToolStripMenuItem_Click(object sender, EventArgs e)

        {

            mySql del = new mySql();

            String temp = this.dataGridView1.CurrentRow.Cells[0].Value.ToString();

            if(MessageBox.Show("确定要删除此条记录?", "提示",MessageBoxButtons.OKCancel)==DialogResult.OK)

            {

                del.commondText = "DELETE FROM SC WHERE SNO=" + temp;

                del.runSql();

                del.commondText = "DELETE FROM S WHERE SNO=" + temp;

                del.runSql();

                this.dataGridView1.Rows.Remove(this.dataGridView1.CurrentRow);

            }

        }


第六章   课程设计心得

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

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

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

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

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

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

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

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

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

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

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

更多相关推荐:
学生成绩管理系统设计报告

电子信息科学与技术专业课程设计题单班级_***_学生***课程名称专业课程设计_课题密码锁的设计设计要求利用visualc#作为前台开发工具,SQLServer后台数据库管理,实现一学生成绩管理系统。实现具体功…

数据结构课程设计——学生成绩管理系统报告书

课程设计报告书设计名称题目学生姓名专业班别学号指导老师日期年XXX一问题描述设计目的1掌握线性链表的建立2掌握线性链表的基本操作3掌握查找的基本算法设计内容利用线性链表实现学生成绩管理系统具体功能输入输出插入删...

java学生成绩管理系统课程设计报告

山东交通学院java语言课程设计题目学生成绩管理系统系部信息科学与电气工程学院专业信息管理及信息系统班级信管111姓名田忠平学号110813125指导教师庞希雨时间20xx年4月1日至4月14日共2周指导教师签...

java学生成绩管理系统课程设计报告以及代码共享

java学生成绩管理系统课程设计报告以及代码共享Java语言课程期末作业题目第9题学生成绩管理系统学院计算机学院专业计算机科学与技术班别学号姓名20xx年12月7日一课程题目设计一个简易的学生成绩管理系统用于记...

C#学生成绩管理系统课程设计报告

目录摘要1第一章绪论错误未定义书签11设计目的错误未定义书签12开发工具选择错误未定义书签13开发环境错误未定义书签14本报告的主要内容错误未定义书签第二章需求分析错误未定义书签21系统需求简介2211系统目标...

C语言学生成绩管理系统课程设计报告

C语言课程设计报告一问题描述题目七学生成绩管理系统设计学生成绩信息包括学期学号班别姓名四门课程成绩语文数学英语和计算机等主要功能1能按学期按班级完成对学生成绩的录入修改2能按班级统计学生的成绩求学生的总分及平均...

数据库课程设计报告学生成绩管理系统

数据库原理及应用课程设计报告目录1引言111课程设计选题112课程设计的目的113课程设计的背景12系统分析与设计221功能及性能分析2211功能需求222系统的开发运行环境223系统总体设计23数据库设计33...

Java课程设计报告学生成绩管理系统

中南民族大学管理学院学生课程设计报告课程名称Java语言课程设计题目学生成绩管理系统年级20xx专业信息管理与信息系统学号姓名SPLJH指导教师张晴完成地点管理学院综合实验室完成日期目录1题目描述和分析12问题...

C_学生成绩管理系统课程设计报告[1]

C程序设计课程设计报告20xx20xx学年第2学期题目专业计算机应用班级11计应姓名学号指导教师成绩20xx年12月17日目录摘要1第一章绪论211设计目的212开发工具选择213开发环境214本报告的主要内容...

学生成绩管理系统设计报告

南昌航空大学计算机课程设计测试与光电工程学院课程设计任务书系班学号课题名称学生成绩管理系统的设计课题要求使用C语言设计学生成绩管理系统设计的编程学生成绩信息包括学期学号班级姓名四门课程成绩语文数学英语电路等主要...

学生成绩管理系统程序设计报告

程序设计报告201201学年第学期题目学生成绩管理系统专业软件工程NIIT学生姓名杨金霖班级学号B120xx015指导教师成小惠指导单位计算机软件学院日期20xx326学生成绩管理系统一课题内容和要求设计一个简...

C语言课程设计报告 学生成绩管理系统

C语言课程设计报告题目学生成绩管理系统学院计算机与信息工程学院专业信息管理与信息系统班级09级1班学号094631105姓名阿布都许克尔尔肯指导老师达新民成绩20xx年5月18日C语言程序设计课程设计报告一课程...

学生成绩管理系统课程设计报告(29篇)