《面向对象课程设计》报告学生信息管理系统设计

  • 一、问题描述
  • 二、需求分析和概要设计
  • 三、功能模块描述和设计思路
  • 四、具体实现过程
  • 五、收获与展望

一、问题描述

学生信息管理系统设计
学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计学生信息管理系统,使之能提供以下功能:
系统以菜单方式工作
1、学生信息录入功能(学生信息用文件保存)输入
2、学生信息浏览功能—输出
3、查询、排序功能—算法
按学号查询
按姓名查询
4、学生信息的删除与修改

二、需求分析和概要设计

题目要求之做一个学生信息管理系统,并且一菜单的形式完成,

CAboutDlg是“关于”界面的设计;
CAddDlg是学生信息录入功能界面的设计,并且实现学生消息添加;
CChangeDlg是学生信息的修改功能界面的设计;
CDisplayView和CSelectDlg在主窗口上个的两个静态拆分窗口;
CInfoDlg是学生信息浏览功能界面的实现设计;
CInfoFile是存放学生信息的类,里面有学生属性,还有一些调用函数;
CLoginDlg登录窗口界面的设计;
CMainFrame是主窗口的设计;
CSearchDlg是学生信息查询界面的设计;
CSortDlg是学生信息排序界面的设计;
CstuinfoApp是应用程序类;
CUserDlg是个人信息界面的设计。

三、功能模块描述和设计思路

首先就是学生信息的录入,要求将信息用文件保存,在这里我设计了一个类CInfoFile,构建了一个结构体msg里面有8个成员变量分别是id,name,age,sex,birthday,place,phone,mail,分别表示学号,姓名,年龄,性别,出生年月,地址,电话,E-mail,除了id(自加,且唯一),age是int类型,其他都是string类型,同时CInfoFile里面还有成员函数ReadDocline、WirteDocline分别向程序里面读数据和写入数据,还有负责添一条数据的成员函数Addline()可以添加一条信息,同时我将学生的信息有list容器存放。这个添加信息的界面我设计了一个CCAddDlg类,继承CFormView类,里面不需要填加学号,只需要输入其他七个变量即可,通过编辑框来接收用户输入的信息。

其次是学生的浏览,我设计了一个CInfoDlg类,它是有CFormView类继承而来的,通过重写OnInitialUpdate();函数来实现界面的初始化,我是用一个List Control控件来显示信息的,当然就要引用CInfoFile的头文件,将文本信息读入,然后在展示出来,大体思路就是这样。

然后我是先做查询的,因为这有做了查询才能删除和修改,查询我也是按照学号查询和姓名查询,在这里我设计了一个CSearchDlg类,它是有CFormView类继承而来的,也要应用CInfoFile类完成对文件的读写,同时在这个选择方式上,我用了一个下拉框,Combo Box控件来实现选择,查询出来的信息在右边的实例编辑框中展示出来,然后对编辑框进行一些属性的调整,例如可下滑(当文本长度过长时可下滑)、可换行、只读,然后学号和姓名都设置可输入编辑框,只有当对应查询方式有效时才能进行查询,无效会有消息框弹出提示,若有效会进行查询将对应结果输出,无输出结果会有对应的提示框弹出,用MessageBox实现。还有一点需要注意的是按照名字查询的时候可能会出现同名的要将其输出。

然后我做了删除和修改,这是用按照学号查询的方法来查询的,分别设计了CDelDlg类和CChangeDlg类,都是有CFormView类继承而来的,CDelDlg类的设计类似查询,也是左边输入搜索,右边输出数据,还有一点就是,点击删除按钮后会弹出二次确认,只有当选择确认时才会删除信息,防止误删。

CChangDlg类的界面类似添加信息界面,但是多了一个学号的选项,这个学号的选项我是用Combo Box做的,原理类似查询的查讯方式选择框,这样就不会弹出未查询到该学号的报错了。在选择学号的时候,会有对应学号信息的提示,以便于对照信息增加可读性。

最后我写的是排序,这里我新建了一个CSortDlg类,我是用一个List Control控件来完成这个功能的,我写了一个列表表头触发事件OnLvnColumnclickList1()函数、同时写了一个静态函数MyCompareProc()函数用来定义排序的方式,比如某列按照int类型排序,而有的按照CString类型排序。

然后,我还自己写了一个登陆窗口,用CLoginDlg来实现的,它的父类是CDialogEx,在应用程序类CstuinfoApp的InitInstance()里面的APP创建之前创建登陆对话框只有登陆成功才能进入到主界面,在登录界面还有记录密码的功能,配有提示如密码错误,用户名不存在。还有就是登录到主窗口是会显示个人信息界面,这个我使用CUserDlg来实现的,里面包括修改密码的功能,确定密码。主窗口的设计CMainFrame类的设计,它是CFrameWnd的子类,在这里我还设计了一个右键菜单和快捷键的设计,还有就是关键的两个列CSelectView类和CDisplayView类,CSelectView继承于CTreeView,CDispalyView继承于CFormView,CSelectView类中初始化树视图,获取数的控件,添加树节点,透视对应的结点添加控制事件,OnTvnSelchanged(),来获得自定义消息,在主窗口界面挂载信息。

