qt学生管理系统(一)

这篇具有很好参考价值的文章主要介绍了qt学生管理系统(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

主界面:

qt学生信息管理系统,qt,ui,开发语言

 添加页面dialog:

qt学生信息管理系统,qt,ui,开发语言

 dialog头文件:

#ifndef DIALOG_H
#define DIALOG_H
#include"student.h"
#include <QDialog>
#include<QCloseEvent>
namespace Ui {
class Dialog;
}

class Dialog : public QDialog
{
    Q_OBJECT

public:
    void closeEvent(QCloseEvent *event);
    explicit Dialog(QWidget *parent = nullptr);
    ~Dialog();
public slots:
    void on_pushButtonti_clicked();

    void on_pushButtonqv_clicked();

signals:
   void  MyUpdate(Student* pStu);
private:
    Ui::Dialog *ui;
};


#endif // DIALOG_H

dialog.cpp

#include "dialog.h"
#include "ui_dialog.h"
#include<QString>
#include"student.h"
#include<QMessageBox>
#include<QCloseEvent>
Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
}

Dialog::~Dialog()
{
    delete ui;
}

void Dialog::on_pushButtonti_clicked()
{
//获取单号输入框的内容
    QString name=ui->QlineEditxingming->text();
    QString id=ui->lineEditxuehao->text();
    QString sex=ui->lineEditnianling->text();
    QString age=ui->lineEditxingbie->text();
    QString chinese=ui->lineEdityuwen->text();
    QString math=ui->lineEditshuxue->text();
    QString english=ui->lineEdityingyu->text();

 //判断数据是否完整
if(id!=""&&name!=""&&sex!=""&&age!=""&&chinese!=""&&math!=""&&english!=""){
 //创建学生对象
    Student* pStu=new Student;
    pStu->SetId(id);
    pStu->SetName(name);
    pStu->SetSex(sex);
    pStu->SetAge(age);
    pStu->SetChinese(chinese);
    pStu->SetMath(math);
    pStu->SetEnglish(english);
    //要将数据发给widget
    emit MyUpdate(pStu);
}else{
QMessageBox::warning(this,"提示","请将数据录入完整");
}
}
void Dialog::on_pushButtonqv_clicked()
{
    this->close();
}
void Dialog::closeEvent(QCloseEvent * event){
    QMessageBox msgBox;
        msgBox.setText("提示");
        msgBox.setInformativeText("确认退出?");
        msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
        msgBox.setDefaultButton(QMessageBox::Ok);
        int ret = msgBox.exec();
        if(ret == QMessageBox::Ok){
            //若用户点击确认,则接收这个事件,当前窗口会关闭
            event->accept();
        }else{
            //若用户点击取消,则忽略这个事件,当前窗口不会关闭
            event->ignore();
        }
};
ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include  "dialog.h"
#include"student.h"
#include"control.h"
#include<QCloseEvent>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

public:
    void ShowItem(Student* pStu);
    void ShowList();
     void closeEvent(QCloseEvent *event);
private slots:

    void on_pushButtonadd_clicked();
    void on_MyUpdate(Student* pStu);

    void on_pushButtonsave_clicked();

private:
    Ui::Widget *ui;
   Dialog* pDialog;
   control* pcontrol;
};
#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include  "dialog.h"
#include<QTableWidget>
#include<QMessageBox>
#include"control.h"
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    setWindowTitle("学生管理系统");
    pDialog=nullptr;
    pcontrol=control::createctrl();
    pcontrol->FileToList();
   ShowList();
}

Widget::~Widget()
{
    delete ui;
    if(pDialog){
        delete pDialog;
        pDialog=nullptr;
    }
}



void Widget::on_pushButtonadd_clicked()
{
    if(pDialog){
        delete  pDialog;
        pDialog=nullptr;
    }
    pDialog=new Dialog(this);
    pDialog->setWindowTitle("添加学生信息");
    QObject::connect(pDialog,&Dialog::MyUpdate,this,&Widget::on_MyUpdate);
    pDialog->exec();
}

void Widget::on_MyUpdate(Student* pStu){
//将数据存入管理类的链条
pcontrol->additem(pStu);


//将数据显示到表各
 ShowItem(pStu);

};
void  Widget::ShowItem(Student* pStu){

    //获得总行数+1
    int rows=ui->tableWidget->rowCount();

    //设置行数
     ui->tableWidget->setRowCount(rows+1);

    //将信息显示到表格上
    ui->tableWidget->setItem(rows,0,new QTableWidgetItem(pStu->GetId()));
    ui->tableWidget->setItem(rows,1,new QTableWidgetItem(pStu->GetSex()));
    ui->tableWidget->setItem(rows,2,new QTableWidgetItem(pStu->GetAge()));
    ui->tableWidget->setItem(rows,3,new QTableWidgetItem(pStu->GetName()));
    ui->tableWidget->setItem(rows,4,new QTableWidgetItem(pStu->GetChinese()));
    ui->tableWidget->setItem(rows,5,new QTableWidgetItem(pStu->GetMath()));
    ui->tableWidget->setItem(rows,6,new QTableWidgetItem(pStu->GetEnglish()));


};


