(组成员:XX)
1 引言
11 编写目
新生报道系统概设计说明书中已解决实现系统需求程序模块设计问题包括该系统化分干模块决定模块间接口模块传递信息数结构模块结构设计等详细设计报告中阶段中系统做详细设计进行说明
阶段中确定该具体实现求系统便编码阶段直接翻译成具体程序语言书写程序工作根软件需求说明书中描述数功运行性需求概设计说明书确定处理流程总体结构模块外部设计软件系统结构逐模块程序描述
12 背景
软件开发名称:新生报理系统
项目务提出者:黄冈师范学院
软件开发者:数学计算机科学学院
户:黄冈师范学院
软件开发员:
定义
FRMS新生报理系统
BSBrowerServer浏览器服务器
13 参考资料
新生报理系统行性分析报告
新生报理系统需求分析报告
新生报理系统概设计报告
软件工程导
软件工程
软件文档写作
2 程序系统组织结构
新生报系统
退出系统
系统菜单
登录
报表生成
系统维护
报道理
缴费理
宿舍理
高中档案缴纳情况表
组织关系缴纳情况表
学生缴费情况表
新生宿舍情况表
录取通知书收取
寝室信息查询
修改密码
注册
组织关系
高中档案
缴费查询
缴费登记
安排寝室
3 程序1(标识符)设计说明
31 程序描述
面需求分析出系统功庞杂分前台浏览器(BS)信息发布数查询台(CS)数理处理学生理功部分数分5类:新生相关校生相关组织社团相关毕业生相关学生成绩综合查询相关操作功分三种户:普通户(浏览器浏览查询)业务数理员(学生工作辅导员教务干事)系统理员便整系统组织理相独立数功组织整系统中相独立功完全独立设计编译成独立目标(功)模块(single Executable)功模块集成称虚拟桌面控制台模块中相应系统结构分控制台程序五子系统子系统分干子模块应模块录入查询修改删查详细资料功整业务流程种基功实现里模块功没必子模块里重复阐述子模块里列出区子模块功实现
32 功
(1)般功:
(2)特殊功1:
(3)特殊功2:
(4)特殊功3:
33 性
(1)系统登录:户输入网址登陆界面输入户名密码进行登录户名密码误时提醒户重新输入清户错误输入数果户取消说明户意识输入误系统实现户名密码栏
(2)报理:新生报时点击报理’钮系统进入报理界面工作员输入学生报录取通知书号点击查询钮系统显示该学生基信息提供辅导员班级等信息方便帮助学生找老师班级界面适合部门档案收取部门进入该界面输入学生通知书号报道理’栏高中档案缴纳’处点击单选框’登记学生已缴纳档案理组织关系处采类似操作组织关系缴纳面勾选’
(3)缴费理:工作员点击缴费理’显示缴费理界面输出学生录取通知书号果新生已钱额存入银行系统查询缴费否成功系统必须显示出缴费成功否果已交费系统缴费理’处’栏动勾未交费否’栏勾时求新生交费现场交费缴费单刀报道员处员缴费情况录入系统缴费理栏选择’
(4)宿舍理:工作员输入学生录取通知书号查学生基信息确定分配宿舍分配位学工作员寝室分配栏里拉列表中选择查询条件条件选择系统开始查询数数显示面表格中查询出学生满意寝室右角寝室登记栏输入房间编号点击登记’钮学生分配宿舍
(5)系统理:实现新户注册系统密码修改
34 输入项
新生注册码作新生唯标示余信息均系统生成
35 输出项
系统输出总体信息部分数字信息
:
学工部:需知道少缺少分布系
财务部:需知道少交费少没交费欠费名单欠费金额学生分布系
系部:需知道专业(班级)报情况交费情况
信息必须准确清晰明失误
36算法
功说明:开系统登陆界面输入户名密码进行登陆户名密码误时提醒户重新输入清户错误输入数果户取消说明户意识错误系统实现清空户名密码栏
37 流程逻辑
缴费流程:
报理流程:
38 接口
1外部接口
(1)户界面 :采非常流行WEB界面
(2)软件接口:运行IE60版
(3)硬件接口:支持般x86系统微型计算机
2部接口
IE调系统进入登陆模块退出系统模块执行完毕返回操作系统模块登陆模块调接收系统功相应信息启动信息理收费退费收费汇总宿舍情况理宿舍分配信息理模块模块调执行增加查询修改删信息功部门审查模块系统菜单模块调执行删查询审查报申请书功汇总模块系统菜单模块调执行查询汇总申请书功系统理模块系统菜单模块调执行数维护户理功
39 存储分配
数记录格式设计便操作员填表员现场工作员填写表格设计较规范独特采技术:1)风格2)阴影3)选择框4)颜色5)设立数字域
310 注释设计
分析具备什特点系统易修改必须先找出修改系统困难处系统修改某模块某子系统细节变动者子系统组合关系某变动更常见某局部数结构执行语句修改种修改生困难困难找出需修改方修改部分影响知道系统部分间存控制调数交换等种种联系某局部修改直接间接影响系统部分A修改波BB修改会影响CE…种影响形象称水波效应[26]进行系统某局部修改必须十分心追踪修改波方面系统难修改原 易修改系统应该相独立功单模块层次结构组成模块间必联系已掉功相互关系已阐明结构化设计基思想
311 限制条件
312 测试计划
详见代码实现部分
313 尚未解决问题
411 登陆界面设计实现
(1)功
登录界面户进行身份密码验证保证系统安全性理员身份角色判断设置应权限
(2)界面设计
包含两文框拉列表框拉列表框包括理员操作员两种角色户登陆时根角色进行选择户输入账号密码正确时进入应操作界面户输入密码正确时会提示密码错误请重新输入
系统登陆界面图:
(3) 部分事件代码实现
登录确定钮单击事件处理程序:
private void btLogin_Click_1(object sender EventArgs e)
{
s cmbRolesText
if (thistxtUserNameText || thistxtPwdText )
{
MessageBoxShow(账号¨密¨码空)
txtUserNameFocus()
}
else
{
if (thiscmbRolesText 理员)
{
try
{
sqldbmyconnOpen()
string name txtUserNameText
string pwd txtPwdText
string sql select * from Admin where LoginName' + thistxtUserNameText + 'and LoginPwd' + thistxtPwdText + '
string sql select count(*)from Admin where LoginName@LoginName and LoginPwd@LoginPwd参数化sql语句
SqlCommand cmd new SqlCommand(sql sqldbmyconn)
cmdParametersAdd(new SqlParameter(@LoginName name))
cmdParametersAdd(new SqlParameter(@LoginPwd pwd))
int i ConvertToInt32(sqldbexecutescalar(sql))
判断密码账号否误
int i ConvertToInt32(cmdExecuteScalar(sql))
sqldbmyconnClose()
if (i 0)
{
MessageBoxShow(账号密码误)
txtUserNameText
txtPwdText
txtUserNameFocus()
}
if (sqldbexecutescalar(sql) null)
{
MessageBoxShow(账号密码误)
textBox1Text
textBox2Text
textBox1Focus()
}
else
{
Programflag 1
thisHide()
thisClose()
}
}
catch
{
sqldbmyconnClose()
}
}
else
{
string sql select * from Oper where LoginName' + thistxtUserNameText + 'and LoginPwd' + thistxtPwdText + '
if (sqldbexecutescalar(sql) null)
{
MessageBoxShow(账号密码误)
txtUserNameText
txtPwdText
txtUserNameFocus()
}
else
{
Programflag 1
thisClose()
}
}
}
}
412 界面设计
界面作父窗体窗体端menuStrip控件做菜单项菜单
面toolstrip做工具栏果理员登陆拥权限面
菜单钮全部果操作员登陆报统计查询新生信息查询修改密码权限余功菜单项钮灰色
界面图:
413 信息导入界面设计实现
(1)功
存放新生信息execl表导入系统数库中
界面设计
开文件夹导入钮保存数库保存钮显示导入数datagridview控件
信息导入界面图:
(1) 部分事件代码实现
导入execel代码
private void btInfoInto_Click(object sender EventArgs e)
{
OpenFileDialog openFileDialog1 new OpenFileDialog()
openFileDialog1Filter Execl files (*xls)|*xls
openFileDialog1FilterIndex 0
openFileDialog1RestoreDirectory true
openFileDialog1FileName null
openFileDialog1ShowDialog()选择导入execel
string Path openFileDialog1FileName
txtFilePathText Path
string strConn ProviderMicrosoftJetOLEDB40 + Data Source + txtFilePathText + + Extended PropertiesExcel 80
OleDbConnection conn new OleDbConnection(strConn)
string strExcel
OleDbDataAdapter myda null
DataSet ds null
strExcel select * from [sheet1]
myda new OleDbDataAdapter(strExcel strConn)
ds new DataSet()
if (txtFilePathText )
{
mydaFill(ds)
dGVStuInfDataSource dsTables[0]
}
else
{
MessageBoxShow(没选择导入数)
return
}
}
excel表保存数库
private void btSaveDB_Click(object sender EventArgs e)
{
try
{
string strConn ProviderMicrosoftJetOLEDB40 + Data Source + txtFilePathText + + Extended PropertiesExcel 80
OleDbConnection conn new OleDbConnection(strConn)
string strExcel
OleDbDataAdapter myda null
DataSet ds null
strExcel select * from [sheet1]
myda new OleDbDataAdapter(strExcel strConn)
ds new DataSet()
mydaFill(ds)
connClose()
DataTable dt dsTables[0]
string strInsertComm
for (int i 0 i < dtRowsCount i++)
{
strInsertComm
strInsertComm Insert into student(kshxmxbcsrqsfzhzzmmmzyxdmyxmczydmzymcccxzxxxskslbshengshijiguanscore)数库表字段
strInsertComm + values(
for (int j 0 j < 18 j++)
{
if (j > 0)
{
strInsertComm + ' + dtRows[i][j]ToString()Trim() + '
}
else
{
strInsertComm + ' + dtRows[i][j]ToString()Trim() + '
}
}
strInsertComm + )
sqldbexecute(strInsertComm)
}
MessageBoxShow(导入成功|)
State()
}
catch
{
MessageBoxShow(导入失败)
}
}
414 资格审查界面设计实现
(1)功
核报新生信息报新生进行标示
(2)界面设计
通输入报新生准考证号进行核果正确面显示新生信息进行核果误选择报状态进行保存
资格审查界面图
(2) 部分事件代码实现
查询钮单击处理程序:
资格审查
private void btstuCheck_Click(object sender EventArgs e)
{
string picname txtkshText+jpg
SqlConnection myconn
myconn new SqlConnection()
myconnConnectionString ConfigurationManagerConnectionStrings[sqlconn]ConnectionString
myconnOpen()
string sql Select xmxbsfzhzzmmkslbyxmcjiguanzymcxxxsscoremzyxdmzydmcsrqshengshiRegState from student where ksh' + txtkshText + '
SqlCommand command new SqlCommand(sql myconn)
SqlDataReader dateReader commandExecuteReader()
if (dateReaderHasRows)
{
MessageBoxShow(查询误¨®请核输 错误提示)
return
}
else
{ 判断该生否已注册
dateReaderRead()
string Reg dateReader[RegState]ToString()
if (Reg 1)
{
MessageBoxShow(该生¦已注册请核输入)
txtkshText
return
}
}
数库中读¨取¨数
string xm (string)dateReader[0]
string xb (string)dateReader[1]
string sfzh (string)dateReader[2]
string zzmm (string)dateReader[3]
string kslb (string)dateReader[4]
string yxmc (string)dateReader[5]
string jiguan (string)dateReader[6]
string zymc (string)dateReader[7]
string xxxs dateReader[8]ToString()
string score dateReader[9]ToString()
string mz (string)dateReader[10]
string yxdm (string)dateReader[11]ToString()
string zydm (string)dateReader[12]ToString()
string csrq (string)dateReader[13]
string shengshi (string)dateReader[14]
txtxmText xm
txtxbText xb
txtsfzhText sfzh
txtzzmmText zzmm
txtkslbText kslb
txtyxmcText yxmc
txtjiguanText jiguan
txtxxxsText xxxs
txtzymcText zymc
txtscoreText score
txtmzText mz
txtyxdmText yxdm
txtzydmText zydm
txtcsrqText csrq
txtshengshiText shengshi
判断该生片否存¨
try
{
string filePath ApplicationStartupPath + \\Image\\ + picname
picSTUImage ImageFromFile(filePath)
}
catch
{
MessageBoxShow(该生存)
Clear()
picSTUImage picSTUInitialImage
return
}
}
415 报率查询界面设计实现
(1)功
条件报新生进行统计图标形式显示出
(2)界面设计
左边datagridview绑定显示查询报率数右边运第三方图表控件进行报率显示
报率界面图:
(3) 部分事件代码实现
选择专业时处理程序:
专业报新生图表统计
private void cmbprofess_SelectedIndexChanged(object sender EventArgs e)
{
comboBox2Text 请选择
Profess(cmbprofessText)
chartlet1ChartTitleText 报信息图表统计名称
string sql
chartlet1AppearanceStyle FanGChartletAppearanceStylesBar_2D_Aurora_FlatCrystal_Glow_NoBorder图表显示形式
chartlet1BackgroundPaper ColorFromArgb(0 0 0 0)
chartlet1AppearanceStyle FanGChartletAppearanceStylesPie_3D_Aurora_FlatCrystal_NoGlow_NoBorder
全部专业柱状图形式显示
if (cmbprofessText 全部专业)
{
chartlet1ChartTitleText 报信息
sql select zymc as '专业count(*) as '录取¨count(RegState) as '报'cast(round(cast(count(RegState) as decimal)cast(count(*) as decimal)3)*100 as decimal(102)) as '报率¨º' from student group by zymc
}
专业饼状图ª显示
else
{
chartlet1ChartTitleText 报信息
chartlet1AppearanceStyle FanGChartletAppearanceStylesPie_3D_Aurora_FlatCrystal_NoGlow_NoBorder
sql select state count(*) as '录取'count(RegState) as '报' from student where zymc' + cmbprofessText + ' group by state
}
try
{
SqlDataAdapter da new SqlDataAdapter(sql sqldbmyconn)
DataSet ds new DataSet()
daFill(ds)
chartlet1BindChartData(dsTables[0])
chartlet1Refresh()
}
catch
{
return
}
}
专业报率表
private void Profess(string cboProfess)
{
DataSet ds new DataSet()
string sql
if (cboProfess 全部专业)
{
sql stringFormat(select zymc as '专业' count(*) as '录取'count (RegState) as '报'cast(round(cast(count(RegState) as decimal)cast(count(*) as decimal)3)*100 as decimal(102)) as '报率¨from student group by zymc)
}
else
{
sql stringFormat(select zymc as '专业Ì' count(*) as '录取'count(RegState) as '报cast(round(cast(count(RegState) as decimal)cast(count(*) as decimal)3)*100 as decimal(102)) as '报率 from student where zymc' + cboProfess + ' group by zymc)
}
SqlDataAdapter da new SqlDataAdapter(sql sqldbmyconn)
daFill(ds)
dGVRegDataSource dsTables[0]
}
416 系统分班界面设计实现
(1)功
根选专业数设置分班级数然点击分班动产生该专业学生班级名称学生学号班级男女例相
(2) 界面设计
窗体方两拉列表框级联查询根院系选择应专业
面两文框显示该专业数填写分班级数右边分班钮进行分班面datagridview显示分班结果
(3)部分事件代码实现
分班钮单击处理程序:
public void classset(DataSet dsStu int ClassCount)
{
string professName
professName cmbprofessText
#region 创建班级
string ClassId
StringBuilder classList new StringBuilder(BEGIN TRANSACTION ) 插班级sql
for (int i 0 i < ClassCount i++)
{
string ClassName professName + (i + 1) + 班班级名称
string ProfessID cmbprofessSelectedValueToString()
ClassId
ClassId (i + 1)ToString()
if (ClassIdLength 1)
{
ClassId 0 + ClassId
}
classListAppendFormat( insert into Class (classIDclassNameprofessID) values('{0}''{1}''{2}') ClassId ClassName ProfessID)
}
classListAppend( COMMIT TRANSACTION)执行事务
int returnNum sqldbexecute(classListToString())
if (returnNum < 0)
{
MessageBoxShow(系¦统分班出错请重新分班)
return
}
#endregion
#region 分¤班㨤
StringBuilder stulist new StringBuilder(BEGIN TRANSACTION ) 插学生sql
string ProId dsStuTables[0]Rows[0][zydm]ToString()
DataSet classDS sqldbsqlSet(select * from Class where professID' + cmbprofessSelectedValue + ' )
男D生
int yushu 0
DataRow[] boysum dsStuTables[0]Select(xb'男D' ksh asc)
for (int num 0 num < boysumLength num++)
{
yushu num ClassCount
stulistAppendFormat(update student set classID'{0}'className'{1}'cid'{2}' where ksh'{3}' classDSTables[0]Rows[yushu][classID]ToString() classDSTables[0]Rows[yushu][className]ToString() classDSTables[0]Rows[yushu][id]ToString() boysum[num][ksh]ToString())
}
女生
DataRow[] girlsum dsStuTables[0]Select(xb'女 ksh asc)
for (int num 0 num < girlsumLength num++)
{
yushu num ClassCount
stulistAppendFormat(update student set classID'{0}'className'{1}'cid'{2}' where ksh'{3}' classDSTables[0]Rows[yushu][classID]ToString() classDSTables[0]Rows[yushu][className]ToString() classDSTables[0]Rows[yushu][id]ToString() girlsum[num][ksh]ToString())
}
stulistAppend( COMMIT TRANSACTION)
returnNum sqldbexecute(stulistToString())
Sno(classDS)
}
分学号
public bool Sno(DataSet classDS)
{
int ClassCount intParse(txtclasscountText)
string sql stringFormat(select * from student where zymc' + cmbprofessText + 'and RegState1)
DataSet StuDS sqldbsqlSet(sql)
string nian DateTimeNowYearToString()
string xihao StuDSTables[0]Rows[0][yxdm]ToString()
string zhuanye StuDSTables[0]Rows[0][zydm]ToString()
string ClassID
string ClassId
string xuliehao
string SNo
DataRow[] ClassStuDRS null
StringBuilder sb new StringBuilder(BEGIN TRANSACTION )
for (int classIndex 0 classIndex < classDSTables[0]RowsCount classIndex++)
{
ClassID classDSTables[0]Rows[classIndex][id]ToString()
ClassStuDRS StuDSTables[0]Select(cid' + ClassID + ' ksh ASC)
#region 查询出班级编号ClassID
string Classsql stringFormat(select classID from Class where id{0} ClassID)
SqlCommand comm new SqlCommand(Classsql sqldbmyconn)
if (sqldbmyconnState ConnectionStateClosed)
{
sqldbmyconnOpen()
}
SqlDataReader dr commExecuteReader()
if (drHasRows)
{
drRead()
ClassId dr[ClassID]ToString()
sqldbmyconnClose()
}
#endregion
for (int ClassStuIndex 1 ClassStuIndex < ClassStuDRSLength ClassStuIndex++)
{
xuliehao ClassStuIndexToString()
switch (xuliehaoLength)
{
case 1
xuliehao 000 + xuliehao
break
case 2
xuliehao 00 + xuliehao
break
case 3
xuliehao 0 + xuliehao
break
default
break
}
SNo nian + xihao + zhuanye + ClassId + xuliehao
sbAppendFormat(update student set SNO'{0}' where ksh'{1}' SNo ClassStuDRS[ClassStuIndex 1][ksh])
}
}
sbAppend( COMMIT TRANSACTION)
int returnNum sqldbexecute(sbToString())
return returnNum > 0
}
#endregion
private void btClassSet_Click(object sender EventArgs e)
{
判断输入班级数
if (RegexIsMatch(txtclasscountTextTrim() @^\+[19][09]*))
{
MessageBoxShow(请输入零正整数)
txtclasscountText
return
}
if (intParse(txtprofesscountText) < intParse(txtclasscountText))
{
MessageBoxShow(分班级数该专业录取数)
return
}
某专业Ì录取学生¦
string sql stringFormat(select * from student where zymc' + cmbprofessText + 'and RegState1)
DataSet stuDS sqldbsqlSet(sql)
查专业否已分班
string ProId stuDSTables[0]Rows[0][ProfessID]ToString()
string name stuDSTables[0]Rows[0][zymc]ToString()
string Prosql stringFormat(select count(*) from Class where className like'{0}' name)
SqlCommand Procom new SqlCommand(Prosql sqldbmyconn)
sqldbmyconnOpen()
int count (int)ProcomExecuteScalar()
sqldbmyconnClose()
if (count > 0)
{
MessageBoxShow(该专业已分班级请选择专业)
return
}
分班级数
int ClassCount 0
ClassCount intParse(txtclasscountText)
if (ClassCount > 0)
{
classset(stuDS ClassCount)
}
else
{
MessageBoxShow(班级数必须0)
}
string sql1 Select ksh as '考生号’xm as '姓名'xb as '性Àe'zymc as '专业名称'ClassName as '班级名称'SNO as 学号'from student where zymc' + cmbprofessText + 'and RegState1 order by classID
DataSet allstuDS sqldbsqlSet(sql1)
dataGridView1DataSource allstuDSTables[0]
dataGridView1AllowUserToAddRows false
}
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档