四、具体实现过程

  1. 新建项目
    1.1. 根据向导创建项目
    首先,新建MFC项目(stuinfo),基于单文档,MFC标准项目。
    1.2. 添加预处理
    由于微软在VS2013中不建议再使用C/C++的传统库函数scanf,strcpy,sprintf等。
    VS建议采用带_s的函数,如scanf_s、strcpy_s,但这些并不是标准C/C++函数。要想继续使用此函数,需要添加 _CRT_SECURE_NO_WARNINGS这个预定义。
    在项目->属性->C/C+±>预处 ->预处理器定中添加 _CRT_SECURE_NO_WARNINGS,防止报错。
    1.3. 设置主窗口属性
    在CMainFrame的 OnCreate()中添加如下代码:

    IDI_ICON_WIN 是自己导入图标。

    可以在这里修改左侧标题
  2. 文件处理
    2.1. 文件内容处理和设计文件处理类
    Login.ini中登录用户的信息

学生信息在stock.txt中

添加CInfoFile.cpp和CInfoFile.h
设计结构体格式

设计类

  1. 登录窗口的设计
    添加控件

添加类CLoginDlg :public CDialogEx

重写OnInitDialog函数,判断登录情况进行初始化,通过rem.txt里面的内容来判断是否记住密码,如果是就初始化记住密码

还有就是登录按钮的实现

同时这里还有注意两个bug,1是直接点击输入框然后回车会进入主界面,2是直接点x会进入主界面。这里通过重写函数解决。

这是取消按钮的代码:

  1. 静态拆分窗口
    自定义两个类:CSelectView和CDispalyView(它的基类必须是CFormView类)。
    CSelectView继承于CTreeView,CDispalyView继承于CFormView。
    1)CMainFrame类中,声明CSplitterWnd类型的对象:

  2. 树视图功能的添加
    加载图标,

在CSelectView类中声明相应变量,

然后重写CSelectView的OnInitUpdate函数

在功能节点相应信息的处理:

1)在CMainFrame 框架类中,添加自定义消息宏

2)在CMainFrame框架类中添加自定义消息处理函数:
//自定义消息处理函数

afx_msg LRESULT OnMyChange(WPARAM wParam, LPARAM lParam);
3)对应的.cpp定义其函数
LRESULT CMainFrame::OnMyChange(WPARAM wParam, LPARAM lParam)
{
}

4)在CMainFrame框架类BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之间添加自定义消息入口,与自定义消息处理函数绑定。

5)发送自定义信号:
在CSelectView的OnTvnSelchanged函数中,发送自定义信号:

在CMainFrame框架类OnMyChange函数中处理相应消息:

运行结果:

因为此时并没有挂载个人信息界面,所有不会有右边界面的内容,应该是未定义的初始化内容。
6. 个人信息管理界面窗口的实现
6.1. 界面设计

设计界面,添加控件,并给控件添加变量

重写函数

  1. 学生信息浏览窗口的实现
    7.1. 界面设计
    设计界面,添加控件,并给控件添加变量

7.2. 功能的实现

  1. 学生信息添加窗口的实现
    8.1. 界面设计
    设计界面,添加控件,并给控件添加变量

8.2. 功能实现

  1. 学生信息查询界面
    9.1. 界面设计
    设计界面,添加控件,并给控件添加变量

9.2. 功能实现

  1. 学生信息删除界面
    10.1. 界面设计
    设计界面,添加控件,并给控件添加变量

10.2. 功能实现

  1. 学生信息修改界面
    11.1. 界面设计
    设计界面,添加控件,并给控件添加变量

11.2. 功能实现

  1. 学生信息排序界面
    12.1. 界面设计
    设计界面,添加控件,并给控件添加变量

12.2. 功能实现

  1. 菜单栏的制作
    13.1. 菜单栏界面的设计

2)右键菜单栏项,添加事件处理程序,选择COMMAND 消息类型,添加至CMainFrame框架类中
添加函数

13.2. 右键菜单

五、收获与展望

还有些图片不想放了,上传到资料了
一会放链接
最后的成品展示在

链接: 视频录制的不好不介意.

