C#程序设计
来源:互联网 发布:catia软件介绍视频 编辑:程序博客网 时间:2024/05/22 05:09
一、 实习目的:
通过C#.net的学习,编写学生成绩管理系统;掌握学生成绩管理系统的需求分析、系统设计、代码编写和测试。
二、 实习时间:十七周(2007年6月25号——6月29号)
三、 实习地点:学校机房(4212)
四、 实习要求:
能够利用所学的基本知识和技能,进行简单关系数据库的设计与优化; 掌握ADO.NET数据库开发基本知识;进一步掌握.NET基本结构以及C#语言的基本知识和技能;基本掌握面向对象程序开发的基本思路和方法,编写学生成绩管理系统。
五、 实习内容:
一、需求分析
1、专业管理功能
(1)新专业的增加。例如:2006年我们学校,新开物流专业。
(2)旧专业的废除。如果随着时代的变迁,必然有的专业更不上时代,就会被淘汰。
(3)班级人数是只读的,新专业的班级人数初始化为0,在后面的班级管理中添加班级时,相应专业的班级人数会增加。
2、 班级管理功能
(1)新班级的增加。例如:向网络工程专业添加网络051班,即可在专业下拉框中选择该专业,添加该班级,则回到专业管理模块中,该专业的班级人数自动加1。(注:选择专业时,不要自己写专业名字,只需要在下拉框选择,因为已经将所有的专业绑定到该下拉框。)
(2)多余班级的删除。比如本学年计算机科学与技术专业少招一个班,即可删除掉多余的班级。
3、班级成员管理功能
(1)班级成员的查询:可以输入学号根据相应的专业、班级查询相应的学生基本信息。(2)班级成员的添加、删除等功能和前面的几个模块差不多
4、课程管理功能
(1)新课程的添加。课程的设置是分专业来进行的,即根据相应的专业来选择添加该专业的课程和相应的学分数。
(2)旧课程的删除。选择要删除的课程名删除该课程
(3)学分修改。选择课程名修改相应的学风
(4)课程查询。分专业查询、向左向右导航查询以及查询全部。
5、成绩管理功能
(1)成绩查看。通过选择相应的专业来通过ListView控件来显示该专业所有学生的成绩状况。还可以选择班级分班来查询
(2)成绩添加、删除及修改。通过双击相应同学的记录弹出窗体来设置成绩,再通过点击刷新按钮来更新记录。
(3)导出Excel文档。可以把ListView控件中的内容保存为Excel文件以便做进一步的加工。
6、综合查询功能
(1)选择查询。通过用户点击选择相应的分类来查询。
(2)自定义查询。通过用户自己定义Sql语句进行查询。
二、系统设计
1、系统功能模块
(1) 增加学生信息
增加学生——标记系别、专业、班级信息。
(2)学生离校
删除学生记录——增加学生档案信息——标记系别、专业、班级信息。
(3)学生调动
标记学生记录——增加学生档案信息——标记系别、专业、班级信息。
(4)学生结业
标记学生记录——增加学生档案信息——增加就业信息。
(5)考试管理
添加课程信息——添加考试信息——标记考试信息。
(6)课程管理
增加信息
(7)成绩管理
添加课程信息——添加考试信息——添加成绩信息。
三、数据库设计
班级信息表(Class)
字段名
数据类型
长度
是否允许为空
备注
ClassID
Char
5
N
班级编号
ClassName
varChar
50
N
班级名称
Department
varCha
50
N
院系名称
StudentNumber
smallint
N
学生人数
课程信息表(Course)
字段名
数据类型
长度
是否允许为空
备注
CourseID
Char
10
N
课程编号
CourseName
Varchar
50
N
课程名称
ScoreHour
Tinyint
N
课程学时
Department
varchar
50
N
所属院系
院系信息表(Departmet)
字段名
数据类型
长度
是否允许为空
备注
DepartmetID
Char
10
N
院系编号
DepartmetName
Varchar
50
N
院系名称
phoneNo
Varchar
20
N
电话号码
成绩信息表(Score)
字段名
数据类型
长度
是否允许为空
备注
Class
Varchar
20
N
班级名称
StudentID
Char
6
N
学生编号
Course
Varchar
50
N
课程名称
Score
Smallint
3
N
分数
学生信息表(Student)
字段名
数据类型
长度
是否允许为空
备注
StudentID
Char
10
N
学生编号
StudentName
Char
10
N
学生姓名
Class
Varchar
50
N
班级名称
Department
Varchar
50
N
院系名称
Sex
Char
2
N
性别
Age
Smallint
10
N
年龄
Nation
Varchar
10
N
民族
Nativeplace
Varchar
50
N
籍贯
Status
Varchar
20
N
政治身份
InDate
Char
4
N
入学时间
picture
varchar
50
N
照片
选课信息表(SelectCourse)
字段名
数据类型
长度
是否允许为空
备注
SeriaNo
char
8
N
选课序列号
Department
Varchar
50
N
院系名称
Class
Varchar
20
N
班级名称
Semester
Varchar
20
N
学期名称
Course
varchar
20
N
课程名称
学期信息表(Semester)
字段名
数据类型
长度
是否允许为空
备注
SemesterID
Char
5
N
学期编号
SemesterName
varchar
50
N
学期名称
学生离校信息表(StudentLeave)
字段名
数据类型
长度
是否允许为空
备注
LeaveNO
Char
6
N
学校离校编号
StudentID
Char
6
N
学生编号
Department
Varcahr
20
N
院系名称
Class
Varchar
20
N
购买数量
Leavetype
Varchar
10
N
离校类别
Date
datetime
N
离校日期
四、界面设计
1、主界面:
为了应用SqlClient命名空间下的类以及方法本程序DataLevel下的类,在程序引用段添加下面代码:
using System;
using System.Data;
using System.Data.SqlClient;
using StudentManage.DataLevel;
在类变量声明阶段声明如下变量:
private string selectStr;
private SqlConnection Connection1=null;
private SqlCommand Command1=null;
private SqlDataReader DataReader1=null;
在构造函数生成连接数据库和SqlDataAdapter命令,代码如下:
public class Connection
{
public static string ConnString
get{return"data source=localhost;initialcatalog=StudentManage;integrated security=SSPI;"; }
}
}
public StatusManage()
{
this.Connection1=new qlConnection(DataLevel.Connection.ConnString);
this.Command1=new SqlCommand();
this.Command1.Connection=this.Connection1;
}
2、学生管理界面:
“确定按钮”的代码如下:
this.StuClass=this.comboClass.Text;
this.StuDepartment=this.comboDepartment.Text;
this.selectStr="select * from Student where Department='"+this.comboDepartment.Text+"' and Class='"+this.comboClass.Text+"'";
this.dataAdapter1=new SqlDataAdapter(this.selectStr,this.Connection1);
try
{
if(this.Connection1.State==ConnectionState.Closed)
this.Connection1.Open();
this.DataSetStudent.Clear();
this.dataAdapter1.Fill(this.DataSetStudent,"Student");
}
catch(Exception E)
{
MessageBox.Show(E.ToString());
}
finally
{
this.Connection1.Close();
}
if(first)
{
this.DataSet_Bingding();
first=false;
}
this.Buttons_Control(false);
this.BindingContext[this.DataSetStudent,"Student"].Position=0;
this.lblRecord_Change();
this.comboDepartment.Enabled=true;
this.comboClass.Enabled=true;
try
{
this.BindingContext[this.DataSetStudent,"Student"].EndCurrentEdit();
if(this.Connection1.State==ConnectionState.Closed)
this.Connection1.Open();
SqlCommandBuilder commandbuilder1=new SqlCommandBuilder(this.dataAdapter1);
this.dataAdapter1.Update(this.DataSetStudent,"Student");
this.DataSetStudent.AcceptChanges();
this.dataGrid1.Refresh();
}
catch(Exception E)
{
this.ErrorHandle(E);
}
finally
{
this.Connection1.Close();
this.lblRecord_Change();
this.Buttons_Control(false);
}
“添加“按钮的代码如下:
this.Buttons_Control(true);
this.BindingContext[this.DataSetStudent,"Student"].AddNew();
this.lblClass.Text=this.StuClass;
this.lblDepartment.Text=this.StuDepartment;
this.comboClass.Enabled=false;
this.comboDepartment.Enabled=false;
“修改“按钮的代码如下:
this.Buttons_Control(true);
this.comboClass.Enabled=false;
this.comboDepartment.Enabled=false;
3、课程管理界面
“确定“按钮的代码如下:
try
{
this.BindingContext[this.DataSetDep,"Class"].EndCurrentEdit();
if(this.conn1.State==ConnectionState.Closed)
this.conn1.Open();
SqlCommandBuilder commandbuilder1=new SqlCommandBuilder(this.sqlDataAdapter1);
this.sqlDataAdapter1.Update(this.DataSetDep,"Class");
this.DataSetDep.AcceptChanges();
this.dataGrid1.Refresh();
}
catch(Exception E)
{
this.ErrorHandle(E);
}
finally
{
this.conn1.Close();
this.Buttons_Control(false);
}
try
{
this.BindingContext[this.DataSetDep,"Class"].EndCurrentEdit();
if(this.conn1.State==ConnectionState.Closed)
this.conn1.Open();
SqlCommandBuilder commandbuilder1=new SqlCommandBuilder(this.sqlDataAdapter1);
this.sqlDataAdapter1.Update(this.DataSetDep,"Class");
this.DataSetDep.AcceptChanges();
this.dataGrid1.Refresh();
}
catch(Exception E)
{
this.ErrorHandle(E);
}
finally
{
this.conn1.Close();
this.Buttons_Control(false);
}
“删除“按钮的代码如下:
if((this.BindingContext[this.DataSetDep,"Class"].Count>0)&
(MessageBox.Show("真的要删除此记录吗","确定删除",MessageBoxButtons.OKCancel,MessageBoxIcon.Question).Equals(DialogResult.OK)))
{
int position=this.BindingContext[this.DataSetDep,"Class"].Position;
this.BindingContext[this.DataSetDep,"Class"].RemoveAt(position);
}
else
return;
四、成绩管理界面:
“确定“按钮的代码如下:
this.selectStr="select * from Score where Class='"+this.comboClass.Text+"'";
this.sqlDataAdapter1=new SqlDataAdapter(this.selectStr,this.conn1);
this.DataSetScore.Clear();
this.sqlDataAdapter1.Fill(this.DataSetScore,"Score");
if(this.DataSetScore.Tables[0].Rows.Count==0)
{
try
{
if(this.conn1.State==ConnectionState.Closed)this.conn1.Open();
this.commandStr="select StudentID from Student where Class='"+this.comboClass.Text+"'";
this.Command1.CommandText=this.commandStr;
this.DataReader1=this.Command1.ExecuteReader();
while(this.DataReader1.Read())
{
DataRow newrow;
newrow=this.DataSetScore.Tables[0].NewRow();
newrow["StudentID"]=DataReader1[0].ToString();
newrow["Class"]=this.comboClass.Text;
newrow["Course"]=this.comboCourse.Text;
newrow["Score"]=0;
this.DataSetScore.Tables[0].Rows.Add(newrow);
}
this.DataReader1.Close();
}
catch(Exception E)
{
MessageBox.Show(E.ToString());
}
finally
{
this.conn1.Close();
}
}
this.dataGrid1.DataSource=this.DataSetScore;
this.dataGrid1.DataMember="Score";
this.comboCourse.Items.Clear();
try
{
if(this.conn1.State==ConnectionState.Closed)this.conn1.Open();
this.commandStr="select Course from SelectCourse where Class='"+this.comboClass.Text+"' and Semester='"+this.comboSemester.Text+"'";
this.Command1.CommandText=this.commandStr;
this.DataReader1=this.Command1.ExecuteReader();
while(this.DataReader1.Read())
{
this.comboCourse.Items.Add(this.DataReader1["Course"].ToString());
}
this.DataReader1.Close();
}
catch(Exception E)
{
MessageBox.Show(E.ToString());
}
finally
{
this.conn1.Close();
}
“提交”按钮代码如下:
try
{
this.BindingContext[this.DataSetScore,"Score"].EndCurrentEdit();
if(this.conn1.State==ConnectionState.Closed)
this.conn1.Open();
SqlCommandBuilder commandbuilder1=new SqlCommandBuilder(this.sqlDataAdapter1);
this.sqlDataAdapter1.Update(this.DataSetScore,"Score");
this.DataSetScore.AcceptChanges();
}
catch(Exception E)
{
this.ErrorHandle(E);
}
finally
{
this.conn1.Close();
}
六、 实习总结:
短短一周的实习过程使我受益匪浅。不仅是在专业知识方面,最主要是在怎样去解决编程中出现的问题。社会在加速度地发生变化,对人才的要求也越来越高,要用发展的眼光看问题,得不断提高思想认识,完善自己。作为一名IT从业者,所受的社会压力将比其他行业更加沉重,要学会创新求变,以适应社会的需要。这次实习成长了不少,从中有不少感悟,下面就是我的一点心得:
第一是沟通:要想在短暂的实习时间内,尽可能多的学一些东西,这就需要跟老师有很好的沟通,加深彼此的了解,老师并不了解你学的怎么样,不清楚你想了解的知识,所以跟老师很好的沟通是很必要的。同时我觉得这也是我们将来走上社会的一把不可缺少的钥匙。通过沟通了解,老师对我有了大体了解,边有针对性的教我一些知识,我对编程过程中要注意的问题,比如书写格式,怎样去检查程序中的错误。这样既巩固了旧知识,又掌握了新知识,甚至在实践中推翻了书本上旧有的不合实际的知识,这才真正体现了知识的真正价值,学以致用。
第二是激情与耐心:激情与耐心,就像火与冰,看似两种完全不同的东西,却能碰撞出最美丽的火花。在操作时,老师就跟我说,编程程序这一块,激情与耐心必不可少,在用户对软件产品要求方面,这一行业就像做新闻工作,补断的更新,这就需要你有激情,耐心的去不断的学习,提高自己的专业水平。在一些具体的工作当中也是这样的,也让我认识到了自己的不足,告诫自己,不管做什么,切忌眼高手低,要善于钻研 。
第三是细心和基本的专业素养:细心负责是做好每一件事情所必备的基本素质,基本的专业素养是前提。实习期间,我深深体会写程序细心的重要性。不细心负责,没有基本的专业素养,是很容易出现漏洞的。
第四是 讲究条理:如果你不想让自己在紧急的时候手忙脚乱,就要养成讲究条理性的好习惯。“做什么事情都要有条理,”这是从小爸爸给我的忠告。让我联想到在一本书上看到这么一个故事,一位在美国电视领域颇有成就的美籍华人当部门经理时,总裁惊讶于他每天都能把如山的信件处理完毕,而其他经理桌上总是乱糟糟堆满信件。他说,“虽然每天信件很多,但我都按紧急性和重要性排序,再逐一处理。”总裁于是把这种做法推广到全公司,整个公司的运作变得有序,效率也提高了。所以说:养成讲究条理的好习惯,能让我们在以后工作中受益匪浅。
整个的实习过程是紧张而愉快的,我锻炼了上机动手能力,通过这次实习,收获颇丰,无论是数据库设计方面还是前端的编程方面都经历了初步设计-发现问题-解决问题-引入新的问题这一循环,使自己的动手能力有了很大的提高。今后,我将继续保持认真负责的学习态度,高尚的思想觉悟,进一步完善和充实自己,争取在以后学习中取得新的突破。
- 《C#程序设计》
- C#程序设计
- C# Builder 程序设计
- C#程序设计(一)
- C# 程序设计第一讲
- C#程序设计基础
- C# 程序设计技巧 小结
- C#面向对象程序设计
- C#程序设计及其应用
- C# 3.0程序设计基础
- C# 打印机程序设计
- 大话C#程序设计
- C#程序设计技巧小结
- C#程序设计--输出九九乘法表
- C# 托盘程序设计
- C#程序设计之一
- C#程序设计总结
- C#语言Windows程序设计
- Linux那些事儿之我是Sysfs(8)一起散散步-pathwalk
- VC中常用数据类型转换
- word编写数学公式
- CRC算法与实现
- ATA实习日记(一)
- C#程序设计
- c语言问题
- .NET加密技术指南
- 无题
- 有史以来最伟大12款软件排名
- hpi 驱动修改及一些杂碎
- 在Linux下用Qt开发新一代DTS图形数据系统的分析
- Photoshop制作倒影字
- Qt组件中的双缓冲无闪烁绘图