void Widget::on_pushButtonsave_clicked()
{
    pcontrol->ListToFile();
}






void Widget::ShowList(){
 auto ite=pcontrol->getlist().begin();
 while(ite!=pcontrol->getlist().end()){
     ShowItem(*ite);
     ite++;
 }
};

void Widget::closeEvent(QCloseEvent * event){
    QMessageBox::StandardButton but=QMessageBox::question(this,"提示","是否保存数据");
    if(but==QMessageBox::Yes){
        pcontrol->ListToFile();
    }
};


student.h

#ifndef STUDENT_H
#define STUDENT_H
#include<QString>

class Student
{
public:
    Student();
private:
    QString strId;
    QString strName;
    QString strAge;
    QString strSex;
    QString strChinese;
    QString strMath;
    QString strEnglish;

public:
   QString GetId() const;
   QString GetName() const;
   QString GetAge() const;
   QString GetSex() const;
   QString GetChinese() const;
   QString GetMath() const;
   QString GetEnglish() const;
  void SetId(const QString& id);
  void SetName(const QString& name);
  void SetAge(const QString& age);
  void SetSex(const QString& sex);
  void SetChinese(const QString& chinese);
  void SetMath(const QString& math);
  void SetEnglish(const QString& english);
};

#endif // STUDENT_H

student.cpp

#include "student.h"

Student::Student()
{
    strId="";
    strName="";
    strAge="";
    strSex="";
    strChinese="";
    strMath="";
    strEnglish="";
}


QString Student::GetId() const
{
    return  strId;
};
QString Student::GetName() const{
    return strName;
};
QString Student::GetAge() const{
    return strAge;
};
QString Student::GetSex() const{
    return strSex;
};
QString Student::GetChinese() const{
    return strChinese;
};
QString Student::GetMath() const{
    return strMath;
};
QString Student::GetEnglish() const{
    return strEnglish;
};
void Student::SetId(const QString& id){
    strId=id;

};
void Student::SetName(const QString& name){
    strName=name;
};
void Student::SetAge(const QString& age){
    strAge=age;
};
void Student::SetSex(const QString& sex){
strSex=sex;

};
void Student::SetChinese(const QString& chinese){
strChinese=chinese;

};
void Student::SetMath(const QString& math){

    strMath=math;

};
void Student::SetEnglish(const QString& english){

    strEnglish=english;


};

control.h

#ifndef CONTROL_H
#define CONTROL_H
#include<list>
#include"student.h"
#include<fstream>
using namespace std;
#define PATH "..\\res\\Student.txt"
class control
{
private:
    static control *pcontrol;
private:
    control();
    control(control &c);
    list<Student*> lst;
public:
    ~control();

public:
    static control *createctrl();
    list<Student*> & getlist();
    void additem(Student* pStu);
    void deleteitem(QString id);

    void ListToFile();
    void FileToList();
   };

#endif // CONTROL_H

control.cpp文章来源地址https://www.toymoban.com/news/detail-585952.html

#include "control.h"
#include<QString>

control::control()
{

} ;
control::control(control &c){

};
control::~control(){
auto ite=lst.begin();
while (ite!=lst.end()) {
    delete *ite;
    ite++;
}
};

 control* control::pcontrol=nullptr;

 control* control::createctrl(){

    if(pcontrol==nullptr){
        pcontrol=new control;
    }
    return pcontrol;
};
 list<Student*>& control::getlist(){
     return lst;
 }
 void control::additem(Student *pStu){
     lst.push_back(pStu);
 }
 void control::deleteitem(QString id){
     auto ite=lst.begin();
     while(ite!=lst.end()){
         if((*ite)->GetId()==id){
             delete *ite;
             lst.erase(ite);
             break;
         }
         ite++;
     }

 }

 void control::ListToFile(){
ofstream os;
os.open(PATH);
auto ite=lst.begin();
while(ite!=lst.end()){
    string id=(*ite)->GetId().toStdString();
     string name=(*ite)->GetName().toStdString();
      string age=(*ite)->GetAge().toStdString();
       string sex=(*ite)->GetSex().toStdString();
        string chinese=(*ite)->GetChinese().toStdString();
         string math=(*ite)->GetMath().toStdString();
          string english=(*ite)->GetEnglish().toStdString();
         os<<id<<""<<name<<""<<age<<""<<sex<<""<<chinese<<""
          <<math<<""<<english<<endl;
             ite++;
 };
os.close();
 }
 void control::FileToList(){
   ifstream is;

 is.open(PATH);
 string id,name,age,sex,chinese,math,english;
 while(is>>id>>name>>age>>sex>>chinese>>math>>english){
Student* pStu=new Student;
pStu->SetId(QString::fromStdString(id));
pStu->SetName(QString::fromStdString(name));
pStu->SetAge(QString::fromStdString(age));
pStu->SetSex(QString::fromStdString(sex));
pStu->SetChinese(QString::fromStdString(chinese));
pStu->SetMath(QString::fromStdString(math));
pStu->SetEnglish(QString::fromStdString(english));
additem(pStu);
 };
 is.close();
}

