计算机科学技术学院
软件工程课程设计报告
(2013 2014 学年 第 1 学期)
学生姓名:
学生专业: 计算机科学技术
学生班级: 计算机
学生学号:
指导教师:
2014年X月X日
目 录
1 问题定义 1
2行性研究 2
21 技术行性 2
22 济行性 2
23 操作行性 2
3 项目开发计划 3
31 项目背景 3
32 项目目标 3
33 项目功 4
4 需求分析 5
41 业务流程图 5
42 性求 5
43 数流图 5
44 数字典 7
5 概设计 10
51 系统功模块图 10
52 模块功说明 10
6 数库设计 12
61 外部接口户界面 12
62 部接口 12
63 ER图 12
64 数结构设计 13
7 详细设计 15
71 系统程序流程图 15
72 界面设计 22
8 测试报告 23
81 测试系统模块 23
82测试摘 25
83 足处 25
9 户手册 26
91编写目 26
92背景 26
93运行环境 26
附录 27
1 问题定义
着互联网发展利INTERNET 技术实现纸办公概念已深入心校园网作学校信息化建设台完成资源享互联网访问教务理电子备课等方面发挥重作服务教学提高教学水效果校园网建设核心目标核心价值系统立足校园实际着眼未发展建成符合标准化协议通性较强实系统提高高校现代化理水实现信息资源享该项目服务教学方面进步方便教师工作学生学侧面达提高学校教学方面软件’质量说适高校开发价值敢说该产品该系列产品中里强调具范围广实性强简单花费少等优点肯定说高校程中优点充分体现功三方面:理员登陆进入系统进行理员操作进行学生信息教师信息课程信息编辑查询删修改添加印等操作学生登陆进入系统进行查询修改印等操作教师登陆进入系统进行查询学生成绩录入修改印等操作
软件系统目标点:系统具强行录入学生信息进行效验数进行修改删规定种权限系统中模块具强续性方便理员修改维护系统操作方便灵活简单系统高效快速查询学生基信息
2行性研究
21 技术行性
该系统改善数处理速度更加方便数进行理时减少力资源浪费工作支出外提高查询效率降低查询错误率修改数方便等原系统工操作效率较低相前系统组开发学生理系统效率会更高耗费短时间处理更数
22 济行性
校园部局域网络已建成电脑均已配置硬件投入需外学校系统开发力支持济行
23 操作行性
学生成绩理方便开发员完成全面调查分析时目标户进行次深入沟通中专院校学生日常理工作规范学生档案基础实现学生考勤学籍变更学生奖惩考试成绩教师考勤等电算化理实现学校力资源优化学生成绩理科学理设计通试系统更加效理学生成绩信息中包括学生基信息成绩信息具信息增加查询修改等功研究探讨该软件操作行
3 项目开发计划
31 项目背景
着科学技术断提高计算机科学日渐成熟强功深刻认识已进入类社会领域发挥着越越重作作计算机应部分计算机学生成绩理信息进行理具手工理法拟点例检索迅速查找方便性高存储量高保密性寿命长成低等点够极提高学生档案理效率企业科学化正规化理世界接轨重条件开发学成绩理系统必
学生成绩理系统学校缺少重部分容学校决策者理者说关重学生成绩理系统应该户提供充足信息快捷查询手段时学生成绩理学日常理工作涉校系师生诸方面着教学体制断改革尤学分制选课制展开深入学生成绩日常理工作保存理日趋繁重复杂高校迫切需研制开发款属功强操作简单具性化学生成绩理系统
32 项目目标
国中学校类信息理系统非新课题学校根没信息理系统工作手工操作完成计算机技术日新月异发展信息化社会进程必然趋势学校理快准精发挥价值系统现代化计算机技术传统教学教务工作相结合学院工作流程设计完成系统学院理中发挥更作实现工作程计算机化提高工作效率工作质量现提出系统开发目标:系统应具实性性适性时注意先进性数库进行动态理防止混乱够户选择条件进行简单查询复合查询够查询结果进行分类汇总注意数安全性具数备份恢复功方便户操作量减少户操作
33 项目功
登录理:保证系统安全性根户权限提供服务分理员登录户(教师学生)登录两子模块账户理:分户理修改密码两子模块中户理子模块包含添加户修改户删户两部分信息查询:基表基础进行信息查询分学生资料查询学生成绩查询两子模块
4 需求分析
41 业务流程图
现资源软件分析次学生老师理员等进行沟通整成绩查询业务流程抽象描述图41示
教师
成绩信息数库
学生
登陆查询 登录
成绩表 查询信息
登录 信息理
理员
图41 学生成绩理业务流程图
42 性求
满足户求系统必须高运作速度户填写信息输入系统系统必须快速时作出响应迅速处理项数信息显示出必需信息求高信息量速度存容量存贮量数信息足够磁盘容量安全性系统重性需求学生信息理系统必须安全措施保证户项信息安全
43 数流图
该数流图体现出学生信息录入教师考核信息存入数库终交理员学生通软件数库查询成绩信息信息总体说明系统理员学生教师间拥权利够进行操作数流图见图4243
图42 顶层数流图
图43 层数流图
44 数字典
441 数流
数流里面包括录入信息成绩写入数库查询结果成绩表等方面具体信息表41424344
表41 录入信息数字典
数流编号:1
数流名:录入信息
简述:写入学生课成绩
数流源:密码检验
数流:成绩登记
数流项组成:录入信息=学生学号+学生姓名+性+班级课成绩
表42 成绩写入数字典
数流编号:2
数流名:成绩写入记录库
说明:学生成绩写入
数流源:成绩登记
数流:成绩写入记录
数流项组成:成绩写入记录=课成绩
数流编号:3
数流名:查询结果
说明:显示学生查询信息结果
数流源:学生信息查询
数流:学生
数流组成:查询信息=学生信息+课成绩
数流编号:4
数流名称:成绩表
简述:学生成绩通知学期前发学生
数流源:成绩理
数流:学生
数项组成:学号+学生姓名+课程名+成绩
数流量:1张学期
表43 查询结果数字典
表44 成绩表数字典
442 数存储
数存储里面包括五张表具体信息见表4546474849
表45 学生表数字典
数存储编号:001
数存储名称:学生表
简述:登记学生信息
数存储组成:学号+姓名+性+班级+专业+系部
相关联处理:成绩理课程理
表46 理员表数字典
数存储编号:002
数存储名称:理员表
简述:增加修改查询学生学籍
数存储组成:学号+身份证号+高考号+姓名+性+家庭住址+ 系部班级
相关联处理:学籍理成绩理课程理
表47 教师表数字典
数存储编号:003
数存储名称:教师表
简述:教师课安排
数存储组成:教师姓名+教课程+课班级
相关联处理:课程理
数存储编号:004
数存储名称:学生选课表
简述:学生选课课程信息存储
数存储组成:姓名 +系部班级+课程名称+课程编号+学号
相关联处理:课程理成绩理
表48 学生选课表数字典
表49 学生成绩表数字典
数存储编号:005
数存储名称:学生成绩表
简述:存放学生科考试成绩
数存储组成:姓名 +学号+系部班级+课程名称+课程编号
相关联处理:课程理成绩理
443 处理
处理分身份验证查询登记具体信息见表410411
表410 身份验证数字典
处理逻辑编号:01
处理逻辑名称:身份验证
简述:检查输入信息合法性
输入数流:学号+密码
处理程:根输入学号密码检索户确定户类确定该户权限显示查询信息
输出数流:学生选课信息学生成绩学生学籍密码修改
处理频率:频繁
表411 查询等级数字典
处理逻辑编号:02
处理逻辑名称:查询登记
简述:查询专业表课程表成绩表
输入数流:教师名+教师号+密码
处理程:根输入信息确定户类根户类显示查询信息
输出数流:学生成绩班级表课程表
处理频率:频繁
5 概设计
51 系统功模块图
根前面需求分析软件开发性学生成绩理系统功模块图分学生子模块教师子模块理员子模块等基模块学生子模块面包括学生选课成绩查询模块教师子模块面包括教师选课模块理员子模块包括信息维护模块成绩理系统功模块图图51示
图51学生成绩理系统功模块图
52 模块功说明
1学生子模块中学生该模块中进行选课退课成绩查询信息进行增删查改等操作
2 教师子模块中教师该模块中进行选课退课成绩录入信息进行增删查改等操作
3理员子模块中理员模块中维护软件远行信息进行增删查改等操作教师学生信息进行增删查改操作
4 学生选课模块中学生登录数库中选择需选择课程进行提交修改选择等操作
5 学生成绩查询模块中学生登录信息查询需科目成绩然进行选择查询学期者学年成绩
6 教师选课模块中教师数库中选择教授课程班级里教师查课程关信息
7 理员修改信息模块中理员理学生教师基信息包括修改查询删等操作
6 数库设计
61 外部接口户界面
户界面部分根需求分析结果户需户友善界面界面设计应做简单明易操作注意界面布局应突出显示重出错信息外观做合理化考虑户WINDOW 风格较熟悉应量方拢设计语言已决定Visual Studio NET进行编程总说系统户界面应作性简单性易学
62 部接口
部接口方面模块间采函数调参数传递返回值方式进行信息传递具体参数结构面数结构设计容中说明接口传递信息数结构封装数参数传递返回值形式模块间传输
63 ER图
初步ER图三范式ER图图6162示中61初步ER图包括常实体属性清楚说明学生教师理员进行操作反馈信息图62满足三范式ER图具体信息图6162示
图61 初步ER图
图62 三范式ER图
64 数结构设计
根数库原理加ER图设计进行数结构设计数库创建5数表结构示:
1 班级信息表(ClassInfo)表61示
表61 ClassInfo表
字段
类型
描述
ClassID
动编号
班级编号(键)
ClassName
文
班级名称
SpecialtyName
文
专业名称
ClassNumber
文
教书编号
Length
数字
学制
Teacher
文
班
EnrolmentTime
日期时间
入校时间
Remark
备注
备注
2 课程表(Course)表62示
表62 Course表
字段
类型
描述
CourseID
动编号
课程编号(键)
ClassID
数字
班级编号
Course
文
课程名称
Semester
文
学期
3 成绩表(ScoreInfo)表63示
表63 ScoreInfo表
字段
类型
描述
ScoreID
动编号
成绩编号(键)
Semester
文
学期
StudentNumber
文
学生学号
Course
文
课程
Score
数字
分数
4专业表(SpecialtyInfo)表64示
表64 SpecialtyInfo表
字段
类型
描述
SpecialtyID
动编号
专业编号
SpecialtyName
文
专业名称(键)
Remark
备注
备注
5 学生信息表(StudentInfo)表65示
表65 StudentInfo表
字段
类型
描述
StudentID
动编号
动编号(键)
StudentNumber
文
学号
Name
文
姓名
Sex
文
性
Address
文
家庭住址
Telephone
文
联系电话
ClassID
数字
班级编号
Remark
备注
备注
7 详细设计
71 系统程序流程图
711 学生基信息模块
学生基信息模块包括学生信息成绩查询选项里学生根需求选择进行操作进行相应操作会相应信息输出便够清楚查询需知识流程图图71示
图71学生基信息流程图
712 学生选课模块
该模块包括学生选课数库里进行选课操作学生里输入信息然选择想选择课程然学生里查询课程相关信息流程图图72示
图 72学生选课流程图
713学生成绩查询模块
该模块提供学生成绩查询信息学生输入学号密码查询想查询课程成绩信息流程图图73示
图73学生成绩查询流程图
714 教师基信息模块
该模块说明教师基信息包括授课查询学生成绩查询等操作流程图图74示
图74教师基信息流程图
715 教师选课模块
模块说明教师够进行授课选择选课信息表里选择教授课程流程图图75示
图75教师选课流程图
716 理员基信息模块
该模块说明理员应该具备权利信息理查询理员里进行学生成绩理教师选课信息理流程图图76示
图76理员基信息流程图
717 理员信息维护模块
该模块说明理员信息进行维护操作中信息学生者教师信息里进行维护流程图图77示
图77理员信息维护流程图
72 界面设计
户登陆:该系统根户身份实现功户登陆时需选择种登陆方式(默认情况学生)系统根户选择登陆方式相应表中搜索例登陆时选择教师登陆方式系统会教师信息表中搜索否存该户输入相符信息果存进入教师页否提示户输入误请重新输入
721 学生户界面
学生初始密码理员指定学生登陆求行修改密码首先需输入原始密码果原始密码没输入正确修改密码原始密码正确基础户继续面操作新密码设定系统求户输入次重复密码避免误输导致密码丢失查询指定学期成绩:学生查询指定学期成绩成绩方便学生解身情况
选课系统:学生选课系统针学生进行网选课设计学生选择想修课程
722 教师户界面
查询授课计划:教师利该系统实现查询授课计划功教师仅学期授课程信息查选修应课程学生名单时添加应课程学生成绩帮助教师提高工作效率
查询学生基信息:教师查询学生基信息帮助教师解学生情况
723 理员界面
学生基信息理:学生基信息理包括学生基信息添加学生基信息修改学生基信息删面出学生信息添加界面
教师基信息理:教师基信息理包括教师基信息添加教师基信息修改教师基信息删
8 测试报告
81 测试系统模块
首先进入该软件图81示进行户选择
图81 登录系统
进入教师模块学生成绩进行录入包括课程编号课程名学分时成绩实验卷面成绩等信息图82示
图82 教师模块
进入学生模块输入学号进行成绩查询中成绩包括时成绩实验成绩卷面成绩等信息图83示
图83学生模块
进入理员模块进行学生基信息录入查询学生信息班级信息删等操作成绩综合成绩排者学分排序入图84示
图84 理员模块
82测试摘
软件实现功程序关系表81:
表81 软件测试功
83 足处
测试时候算法需简化安全性权限运行速度达衡找衡支点软件更加安全权限更分配户设计时应该设计更模块模块功更结构更简洁轻易掌握操作原理技巧
9 户手册
91编写目
编写该文档指导普通户操作该程序处理查询想知道数测试提供该文档阅读者普通户测试员
92背景
1)开发系统软件名称:学生成绩理系统
2)项目务提出者学校信息理系统位老师组负责开发太原科技学广师生成绩查询理
3)开发背景:系统属太原科技学网络理系统学生成绩理模块实现网络理系统中关学生成绩理子功通软件提高软件工程分析问题解决问题力时增强数库VC力
93运行环境
931硬设备
1)少具奔腾III800128M存配置计算机
2)Microsoft鼠标兼容鼠标
3)少500M磁盘空间
4)少32MBRAM存储器
932支持软件
操作系统:WIN98WIN2000WINXPVista等
执行程序:visual C
数库:SQL Sever 2000
933数结构
系统需连接SQL Server数库需更新数库时新建数库数库中需新建表格存储相应文件夹中
附录
程序源代码:
#include
#include
#include
#include
using namespace std
class stu
{
char number[10]
char name[20]
public
stu(char a[10]char b[20])
{
strcpy(numbera)
strcpy(nameb)
}
char* getnumber()
{
return number
}
char* getname()
{
return name
}
}
class stu1 public stu
{
char sex[4]
char sushenumber[8]
char telephone[10]
public
stu1(char a[10]char b[20]char c[4]char d[8]char e[10])stu( a b)
{
strcpy(sexc)
strcpy(sushenumberd)
strcpy(telephonee)
}
friend void main()
}
class stu2 public stu
{
char classnumber[8]
char classname[10]
double scorepingshigradeshiyangradejuanmiangradezonghegradelastscore
public
stu2(char a[10]char b[20]char f[8]char g[10]double aadouble bbdouble ccdouble dddouble eedouble ff)stu(ab){
strcpy(classnumberf)
strcpy(classnameg)
scoreaa
pingshigradebb
shiyangradecc
juanmiangradedd
zonghegradeee
lastscoreff
}
friend void main()
}
void main()
{
char c string passwordint flag70int s0
cout<<欢迎进入学生成绩理系统<
do { do{
cgetch()
if(cchar(13)) break
password+ccout<<*
}while(1)
cout<<\n
if(password123456)
{
flag71
char number[10]
char name[20]
char sex[4]
char sushenumber[8]
char telephone[10]
int i0I0j0int jaja0
ofstream *file[50]
stu1 *s[50]
stu2 *s1[50]
char classnumber[8]
char classname[10]
double scorepingshigradeshiyangradejuanmiangradezonghegradelastscore
bool flag0
int p
char c6
do
{
cout<<请输入身份:<
{
cin>>p
if(1
flag1
else
cout<<错误指令请重新输入<
}while(flag0)
if(p1)
{
cout<<欢迎进入理员模块<
do{
cout<<请输入您进行操作<
int m
cin>>m
switch(m)
{
case 1
char c
do{
cout<<请输入学号<
cout<<请输入姓名<
cout<<请输入性<
cout<<请输入宿舍号码<
cout<<请输入电话号码<
file[ja]new ofstream(d\\atxtiosapp)
*file[ja]<<学号<
s[i]new stu1(numbernamesexsushenumbertelephone)
i++
cout<<数录入成功想继续输入(yn)<
flag0
do{
if(c'y'&&c'n')
{
cout<<错误指令请重新输入<
}
else
flag1
}while(flag0)
}while(c'y')
break
case 2 查询学生基信息
char n[20] char c1int a
do{
int flag10
cout<<请输入查询方式<
if(a1)
{
cout<<请输入查询学生学号<
for(int j0j
{
flag11
cout<<查询学生: <<(*s[j])getnumber()<
}
if(a2)
{
cout<<请输入查询学生姓名<
for(int j0j
{
flag11
cout<<查询学生: <<(*s[j])getname()<
}
if(flag0)
cout<< 起查询学生存<
if(c1'y'&&c1'n')
{
cout<<指令错误请重新输入<
}
}while(c1'y')
break
case 3
char c2char m[10]
do{ int flag20
cout<<请输入查询班级<
cout<<信息<
char xx[8]
for(int jj0jj<6jj++)
{
xx[jj]*x
x++
}
xx[7]'\0'
if(strcmp(mxx)0)
{
flag21
cout<<学号<<(*s[j])getnumber()<<姓名<<(*s[j])getname()<<性<<(*s[j])sex<<宿舍号码<<(*s[j])sushenumber<<电话号码<<(*s[j])telephone<
}
if(flag20)
cout<<起输入班级存<
if(c2'y'&&c2'n')
{
cout<<指令错误请重新输入<
}
}while(c2'y')
break
case 4
char nn[10]char cz int flag2mmmmm
do{
cout<<请输入您删学生学号:<
for(int hh0hh
if(strcmp(nns[hh]>getnumber())0)
{
flag21
i
mmhh
do{
s[mm]s[mm+1]
mm++
}while(mm hh
}
}
for(int hhh0hhh
if(strcmp(nns1[hhh]>getnumber())0)
{
flag21
I mmmhhh
do{ s1[mmm]s1[mmm+1]
mmm++
}while(mmm }
}
if(flag20)
cout<<您求删象存请检查输入正确性
cout<<继续删?(yn)<
if(cz'y'&&cz'n')
{
cout<<指令错误请重新输入<
}
}while(cz'y')
break
case 5
int kint k1i1char na[10]stu2 *temp stu2 *s2[50]k10
cout<<请输入排序课程名<
cout<<1 升序排序<
for( i10i1
if(strcmp((*s1[i1])classnamena)0)
{ s2[k1]s1[i1]
k1++
}
else{
cout<<课程\n
}
}
if(k1)
{
for( int ii0ii
if((*s2[ii])zonghegrade>(*s2[j])zonghegrade)
{
temps2[ii]
s2[ii]s2[j]
s2[j]temp
}
}
if(k2)
{
for( int ii0ii
if((*s2[ii])zonghegrade<(*s2[j])zonghegrade)
{
temps2[ii]
s2[ii]s2[j]
s2[j]temp
}
}
for( j0j
break
case 6 实学分实现排序功
int qint a10char nam[10]stu2 *s3[50]stu2 *te
cout<<请输入排序课程名<
cout<<1 升序排序<
for( int iii0iii
if(strcmp((*s1[iii])classnamenam)0)
{ s3[a1]s1[iii]
a1++
}
}
if(q1)
{
for( int ii0ii
if((*s3[ii])lastscore>(*s3[j])lastscore)
{
tes3[ii]
s3[ii]s3[j]
s3[j]te
}
}
if(q2)
{
for( int ii0ii
if((*s3[ii])lastscore<(*s3[j])lastscore)
{
tes3[ii]
s3[ii]s3[j]
s3[j]te
}
}
for( j0j
break
}
cout<<想理员功?(yn)<
if(c4'n') break
}while(c4'y')
}
if(p2)
{ char c3c5
cout<<欢迎进入教师模块(录入成绩)<
cout<<请输入教学课程编号<
cout<<请输入教学课程名 <
do{
cout<<请输入学生学号<
cout<<请输入学生姓名<
cout<<课程学分<
cout<<该生时成绩<
cout<<实验成绩<
cout<<卷面成绩<
if(shiyangrade1)
zonghegradepingshigrade*03+juanmiangrade*07
else
zonghegradepingshigrade*015+shiyangrade*015+juanmiangrade*07
if(90
else if(80
else if(70
else if(60
else
lastscore0
file[j]new ofstream(d\\btxtiosapp)
*file[j]<<学号<
s1[I]new stu2(numbernameclassnumberclassnamescorepingshigradeshiyangradejuanmiangradezonghegradelastscore)
I++
cout<<数输入成功想继续录入(yn)
cin>>c3
int flag30
do{
if(c3'y'&&c3'n')
{
cout<<错误指令请重新输入<
}
else
flag31
}while(flag30)
}while(c3'y')
cout<<余老师需录入成绩(yn)
cin>>c5
int flag50
do{
if(c5'y'&&c5'n')
{
cout<<错误指令请重新输入<
}
else
flag51
}while(flag50)
}while(c5'y')
}
if(p3)
{
cout<<欢迎进入学生模块 <
cout<<请输入学号<
int ii0double sum0
for(int j0j
if(strcmp((*s1[j])getnumber()num)0)
{
cout<<课程编号<<(*s1[j])classnumber<<课程名称<<(*s1[j])classname<<学分<<(*s1[j])score<<时成绩<<(*s1[j])pingshigrade<<实验成绩<<(*s1[j])shiyangrade<<卷面成绩<<(*s1[j])juanmiangrade<<综合成绩<<(*s1[j])zonghegrade<<实学分<<(*s1[j])lastscore<
}
}
cout<<修<
cout<<想身份登陆?(yn)<
}while(c6'y')
}
else
{
cout<<错误密码重新输入<
}
}while(flag70)
}
欢迎您光Word文档载修改编辑双击删页眉页脚谢谢学进步学止境更层楼
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档