C++ 学生信息管理系统课程设计报告相关推荐

  1. python学生信息管理系统课程设计报告_学生信息管理系统课程设计报告

    一. 引言(简要说明设计题目的目的.意义.内容.主要任务等) 1 实验目的 在全面掌握< C 语言程序设计>课程的知识点的前提下,培养了我们分析实际问题的能力,并能够自己编写程序 实现对实 ...

  2. oracle学生信息管理系统课程设计,数据库课程设计-学生信息管理系统的设计与实现.doc...

    数据库课程设计-学生信息管理系统的设计与实现 2011-2012课程设计II 学生信息管理系统的设计与实现 一 设计内容 建立一个简单的在校学生信息查询系统,可以让使用者查询到学生的一些简单的个人信息 ...

  3. C语言学生成绩信息管理系统课程设计报告

    C语言课程设计报告 一 .设计目的 学生成绩管理系统 主要功能: (1)能按学期.按班级完成对学生成绩的录入. 修改,删除 (2)能按班级统计学生的成绩,求学生的总分及 平均分,并能根据学生的平均成绩 ...

  4. 大一c语言学生信息管理系统课程设计

    使用命令行操作, 每次操作结束后,代码中加入清屏命令,给人一种有界面的感觉. 大一学c语言,现在回过头来看, 觉得当时什么图形界面啥的都没学, 怎么写课程设计. 结果我还是当时班上写得最棒的黑框框毕业 ...

  5. JAVA学生信息管理系统课程设计简介以及开发源码介绍

    java学生信息管理系统简介 1.系统简介 主要实现功能:登录,注册,增加,删除,更改,查找,条件查找,查看在线账号,更改密码. 涉及到内容:java mysql8.0 Navicat 可视化工具 2 ...

  6. 学生成绩管理系统——课程设计报告

    学期末课程设计的作业,利用链表和文件的操作.日后再完善一些功能介绍. /************************************* *******程序名称:学生成绩管理系统 ***** ...

  7. python学生考勤管理系统设计_学生考勤管理系统课程设计报告1

    一.需求分析 功能需求: 1 .录入学生的缺勤记录: 2 .修改某个学生的缺勤记录: 3 .查询某个学生的缺勤情况: 4 .统计某段时间内,缺勤学生学号及缺勤次数,按缺勤权值统计学生的负分值,并能进行 ...

  8. C语言课程信息管理系统课程设计,c语言课程设计学生信息管理系统.doc

    c语言课程设计学生信息管理系统 课程设计报告 课程名称: 高级语言程序设计课程设计 姓 名: 汤璞君 班级学号: BX1209 121003410937 指导教师: 吉顺如 完成日期: 2013.6. ...

  9. c语言学生成员管理代码报告怎么写,C语言学生通信录管理系统课程设计报告

    <C语言学生通信录管理系统课程设计报告>由会员分享,可在线阅读,更多相关<C语言学生通信录管理系统课程设计报告(18页珍藏版)>请在人人文库网上搜索. 1.实验名称 :学生通信 ...

  10. netbeans基于mysql学生信息_学生信息管理系统的设计与实现(NetBeans IDE,MySQL)

    学生信息管理系统的设计与实现(NetBeans IDE,MySQL)(任务书,开题报告,中期检查表,文献综述,外文翻译,毕业论文16000字,程序代码,MySQL数据库) 本系统是在管理信息系统的理论 ...

最新文章

  1. To B服务想做移动化?腾讯云案例了解一下
  2. python 简易HTTP服务器搭建
  3. python全局变量在程序执行的全过程有效_PYTHON使每个过程都可以访问全局变量
  4. 17_clickhouse分布式集群部署
  5. BitmapUtil【缩放bitmap以及将bitmap保存成图片到SD卡中】
  6. FFmpeg Filter基本使用
  7. ST-Link如何秒变J-link,手把手教你实现该功能
  8. win7系统主板驱动在哪
  9. 【Python】Pygame入门
  10. pillow api
  11. SAP License:AM手工折旧计算外折旧
  12. android 照片旋转并保存
  13. Aitit 认证体系之道 attilax著艾龙著 1. 认证体系分类 2 1.1. 按照语言来分 java net php 2 1.2. 按照平台来分 web cs 桌面 2 1.3. 综合性认证
  14. 常见Gof设计模式(包括5种创建型、7种结构型、11种行为型)
  15. “配置系统未能初始化” 异常解决
  16. python 解压zip rar 7z文件
  17. 写在第35个教师节到来时的话——对我国现阶段职业教育改革的总体论述
  18. 场效应管 - MOSFET
  19. 生命是一种长期而持续的累积过程
  20. 【应用层】DNS协议

热门文章

  1. Discuz!教程之论坛设置发帖时默认打开附加选项等功能
  2. 戴尔R730从U盘启动
  3. LINUX DDR驱动知识(转)
  4. 计算机国家级论文,计算机类期刊汇总(核心期刊,国家级期刊)
  5. Re: 一个公司如何才能留住员工呢?
  6. 跑跑卡丁车手游怎么用电脑玩 跑跑卡丁车模拟器玩法教程
  7. 第一次网页前端培训笔记(HTML常用标签)
  8. 由WMT机器翻译双向夺冠看搜狗语音交互布局
  9. window 10 局域网同步时间(解决错误:This scheduler instance is still active but was recovered by another instanc)
  10. 日期格式化时候yyyy-MM-dd HH:mm:ss大小写区分