课程设计报告学生学籍管理系统Word格式.docx

上传人:b****6 文档编号:18850621 上传时间:2023-01-01 格式:DOCX 页数:31 大小:266.11KB
下载 相关 举报
课程设计报告学生学籍管理系统Word格式.docx_第1页
第1页 / 共31页
课程设计报告学生学籍管理系统Word格式.docx_第2页
第2页 / 共31页
课程设计报告学生学籍管理系统Word格式.docx_第3页
第3页 / 共31页
课程设计报告学生学籍管理系统Word格式.docx_第4页
第4页 / 共31页
课程设计报告学生学籍管理系统Word格式.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

课程设计报告学生学籍管理系统Word格式.docx

《课程设计报告学生学籍管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《课程设计报告学生学籍管理系统Word格式.docx(31页珍藏版)》请在冰豆网上搜索。

课程设计报告学生学籍管理系统Word格式.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1