C#学生成绩管理系统

更新时间:2024-04-13 18:56:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C#课程设计

姓名: 班级: 学号: 指导老师:

1

简介

该系统是用Visua Studio2010和Access 2007,通过C#语言进行相关代码的编写,生成相关程序。学生成绩管理系统是构建于Visual C#.NET平台上的Windows应用程序。本文描述的是基于Windows

环境的学生成绩管理系统,主要工具

Microsoft Visual Studio 2010 设计窗体,Access 2007建立数据库, 学生成绩管理管理系统为用户提供充足的信息和快捷的查询手段,实现学生基本信息、成绩的录入,删除,查询,维护以及成绩的统计分析等几方面的功能,是现实问题的迫切要求。

本篇报告介绍一个学生信息管理系统的从分析到设计最后到开发的全过程为,给出了学生信息管理系统的设计和技术实现的过程,特别在细节上分析功能和函数的实现思想。涉及到学生信息管理的基本功能在本报告中都有相应的描述。管理信息系统正在向着网络化、智能化和集成化等趋势发展。学生成绩管理系统是为了更好的管理学生考试成绩而开发的数据管理软件。它对于一个学校是不可缺少的重要部分,它的内容对于学校的决策者和管理者来说都至关重要。

在这次的课程设计中,让我了解到Microsoft Visual Studio 2010,同时学习了Access数据库的建立和连接与导入。能在Visual C#.NET平台上进行Access数据库的修改与控制,将C#语句与SQL语句混合使用, 成功的完成了学生成绩管理系统的整体设计,加深巩固了选择的条件语句,还有曾经学习过的基本运算语句,同时也为以后的进一步学习垫下了了良好的基础。

2

目录

第一章 绪论……………………………………………………4 1.1设计目的…………………………………………………4

1.2开发工具选择……………………………………………4 1.3开发环境…………………………………………………4

第二章 需求分析………………………………………………5

2.1系统目标…………………………………………………5 2.2功能需求分析……………………………………………6 2.3性能需求分析……………………………………………6

第三章 总体设计………………………………………………7

3.1设计概述…………………………………………………7 3.1功能模块设计……………………………………………7

第四章 数据库设计……………………………………………8

4.1数据库需求分析………………………………………8 4.2数据库表设计…………………………………………9

第五章 详细设计………………………………………………10

5.1系统程序流程图…………………………………………11 5.2系统主要功能模块………………………………………13

5.2.1系统登录……………………………………………13 5.2.2学生登录模块………………………………………15 5.2.3管理员登录模块……………………………………20

第六章 总结………………………………………………………41

3

第一章 绪论

1.1 课程设计目的

本次课程设计的目的是使学生能熟练掌握简单的简单Windows窗体应用程序的设计和.net的应用,复习熟练基本运算符,和基本的条件语句、判断语句,将Access的使用和Microsoft Visual Studio 2010的使用结合起来,希望通过本次的课程设计锻炼我们使用C#语言解决实际问题的能力。 1.2 系统开发环境

系统开发平台:Microsoft Visual Studio 2010 系统开发语言C# 数据库管理软件:Access 系统开发程序 本系统后台数据库采用Access 数据库,该数据库系统在安全性、准确性和运行速度方面有绝对的优势,并且处理数据量大,效率高;前台采用Microsoft 公司的Visual Studio 2010作为主要开发工具,可与Access 2007数据库无缝链接。

1.4 报告主要内容

本报告详细的介绍了学生信息管理系统的开发过程,主要涉及到的工作如下:系统的需求分析、系统的总体设计设计思路、系统的数据库设计、系统各模块的详细设计、系统运行测试。

4

第二章 需求分析

2.1 系统设计目标

(1)登录模块中,有不同的权限设置,分为学生登录和管理员登录 (2)学生用户可根据不同的用户名和相应的密码进行登录,并可修改密码。

(3)管理员可以根据不同的用户名和相应的密码进行登录,并可修改密码。

(4)学生界面中学生可以按照姓名,学号,邮箱来查询成绩 (5)管理员界面中管理员可以实现学生成绩的录入,删除,修改,查询,成绩的分析,将成绩导出到Excel表中,还可以根据成绩画出柱状图。 2.2 功能需求分析

本系统的功能需求分析如下:

(1) 学生密码修改:学生可在成功登录后对自己的密码进行修改,

以防个人信息外泄。

(2) 学生成绩查询:学生根据姓名,学号,邮箱进行查询。 (3) 学生成绩和信息的录入:用于学生成绩管理,录入学生成绩

和学生个人信息,也可以实现对成绩的其他操作。 2.3 性能需求分析

