课程设计报告学生学籍管理系统Word格式.docx
《课程设计报告学生学籍管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《课程设计报告学生学籍管理系统Word格式.docx(31页珍藏版)》请在冰豆网上搜索。
1.2设计环境
在Windows环境下利用ODBC,使用SqlServer2000作为数据库管理系统对数据进行管理与维护,使用VC++6.0为前台设计平台。
2需求分析
2.1系统功能要求设计
使得学生的学籍管理工作更加清晰、条理化、自动化。
建立学生档案,设计学生入学、管理及查询界面。
容易地完成学生信息的查询、更新、修改等操作。
对于学生成绩管理模块,设计学生各学期、学年成绩输入及查询界面,能更加容易的求得学生的平均成绩、最高分、最低分等,并能在Excel中以报表的形式显示并打印出来。
实现了在校期间对学生表现的跟踪记录,奖惩事件的记录,和处理的结果。
如:
综合测评加分,警告,留校察看,全校表扬等等。
2.2系统模块设计
学籍管理系统大体可以分成四大模块如下图所示,首先是学生的基本信息模块,里面应该包含学生的各方面的基本信息;
再者便是学生成绩管理模块,在该模块中应该包含有对学生成绩信息的查询和处理,如平均成绩、最好成绩、最差成绩以及不及格学生的统计等功能模块;
再其次还有院系、教师、课程等相关信息的模块;
最后是系统模块。
图2-1系统模块图
2.3数据字典
2.3.1数据项
数据项是数据库的关系中不可再分的数据单位,下表分别列出了数据的名称(即码)、注释、数据类型、长度、取值范围和是否是主码。
表2.1数据项列表
名称
注释
数据类型
长度
最小值
最大值
主要的
班级
varchar(50)
50
FALSE
学号
唯一标识学生的信息
integer
TRUE
专业号
姓名
性别
Varchar(50)
年龄
smallint
家庭住址
联系电话
课程名称
考试类型
考试时间
Datatime
8
考试分数
float
奖惩事件
varchar(100)
100
处理结果
备注
奖惩时间
2.3.2数据结构
数据结构是为反映数据之间的组合关系,即一个数据结构可以由若干个数据项组成,也可以由若干个数据结构组成,或由若干个数据项和数据结构组成。
本学籍管理系统的数据组成可根据系统模块的划分来设计,即分为四个数据结构,分别如下表所示。
表2.2数据结构清单
数据结构名
含义说明
组成
学生基本信息
学生基本信息的描述
班级+学号+院系代号+专业号+姓名+性别+出生年月
+籍贯+民族+家庭住址+入学时间+政治面貌+身份证号+联系电话+备注;
成绩管理
学生成绩的管理
与查询管理描述
学号+课程号+分数;
平均分数+最高分+最低分;
学生相关信息
学生的奖惩情况
学生在校毕业情况
奖惩时间+奖惩事件+处理情况+备注;
在校/毕业;
系统管理
对使用用户的管理
授权管理添加删除
用户名+密码
2.3.3数据流
数据流是数据结构在系统内传输的路径。
表2-3是描述数据流的数据流定义表,其中包含了数据流名、说明、数据流组成、流量与备注等,表1-4是系统中的数据流描述,其中包括输入数据流、输出数据流等的描述。
表2.3数据流定义表
编号
数据流名
说明
数据流组成
流量
L01
学生的所有基本信息
学生基本信息结构
——
L02
学生成绩
所有学生的成绩
成绩管理结构
—
L03
分类信息
同班级学生名单
部分学生基本信息结构
L04
各门成绩
学生的平均成绩(包括所有学生和同班级学生的成绩情况)
L05
科目成绩
学生的单科成绩
L06
教师、专业、院系信息
L07
查询结果
L04|L05
3概念结构设计
数据抽象与局部视图设计
3.1学生基本信息与课程信息视图
图3-1学生基本信息视图图3-2课程信息视图
图3-3学生与课程关系视图
3.2专业、教师及院系信息视图
3-4专业、教师及院系信息视图
院系、教师以及专业的关系图如下:
图3-5院系教师以及专业关系图
4详细设计
4.1用户登录
(初始UserName为的evil密码123)
相应代码:
CLogin:
:
CLogin(CWnd*pParent/*=NULL*/)
:
CDialog(CLogin:
IDD,pParent)
{
//{{AFX_DATA_INIT(CLogin)
m_Name=_T("
"
);
m_PassWord=_T("
//}}AFX_DATA_INIT
m_Num=0;
}
voidCLogin:
DoDataExchange(CDataExchange*pDX)
CDialog:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CLogin)
DDX_Text(pDX,IDC_EDIT1,m_Name);
DDX_Text(pDX,IDC_EDIT2,m_PassWord);
//}}AFX_DATA_MAP
BEGIN_MESSAGE_MAP(CLogin,CDialog)
//{{AFX_MSG_MAP(CLogin)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//CLoginmessagehandlers
OnOK()
//TODO:
Addextravalidationhere
UpdateData(TRUE);
if(m_Name.IsEmpty()||m_PassWord.IsEmpty())
{
MessageBox("
用户名或密码不能为空"
return;
}
m_Num++;
CStringsql;
sql.Format("
select*fromtb_userwhereusername='
%s'
andpwd='
m_Name,m_PassWord);
m_LoginSet=newCLoginSet(&
((CMystudentsysApp*)AfxGetApp())->
m_DB);
if(!
m_LoginSet->
Open(AFX_DB_USE_DEFAULT_TYPE,sql))
AfxMessageBox("
tb_studentinfo表打开失败!
if(m_LoginSet->
GetRecordCount()!
=0)
CDialog:
OnOK();
else
if(m_Num==5)
{
MessageBox("
密码5次不正确"
CDialog:
OnCancel();
}
else
用户名或密码不正确"
m_Name="
;
m_PassWord="
UpdateData(FALSE);
IsOpen())
m_LoginSet->
Close();
deletem_LoginSet;
}
4.2界面总览
4.3学生信息管理
//CInfoStudentmessagehandlers
BOOLCInfoStudent:
OnInitDialog()
OnInitDialog();
Addextrainitializationhere
m_ToolBar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD|WS_VISIBLE|CBRS_TOP
|CBRS_GRIPPER|CBRS_TOOLTIPS|CBRS_SIZE_DYNAMIC)
||!
m_ToolBar.LoadToolBar(IDR_TOOLBAR_subjectinfo))
TRACE0(_T("
创建工具条失败\n"
));
returnFALSE;
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
m_ToolBar.SetButtonStyle(0,TBBS_CHECKBOX);
m_ToolBar.SetButtonStyle(1,TBBS_CHECKBOX);
m_ToolBar.SetButtonStyle(2,TBBS_CHECKBOX);
m_ToolBar.SetButtonStyle(3,TBBS_CHECKBOX);
m_ToolBar.SetButtonStyle(4,TBBS_CHECKBOX);
m_ToolBar.SetButtonStyle(5,TBBS_CHECKBOX);
m_ToolBar.SetButtonStyle(6,TBBS_CHECKBOX);
//RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
CStringsqlStr;
sqlStr="
SELECT*FROMtb_studentinfo"
mystudentset=newCStudentinfoset(&
mystudentset->
Open(AFX_DB_USE_DEFAULT_TYPE,sqlStr))//打开数据表
tb_studentinfo表打开失败!
returnTRUE;
//returnTRUEunlessyousetthefocustoacontrol
//EXCEPTION:
OCXPropertyPagesshouldreturnFALSE
voidCInfoStudent:
Onsubjectinfotoolbarsave()
Addyourcommandhandlercodehere
if(m_studentaddr.IsEmpty()||m_studentclass.IsEmpty()
||m_studentname.IsEmpty()||m_studentphone.IsEmpty()
||m_studentsex.IsEmpty()||m_studentid.IsEmpty())
请输入相应的数据!
return;
mystudentset->
AddNew();
//调用添加记录的函数处理
m_studentid=m_studentid;
m_addr=m_studentaddr;
m_age=m_studentage;
m_class=m_studentclass;
m_studentname=m_studentname;
m_phone=m_studentphone;
m_sex=m_studentsex;
Update();
Requery();
AfxMessageBox("
成功保存数据!
DisplayRecord();
//更新显示
4.4学生成绩录入
//CExaminfo_submarkdlgmessagehandlers
voidCExaminfo_submarkdlg:
Oninputsavemarks()
//读入输入的资料
if(m_studentid.IsEmpty()||m_examsubject.IsEmpty()||m_examkind.IsEmpty())
CStringsqlStr_findid;
sqlStr_findid="
SELECT*FROMtb_studentinfoWHEREtb_studentinfo.studentid='
+m_studentid+"
'
"
myfindset_id=newCStudentinfoset(&
myfindset_id->
Open(AFX_DB_USE_DEFAULT_TYPE,sqlStr_findid))
if(myfindset_id->
GetRecordCount()==0)
没有此学生,请确认学号后再输入!
if(myfindset_id->
myfindset_id->
deletemyfindset_id;
myfindset_id->
deletemyfindset_id;
CStringyear,month,day;
year=m_examdate.Format("
%Y"
month=m_examdate.Format("
%m"
day=m_examdate.Format("
%d"
SELECT*FROMtb_examinfo_subWHEREtb_examinfo_sub.studentid\
='
andcode='
andkind='
andyear(examdate)='
and\
month(examdate)='
andday(examdate)='
m_studentid,
m_examsubject,m_examkind,year,month,day);
myexamsubmarkset_findsame=newCExaminfo_submarkset(&
myexamsubmarkset_findsame->
tb_examinfo_sub表打开失败!
if(myexamsubmarkset_findsame->
已经有此记录,不能重复输入!
if(myexamsubmarkset_findsame->
myexamsubmarkset_findsame->
myexamsubmarkset_findsame->
deletemyexamsubmarkset_findsame;
myexamsubmarkset->
//对应变量更新
m_code=m_examsubject;
m_grade=m_submark;
m_kind=m_examkind;
m_examdate=m_examdate;
boolCExaminfo_submarkdlg:
DisplayRecord()
if(myexamsubmarkset->
IsEOF()&
&
myexamsubmarkset->
IsBOF())
m_studentid="
m_submark=0.0f;
m_examsubject="
m_examkind="
if(myexamsubmarkset->
IsBOF())//移动到了开头,就向后移动
myexamsubmarkset->
MoveNext();
else//否则前移
if(myexamsubmarkset->
IsEOF())
{
myexamsubmarkset->
MovePrev();
}
GetCurrentTime(m_examdate);
m_studentid="
UpdateData(FALSE);
//显示更新
BOOLCExaminfo_submarkdlg:
sqlStr="
SELECT*FROMtb_examinfo_sub"
myexamsubmarkset=newCExaminfo_submarkset(&
m_examdat