Qt制作课表管理器

一.目的

1.实现课程的添加与删除

2.实现课程自动提示与切换

3.实现软件自动获取时间

二.UI设计

主页面

 管理页面

 三.代码思路

主要用到以下控件:

QPushButton

textEdit

lineEdit

checkBox

dateEdit

四.实现思路

主页面:

日期(自动获取当前系统时间并显示)

课程切换(自动根据时间切换显示课程)

天气(嵌入天气网页作为背景?)

管理页面:

添加(点击添加显示到列表中),成功后跳出提示框

取消(清空信息)

加:返回键(返回主页面)

课程列表(保存显示课程名,可以对课程进行编辑或修改)

加:编辑、删除

四.整体代码架构

1.三个类和UI界面

mainWidow.h

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    SetWindow *ppage=NULL;
    FirstWeek *fpage=NULL;
    QVector<QString> weeks={"星期一","星期二","星期三","星期四","星期五","星期六","星期天"};
    QMap<QString,int> mapDay;//英语周末的转换
    QString lastClass;
    QString lastJ;
    QString curClass;
    QString curJ;
    QString furClass;
    QString furJ;
    QString temClass;
    QMap<int,QString> toDayClass;//今天的课
    QString curClassTime;//当前时分
    int curClassTime1;
    QMap<QString,int> numClassMap;//当前第几大节
    int classTime;//今天的几节课记录
    int curD;//记录星期几
    int curWeek;//记录当前周
    int count=0;//记录第几周
    int timeArr[10]={800,935,1005,1140,1400,1535,1605,1740,1835,2000};//时间表
    int subTime;//距离下一节课多久
    //QDateTime CurrentTime=QDateTime::currentDateTime();

private:
    Ui::MainWindow *ui;
private slots:
    void timeUpdate();
};

setwindow.h

class SetWindow;
}

class SetWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit SetWindow(QWidget *parent = nullptr);
    ~SetWindow();
    QFile f;
    QString className=NULL;
    int sinOrdouW=0;
    QVector<int> weekDays;//存储每周几天
    QMultiMap<int,QString> map;//存储每天几节
    int begin=0;
    int end=0;
    QList<QString> values;//记录map里面的第几大节

private slots:
    void on_okbtn_clicked();

    void on_checkBox_clicked();

    void on_checkBox_2_clicked();

    void on_checkBox_3_clicked();

    void on_checkBox_4_clicked();

    void on_checkBox_5_clicked();

    void on_checkBox_6_clicked();

    void on_checkBox_7_clicked();

    void on_beginWeek_textChanged(const QString &arg1);

    void on_endWeek_textChanged(const QString &arg1);


    void on_refbtn_clicked();
    void on_day_12_currentTextChanged(const QString &arg1);

    void on_day_11_currentTextChanged(const QString &arg1);

    void on_day_21_currentTextChanged(const QString &arg1);

    void on_day_22_currentTextChanged(const QString &arg1);

    void on_day_31_currentTextChanged(const QString &arg1);

    void on_day_32_currentTextChanged(const QString &arg1);

    void on_day_41_currentTextChanged(const QString &arg1);

    void on_day_42_currentTextChanged(const QString &arg1);

    void on_day_51_currentTextChanged(const QString &arg1);

    void on_day_52_currentTextChanged(const QString &arg1);

    void on_day_71_currentTextChanged(const QString &arg1);

    void on_day_61_currentTextChanged(const QString &arg1);

    void on_day_62_currentTextChanged(const QString &arg1);

    void on_day_72_currentTextChanged(const QString &arg1);

signals:
    void back();

private:
    Ui::SetWindow *ui;
};

Firstweek.h

class FirstWeek : public QMainWindow
{
    Q_OBJECT

public:
    explicit FirstWeek(QWidget *parent = nullptr);
    ~FirstWeek();
    QString year;
    QString month;
    QString day;
    QDate datef;

private:
    Ui::FirstWeek *ui;
signals:
    void backf();
    void weekSig();
private slots:
    void on_btn_ok_clicked();

};

五.结果演示

主页面:

 设置页面:

 学周计算:

六.心得

1.问题总结:

(1)代码比较乱,越写后面越乱

(2)代码涉及的变量比较杂乱,应该提前设计好

(3)变量名重复造成参数出错

(4)UI界面QLabel的堆叠,前后的区别导致无法显示

(5)UI界面不够美观

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值