(1) 登录、用户界面需求:简洁、易懂、易用、友好的用户界面。 (2) 安全保密性需求:只有凭借用户名和密码登陆系统,才能进

行信息的管理,同时也可以进行密码修改。

5

(3) 数据分析需求:可根据学生要求进行条件查询,分不同的姓

名,学号,邮箱进行相应查询。

(4) 数据统计要求:可对学生成绩和个人信息进行添加更改和删

除。

6

第三章 总体设计

3.1 设计总体概述

根据需求把整个系统分化成不同的模块,每个模块完成一个特定的子功能。把这些模块结合起来组成一个整体。逐一实现各个功能; 3.2功能模块设计

(1)登录模块,根据不同权限,链接数据库,然后登录。 (2)管理员登录模块,在此模块中有成绩查询,修改,删除,添加,分析,导出Excel表,绘出矩形图,退出登录,帮助,密码修改等功能模块。

(3)学生登录模块,在此模块中有查询,退出登录,帮助,密码修改等模块功能。

(4)成绩查询模块,连接数据库,用SELECT语句实现 (5)成绩修改模块,连接数据库,用UPDATE语句实现 (6)成绩删除模块,连接数据库,用DELETE语句实现 (7)成绩添加模块,连接数据库,用INSERT语句插入实现 (8)成绩分析模块,连接数据库,读出数据库中的成绩,按照个门成绩分别求出他们的最高分,最低分,平均分等。

(9)导出Excel表模块,将想要保存的信息导出到Excel表中 (10)绘出矩形图模块,根据成绩分析模块绘出矩形图。 (11)退出登录模块,退出当前登录,切换用户 (12)帮助模块,给与一些非法操作的解决办法 (13)密码修改模块,修改当前用户的密码

7

第四章 数据库设计

4.1数据库需求分析

数据库中存储学生的基本信息和成绩、管理员和学生的登录号和密码。

4.2数据库的E-R图如下

4.3数据库表设计

管理员 用户名 密码 学号 姓名 班级 学生 性别 邮箱 密码 成绩 本系统在登录时需要验证使用者的身份,用户需要输入用户名和密码,所建立的数据库表如下: 1、管理员表:

2、学生表:

8

3、学生基本信息和成绩表:

9

第五章 详细设计

5.1 系统总体结构

经过对系统的需求分析,学生成绩管理系统主要划分为两个部分:学生成绩查询,管理员模块。

学生登录模块 成绩管理系统 管理员登录模块 系统程序模块流程图:

10

成 绩查 询 密码修改 退出登录 帮助 学生登录模块 成绩管理系统 管理员登录模块 成绩管理 其他

11

成绩添加 成绩查询 成绩修改 成绩删除 成绩分析 到导处出Excel表 绘出矩形图 帮助 退出登录 密码修改 5.1.1学生登录模块

成绩查询 学生登录模块 密码修改 帮助 退出登录 5.1.2管理员登录模块

管理员登录模块 成绩管理 其他 成绩添加 成绩查询 成绩修改 成绩删除 成绩分析 导出Excel表 绘出矩形图 帮助 密码修改 退出登录 12

5.2系统主要功能模块 5.2.1系统登录模块 登录:

代码:

