(三十九)自定义模型

自定义模型

实例分析

需求分析

在文件中以行的形式存储了考试成绩信息(ID, Name,Score)

开发GUI程序显示文件中的信息,并能计算平均成绩,查找最好成绩与最差成绩,可刷新显示的内容和删除内容

 

系统架构

工程中常用数据应用架构为4层结构:

数据层、数据表示层、数据组织层、数据显示层

 

4层架构设计的好处:

4层架构间耦合性低,非常易于扩展和维护

系统核心类图

 

系统架构图

 

类设计

DataSource类

1、  设置数据源并读取数据

2、  对数据进行解析后生成数据对象

 

ScoreInfo类

1、  封装数据源中的一组完整数据

2、  提供返回具体数据值的接口函数

 

ScoreInfoModel类

1、  使用标准模型类QStandardItemModel作为成员

2、  以ScoreInfo类对象为最小单位进行数据组织

 

数据交互流程图

 

界面设计


 

 

上下文菜单

1、  定义QMenu对象

2、  连接QMenu对象中的QAction对象到槽函数

3、  定义事件过滤器,并处理ContexMenu事件

4、  在当前鼠标位置打开菜单对象

 

 

 

//ScoreInfo.h

 

#ifndef SCOREINFO_H
#define SCOREINFO_H
 
#include <QObject>
/*类DataSource(数组层)与类ScoreInfoModel(数据组织层)依赖于类ScoreInfo,应该最先实现类ScoreInfo
class ScoreInfo : public QObject      
{
   Q_OBJECT
 
   QString m_id;
   QString m_name;
   int m_score;
public:
   explicit ScoreInfo(QObject* parent = 0);
   explicit ScoreInfo(QString id, QString name, int score, QObject* parent= 0);
   ScoreInfo(const ScoreInfo& obj);    
   ScoreInfo& operator= (const ScoreInfo& obj);
   QString id();
   QString name();
   int score();
   
};
 
#endif // SCOREINFO_H
 


 

//ScoreInfo.cpp

 

#include "ScoreInfo.h"
 
ScoreInfo::ScoreInfo(QObject* parent) :QObject(parent)
{
   m_id = "NULL";
   m_name = "NULL";
   m_score = -1;           
}
 
ScoreInfo::ScoreInfo(QString id, QStringname, int score, QObject* parent)
{
   m_id = id;
   m_name = name;
   m_score = score;
}
 
ScoreInfo::ScoreInfo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值