到了这里,关于qt学生管理系统(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言——学生信息管理系统(数组)

    因为最近是在赶进度总结,数组和指针的笔记已经更新,但是数组、指针的习题还未总结,数组的题已经开始总结,但是还没总结完,所以还没发出来,目前学习进度已经到了学生管理系统,趁热打铁将学生管理系统的数组篇更新,因为之后还有指针篇,怕到时候代码搞混了

    2023年04月15日
    浏览(45)
  • C语言版----学生信息管理系统(分析+代码)

    一、分析系统功能设计 1. 初始化学生列表、教师列表 ·typedef struct student 先对学生结构体进行重定义,便于对相关数组取名 再初始化一个教室class,便于在后面的函数中调用学生信息 ·typedef struct teacher 先对教师结构体进行重定义,便于对相关数组取名 ·void inputtStu() 初始化三

    2024年02月09日
    浏览(46)
  • C语言实现学生信息管理系统(附原码)

    本人的C语言学习完后,用所学的知识自己实现了一个学生管理系统,新手一个,代码还有待完善,欢迎大家在评论区指出错误! 一、流程图 二、函数的目录  三、程序介绍  1.主要功能: 添加学生信息、打印学生信息、查找学生信息、添加学生信息、修改学生信息、计算学

    2024年02月12日
    浏览(44)
  • C语言学生成绩信息管理系统(超详细版)

    主题:一个简易成绩管理系统 功能介绍: 1.以文本形式存储学生信息 2.对以存信息进行   1. 插入 2. 修改3. 删除  4.查询  5.成绩数字特征 目录 一:分析 二:查询  三:菜单 四:初始化函数 五:插入函数 六:修改函数 七:删除函数 八:数字特征 九:显示函数 要进行 插入

    2024年02月12日
    浏览(44)
  • 【C语言基础】学生信息管理系统-纯结构体实现

    ps.一定要先确实掌握结构体,结构体数组,函数中的传参,全局变量作用域等知识 一.设计构思和简单的准备工作 首先,要确定一个什么样的结构体,就需要看我需要什么功能。 于是,我写下来一个 我想要的 , 能做xxx功能的 ,可能还 很美观的 学生信息管理系统的目录,既

    2024年02月03日
    浏览(48)
  • Python项目开发案例————学生信息管理系统(附源码)

              本文使用Python语言开发了一个学生信息管理系统,该系统可以帮助教师快速录入学生的信息,并且对学生的信息进行基本的增、删、改、查操作;还可以实时地将学生的信息保存到磁盘文件中。         为了顺应互联网时代用户的获取数据需求,学生信息管理系统

    2024年02月11日
    浏览(49)
  • 学生信息管理系统——JAVA 语言版(主页面+增+删+改+查+退)

    学生管理系统要能够实现添加学生信息,删除,修改以及查看学生信息的功能。 你是否尝试过使用JAVA语言编写一个代码程序,使用该代码实现学生信息管理呢? 如果你还没有任何头绪,接下来推荐你看一下我的做法,我使用的编程工具是IDEA,以下给出了学生信息管理系统的程

    2024年02月03日
    浏览(42)
  • 赶紧进来看看---C语言实现学生信息管理系统(3.0文件存储版)

    本文主要介绍了将学生信息管理系统改造为文件存储版本… 主要涉及文件操作函数–将学生信息导入文件和从文件读取学生信息到程序中,从而达到数据持久化的效果 文章最后有源码展示 学生信息管理系统1.0静态版-学生信息管理系统2.0动态内存增长版-学生信息管理系统3.0文

    2024年01月20日
    浏览(42)
  • C语言课程设计:学生成绩信息管理系统(排序、平均分、总分)详解

    1、需求分析 利用C语言编写一个可以对学生成绩信息进行管理的系统 0、退出系统 1、录入学生信息和成绩 2、打印学生信息 3、统计学生人数 4、查找学生信息 5、修改学生信息 6、删除学生信息 7、排序学生成绩 8、生成学生信息文件 9、读取文件学生信息 10、输出各科成绩不

    2024年02月11日
    浏览(50)
  • C语言程序设计期末大作业(学生信息管理系统)(可自取源码)

    高校学生信息管理系统 (一)在高校学生管理系统中包含九个主要操作: 退出系统; 学生信息的录入; 学生信息的打印; 学生信息的保存; 学生信息的读取; 学生人数的统计; 学生信息的查找; 学生信息的修改; 学生信息的删除。 (二)设计流程 首先确认用switch ca

    2024年02月10日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包