软件体系结构.docx
《软件体系结构.docx》由会员分享,可在线阅读,更多相关《软件体系结构.docx(27页珍藏版)》请在冰豆网上搜索。
软件体系结构
学生实验报告
(理工类)
课程名称:
软件体系结构专业班级:
学生学号:
学生姓名:
所属院部:
指导教师:
2014——2015学年第一学期
金陵科技学院教务处制
实验报告书写要求
实验报告原则上要求学生手写,要求书写工整。
若因课程特点需打印的,要遵照以下字体、字号、间距等的具体要求。
纸张一律采用A4的纸张。
实验报告书写说明
实验报告中一至四项内容为必填项,包括实验目的和要求;实验仪器和设备;实验内容与过程;实验结果与分析。
各院部可根据学科特点和实验具体要求增加项目。
填写注意事项
(1)细致观察,及时、准确、如实记录。
(2)准确说明,层次清晰。
(3)尽量采用专用术语来说明事物。
(4)外文、符号、公式要准确,应使用统一规定的名词和符号。
(5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。
实验报告批改说明
实验报告的批改要及时、认真、仔细,一律用红色笔批改。
实验报告的批改成绩采用百分制,具体评分标准由各院部自行制定。
实验报告装订要求
实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。
实验项目名称:
学生成绩管理系统
(一)实验学时:
8
同组学生姓名:
实验地点:
A203
实验日期:
11.7、11.14、11.21、11.28实验成绩:
批改教师:
批改时间:
一、实验目的
掌握C/S结构的数据库应用的设计方法,加深对功能模型、对象模型以及C/S结构等的理解。
二、实验环境
VisualC++6.0,SQLServer2005
三、实验过程
3.1实验组织
本实验共8个课时,每3个学生一组,每组学生相互之间可以讨论与协作,但每个学生分别承担不同的部分并独立提交实验报告。
3.2实验内容
本实验内容包括三个部分,分别由三位同学承担。
具体如下:
1数据库设计与实现(内容系数:
1)
共设计三个数据表:
课程(course)、学生(student)、选课(selectcourse),其中,选课(selectcourse)数据表为课程(course)数据表和学生(student)数据表的关系表。
三个数据表的模式结构如下:
课程(course):
课程号(id)、课程名(name)、学时(period)、开课院系(department)、授课教师编号(teacherid)、授课教师姓名(teachername)。
学生(student):
学号(id)、姓名(name)、性别(gender)、所属院系(department)。
选课(selectcourse):
学号(studentid)、课程号(courseid)、成绩(score)。
2存储过程设计与实验(内容系数:
1)
共设计两个存储过程:
1)查看每位同学各门课的成绩并计算该同学的平均成绩;2)查看一门课所有同学的成绩并计算该课程的平均成绩。
3客户端程序设计与实验(内容系数:
1.2)
设计客户端程序,接收用户要求并调用存储过程,然后显示相应结果。
具体要求如下:
用户在选择一名学生后,点击查询学生成绩按钮后,显示该学生各门课的成绩以及该学生的平均成绩;用户在选择一门课程后,点击查询课程成绩按钮后,显示该课程所有同学的成绩以及该课程的平均成绩。
3.3实验步骤
1创建数据库、三个表以及数据约束。
2创建两个存储过程。
3使用VC6.0创建一个基于对话框的MFC应用程序来实现客户端界面,其中使用ODBC或ADO等进行数据库连接。
四、实验结果与分析
4.1数据库详细设计
4.1.1创建数据库
CREATEDATABASE[cjgl]ONPRIMARY
(NAME=N'cjgl',FILENAME=N'C:
\ProgramFiles\MicrosoftSQLServer\MSSQL10.MSSQLSERVER\MSSQL\DATA\cjgl.mdf',SIZE=3072KB,MAXSIZE=UNLIMITED,FILEGROWTH=1024KB)
LOGON
(NAME=N'cjgl_log',FILENAME=N'C:
\ProgramFiles\MicrosoftSQLServer\MSSQL10.MSSQLSERVER\MSSQL\DATA\cjgl_1.ldf',SIZE=1792KB,MAXSIZE=2048GB,FILEGROWTH=10%)
4.1.2创建表
4.1.2.1创建course表
CREATETABLE[dbo].[course](
[id][char](4)PRIMARYKEY,
[name][varchar](20)NULL,
[period][char](4)NULL,
[department][varchar](20)NULL,
[teacherid][char](4)NULL,
[teachername][varchar](20)NULL
)
4.1.2.2创建student表
CREATETABLE[dbo].[student](
[id][char](10)PRIMARYKEY,
[name][varchar](20)NULL,
[gender][char]
(2)NULL,
[department][varchar](20)NULL
)
4.1.2.3创建selectcourse表
CREATETABLE[dbo].[selectcourse](
[studentid][char](10)NOTNULL,
[courseid][char](4)NOTNULL,
[score][numeric](4,1)NULL,
PRIMARYKEY([studentid],[courseid]),
FOREIGNKEY([courseid])REFERENCES[dbo].[course]([id]),
FOREIGNKEY([studentid])REFERENCES[dbo].[student]([id])
)
4.1.3创建存储过程
4.1.3.1创建存储过程proc1
ALTERproc[dbo].[proc1]
@studentidchar(10)
as
selectcourse.nameas'name',scorefromselectcourse,student,course
wherestudentid=@studentidandstudent.id=selectcourse.studentidand
course.id=selectcourse.courseidunion
select'平均分',AVG(score)as'score'fromselectcourse,student,course
wherestudentid=@studentidandstudent.id=selectcourse.studentidand
course.id=selectcourse.courseid;
4.1.3.1创建存储过程proc2
ALTERproc[dbo].[proc2]
@coursenamevarchar(20)
as
selectstudent.name,scorefromselectcourse,student,course
wherestudent.id=selectcourse.studentidandcourse.id=selectcourse.courseidand
course.name=@coursenameunion
select'平均分',AVG(score)as'score'fromselectcourse,student,course
wherestudent.id=selectcourse.studentidandcourse.id=selectcourse.courseidand
course.name=@coursename;
4.2系统详细设计
4.2.1为列表视图控件设置风格和标题
dwStyle|=LVS_EX_FULLROWSELECT;
dwStyle|=LVS_EX_GRIDLINES;
m_ctllist.SetExtendedStyle(dwStyle);
m_ctllist.InsertColumn(0,"姓名",LVCFMT_LEFT,180);
m_ctllist.InsertColumn(1,"成绩",LVCFMT_LEFT,140);
4.1.2mfc加载驱动,连接数据库
voidADOconn:
:
OnInitADOConn()
{
:
:
CoInitialize(NULL);
try
{
m_pConnection.CreateInstance("ADODB.Connection");
m_pConnection->Open((_bstr_t)"Driver={SQLServer};Server=DELL-20140308YK\\SQLEXPRESS;Database=cjgl;UID=sa;PWD=123","","",adModeUnknown);
}
catch(_com_errore)
{
AfxMessageBox(e.Description());
}
}
4.1.3按学号查询成绩按钮设置以及调用存储过程proc1
voidCXscjglDlg:
:
OnButton1()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
CStringtext,texts,Temp,sql,sql2;
GetDlgItem(IDC_EDIT1)->GetWindowText(text);
Temp.Format(text);
texts+=Temp;
CStringcontent,CSTemp;
_ConnectionPtrm_pConnection;
_RecordsetPtrm_pRecordset;
ADOconnm_AdoConn;
:
:
CoInitialize(NULL);
try
{
//创建connection对象
m_pConnection.CreateInstance("ADODB.Connection");
//设置连接字符串
_bstr_tstrConnect="Provider=SQLOLEDB.l;IntegratedSecurity=SSPI;PersistSecurityInfo=False;Server=DELL-20140308YK\\SQLEXPRESS;UID=sa;PWD=123;InitialCatalog=cjgl;DataSource=.";
m_pConnection->Open(strConnect,"","",adModeUnknown);
}
catch(_com_errore)
{
AfxMessageBox(e.Description());
}
//判断输入的合法性
try
{
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open("select*fromstudent",m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_errore)
{
AfxMessageBox(e.Description());
}
inti=0;
while(m_pRecordset->adoEOF==0)
{
CSTemp.Format((_bstr_t)m_pRecordset->GetCollect("id"));
m_pRecordset->MoveNext();
if(texts==CSTemp)
i=i+1;
}
if(i>=1)
{
sql="execproc1"+texts+"";
try
{
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open((_bstr_t)sql,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_errore)
{
AfxMessageBox(e.Description());
}
while(m_pRecordset->adoEOF==0)
{
CSTemp.Format((_bstr_t)m_pRecordset->GetCollect("name"));
content+=CSTemp;
CSTemp.Format(":
");
content+=CSTemp;
CSTemp.Format((_bstr_t)m_pRecordset->GetCollect("score"));
content+=CSTemp;
CSTemp.Format("\r\n");
content+=CSTemp;
m_pRecordset->MoveNext();
}
MessageBox(content);
}
else
MessageBox("请输入正确信息!
");
}
4.1.4按课程名查询成绩按钮设置以及调用存储过程
voidCXscjglDlg:
:
OnButton2()
{
CStringtext,texts,Temp,sql,sql2,itest;
GetDlgItem(IDC_EDIT2)->GetWindowText(text);
Temp.Format(text);
texts+=Temp;
CStringcontent,CSTemp;
_ConnectionPtrm_pConnection;
_RecordsetPtrm_pRecordset;
ADOconnm_AdoConn;
:
:
CoInitialize(NULL);
try
{
m_pConnection.CreateInstance("ADODB.Connection");
_bstr_tstrConnect="Provider=SQLOLEDB.l;IntegratedSecurity=SSPI;PersistSecurityInfo=False;Server=DELL-20140308YK\\SQLEXPRESS;UID=sa;PWD=123;InitialCatalog=cjgl;DataSource=.";
m_pConnection->Open(strConnect,"","",adModeUnknown);
}
catch(_com_errore)
{
AfxMessageBox(e.Description());
}
//判断输入的合法性
try
{
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open("select*fromcourse",m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_errore)
{
AfxMessageBox(e.Description());
}
inti=0;
while(m_pRecordset->adoEOF==0)
{
CSTemp.Format((_bstr_t)m_pRecordset->GetCollect("name"));
m_pRecordset->MoveNext();
if(texts==CSTemp)
i=i+1;
}
//判断输入的合法性
if(i>=1)
{
sql="execproc2"+texts+"";
try
{
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open((_bstr_t)sql,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_errore)
{
AfxMessageBox(e.Description());
}
while(m_pRecordset->adoEOF==0)
{
CSTemp.Format((_bstr_t)m_pRecordset->GetCollect("name"));
content+=CSTemp;
CSTemp.Format(":
");
content+=CSTemp;
CSTemp.Format((_bstr_t)m_pRecordset->GetCollect("score"));
content+=CSTemp;
CSTemp.Format("\r\n");
content+=CSTemp;
m_pRecordset->MoveNext();
}
MessageBox(content);
}
else
MessageBox("请输入正确信息!
");
}
4.3程序运行界面
4.3.1程序运行主界面
4.3.2按学号查询
4.3.2.1输入正确学号
4.3.2.2输入错误学号
4.3.3按课程名查询
4.3.3.1输入正确课程名
4.3.3.2输入错误课程名
五、实验心得
为期八个学时的软件体系结构第一个实验终于做完了,感觉在这段时间里收获了很多东西,由于上个学期才学习的数据库原理,所以做这次实验是对sqlsever2005数据库的一次很好的复习。
在实验课之前我和我的组员花了学习了一段时间MFC但是在实验过程中对VC的使用还是有些困难困难,遇到不懂的就在网上查询资料或咨询老师和同学。
非常感谢帮助我们的老师和同学,让我们都能够顺利的解决遇到的问题。
实验项目名称:
学生成绩管理系统
(二)实验学时:
8
同组学生姓名:
实验地点:
A203
实验日期:
12.5、12.12、11.19、11.26实验成绩:
批改教师:
批改时间:
一实验目的
掌握基于Web的信息管理系统的设计方法,加深对功能模型、对象模型以及B/S结构等的理解。
二实验环境
MyEclipse8.5,SQLServer2005,Tomcat7.0
三实验过程
3.1实验组织
本实验共8个课时,每个学生独立完成实验并提交实验报告。
3.2实验内容
本实验内容包括三个部分,具体如下:
1、数据库设计与实现
共设计三个数据表:
课程(course)、学生(student)、选课(selectcourse),其中,选课(selectcourse)数据表为课程(course)数据表和学生(student)数据表的关系表。
三个数据表的模式结构如下:
课程(course):
课程号(id)、课程名(name)、学时(period)、开课院系(department)、授课教师编号(teacherid)、授课教师姓名(teachername)。
学生(student):
学号(id)、姓名(name)、性别(gender)、所属院系(department)。
选课(selectcourse):
学号(studentid)、课程号(courseid)、成绩(score)。
2、存储过程设计与实现
共设计两个存储过程:
1)查看每位同学各门课的成绩并计算该同学的平均成绩;
2)查看一门课所有同学的成绩并计算该课程的平均成绩。
3、用户界面程序设计与实现共设计两个页面:
1)查询页面
要求:
首先显示所有学生信息,然后由用户选择一名学生(或者直接输入一个学生的学号),点击“查询学生成绩”按钮后,显示该学生各门课的成绩以及该学生的平均成绩;用户在选择一门课程后,点击查询课程成绩按钮后,显示该课程所有学生的成绩以及该课程的平均成绩。
即分别调用上面的两个存储过程。
2)登分页面
要求:
首先显示所有学生信息和课程信息,由用户选择一名学生和一门课程(或者直接输入一个学生的学号和一门课程的课程号),然后提供录入、修改、删除这名学生的该门课程的成绩的基本功能。
3.3实验步骤
1、创建数据库、三个数据表以及数据约束。
2、创建两个存储过程。
3、使用Myeclipse8.5创建JSP和Servlet程序来实现用户界面,其中使用JDBC进行数据库连接。
使用Tomcat7.0作为Web信息服务器。
四、实验结果与分析
4.1数据库详细设计
4.1.1创建数据库
CREATEDATABASE[cjgl]ONPRIMARY
(NAME=N'cjgl',FILENAME=N'C:
\ProgramFiles\MicrosoftSQLServer\MSSQL10.MSSQLSERVER\MSSQL\DATA\cjgl.mdf',SIZE=3072KB,MAXSIZE=UNLIMITED,FILEGROWTH=1024KB)
LOGON
(NAME=N'cjgl_log',FILENAME=N'C:
\ProgramFiles\MicrosoftSQLServer\MSSQL10.MSSQLSERVER\MSSQL\DATA\cjgl_1.ldf',SIZE=1792KB,MAXSIZE=2048GB,FILEGROWTH=10%)
4.1.2创建表
4.1.2.1创建course表
CREATETABLE[dbo].[course](
[id][char](4)PRIMARYKEY,
[name][varchar](20)NULL,
[period][char](4)NULL,
[department][varchar](20)NULL,
[teacherid]