private void buttonLogin_Click(object sender, EventArgs e) {

//判断登录状态并弹出对应提示框

if ((BoxUser.Text.Trim() == string.Empty) || (BoxPassword.Text.Trim() == string.Empty)) {

MessageBox.Show(\请输入用户名或密码\ } else {

if (this.student.Checked == true) {

string user = BoxUser.Text;

string password = BoxPassword.Text;

string strConnection = \ strConnection += @\Application.StartupPath + \

OleDbConnection objConnection = new OleDbConnection(strConnection);

13

objConnection.Open();

OleDbCommand objCommand = new OleDbCommand(\ DataSet ds = new DataSet();

OleDbDataAdapter sda= new OleDbDataAdapter(\from student \

sda.Fill(ds, \

OleDbDataReader reader = objCommand.ExecuteReader(); int i;

for (i = 0; i < ds.Tables[\ {

reader.Read();

if (reader[\reader[\ {

this.DialogResult = DialogResult.OK; this.Close(); break; } }

if (i == ds.Tables[\

MessageBox.Show(\用户名或者密码输入有误!\ // 关闭Reader. reader.Close();

objConnection.Close(); }

else if (this.admin.Checked == true) {

string user = BoxUser.Text.ToString();

string password = BoxPassword.Text.ToString();

string strConnection = \ strConnection += @\+ \

OleDbConnection objConnection = new OleDbConnection(strConnection);

objConnection.Open();

OleDbCommand objCommand = new OleDbCommand(\ DataSet ds = new DataSet();

OleDbDataAdapter sda = new OleDbDataAdapter(\from admin \

sda.Fill(ds, \

OleDbDataReader reader = objCommand.ExecuteReader(); int i;

14

for (i = 0; i < ds.Tables[\ {

reader.Read();

if (reader[\reader[\ {

this.DialogResult = DialogResult.OK; this.Close(); break; } }

if (i == ds.Tables[\

MessageBox.Show(\用户名或者密码输入有误!\ // 关闭Reader. reader.Close();

objConnection.Close(); } } }

5.2.2学生登录模块 (1)学生界面模块

(2)成绩查询模块

15

代码:

//查询学生信息

string checkInfo = \

string strConnection = \

strConnection += @\Source=\+ Application.StartupPath + \

OleDbConnection objConnection = new OleDbConnection(strConnection); objConnection.Open();

OleDbCommand objCommand = new OleDbCommand(\information\

OleDbDataReader reader = objCommand.ExecuteReader();

switch (flag) //分别根据姓名,学号,邮箱查询学生信息

{

case 1:

checkInfo = textBox1.Text.ToString(); break; case 2:

checkInfo = textBox2.Text.ToString(); break; case 3:

checkInfo = textBox3.Text.ToString(); break; }

16

if (checkInfo.Length == 0 || checkInfo.Trim() == string.Empty) {

//输入查询信息为空,直接列出所有学生信息 this.listViewInfo.Items.Clear(); this.init(reader); } else {

//依据输入查询信息checkInfo查询学生信息并显示到显示区 this.listViewInfo.Items.Clear(); while (reader.Read()) {

if (reader[\|| reader[\

|| reader[\ {

ListViewItem lvi = new ListViewItem(reader[\

lvi.SubItems.Add(reader[\ lvi.SubItems.Add(reader[\ lvi.SubItems.Add(reader[\ lvi.SubItems.Add(reader[\

lvi.SubItems.Add(reader[\ lvi.SubItems.Add(reader[\ lvi.SubItems.Add(reader[\ this.listViewInfo.Items.Add(lvi); } } }

// 关闭Reader. reader.Close();

objConnection.Close();

(3)密码修改模块

17

代码:

private void toolStripMenuItem8_Click(object sender, EventArgs e) {

xiugaimima2 xiu = new xiugaimima2(); xiu.Show(); }

private void button1_Click(object sender, EventArgs e) {

string user = tbusername.Text; string password = tbpassword.Text;

string strConnection = \

strConnection += @\Source=\+ Application.StartupPath + \

OleDbConnection objConnection = new OleDbConnection(strConnection); objConnection.Open();

OleDbCommand objCommand = new OleDbCommand(\student\

DataSet ds = new DataSet();

OleDbDataAdapter sda = new OleDbDataAdapter(\* from student \

sda.Fill(ds, \

OleDbDataReader reader = objCommand.ExecuteReader(); int i;

for (i = 0; i < ds.Tables[\ {

reader.Read(); if (reader[\&&

18

reader[\ {

string s = \student set [username]='\+ user + \ OleDbCommand cmd = new OleDbCommand(s, objConnection);

cmd.ExecuteNonQuery();

MessageBox.Show(\修改成功!\ break; } }

if (i == ds.Tables[\ MessageBox.Show(\请确认密码!\ // 关闭Reader. reader.Close();

objConnection.Close(); }

(4)退出登录模块

private void toolStripMenuItem1_Click(object sender, EventArgs e) {

Application.Restart(); }

(5)帮助模块

private void toolStripMenuItem4_Click(object sender, EventArgs e) {

MessageBox.Show(\请确定是不是没考!\ }

private void toolStripMenuItem6_Click(object sender, EventArgs e) {

MessageBox.Show(\请联系管理员!\ }

private void toolStripMenuItem7_Click(object sender, EventArgs e) {

MessageBox.Show(\请联系老师!\ }

19

5.2.3管理员登录模块 (1)管理员界面模块

(2)成绩添加模块

代码:

20

private void toolStripMenuItem3_Click(object sender, EventArgs e) {

//初始化信息录入窗口,进行输入 InfoInput inputForm = new InfoInput(); inputForm.Show(); }

private void buttonAdd_Click(object sender, EventArgs e) {

//将学生信息录入 string sex;

if (this.radioButtonMale.Checked) sex = \男\ else

sex = \女\

string strConnection = \ strConnection += @\\

OleDbConnection objConnection = new OleDbConnection(strConnection);

OleDbCommand cmd = new OleDbCommand(\[information] \

%ues ('\

this.textBoxName.Text + \+

this.textBoxClass.Text+ \\

this.textBoxCourse1.Text + \ this.textBoxCourse3.Text + \ objConnection.Open();

//添加成功或失败分别弹出对应提示框

if (cmd.ExecuteNonQuery() == 1 && (textBoxName.Text.Trim() != string.Empty) && (textBoxStudentID.Text.Trim() != string.Empty)) {

MessageBox.Show(\成功添加 \同学的信息!\

this.Close(); } else

MessageBox.Show(\添加失败,请确定是否添加该同学相关信息\

objConnection.Close();

21

}

(3)成绩查询模块

代码:

private void toolStripMenuItem1_Click(object sender, EventArgs e) {

//查询学生信息 string checkInfo = \

string strConnection = \ strConnection += @\\

OleDbConnection objConnection = new OleDbConnection(strConnection); objConnection.Open();

OleDbCommand objCommand = new OleDbCommand(\information\

OleDbDataReader reader = objCommand.ExecuteReader();

switch (flag) //分别根据姓名,学号,邮箱查询学生信息

{

case 1:

checkInfo = textBox1.Text.ToString(); break;

22

case 2:

checkInfo = textBox2.Text.ToString(); break; case 3:

checkInfo = textBox3.Text.ToString(); break; }

if (checkInfo.Length == 0 || checkInfo.Trim() == string.Empty) {

//输入查询信息为空,直接列出所有学生信息 this.listViewInfo.Items.Clear(); this.init(reader); } else {

//依据输入查询信息checkInfo查询学生信息并显示到显示区 this.listViewInfo.Items.Clear(); while (reader.Read()) {

if (reader[\reader[\

|| reader[\ {

ListViewItem lvi = new ListViewItem(reader[\

lvi.SubItems.Add(reader[\ lvi.SubItems.Add(reader[\ lvi.SubItems.Add(reader[\ lvi.SubItems.Add(reader[\

lvi.SubItems.Add(reader[\ lvi.SubItems.Add(reader[\ lvi.SubItems.Add(reader[\ this.listViewInfo.Items.Add(lvi); } } }

// 关闭Reader. reader.Close();

objConnection.Close(); }

(4)成绩修改模块

23

代码:

private void toolStripMenuItem2_Click(object sender, EventArgs e) {

if (this.listViewInfo.SelectedItems.Count <= 0) MessageBox.Show(\未选中修改项!\ else {

xiugai xi = new xiugai();

ListViewItem lvi = this.listViewInfo.SelectedItems[0];

string strConnection = \ strConnection += @\\

OleDbConnection objConnection = new OleDbConnection(strConnection);

objConnection.Open();

OleDbCommand objCommand = new OleDbCommand(\from information where name='\

+ lvi.Text.ToString() + \

OleDbDataReader reader = objCommand.ExecuteReader(); reader.Read();

xi.textBoxName.Text = reader[\

xi.textBoxStudentID.Text = reader[\ xi.textBoxClass.Text = reader[\ //sex = reader[\

24

if (reader[\男\

xi.radioButtonMale.Checked = true; else

xi.radioButtonFemale.Checked = true;

xi.textBoxEmail.Text = reader[\

xi.textBoxCourse1.Text = reader[\ xi.textBoxCourse2.Text = reader[\ xi.textBoxCourse3.Text = reader[\ //objConnection.Close();

//objCommand.ExecuteNonQuery(); objConnection.Close(); xi.Show(); } }

private void button1_Click(object sender, EventArgs e) {

string sex;

if(this.radioButtonMale.Checked==true) sex = \男\ else

sex = \女\

string strConnection = \ strConnection += @\\

OleDbConnection objConnection = new OleDbConnection(strConnection);

OleDbCommand cmd = new OleDbCommand(\name='\

\ourseOne='\ \this.textBoxName.Text + \ objConnection.Open(); cmd.ExecuteNonQuery(); objConnection.Close();

MessageBox.Show(\修改成功!\ }

(5)成绩删除模块

25

代码:

private void toolStripMenuItem4_Click(object sender, EventArgs e) {

if (this.listViewInfo.SelectedItems.Count <= 0) MessageBox.Show(\未选中删除项!\ else {

ListViewItem lvi = this.listViewInfo.SelectedItems[0];

this.listViewInfo.Items.Remove(lvi);

string strConnection = \ strConnection += @\\

OleDbConnection objConnection = new OleDbConnection(strConnection);

OleDbCommand cmd = new OleDbCommand(\information where name='\

+ lvi.Text.ToString() + \ objConnection.Open(); cmd.ExecuteNonQuery(); objConnection.Close();

MessageBox.Show(\删除成功!\ } }

(6)成绩分析模块

26

代码:

private void toolStripMenuItem5_Click(object sender, EventArgs e) {

cjfenxi cj = new cjfenxi(); cj.Show();

OleDbDataAdapter sda; DataSet ds;

OleDbConnection objConnection;

string strConnection = \ strConnection += @\\

objConnection = new OleDbConnection(strConnection); ds = new DataSet(); objConnection.Open();

sda = new OleDbDataAdapter(\objConnection);

OleDbCommand objCommand = new OleDbCommand(\courseOne from information\

OleDbDataReader reader = objCommand.ExecuteReader(); sda.Fill(ds, \

DataTable dtb = new DataTable(); sda.Fill(dtb);

DataRow[] dd = dtb.Select(\

27

//*********

// int k = ds.Tables[\ Int32 sum = 0;

Int32 max = 0, min = 100; Int32 i = 0, m = 0, n = 0; foreach (DataRow dr in dd) {

sum += Convert.ToInt32(dr[\ }

for (int j = 0; j < dd.Length; j++) {

if ((Convert.ToInt32(dd[j][\ max = Convert.ToInt32(dd[j][\ if ((Convert.ToInt32(dd[j][\ min = Convert.ToInt32(dd[j][\ if ((Convert.ToInt32(dd[j][\(Convert.ToInt32(dd[j][\ i++;

else if ((Convert.ToInt32(dd[j][\(Convert.ToInt32(dd[j][\ m++; else

n++;

}

float avg = (float)sum / (dd.Length); float jg = (float)i / (dd.Length); reader.Read();

// 将检索出来的数据,输出到listViewInfo(窗体显示区) cj.listView1.Items.Clear();

ListViewItem lvi = new ListViewItem(\语文\ lvi.SubItems.Add((avg).ToString()); lvi.SubItems.Add((max).ToString()); lvi.SubItems.Add((min).ToString()); lvi.SubItems.Add((jg).ToString()); lvi.SubItems.Add((i).ToString()); lvi.SubItems.Add((m).ToString()); lvi.SubItems.Add((n).ToString()); cj.listView1.Items.Add(lvi);

//***************************

DataRow[] dd1 = dtb.Select(\ //********* Int32 sum1 = 0;

Int32 max1 = 0, min1 = 100;

28

Int32 i1 = 0, m1 = 0, n1 = 0; foreach (DataRow dr in dd1) {

sum1 += Convert.ToInt32(dr[\ }

for (int j = 0; j < dd1.Length; j++) {

if ((Convert.ToInt32(dd1[j][\ max1 = Convert.ToInt32(dd1[j][\ if ((Convert.ToInt32(dd1[j][\ min1 = Convert.ToInt32(dd1[j][\ if ((Convert.ToInt32(dd1[j][\(Convert.ToInt32(dd1[j][\ i1++;

else if ((Convert.ToInt32(dd1[j][\&& (Convert.ToInt32(dd1[j][\ m1++; else

n1++;

}

float avg1 = (float)sum1 / (dd1.Length); float jg1 = (float)i1 / (dd1.Length); reader.Read();

// 将检索出来的数据,输出到listViewInfo(窗体显示区) ListViewItem lvi1 = new ListViewItem(\数学\ lvi1.SubItems.Add((avg1).ToString()); lvi1.SubItems.Add((max1).ToString()); lvi1.SubItems.Add((min1).ToString()); lvi1.SubItems.Add((jg1).ToString()); lvi1.SubItems.Add((i1).ToString()); lvi1.SubItems.Add((m1).ToString()); lvi1.SubItems.Add((n1).ToString()); cj.listView1.Items.Add(lvi1); //******************

DataRow[] dd2 = dtb.Select(\ //********* Int32 sum2 = 0;

Int32 max2 = 0, min2 = 100; Int32 i2 = 0, m2 = 0, n2 = 0; foreach (DataRow dr in dd2) {

sum2 += Convert.ToInt32(dr[\ }

29

for (int j = 0; j < dd2.Length; j++) {

if ((Convert.ToInt32(dd2[j][\ max2 = Convert.ToInt32(dd2[j][\ if ((Convert.ToInt32(dd2[j][\ min2 = Convert.ToInt32(dd2[j][\ if ((Convert.ToInt32(dd2[j][\(Convert.ToInt32(dd2[j][\ i2++;

else if ((Convert.ToInt32(dd2[j][\&& (Convert.ToInt32(dd2[j][\ m2++; else

n2++;

}

float avg2 = (float)sum2 / (dd2.Length); float jg2 = (float)i2 / (dd2.Length); reader.Read();

// 将检索出来的数据,输出到listViewInfo(窗体显示区) ListViewItem lvi2 = new ListViewItem(\英语\ lvi2.SubItems.Add((avg2).ToString()); lvi2.SubItems.Add((max2).ToString()); lvi2.SubItems.Add((min2).ToString()); lvi2.SubItems.Add((jg2).ToString()); lvi2.SubItems.Add((i2).ToString()); lvi2.SubItems.Add((m2).ToString()); lvi2.SubItems.Add((n2).ToString()); cj.listView1.Items.Add(lvi2); reader.Close();

objConnection.Close(); }

(7)导出Excel表

30

代码:

private void toolStripMenuItem6_Click(object sender, EventArgs e) {

ExportClass MyExcel = new ExportClass();

MyExcel.ListviewExportToExcel(listViewInfo, \学生信息\ }

class ExportClass {

public void ListviewExportToExcel(ListView st, string strTitle) {

SaveFileDialog saveFileDialog = new SaveFileDialog();

31

saveFileDialog.Filter = \ saveFileDialog.FilterIndex = 0;

saveFileDialog.RestoreDirectory = true; saveFileDialog.CreatePrompt = false;

saveFileDialog.FileName = strTitle + \

if (saveFileDialog.ShowDialog() == DialogResult.Cancel) //导出时,点击【取消】按钮 {

return; }

Stream myStream = saveFileDialog.OpenFile(); StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0));

string strHeaderText = \ try {

for (int i = 0; i < st.Columns.Count; i++) {

strHeaderText += st.Columns[i].Text; strHeaderText += \ }

sw.WriteLine(strHeaderText); string strItemValue = \

foreach (ListViewItem It in st.Items) {

strItemValue = \

for (int j = 0; j < st.Columns.Count; j++) {

strItemValue += It.SubItems[j].Text; strItemValue += \ }

sw.WriteLine(strItemValue); } }

catch (Exception ex) {

MessageBox.Show(ex.Message, \软件提示!\ throw ex; }

finally {

sw.Close();

myStream.Close();

32

} } }

(8)绘出矩形图

代码:

private void toolStripMenuItem13_Click(object sender, EventArgs e) {

CreateImage();

MessageBox.Show(\绘图成功!\ }

//绘制图形***************************************** private void CreateImage() {

int height = 500, width = 700;

Bitmap image = new Bitmap(width, height); //创建Graphics类对象

Graphics g = Graphics.FromImage(image);

try {

//清空图片背景色 g.Clear(Color.White);

33

Font font = new Font(\ Font font1 = new Font(\宋体\

LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height),

Color.Blue, Color.BlueViolet, 1.2f, true);

g.FillRectangle(Brushes.WhiteSmoke, 0, 0, width, height); // Brush brush1 = new SolidBrush(Color.Blue);

g.DrawString(\成绩统计柱状图\30));

//画图片的边框线

g.DrawRectangle(new Pen(Color.Blue), 0, 0, image.Width - 1, image.Height - 1);

Pen mypen = new Pen(brush, 1); //绘制线条 //绘制横向线条 int x = 100;

for (int i = 0; i < 14; i++) {

g.DrawLine(mypen, x, 80, x, 340); x = x + 40; }

Pen mypen1 = new Pen(Color.Blue, 2); x = 60;

g.DrawLine(mypen1, x, 80, x, 340);

//绘制纵向线条 int y = 106;

for (int i = 0; i < 9; i++) {

g.DrawLine(mypen, 60, y, 620, y); y = y + 26; }

g.DrawLine(mypen1, 60, y, 620, y);

//x轴

String[] n = { \ x = 96;

for (int i = 0; i < 3; i++) {

34

g.DrawString(n[i].ToString(), font, Brushes.Blue, x, 348); //设置文字内容及输出位置

x = x + 96; }

//y轴

String[] m = { \0\

y = 72;

for (int i = 0; i < 10; i++) {

g.DrawString(m[i].ToString(), font, Brushes.Blue, 25, y); //设置文字内容及输出位置

y = y + 26; }

int[] Count1 = new int[3]; int[] Count2 = new int[3]; int[] Count3 = new int[3];

string strConnection = \ strConnection += @\\

OleDbConnection objConnection = new OleDbConnection(strConnection);

objConnection.Open();

string cmdtxt2 = \

OleDbDataAdapter da = new OleDbDataAdapter(cmdtxt2, objConnection);

DataSet ds = new DataSet(); da.Fill(ds);

DataTable dtb = new DataTable(); da.Fill(dtb);

DataRow[] dd = dtb.Select(\ Int32 h = 0, k = 0, p = 0;

for (int j = 0; j < dd.Length; j++) {

if ((Convert.ToInt32(dd[j][\(Convert.ToInt32(dd[j][\ h++;

else if ((Convert.ToInt32(dd[j][\60 && (Convert.ToInt32(dd[j][\ k++; else

p++;

35

}

//Count1[]是语文的0--60,60--80,80--100的数字 Count1[0] = h; Count1[1] = k; Count1[2] = p;

//Count1[]是数学的0--60,60--80,80--100的数字 DataRow[] dd1 = dtb.Select(\ //*********

Int32 i1 = 0, m1 = 0, n1 = 0; for (int j = 0; j < dd1.Length; j++) {

if ((Convert.ToInt32(dd1[j][\(Convert.ToInt32(dd1[j][\ i1++;

else if ((Convert.ToInt32(dd1[j][\60 && (Convert.ToInt32(dd1[j][\ m1++; else

n1++;

}

Count2[0] = i1; Count2[1] = m1; Count2[2] = n1;

//Count1[]是英语的0--60,60--80,80--100的数字 DataRow[] dd2 = dtb.Select(\ Int32 i2 = 0, m2 = 0, n2 = 0; for (int j = 0; j < dd2.Length; j++) {

if ((Convert.ToInt32(dd2[j][\&& (Convert.ToInt32(dd2[j][\ i2++; else if

((Convert.ToInt32(dd2[j][\(Convert.ToInt32(dd2[j][\ m2++; else

n2++;

}

Count3[0] = i2; Count3[1] = m2; Count3[2] = n2;

36

//绘制柱状图. x = 80;

Font font2 = new System.Drawing.Font(\FontStyle.Bold);

SolidBrush mybrush = new SolidBrush(Color.Red); SolidBrush mybrush2 = new SolidBrush(Color.Green); SolidBrush mybrush3 = new SolidBrush(Color.Blue);

Count1[0] - 15);

Count2[0] - 15);

Count3[0] - 15);

Count1[1] - 15);

Count2[1] - 15);

Count3[1] - 15);

//0--60

g.FillRectangle(mybrush, x, 115 - Count1[0], 20, Count1[0] * 26); g.DrawString(Count1[0].ToString(), font2, Brushes.Red, x, 115 - x = x + 20;

g.FillRectangle(mybrush2, x, 115 - Count2[0], 20, Count2[0] * 26); g.DrawString(Count2[0].ToString(), font2, Brushes.Green, x, 115 - x = x + 20;

g.FillRectangle(mybrush3, x, 91 - Count3[0], 20, Count3[0] * 26); g.DrawString(Count3[0].ToString(), font2, Brushes.Blue, x, 91 - //60--80 x = x + 60;

g.FillRectangle(mybrush, x, 215 - Count1[1], 20, Count1[1] * 26); g.DrawString(Count1[1].ToString(), font2, Brushes.Red, x, 215 - x = x + 20;

g.FillRectangle(mybrush2, x, 265 - Count2[1], 20, Count2[1] * 26); g.DrawString(Count2[1].ToString(), font2, Brushes.Green, x, 265 - x = x + 20;

g.FillRectangle(mybrush3, x, 240 - Count3[1], 20, Count3[1] * 26); g.DrawString(Count3[1].ToString(), font2, Brushes.Blue, x, 240 - //80--100 x = x + 60;

37

g.FillRectangle(mybrush, x, 290 - Count1[2], 20, Count1[2] * 26); g.DrawString(Count1[2].ToString(), font2, Brushes.Red, x, 290 - Count1[2] - 15);

x = x + 20;

g.FillRectangle(mybrush2, x, 240 - Count2[2], 20, Count2[2] * 26); g.DrawString(Count2[2].ToString(), font2, Brushes.Green, x, 240 - Count2[2] - 15);

x = x + 20;

g.FillRectangle(mybrush3, x, 290 - Count3[2], 20, Count3[2] * 26); g.DrawString(Count3[2].ToString(), font2, Brushes.Blue, x, 290 - Count3[2] - 15);

//绘制标识

Font font3 = new System.Drawing.Font(\FontStyle.Regular);

//g.DrawRectangle(new Pen(Brushes.Blue), 170, 400, 250, 50); //绘制范围框

g.FillRectangle(Brushes.Red, 270, 410, 20, 10); //绘制小矩形 g.DrawString(\语文\

g.FillRectangle(Brushes.Green, 270, 430, 20, 10);

g.DrawString(\数学\

g.FillRectangle(Brushes.Blue, 270, 450, 20, 10);

g.DrawString(\英语\

image.Save(\System.Drawing.Imaging.ImageFormat.Jpeg); }

finally {

g.Dispose(); image.Dispose(); } }

(9)退出登录模块

和学生退出登录模块一样 (10)密码修改

38

代码:

private void toolStripMenuItem14_Click(object sender, EventArgs e) {

xiugaimima xiu = new xiugaimima(); xiu.Show(); }

private void button1_Click(object sender, EventArgs e) {

string user = tbusername.Text; string password = tbpassword.Text;

string strConnection = \ strConnection += @\\

OleDbConnection objConnection = new OleDbConnection(strConnection); objConnection.Open();

OleDbCommand objCommand = new OleDbCommand(\admin\

DataSet ds = new DataSet();

OleDbDataAdapter sda = new OleDbDataAdapter(\admin \

sda.Fill(ds, \

OleDbDataReader reader = objCommand.ExecuteReader(); int i;

for (i = 0; i < ds.Tables[\ {

39

reader.Read();

if (reader[\reader[\ {

string s=\

\ //List list = new List();

//list.Add(new OleDbParameter(\this.tbnewpassword.Text));

//list.Add(new OleDbParameter(\this.tbusername.Text));

//string sql = \[username]=@Name\

OleDbCommand cmd = new OleDbCommand(s, objConnection);

cmd.ExecuteNonQuery();

MessageBox.Show(\修改成功!\ break; } }

if (i == ds.Tables[\ MessageBox.Show(\请确认密码!\ // 关闭Reader. reader.Close();

objConnection.Close(); }

(11)帮助

代码:

private void toolStripMenuItem9_Click(object sender, EventArgs e) {

MessageBox.Show(\登录不了,请确定密码中是否有非法字符!\ }

private void toolStripMenuItem12_Click(object sender, EventArgs e) {

MessageBox.Show(\请确定该门课老师是否输入该学生成绩!\ }

40

第六章 总结

本次系统设计让我知道了进行管理系统开发这样的工作,要有恒心,要能静下新来做,而不能浮躁。要真真实实的多查资料,多问,多看。要善于同同学和老师交流与合作,善于获取各种有用的资源。

经过本次准备论文,让我学把老师上课讲的内容融会贯通,不再只是机械的复制老师思想。巩固和加深了对C#的理解,提高综合运用本课程所学知识的能力。

培养独立思考,深入研究,分析问题、解决问题的能力。独立自主设计和编码等一系列的程序。通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。

由于本次的论文准备遇到的问题,我将在以后的学习当中注意以下几个方面:多在电脑上实践;写程序的过程中要考虑周到,严密;在做设计的时候要有信心,有耐心,切勿浮躁;在课余时间里多写程序,熟练掌握在调试程序的过程中所遇到的常见错误,以便能节省调试程序的时间。

更让我认识到一个系统开发的过程中编码不是重要的,最重要的是分析系统、建立起系统模型。只有分析出来才能进行编码。在分析一个系统前,操作者必须要对将要开发的系统所涉及到的各方面知识有一个整体的认识,然后将系统的模型建立起来。

在程序编写中,我认识到软件要有简便的界面,良好的程序风格。拥有这些条件,程序的可读性才会好,开发的复杂度才能大大减少,修改代码时更加容易下手。

41

第六章 总结

本次系统设计让我知道了进行管理系统开发这样的工作,要有恒心,要能静下新来做,而不能浮躁。要真真实实的多查资料,多问,多看。要善于同同学和老师交流与合作,善于获取各种有用的资源。

经过本次准备论文,让我学把老师上课讲的内容融会贯通,不再只是机械的复制老师思想。巩固和加深了对C#的理解,提高综合运用本课程所学知识的能力。

培养独立思考,深入研究,分析问题、解决问题的能力。独立自主设计和编码等一系列的程序。通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。

由于本次的论文准备遇到的问题,我将在以后的学习当中注意以下几个方面:多在电脑上实践;写程序的过程中要考虑周到,严密;在做设计的时候要有信心,有耐心,切勿浮躁;在课余时间里多写程序,熟练掌握在调试程序的过程中所遇到的常见错误,以便能节省调试程序的时间。

更让我认识到一个系统开发的过程中编码不是重要的,最重要的是分析系统、建立起系统模型。只有分析出来才能进行编码。在分析一个系统前,操作者必须要对将要开发的系统所涉及到的各方面知识有一个整体的认识,然后将系统的模型建立起来。

在程序编写中,我认识到软件要有简便的界面,良好的程序风格。拥有这些条件,程序的可读性才会好,开发的复杂度才能大大减少,修改代码时更加容易下手。

41

本文来源:https://www.bwwdw.com/article/klkp.html

Top