常裕文档网    > 范文大全 > 公文范文 >

[学生成绩管理系统论文]初中学生成绩查询

时间:2022-01-18 16:22:20  浏览次数:

学生成绩管理系统

2010— 2011学年第二学期

课程名称 C++程序设计

设计题目学生成绩管理系统

学生姓名张少龙

学号 0905290245 专业班级软件0902

2011年 07 月 02日

一、概述

1.目的与要求

随着科技的发展,基本上所有的具有一定数量数据的机构都开始使用计算机数据库来做管理。几乎所有学校也都已经在使用计算机管理数据的机制,大大减少了学校学生成绩管理的工作量。该课程设计要求设计一个学生成绩的数据库管理系统,数据库中要求包含学生的基本信息,学科基本信息,以及学生所学课程的考试成绩。要方便学生进行成绩查询,通过该课程设计,应该达到把数据库理论知识更加的巩固加深,加强动手能力与实践能力,学以致用,与现实生活中的应用充分的结合起来。

2.设计环境

① Microsoft Office Access

② Microsoft Visual C++ 6.0

2.需求分析

1)教职工:

a.信息要求:

对学生成绩的了解,对学生成绩会有一个成体的了解,在今后的课程教学中可以对自己进行改进。同时还可以对教授的课程进行修改和重设。还可以进一步了解学生的信息,加深对学生的了解,便于因材施教。

b.处理要求:

当学生基本信息发生变化时,老师能对其进行修改。按照不同的需要有的操作是修改、删除、增加。

对成绩的管理,能够进行成绩的录入、修改、删除,能够清晰的了解学生的成绩和大体情况,以便做出相应的总结和改进。

c.完整性要求:

1.各种信息记录的完整性,信息记录内容不能为空;

2.各种数据间相互的联系的正确性;

3.相同的数据在不同记录中的一致性。

2)学生:

a.信息要求:

能够查询自己的成绩信息和大家的整体成绩好做出对自己的新的定位,同时还有更改自己的学生信息,还有就是查询新的课程信息。

b.处理要求:

当学生发现自己信息出现错误时,可以根据自己的实际情况来进行更改,比如某同学发现自己的年龄存储出现了错误就需要相应的机制进行修改、删除等。

同时还可进入成绩查询系统。在该界面中同学可以查询自己的成绩,还可以查询整个科目的全部成绩。

数据需求

学生成绩管理系统就是对学生成绩信息的管理,所以首先我们需要知道的是学生有那些信息,并且是怎样进行分类的。

学生信息包含:学生基本信息、课程基本信息、成绩信息。学生基本信息根据要求应该包括学生对应的学号,姓名,性别,系别,学生年龄等;课程基本信息应该包课程号,课程名,课时,学分等;成绩表包含课程名称,学号,成绩等。

与学生唯一一一对应的是学号,所以学号是唯一的主键,其他的都不能是,根据学号我们可以查找学生的基本信息,还有学生姓名等有关信息;根据课程号可以知道学生对应的成绩等。

与课程一一对应的是课程号,所以课程号是唯一主码,其他的都不是,根据课程号我们可以查询课程的基本信息,如课程名、对应的课时和对应的学分等。

与成绩对应的有两个主码,一个是课程号还有一个是学号。只有这两个同时确定了之后才能确定一个准确的成绩。

在用户表中可以根据用户需要进行密码的修改等一系列操作。

综合分析对信息管理系统分四个表:

用户表(用户名,用户密码,用户等级)

学生表(学号,姓名,性别,系别,学生年龄)

课程表(课程号,课程名,课时,学分)

成绩表(课程号,学号,成绩)

3.概要设计

算法分析及程序流程图

1)功能流图

学生成绩管理系统论文

用户数据字典:

系统设计

学生成绩管理系统论文

概念模型设计(E-R图)

学生成绩管理系统论文

4.逻辑和物理结构设计

逻辑设计

该设计以概念结构设计中的E-R图为主要依据,设计出相关的整体逻辑结构。根据总E-R图了解有四个实体,四个关系模式如下:

用户表(用户名,用户密码,用户等级)

学生表(学号,姓名,性别,系别,学生年龄)

课程表(课程号,课程名,课时,学分)

成绩表(课程号,学号,成绩)

物理设计

创建我的数据库SC:

CREATE DATABASE SCSQLDB

ON

( NAME = SCSQLDB ,

FILENAME = ‘ D:\Downloads\200910510222SQL\SCSQLDB.mdf ’,

SIZE = 2,

MAXSIZE =10,

FILEGROWTH =1)

LOG ON

( NAME =SCSQLLog,

FILENAME =‘D:\Downloads\200910510222SQL\SCSQLDB.ldf ’,

SIZE =1,

MAXSIZE =5,

FILEGROWTH =1)

