學(xué)生成績(jī)管理系統(tǒng) 課程設(shè)計(jì)
課程設(shè)計(jì)報(bào)告
課程名稱 Visual C#.Net 程序設(shè)計(jì)教程
項(xiàng)目名稱 學(xué)生成績(jī)管理系統(tǒng)
班級(jí)與班級(jí)代碼 09信管一班
實(shí)驗(yàn)室名稱(或課室) S-403
專 業(yè) 信息管理與信息系統(tǒng)
任課教師 朱若磊
學(xué) 號(hào): 09251101121
姓 名: 李建波
提交日期: 2012 年 6 月 28 日
廣東商學(xué)院教務(wù)處 制
姓名 李建波 報(bào)告成績(jī)
評(píng)語(yǔ):
指導(dǎo)教師(簽名)
年 月 日
說(shuō)明:指導(dǎo)教師評(píng)分后,實(shí)驗(yàn)報(bào)告交院(系)辦公室保存。
.NET程序設(shè)計(jì)開(kāi)發(fā)課程設(shè)計(jì)
項(xiàng)目任務(wù):(本人)
一、項(xiàng)目名稱
學(xué)生成績(jī)管理系統(tǒng)
二、項(xiàng)目背景
在21世紀(jì)的科技時(shí)代,科學(xué)技術(shù)突飛猛進(jìn),計(jì)算機(jī)已經(jīng)不僅是在科技上應(yīng)用,而且在生活中也是同樣得到了廣泛在應(yīng)用。如今,不管是小學(xué),初中,高中,甚至是很多大學(xué)生的學(xué)生成績(jī)管理基本上是靠人工進(jìn)行管理,但隨著時(shí)間的變化,學(xué)校規(guī)模的擴(kuò)大,有關(guān)學(xué)生成績(jī)管理工作和所涉及到的數(shù)據(jù)量越來(lái)越大越來(lái)越多,大多數(shù)學(xué)校不得不靠增加人力,物力,財(cái)力來(lái)進(jìn)行學(xué)生成績(jī)管理。但是人工管理成績(jī)檔案具有效率低,查找麻煩,可靠性不高,保密性低等因素。因此開(kāi)發(fā)出一個(gè)不僅僅是適用于大中專院校以及其它高校通用的學(xué)生成績(jī)管理系統(tǒng)是必要的。
本團(tuán)隊(duì)就此開(kāi)發(fā)一個(gè)學(xué)生成績(jī)管理系統(tǒng),采用計(jì)算機(jī)對(duì)學(xué)生成績(jī)進(jìn)行管理,以進(jìn)一步提高辦學(xué)效益和現(xiàn)代化水平,為廣大教師和學(xué)生提高工作效率,實(shí)現(xiàn)學(xué)生成績(jī)信息管理工作流程的系統(tǒng)化,規(guī)范化和自動(dòng)化。
三、開(kāi)發(fā)環(huán)境分析
使用Microsoft Visual Studio 2005開(kāi)發(fā)、使用C#.NET語(yǔ)言編程,后臺(tái)數(shù)據(jù)庫(kù)選擇SQL Server 2005。
四、項(xiàng)目要求
設(shè)計(jì)一個(gè)比較完善的學(xué)生選課管理系統(tǒng),其中要求后臺(tái)的數(shù)據(jù)庫(kù)利用SQL Server來(lái)完成(可以使用.NET自帶的SQL Express),功能具體要求如下:
(1)登錄功能;
(2)學(xué)生信息管理功能;
(3)課程信息管理功能;
(4)學(xué)生成績(jī)管理功能;
(5)實(shí)現(xiàn)將查詢結(jié)果保存到硬盤的功能;
(6)修改相關(guān)數(shù)據(jù)庫(kù)結(jié)構(gòu)并據(jù)此實(shí)現(xiàn)基本選課功能
(7)任選(1)—(4)項(xiàng)中的一項(xiàng),將其利用ASP.NET來(lái)實(shí)現(xiàn);
設(shè)計(jì)項(xiàng)目成立與項(xiàng)目實(shí)施
一、 項(xiàng)目組長(zhǎng)
組長(zhǎng):李建波
二、 設(shè)計(jì)項(xiàng)目分工
小組成員:彭健鋒,陳志明,張?zhí)?,周敏?qiáng),成思謀,李建波。
小組分工情況如下:
一、項(xiàng)目組長(zhǎng):
組長(zhǎng):李建波
二、設(shè)計(jì)項(xiàng)目分工:
小組成員:彭健鋒,陳志明,張?zhí)帲苊魪?qiáng),成思謀,李建波。
小組分工情況如下:
1、張?zhí)帲贺?fù)責(zé)登錄功能:Login.cs;并將其利用ASP.NET來(lái)實(shí)現(xiàn);
2、彭健鋒:負(fù)責(zé)學(xué)生信息添加(StudentMsgFrm.cs)、管理功能(StudentFrm.cs);
3、陳志明:負(fù)責(zé)課程信息添加(CourseMsgFrm.cs)和管理功能(CourseFrm.cs);
4、成思謀:負(fù)責(zé)學(xué)生成績(jī)管理功能(ScoreMsgFrm.cs);
5、周敏強(qiáng):實(shí)現(xiàn)將查詢結(jié)果保存到硬盤的功能(select)(統(tǒng)一數(shù)據(jù)庫(kù));
6、李建波:實(shí)現(xiàn)學(xué)生基本選課功能(整合全部功能)(selectcourse)。
三、 項(xiàng)目實(shí)施過(guò)程:
1、數(shù)據(jù)庫(kù)設(shè)計(jì)和連接是使用SQL Server 2005設(shè)計(jì)的,在.Net用connectionString連接數(shù)據(jù)庫(kù)。
關(guān)鍵代碼如下:
{ InitializeComponent();
connString = @"Data Source=local;Initial Catalog=MySchool;Integrated Security=True";
connection = new SqlConnection(connString); }
catch (Exception ex)
{
MessageBox.Show(ex.Message,"數(shù)據(jù)庫(kù)操作出錯(cuò)了!",
MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
}
2、實(shí)現(xiàn)學(xué)生基本選課功能(整合全部功能),新建一個(gè)selectcourse.cs窗體,在窗體添加3個(gè)label控件,1個(gè)listbox控件,1個(gè)Richtxtbox和2個(gè)Button,設(shè)置兩個(gè)數(shù)據(jù)源MySchoolDataSet1,MySchoolDataSet2
2.1按下列要求修改屬性項(xiàng):
控件
屬性
屬性設(shè)置
控件
屬性
屬性設(shè)置
Label1
Name
Label
Listbox
Name
Cdoclass
Text
名字
Label2
Name
Label2
Richtxtbox
Name
Richtxtbox
Text
信息如下:
Label3
Name
Label3
Button1
Name
Button1
Text
Text
選他了
MySchoolDataSet
Button2
Name
Button2
Text
退出
如下圖:2.1
圖:2.1界面設(shè)計(jì)
2.4設(shè)計(jì)的關(guān)鍵代碼:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using MySchool;
using System.Data.SqlClient;
namespace MySchool
{
public partial class selectcourse : Form
{
public selectcourse()
{
InitializeComponent();
}
private void selectcourse_Load(object sender, EventArgs e)
{
// TODO: 這行代碼將數(shù)據(jù)加載到表“mySchoolDataSet2.CourseMsg”中。您可以根據(jù)需要移動(dòng)或移除它。
this.courseMsgTableAdapter1.Fill(this.mySchoolDataSet2.CourseMsg);
// TODO: 這行代碼將數(shù)據(jù)加載到表“mySchoolDataSet.CourseMsg”中。您可以根據(jù)需要移動(dòng)或移除它。
this.courseMsgTableAdapter.Fill(this.mySchoolDataSet.CourseMsg);
string connString = @"Data Source=(local);Initial Catalog=MySchool;Integrated Security=True";
SqlConnection connection = new SqlConnection(connString);
string sql = String.Format("select cc from [tablea] where enroll=1");
connection.Open();
SqlCommand command = new SqlCommand(sql, connection);
string num =(string )command.ExecuteScalar();
string message = String.Format("你好! {0}先生", num);
label3.Text = num;
label1.Text = message;
connection.Close();
}
private void aa_Click(object sender, EventArgs e)
{
string connString = @"Data Source=(local);Initial Catalog=MySchool;Integrated Security=True";
SqlConnection connection = new SqlConnection(connString);
string sql = String.Format("update tablea set enroll=0 where enroll=1");
connection.Open();
SqlCommand command = new SqlCommand(sql, connection);
command.ExecuteNonQuery();
this.Close();
}
private void cboClass_SelectedIndexChanged(object sender, EventArgs e)
{
string kk = cboClass.Text;
string connString = @"Data Source=(local);Initial Catalog=MySchool;Integrated Security=True";
SqlConnection connection = new SqlConnection(connString);
string sql = String.Format("select CourseClass from [CourseMsg] where CourseName={0}",kk);
string sql2 = String.Format("select Credit from [CourseMsg] where CourseName={0}", kk);
string sql3 = String.Format("select PrelectionCredit from [CourseMsg] where CourseName={0}", kk);
string sql4 = String.Format("select ExperimentCredit [CourseMsg] where CourseName={0}", kk);
connection.Open();
SqlCommand command = new SqlCommand(sql, connection);
SqlCommand command2 = new SqlCommand(sql2, connection);
SqlCommand command3= new SqlCommand(sql3, connection);
SqlCommand command4 = new SqlCommand(sql3, connection);
string num = (string)command.ExecuteScalar();
int num2 = (int)command2.ExecuteScalar();
int num3 = (int)command3.ExecuteScalar();
int num4 = (int)command4.ExecuteScalar();
string message = String.Format("{0}", num);
richTextBox1.Text = message;
label2.Text = "學(xué)分"+num2+"理論課時(shí):"+num3+"實(shí)驗(yàn)課時(shí)"+num4;
connection.Close();
}
private void button1_Click(object sender, EventArgs e)
{
string connString = @"Data Source=(local);Initial Catalog=MySchool;Integrated Security=True";
SqlConnection connection = new SqlConnection(connString);
string sql = String.Format("INSERT INTO ScoreMsgMe(StudentName,CourseName,Score) VALUES({0},{1},{2})", label3.Text, cboClass.Text, 0);
connection.Open();
SqlCommand command = new SqlCommand(sql, connection);
command.ExecuteNonQuery();
}
}
}
四、 結(jié)果演示:
數(shù)據(jù)庫(kù)設(shè)計(jì)
1 ER圖
E-r圖,如上圖
2 數(shù)據(jù)庫(kù)表
學(xué)生課程關(guān)系圖
User表結(jié)構(gòu)
列名
數(shù)據(jù)類型
說(shuō)明
UserName
nvarchar(50)
管理員用戶名,不允許為空,主鍵
password
nvarchar(50)
管理員密碼,不允許為空
StudentMsg表結(jié)構(gòu)
列名
數(shù)據(jù)類型
說(shuō)明
StudentNo
int(4)
學(xué)號(hào),主鍵,標(biāo)識(shí)列
StudentName
nvarchar(50)
學(xué)生姓名,不允許為空
sex
nchar(10)
性別
department
nvarchar(50)
院系
speciality
nvarchar(50)
專業(yè)
Hobby
nvarchar(200)
興趣愛(ài)好
password
nvarchar(8)
學(xué)生登錄密碼,默認(rèn)值1111
enroll
bit(1)
學(xué)生登錄狀態(tài),默認(rèn)值為0
CourserMsg表結(jié)構(gòu)
列名
數(shù)據(jù)類型
說(shuō)明
CouresId
int(4)
課程編號(hào),主鍵,標(biāo)識(shí)列
CourseName
nvarchar(50)
課程名稱,不允許為空
CourseClass
nvarchar(50)
課程類別
Required
bit(1)
是否必修
Credit
int(4)
學(xué)分
PrelectionCredit
int(4)
理論學(xué)時(shí)
ExperimentCredit
int(4)
實(shí)驗(yàn)學(xué)時(shí)
ScoreMsg表結(jié)構(gòu)
列名
數(shù)據(jù)類型
說(shuō)明
StudentNo
int(4)
學(xué)號(hào),主鍵,外鍵
CourseId
int(4)
課程編號(hào),主鍵
Score
int(4)
成績(jī)
User表數(shù)據(jù)
StudentMsg表數(shù)據(jù)
CourseMsg表數(shù)據(jù)
ScoreMsg表數(shù)據(jù)
2、結(jié)果演示:學(xué)生登錄
圖4.2.1
學(xué)生應(yīng)用界面 圖4.2.2
學(xué)生選課信息:圖4.2.3
選好課程后,點(diǎn)擊“選它了”按鈕,選課成功。信息記錄到表上。
選課
五、課程設(shè)計(jì)總結(jié):
本次實(shí)驗(yàn)是要團(tuán)隊(duì)建立一個(gè)學(xué)生成績(jī)管理系統(tǒng),以實(shí)現(xiàn)快捷,高效,準(zhǔn)確保存學(xué)生的基本信息,課程信息,成績(jī)信息,還有實(shí)現(xiàn)選課功能。