ASPNET 程序 设计.docx
《ASPNET 程序 设计.docx》由会员分享,可在线阅读,更多相关《ASPNET 程序 设计.docx(33页珍藏版)》请在冰点文库上搜索。
ASPNET程序设计
ASP.NET网页设计
设计说明书
设计题目:
姓名:
张华伟
学号:
20091290156
班级:
09电商1
指导教师:
李学卫
完成日期:
设计要求
考核
目的
通过课程设计,了解学生对本课程基础知识的掌握情况,对知识的应用能力,以及考核学生开发Web应用程序的综合能力。
考核
项目
要求
ASP.NET网页设计的主要内容是介绍开发Web应用程序的主要技术ASP.NET,包括Web应用程序的配置、ASP.NET的内置对象、常用服务器控件、ADO.NET数据访问及数据绑定、站点导航及主题等。
本次考核的具体要求如下:
1.熟悉VS.NET2005开发环境的安装与使用。
2.掌握用SQLServer2005创建数据库。
3.掌握Web应用程序的配置、部署。
4.系统结构设计要合理。
5.系统功能基本完善。
6.操作界面设计友好,风格统一,美观大方。
7.能够实现页面间数据的传递。
8.能够实现对数据库的访问。
9.能够基本保障应用程序的安全性。
10.初步学会使用Web应用程序的高级技术
11.有一定的应用价值
内容首行缩进2个字符,小四号字,宋体,1.5倍行距别为2.5厘米。
,上下左右边距分
举例:
面向对象程序设计c#
设计说明书
姓名:
鲁彬
学号:
20071311001
班级:
指导教师:
李学卫
完成日期:
学生学籍管理系统设计说明书
第一章系统分析
伴随社会的高速发展,全国各高校的学生数量一直在增加,在这样的形式下,必须要求学校有一种高效有序的方法来管理学生的信息。
通过调查,要求系统需要有以下功能:
⑴由于该系统一次性输入的数据量可能很大,所以要求支持从Excel导入数据;
⑵由于该系统的使用对象多,要求有较好的权限管理;
⑶原始数据修改简单方便,支持多条件修改;
⑷方便的数据查询,支持多条件查询;
⑸在相应的权限下,删除数据方便简单,数据稳定性好;
由于本系统管理的对象单一,都是学生,且每个数据内容具有较强的关联性,涉及的计算过程不是很复杂。
因此,比较适合于采用数据库管理。
在技术难度方面,由于有指导老师的指导和相关参考文献,特别是网上资料,特别是参考其它程序的功能,因此完全可以实现。
本系统的设计是在WindowsXP操作系统环境下,使用VisualStudio.NET2003中文版开发成功的。
VisualStudio具有以下特点:
1、面向对象设计不再是单纯的从代码的第一行一直编到最后一行,而是考虑如何创建类和对象,利用类和对象来简化程序设计,并提供代码的封装和可重用性,便于程序的维护与扩展。
2、所谓的对象是一种抽象的名称,用来对应实现世界存在的“东西”。
一个窗口、一个按钮、一个菜单都可视为一个对象,而按钮对象、菜单对象、又会出现在窗口对象中,因此按钮对象、菜单对象便是窗口的组件之一。
对象内部的数据是不能随意更改的,必须由外部向其传递信息,再由对象按其方法加以处理。
用户无需知道其任何细节,操作是封闭的,对象之间能通过函数调用相互通信。
3、类可视为一个产品模具、一个模块。
在面向对象设计中,类是对象的原型,是对象的制作器。
类的概念是面向对象程序设计最重要的特征。
所谓类,是指由数据结构及其相关操作所形成的集合,描述该类任一对象的共同的行为特征,是对一组性质相同的对象的程序描述,概括了对象的共同性质和数据。
4、面向对象设计的核心是类的设计。
例如:
可以定义一个“成绩查询”类,该类中可以定义查询的姓名、学号、班级等信息,则以此类为原型可以设计出众多的“成绩查询”类的对象实例,这些实体都具有类中所定义的特征。
第二章系统设计
2.1系统功能分析
系统开发的总体任务是实现学生信息关系的系统化,规范化和自动化。
在本系统中有二种权限:
一种是用户权限,即学生。
另一种是管理员权限,即教师。
学生管理系统需要完成的功能主要有:
学生可以完成的功能有:
●学生信息的查询,包括查询学生的基本信息、学生成绩等。
●学生信息的修改,学生只能修改他本人的密码。
教师可以完成的功能有:
●班级管理信息的输入、查询、修改,包括输入班级设置,年级信息等。
●基本课程信息的输入、查询、修改。
●学生成绩信息的输入、查询、修改。
对上述各功能进行集中、分块、按照结构化程序设计的要求。
学籍修改
密码修改功能
成绩管理功能
学籍删除
学籍查询
成绩查询
成绩添加
成绩修改
成绩删除
用户添加
用户删除
学生信息管理系统
学籍管理功能
图2-1系统功能模块图
2.2系统流程图
图2-2系统流程图
第三章数据库设计
3.1数据库需求分析
●用户信息:
包括的数据项有:
用户号、姓名、密码、身份。
●学生信息:
包括的数据项有:
学生学号、学生姓名、性别、出生日期、班级名称、
入学年份、学籍编号、政治面貌编号、身份证号、民族编号、家庭地址、照片、照片名称等。
●学籍代码表:
包括的数据项有:
学籍编号、学籍等。
●成绩表:
包括的数据项有:
编号、学号、课程编号、成绩、考试性质编号等。
●政治面貌代码表:
包括的数据项有:
政治面貌编号、政治面貌等。
●民族代码表:
包括的数据项有:
民族编号、民族等。
●考试性质表:
包括的数据项有:
考试性质编号、考试性质等
●课程信息:
包括的数据项有:
课程编号、课程名称、教师、学分、学时等
3.2数据库概念结构设计
本系统的实体有:
学生实体、用户实体、年级实体、课程实体。
各个实体具体的描述E-R图如图下所示。
图3-1学生实体E—R图
图3-2用户实体E—R图
图3-3课程实体E—R图
现在需要将上面的数据库概念结构转化为SQLServer2000数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。
学生管理系统数据库中各个表格的设计结果如下面的几个表所示。
每个表表示在数据库中的一个数据表
表3-1学生信息表
表3-2学籍代码表
表3-3成绩表
表3-4政治面貌代码表
表3-5民族代码表
表3-6用户信息表
表3-7考试性质表
表3-8课程信息表
3.3数据库结构的实现
经过前面的需求分析和概念结构设计以后,得到数据库的逻辑结构。
就可以在SQLServr2000数据库系统中实现该逻辑结构,利用SQLServer2000数据库系统中SQL查询分析器实现的。
ALTERTABLE[dbo].[学生信息]ADD
CONSTRAINT[FK_学生信息_民族代码表]FOREIGNKEY
(
[民族编号]
)REFERENCES[dbo].[民族代码表](
[民族编号]
),
CONSTRAINT[FK_学生信息_学籍代码表]FOREIGNKEY
(
[学籍编号]
)REFERENCES[dbo].[学籍代码表](
[学籍编号]
),
CONSTRAINT[FK_学生信息_政治面貌代码表]FOREIGNKEY
(
[政治面貌编号]
)REFERENCES[dbo].[政治面貌代码表](
[政治面貌编号]
)
GO
ALTERTABLE[dbo].[成绩表]ADD
CONSTRAINT[FK_成绩表_课程信息]FOREIGNKEY
(
[课程编号]
)REFERENCES[dbo].[课程信息](
[课程编号]
),
CONSTRAINT[FK_成绩表_学生信息]FOREIGNKEY
(
[学号]
)REFERENCES[dbo].[学生信息](
[学号]
),
CONSTRAINT[FK_成绩表_考试性质表]FOREIGNKEY
(
[考试性质编号]
)REFERENCES[dbo].[考试性质表](
[考试性质编号]
)
GO
第四章详细设计
4.1主窗体的创建
上面的SQL语句在SQLServer2000中查询分析器执行后,将自动产生需要的所有表。
有关数据库结构的所有后台工作已经完成。
现在将通过学生管理系统中各个功能模块的实现,来编写数据库系统的客户端程序。
1.创建空白解决方案
为了在VisualStudio.NET2003中创建应用程序,应当先创建一个空白解决方案,它包括:
●通过为环境提供对项目、项目项和解决方案项在磁盘上位置的引用,可将它们组织到解决方案中。
(.sln)。
●记录所有将与解决方案建立关联的选项,以便在每次打开时,它都包含您所做的自定义设置。
(.suo)。
启动这个空白解决方案后,单击文件|新建|项目菜单,在新建项目中选择VisualC#项目,在模块中选择Windows应用程序,并命名为MainFrm。
2.创建主窗体
VisualStudio.NET2003创建的应用程序可以是SDI(单文档界面)和MDI(多文档界面)。
在SDI的程序中,每个窗体之间是独立的。
而MDI的程序中,有一个窗体是主窗体,可以包含其他窗体,它的类型是MDIForm。
本系统采用多文档界面,这样可以使程序更加美观,整齐有序。
单击工具栏的“MainMenu”控件,生成一个如下所示的窗体
图4-1MainFrm界面图
4.2创建公用模块
在VS.NET中可以使用类库模板快速创建能够与其他项目共享的可再次使用的类和组件。
整个工程项目中的任何地方都可以调用公用类库的类和组件,这样可以极大地提高代码的效率。
在项目资源管理器中为项目添加一个类,保存为xjDataBase.cs。
下面就可以开始添加需要的代码。
publicclassxjDataBase
{
privatestringstrSQL;
privatestringconnectionString="workstationid=localhost;packetsize=4096;integratedsecurity=SSPI;persistsecurityinfo=False;initialcatalog=xueji";
privateSqlConnectionmyConnection;
privateSqlCommandBuildersqlCmdBld;
privateDataSetds=newDataSet();
privateSqlDataAdapterda;
publicDataSetSelectDataBase(stringtempStrSQL,stringtempTableName)
{
this.strSQL=tempStrSQL;
this.myConnection=newSqlConnection(connectionString);
this.da=newSqlDataAdapter(this.strSQL,this.myConnection);
this.ds.Clear();
this.da.Fill(ds,tempTableName);
returnds;
}
}
4.3用户管理模块的创建
系统管理模块主要实现:
●用户登录。
●添加用户。
●修改用户密码。
1.用户登陆窗体的创建
系统启动后,将首先出现如下所示的用户登陆窗体,用户首先输入用户名,然后输入密码。
图4-2用户登录界面
用户登陆窗体中放置了两个文本框(TextBox),用来输入用户名和用户密码。
两个按钮(Button)用来确定或者取消登陆。
2个标签(Label)用来标示窗体的信息。
为窗体定义全局变量OK,用来判断登陆是否成功,代码如下:
publicstaticboolblCanLogin=false;
privateDataSetds=newDataSet();
privateDataTablemyTable;
privateDataRowmyRow;
privatestringsendStrSQL="select*from用户信息";
xjDataBasexj=newxjDataBase();
stringsendTableName="用户信息";
this.ds=xj.SelectDataBase(sendStrSQL,sendTableName);
this.myTable=ds.Tables[0];
privatevoidbutton1_Click(objectsender,System.EventArgse)
{
for(inti=0;i{
this.myRow=myTable.Rows[i];
if(myRow[0].ToString().Trim()==this.textBox1.Text.ToString().Trim()&&myRow[2].ToString().Trim()==this.textBox2.Text.ToString().Trim())
{
blCanLogin=true;
strUser=myRow[0].ToString().Trim();
strpwd=myRow[2].ToString().Trim();
strDignity=myRow[3].ToString().Trim();
strName=myRow[1].ToString().Trim();
this.Close();
return;
}
}
MessageBox.Show("用户名或密码输入错误!
","提示!
");
return;
}
3.修改用户密码窗体的创建
用户可以修改自己的密码,选择菜单“修改密码”,出现如下所示的窗体。
图4-3修改密码界面
在这两个窗体中放置了四个文本框,用来输入用户名、原密码、新密码和确认密码。
两了按钮用来确定是否修改密码。
四个标签用来标示文本框的内容,单击“确认”按钮,将触发Click事件判断是否修改密码成功,代码如下:
privatevoidbutton1_Click(objectsender,System.EventArgse)
{
boolcanSubmit;
canSubmit=this.CheckNotNull();
if(canSubmit==false)
{
return;
}
for(inti=0;i{
this.myRow=myTable.Rows[i];
if(myRow[0].ToString().Trim()==this.textBox1.Text.ToString().Trim()
&&myRow[2].ToString().Trim()==this.textBox2.Text.ToString().Trim())
{
stringstrUser=textBox1.Text.ToString();
stringconnstring="workstationid=localhost;integratedsecurity=sspi;database=xueji";
SqlConnectionconn=newSqlConnection(connstring);
conn.Open();
SqlCommandcmd=newSqlCommand();
cmd.CommandType=System.Data.CommandType.Text;
cmd.CommandText="update用户信息set密码='"+this.textBox3.Text+"'where学号='"+strUser+"'";
cmd.Connection=conn;
try
{
cmd.ExecuteNonQuery();
conn.Close();
}
catch(Exceptioner)
{
MessageBox.Show(er.ToString());
return;
}
MessageBox.Show("密码修改成功","提示");
return;
}
}
MessageBox.Show("用户名或原密码输入错误!
",
"提示",MessageBoxButtons.OK,MessageBoxIcon.Stop);
}
CheckNotNull是一系列触发检验,只是查检查全部通过才能执行修改密码的代码,否则会报错。
在此就不将代码一一列出。
4.4学生功能模块的创建
以上是学生和教师都可以实现的功能.以下是学生的功能。
学生功能模块主要实现如下功能:
●查询学籍信息
●查询成绩信息
学生在成功登录系统后,即可查询自己的相关信息,在主窗体中点击学生信息查询菜单下的学籍查询,即出现如下所示的窗体:
图4-4学籍查询界面
使用sqlDataAdapter添加数据集并生成DataSet,然后将数据绑定到各个textBox,显示查询本人的照片是本系统的一大特色,实现此功能的代码如下:
stringsql="SELECT照片名称,照片from学生信息"+"WHERE(学号='"+LoginFrm.strUser+"')";
SqlCommandcommand=newSqlCommand(sql,this.sqlConnection1);
try
{this.sqlConnection1.Open();}
catch(Exceptionnewerr)
{
MessageBox.Show(newerr.ToString()+"不能打开数据联接!
");
}
finally
{}
SqlDataReaderdr=command.ExecuteReader();
if(dr.Read())
{
FileInfofi=newFileInfo("temp");
FileStreammyStream=fi.Open(FileMode.Create);
byte[]mydata=((byte[])dr["照片"]);
foreach(byteainmydata)
{
myStream.WriteByte(a);
}
myStream.Close();
ImagemyImage=Image.FromFile("temp");
this.pictureBox1.Image=myImage;
this.pictureBox1.Refresh();
dr.Close();
}
else
{
MessageBox.Show("没有成功读入数据!
","提示");
}
除此之外学生还可以查询自己的学习成绩信息,选择菜单“成绩查询”就可以查询到自己的学习成绩,出现如下所示的窗体。
图4-5成绩查询界面
在窗体中添加一个mainMenu,和学籍查询相似将DataSet中的数据绑定到mainMenu中即可,代码和学籍查询相似在此不再重复。
此外学生还可打印自己的成绩单,点击打印按钮,将出现如下窗体。
图4-5成绩表界面
实现此功能,先建一个CrystalReport.rpt,在数据库字段中将前面生成的DataSet中的成绩表绑定上去,然后往报表中拖入要打印的项目即可,然后再建一个Windows窗体CrystalReport.cs,从工具箱中拖入CrystalReportViewer,调整CrystalReportViewer的大小,并输入和成绩查询相似的代码即可。
4.5教师功能模块的创建
以上是学生实现的功能.以下是教师的功能。
教师功能模块主要实现如下功能:
●添加/删除/修改学籍信息
●添加/删除/修改成绩信息
●添加/删除用户信息
教师在成功登录系统后,点击学籍录入菜单,出现如下所示窗体:
图4-7添加学籍界面
在窗体上放置多个文本框和下拉式文本框,将它们绑定到DataSet中用来输入学籍信息。
两个按钮用来确定是否添加学籍信息。
单击“添加图片”按钮,出现打开文件对话框,选择图片即可,点击提交即可保存到数据库中。
具体代码如下:
实现图片加载的代码:
if(this.openFileDialog1.ShowDialog()==System.Windows.Forms.DialogResult.OK
&&this.openFileDialog1.FileName!
="")
{
pathName=this.openFileDialog1.FileName;
System.Drawing.Imageimg=System.Drawing.Image.FromFile(pathName);
this.pictureBox1.Image=img;
this.textBox8.Text=pathName.Substring(pathName.LastIndexOf("\\")+1);
System.IO.FileStreamfs=newSystem.IO.FileStream(pathName,System.IO.FileMode.Open,System.IO.FileAccess.Read);
byte[]buffByte=newbyte[fs.Length];
fs.Read(buffByte,0,(int)fs.Length);
fs.Close();
fs=null;
}
点击学籍修改菜单,出现如下所示窗体:
图4-8修改学籍界面
在学籍修改窗体中,可以实现模糊查询,代码如下:
da1.SelectCommand.Parameters[0].Value