建立学生表:

CREATE TABLE Student(

sno varchar(8) NOT NULL PRIMARY KEY,

sn varchar(6) NOT NULL,

sex varchar(2) NOT NULL,

depart varchar(6) NOT NULL,

age varchar(2) NOT NULL,

)

建立课程表:

create table Course(

cno varchar(4) not null primary key, cname varchar(10) null,

xueshi int(4) null,

xuefen int(4) null,

建立成绩表

create table SC (

sno varchar(8) not null primary key,

cno varchar(4) not null,

chengji varchar(4) not null

)

2.2 核心代码详细解析

1)在课程对话框中实现课程修改

void CCourseDlg::OnCourseEdit()

{

//得到CList当前所选的行号

int row=m_list.GetSelectionMark();

CString s,strSQL;

//将当前行的第一列的值赋给s

s=m_list.GetItemText(row,0);

if(s=="")//如果s为空,则表示没有选中行

{

MessageBox("请选择一行!");

}

else//如果有选中一行

{

//定义查询条件,相当于where

strSQL.Format("course_id=%s",s);

//打开记录集

m_courseSet.Open();

//设置查询条件

m_courseSet.m_strFilter=strSQL;

//执行查询

m_courseSet.Requery();

//游标指定到该行所在的记录上,执行修改

m_courseSet.Edit();

//设置点击修改按钮后其他按钮的状态

m_bConfirm.EnableWindow(true);

m_bAdd.EnableWindow(false);

m_bEdit.EnableWindow(false);

m_bDel.EnableWindow(false);

m_strName.EnableWindow(true);

m_strNo.EnableWindow(true);

m_strHour.EnableWindow(true);

m_strCredit.EnableWindow(true);

}

}

2)在课程对话框中实现课程添加

void CCourseDlg::OnCourseAdd()

{

//设置输入框为可编辑状态并清空输入框中的值m_strNo.EnableWindow(true);

m_strNo.SetWindowText("");

m_strName.EnableWindow(true);

m_strName.SetWindowText("");

m_strHour.EnableWindow(true);

m_strHour.SetWindowText("");

m_strCredit.EnableWindow(true);

m_strCredit.SetWindowText("");

//打开记录集

m_courseSet.Open();

//添加新记录

m_courseSet.AddNew();

//设置点击确定按钮后,其他按钮的状态

m_bConfirm.EnableWindow(true);

m_bAdd.EnableWindow(false);

m_bEdit.EnableWindow(false);

m_bDel.EnableWindow(false);

}

3)在课程对话框中实现课程删除

void CCourseDlg::OnCourseDel()

{

//得到CList当前所选的行号

int row=m_list.GetSelectionMark();

CString s,strSQL;

//将当前行的第一列的值赋给s

s=m_list.GetItemText(row,0);

if(s=="")//如果s为空,则表示没有选中行

{

MessageBox("请选择一行!");

}

else

{

//弹出窗口询问是否删除数据

if(MessageBox("确定要删除记录吗?","删除询问

",MB_OKCANCEL|MB_ICONQUESTION)==IDOK)

{

//查询所选行所在的记录

strSQL.Format("course_id=%s",s);

m_courseSet.Open();

m_courseSet.m_strFilter=strSQL;

m_courseSet.Requery();

m_courseSet.Edit();

//设置active_status="N";

m_courseSet.m_active_status="N";

//更新数据库

m_courseSet.Update();

//关闭数据库

m_courseSet.Close();

//更新CList数据

RefreshList();

}

}

}

4)登录的确认

void CLoginDlg::OnOK()

{

CString username,password;//定义两个字符串变量

m_strUserName.GetWindowText(username);//将文本框中的值赋给username

m_strPassword.GetWindowText(password);//将文本框中的值赋给帕password

if(!m_database.IsOpen()){//如果数据没有打开,则打开数据库

if(m_database.Open(_T("student")))//如果正确打开数据库

{

m_recordSet.m_pDatabase=&m_database;//将m_database对象赋给m_pDatabase

CString strSQL;

strSQL.Format("select * from USER_PSWD where user_name="%s" and user_password="%s" and active_status="Y"",username,password);

m_recordSet.Open(CRecordset::forwardOnly,strSQL);//打开记录集

if(m_recordSet.GetRecordCount()==0)//如果找不到记录

{

MessageBox("密码错误,请重新输入","密码错误",MB_OK|MB_ICONWARNING);//提示密码错误

m_strPassword.SetWindowText("");//清空密码文本框

m_strPassword.SetFocus();//设置用户名文本框为当前的焦点

}

else//如果找到记录

{

m_recordSet.GetFieldValue("user_level",m_userLevel);//则将数据库中的权限值赋给m_userLevel

CDialog::OnOK();//进入到主窗口

}

m_recordSet.Close();//关闭记录集

m_database.Close();//关闭数据库

}

else//如果没有正确打开数据库

{

MessageBox("不能打开数据库");

}

}

}

5)修改密码的确认

void CPasswordDlg::OnOK()

{

//定义4个CEdit变量

CEdit* pUsername=(CEdit*) this->GetDlgItem(IDC_EDIT_USERNAME);

CEdit* pPassword=(CEdit*) this->GetDlgItem(IDC_EDIT_PASSWORD);

CEdit* pNew=(CEdit*) this->GetDlgItem(IDC_EDIT_NEW);

CEdit* pConfirm=(CEdit*) this->GetDlgItem(IDC_EDIT_CONFIRM);

//分别将文本框的值赋给4个字符串

CString username,password,newPassword,confirmPassword;

pUsername->GetWindowText(username);

pPassword->GetWindowText(password);

pNew->GetWindowText(newPassword);

pConfirm->GetWindowText(confirmPassword);

//定义数据库对象和记录集对象

CDatabase m_database;

CUserSet m_recordSet;

//判断新密码是是为空

if(newPassword.IsEmpty()||confirmPassword.IsEmpty())

{

MessageBox("密码不为空");

}

else

{

if(newPassword!=confirmPassword)//判断两次输入的新密码是否相同

{

MessageBox("两次输入密码不一致,请重新输入新密码");

pNew->SetWindowText("");//清空新密码文本框

pConfirm->SetWindowText("");//清空确认密码文本框

pNew->SetFocus();//设置新密码文本框为焦点

}

else

{

if(!m_database.IsOpen()){//如果数据没有打开,则打开数据库

{ m_database.Open(_T("student"));//如果正确打开数据库

//m_recordSet.Edit();

m_recordSet.m_pDatabase=&m_database;//将m_database对象赋给m_pDatabase

CString strSQL;

strSQL.Format("select * from USER_PSWD where user_name="%s" and user_password="%s" and active_status="Y"",username,password);

m_recordSet.Open(CRecordset::forwardOnly,strSQL);//打开记录集

if(m_recordSet.GetRecordCount()==0)//如果找不到记录

{

MessageBox("密码错误,请重新输入","密码错误",MB_OK|MB_ICONWARNING);//提示密码错误

pPassword->SetWindowText("");//清空密码文本框

pNew->SetWindowText("");//清空新密码文本框

pConfirm->SetWindowText("");//清空确认密码文本框

pPassword->SetFocus();//设置用户名文本框为当前的焦点

}

else//如果找到记录

{

//更新密码的sql语句

strSQL.Format("update USER_PSWD set user_password="%s" where user_name="%s"",newPassword,username);

m_database.ExecuteSQL(strSQL);//执行sql

MessageBox("修改密码成功!");

CDialog::OnOK();

}

m_recordSet.Close();//关闭记录集

m_database.Close();//关闭数据库

}

}

}

}

}

三、调试与操作说明

程序演示

1进入系统

学生成绩管理系统论文

4功能演示

学生成绩管理系统论文

学生成绩管理系统论文

年纪成绩

学生成绩管理系统论文

平均成绩

学生成绩管理系统论文

查询某一课或某个学生成绩

学生成绩管理系统论文

四、设计体会与总结

4.1 程序不足及功能扩充

该程序在对最有一个选项参数设置的设计还不够完善,点中了之后没反应。

3)在成绩查询浏览过程中的设计

改程序在对学生成绩查询的设计部分也存在不足,虽然是按照学生姓名以及课程名进行查询,但是在没有一个通表的情况下这种操作是很危险的。他不能让用户直观的看到可以查询学生的姓名还有就是通有的课程名,这使该部分的设计存在很大问题,不能很好的完成查询功能。

4.2设计心得

课程设计是我们数据库专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础.

说实话,课程设计真的有点累.然而,当我看到自己一手设计出来的成果,慢慢回味这几周的心路历程,一种少有的成功喜悦使倦意顿消.虽然这可以说是我刚学会走完的第一步,也是人生的一点小小的胜利,然而它令我感到自己成熟的许多,通过课程设计,使我深深体会到,干任何事都必须耐心,细致.

短短几周的课程设计,使我发现了自己所掌握的知识是真正如此的缺乏,自己综合应用所学的专业知识能力是如此的不足,2年来的学习了那么多的课程,今天才知道自己并不会用.想到这里,真的心急了,在最后一年的时间里一定要好好学习,为今后工作打好基础!

感谢吉老师的教导!

参考书籍

徐谡,徐立,张晓,张浩淼等.C++应用与开发案例教程[M]. 清华大学出版社

刘惊雷. Visual C++实用教程[M]. 电子工业出版社

推荐访问:山东理工大学论文管理系统 成绩管理系统 论文 学生