Qt 实现简易的学生信息管理文档
来源:互联网 发布:原生js手风琴效果原理 编辑:程序博客网 时间:2024/06/07 02:25
头文件:
mianwindow.h
#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include <QTableWidget>#include <QTreeWidget>#include <QComboBox>#include <QLineEdit>#include <QStringList>#include <QTableWidgetItem>#include <QTreeWidgetItem>#include <QAction>#include "student.h"#include "teacher.h"#include "collage.h"#include "university.h"#include "newcollagedialog.h"namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{ Q_OBJECTpublic: explicit MainWindow(QWidget *parent = 0); ~MainWindow();private: void DataInit(); void TreeInit(); void creatAction();private: Ui::MainWindow *ui; University *u; QAction *m_add; QAction *m_del;private slots: void onItemClicked(QTreeWidgetItem*item, int index); void customContextMenuRequested(QPoint pos); void OnCollageAdd();};#endif // MAINWINDOW_H
Person.h
#ifndef PERSON_H#define PERSON_H#include <iostream>#include <string>class Person{public: Person(); ~Person(); Person(const Person &other); Person& operator= (const Person &other); Person(const int Age,const int Height,const std::string Name); virtual void ShowInfo();public: void setAge(const int &Age); void setHeight(const int &Height); void setName(const std::string &Name); const int& Age()const; const int& Height()const; const std::string &Name()const;private: int age; int height; std::string name;};#endif // PERSON_HStudent.h
#ifndef STUDENT_H#define STUDENT_H#include "person.h"#include <iostream>using namespace std;class Student:public Person{public: Student(); ~Student();public: Student(const string Sid,const int sAge, const int sHeight,string sName); friend std::ostream &operator <<(ostream &os,const Student &s); void ShowInfo()const; Student& operator= (const Student &s); bool CompareSid(const string &sid); string &StudentSid(); bool setStudentName(const string &name);private: string SID;};#endif // STUDENT_HTeacher.h
#ifndef TEACHER_H#define TEACHER_H#include "person.h"class Teacher:public Person{public: Teacher(); ~Teacher(); void ShowInfo(); std::string &TeacherID(); Teacher(const std::string tid,const int age, const int height,const std::string name);private: std::string TID;};#endif // TEACHER_HCollage.h
#ifndef COLLAGE_H#define COLLAGE_H#include "student.h"#include "teacher.h"#include <list>class Collage:public Teacher,public Student{public: Collage(); ~Collage(); Collage(string Cid, string Cname);public: bool StudentAdd(Student* s); void StudentDel(const string &sid); Student *StudentInfo(const string &sid)const; void ShowStudentList()const; bool CompareCid(const string &CID)const; string &CollageCid(); bool TeacherAdd(Teacher* t); void StudentRemove(const string &tid); Teacher *TeacherInfo(const string &tid);public: const string &getCid()const; const string &getCname()const; const void ShowInfo()const; std::list<Student*>& sList();private: string cid; string cname; list<Student *> s_list; list<Teacher *> t_list;};#endif // COLLAGE_HUniversity.h
#ifndef UNIVERSITY_H#define UNIVERSITY_H#include "collage.h"class University:public Collage{public: University(); University(const string &uid, const string &uname, const string &uaddr); static University *CreatUniversity(const string &uid, const string &uname, const string &uaddr) { if(nullptr == unty) { unty = new University(uid,uname,uaddr); } return unty; } ~University();public: const void ShowInfo()const; bool CollageAdd(Collage *c); void CollageDel(const string &cid); Collage *CollageInfo(const string &id) const; const string& uName()const; list<Collage*>& cList();private: string m_uid; string m_uname; string m_uaddr; list<Collage *> m_list; static University *unty;};#endif // UNIVERSITY_H源文件:
person.cpp
#include "person.h"#include "student.h"Person::Person(){}Person::~Person(){}Person::Person(const Person &other){ this->age = other.age; this->height = other.height; this->name = other.name;}Person &Person::operator=(const Person &other){ if(this == &other) { return *this; } this->age = other.age; this->height = other.height; this->name = other.name; return *this;}Person::Person(const int Age, const int Height, const std::string Name){ this->age = Age; this->height = Height; this->name = Name;}void Person::ShowInfo(){ std::cout << this->age << " " << this->height << " " << this->name << std::endl;}void Person::setAge(const int &Age){ this->age = Age;}void Person::setHeight(const int &Height){ this->height = Height;}void Person::setName(const std::string &Name){ this->name = Name;}const int& Person::Age() const{ return (this->age);}const int& Person::Height() const{ return (this->height);}const string& Person::Name() const{ return (this->name);}student.cpp
#include "student.h"Student::Student(){}Student::~Student(){}Student::Student(const string Sid, const int sAge,const int sHeight, string sName):SID(Sid),Person(sAge,sHeight,sName){ //this->SID = Sid;}ostream &operator <<(ostream &os,const Student &s){ os << s.SID << " " << s.Age() << " " <<s.Height() << " " <<s.Name()<<endl; return os;}void Student::ShowInfo()const{ cout << this->SID << " " << this->Age()<< " " << this->Height() << " " << this->Name() << endl;}Student& Student::operator=(const Student &s){ if(this == &s) { return *this; } else { this->SID = s.SID; this->setAge(s.Age()); this->setHeight(s.Height()); this->setName(s.Name()); } return *this;}bool Student::CompareSid(const string &sid){ if(sid == SID) { return true; } else { return false; }}string &Student::StudentSid(){ return this->SID;}bool Student::setStudentName(const string &name){ this->setName(name); return true;}teacher.cpp
#include "teacher.h"Teacher::Teacher(){}Teacher::~Teacher(){}Teacher::Teacher(const std::string tid, const int age,const int height, const std::string name):TID(tid),Person(age,height,name){// this->TID = tid;}void Teacher::ShowInfo(){ std::cout << this->TID << " " << this->Age() << " " << this->Height() << " " << this->Name() << std::endl;}std::string &Teacher::TeacherID(){ return this->TID;}collage.cpp
#include "collage.h"#include "student.h"Collage::Collage(){// s_list.clear();// t_list.clear();}Collage::~Collage(){}Collage::Collage(string Cid, string Cname):cid(Cid),cname(Cname){// this->cid = Cid;// this->cname = Cname;}bool Collage::StudentAdd(Student *s){ if(nullptr != s) { s_list.push_back(s); return true; } else { return false; }}void Collage::StudentDel(const string &sid){ list<Student *>::iterator iter; for(iter = s_list.begin();iter != s_list.end();++iter) { if((*iter)->CompareSid(sid)) { s_list.erase(iter); break; } }}Student *Collage::StudentInfo(const string &sid) const{ list<Student *>::const_iterator iter; for(iter = s_list.begin(); iter != s_list.end();++iter) { Student* vaule = *iter; if(vaule->StudentSid() == sid) { vaule->ShowInfo(); break; }// else// {// cout << "NO,Find!" << endl;// } } return 0;}void Collage::ShowStudentList() const{ list<Student *>::const_iterator iter; for(iter = s_list.begin(); iter != s_list.end();++iter) { (*iter)->ShowInfo(); }}bool Collage::CompareCid(const string &CID) const{ if(this->cid == CID) { return true; } else { return false; }}string &Collage::CollageCid(){ return this->cid;}bool Collage::TeacherAdd(Teacher* t){ if(nullptr != t) { t_list.push_back(t); return true; } else { return false; }}void Collage::StudentRemove(const string &tid){ list<Student *>::iterator iter; for(iter = s_list.begin();iter != s_list.end();iter++) { if((*iter)->CompareSid(tid)) { s_list.remove(*iter); break; } }}Teacher *Collage::TeacherInfo(const string &tid){ list<Teacher *>::iterator iter; for(iter = t_list.begin(); iter != t_list.end();iter++) { Teacher* vaule = *iter; if(vaule->TeacherID() == tid) { vaule->ShowInfo(); break; } else { cout << "NO,Find!" << endl; } } return 0;}const string &Collage::getCid() const{ return cid;}const string &Collage::getCname() const{ return cname;}const void Collage::ShowInfo() const{ cout << this->cid << " " << this->cname << endl;}list<Student *> &Collage::sList(){ return s_list;}university.cpp
#include "university.h"University::University(const string &uid, const string &uname, const string &uaddr):m_uid(uid),m_uname(uname),m_uaddr(uaddr){}University::~University(){}const void University::ShowInfo() const{ cout << this->m_uid << " " << this->m_uaddr << " " << this->m_uname << endl;}bool University::CollageAdd(Collage *c){ if(nullptr != c) { m_list.push_back(c); return true; } else { return false; }}void University::CollageDel(const string &cid){ list<Collage *>::iterator iter; for(iter = m_list.begin();iter != m_list.end();++iter) { if((*iter)->CompareCid(cid)) { m_list.remove(*iter); break; } }}Collage *University::CollageInfo(const string &id)const{ list<Collage *>::const_iterator iter;// Collage *p = new Collage; for(iter = m_list.begin();iter != m_list.end();++iter) { if((*iter)->CompareCid(id)) {// cout << "haveing"<<endl;// cout << p->getCid() << p->getCname() <<endl; return *iter; } } return 0;}const string &University::uName() const{ return m_uname;}std::list<Collage *> &University::cList(){ return m_list;}University*University:: unty = NULL;
mianwindow.cpp
#include "mainwindow.h"#include "ui_mainwindow.h"#include <QDebug>#include <iostream>using namespace std;void MainWindow::DataInit(){ Student *s1 = new Student("201601",16,169,"zhangsan"); Student *s2 = new Student("201602",17,168,"zhangtwo"); Student *s3 = new Student("201603",15,178,"zhangthr"); Student *s4 = new Student("201604",18,188,"zhangfou"); Collage *c0 = new Collage("c0001", "XX学院"); Collage *c1 = new Collage("c0002", "OO学院"); c0->StudentAdd(s1); c0->StudentAdd(s2); c0->StudentAdd(s3); c0->StudentAdd(s4); c1->StudentAdd(s2); c1->StudentAdd(s3); QTreeWidgetItem *txt = new QTreeWidgetItem; txt->setText(0,"University"); ui->treeWidget->setHeaderItem(txt); u = University::CreatUniversity("u0001", "电子科大", "moziqiao"); u->CollageAdd(c0); u->CollageAdd(c1);}void MainWindow::TreeInit(){ ui->treeWidget->clear(); QString str = QString::fromStdString(u->uName()); QTreeWidgetItem *uitem = new QTreeWidgetItem; uitem->setText(0, str); ui->treeWidget->insertTopLevelItem(0, uitem); list<Collage*> &c = u->cList(); list<Collage*>::iterator i; for (i = c.begin(); i != c.end(); ++i) { QTreeWidgetItem *citem = new QTreeWidgetItem; citem->setText(0, QString::fromStdString((*i)->getCname())); citem->setText(1, QString::fromStdString((*i)->getCid())); uitem->addChild(citem); }// ui->treeWidget->setContextMenuPolicy(Qt::CustomContextMenu); connect( ui->treeWidget, SIGNAL(itemClicked(QTreeWidgetItem*,int)), this, SLOT(onItemClicked(QTreeWidgetItem*,int)) );}void MainWindow::creatAction(){ m_add = new QAction("添加",this); m_del = new QAction("删除",this); connect(m_add,SIGNAL(triggered()), this,SLOT(OnCollageAdd()));}void MainWindow::onItemClicked(QTreeWidgetItem *item, int index){ Q_UNUSED(index); if( !item->parent()){ return ; } Collage *c = u->CollageInfo(item->text(1) .toStdString()); list<Student *>& s= c->sList(); list<Student *>::iterator i; int j = 0; ui->tableWidget->clear(); ui->tableWidget->setColumnCount(0); ui->tableWidget->setRowCount(0); for (i = s.begin(); i != s.end(); ++i) { ui->tableWidget->insertRow(j); QStringList headr; headr << "ID" << "姓名" << "年龄" << "身高" ; ui->tableWidget->setHorizontalHeaderLabels(headr);// ui->tableWidget->verticalHeader()->setHidden(true);//设置垂直标签隐藏 ui->tableWidget->verticalHeader()->setVisible(false);//设置垂直标签不可见 QTableWidgetItem *sid = new QTableWidgetItem; sid->setText(QString::fromStdString((*i)->StudentSid())); QTableWidgetItem *sname = new QTableWidgetItem; sname->setText(QString::fromStdString((*i)->Name())); QTableWidgetItem *sheight = new QTableWidgetItem; sheight->setText(QString::number((*i)->Height())); QTableWidgetItem *sage = new QTableWidgetItem; sage->setText(QString::number((*i)->Age())); if( 0==j ) { ui->tableWidget->insertColumn(0); } ui->tableWidget->setItem(j, 0, sid); if( 0==j ) { ui->tableWidget->insertColumn(1); } ui->tableWidget->setItem(j, 1, sname); if( 0==j ) { ui->tableWidget->insertColumn(2); } ui->tableWidget->setItem(j, 2, sage); if( 0==j ) { ui->tableWidget->insertColumn(3); } ui->tableWidget->setItem(j, 3, sheight); j++; }}//右键菜单显示void MainWindow::customContextMenuRequested(QPoint pos){ Q_UNUSED(pos); QTreeWidgetItem *item = ui->treeWidget->currentItem(); QMenu *menu = new QMenu; menu->addAction(m_add); menu->addAction(m_del); if(!item->parent()) { menu->exec(QCursor::pos());// menu->exec(ui->treeWidget->mapToGlobal(pos)); }}//添加void MainWindow::OnCollageAdd(){ newCollageDialog *Dlg = new newCollageDialog; int ret = Dlg->exec(); if(ret == QDialog::Accepted) { QString cname = Dlg->getName(); QString cid = Dlg->getId(); Collage *c = new Collage(cid.toStdString(),cname.toStdString()); u->CollageAdd(c); TreeInit(); }}MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); ui->mainToolBar->addAction(ui->actionOpen); ui->mainToolBar->addAction(ui->actionNew); ui->mainToolBar->addAction(ui->actionSave); DataInit();//数据初始化 TreeInit();//列表初始化 creatAction(); connect(ui->treeWidget,SIGNAL(customContextMenuRequested(QPoint)), this,SLOT(customContextMenuRequested(QPoint)));}MainWindow::~MainWindow(){ delete m_add; delete m_del; delete ui;}
main.cpp
#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[]){ QApplication a(argc, argv); MainWindow w; w.show(); return a.exec();}
界面设计:
用到了Tree Widget,Table Widget
程序设计思路图:
运行效果图:
注:功能并不完善,源码下载
阅读全文
0 0
- Qt 实现简易的学生信息管理文档
- QT-实现简单的学生信息管理_初识QT
- 简易学生信息管理系统
- 基于QT的学生信息管理系统开发
- Qt学生信息管理系统
- 课程设计-简易学生信息管理系统
- JSP-简易学生信息管理系统
- JavaCore-OOP-5-简易的【学生信息管理系统】
- c语言实现的学生信息管理系统
- 利用jsshell 实现的学生信息管理系统
- 学生信息管理系统控制台的实现
- java实现简单的学生信息管理系统
- java swing实现的学生信息管理系统
- Qt: 学生信息管理里系统,QTreewidget、QTableView实现
- 学生信息管理汇编实现
- 简易学生信息管理系统(c++源代码)
- 【C语言】简易学生信息管理系统
- 学生信息管理系统C实现
- 无法使用request.getContextPath()解决办法
- libevent
- Solr学习总结Solr查询参数
- 51nod 1489 蜥蜴和地下室
- WEB安全
- Qt 实现简易的学生信息管理文档
- 一个芯片低能耗的疑问
- 做毕设(十五)——新闻推荐
- 【剑指Offer】二维数组中的查找$2.3.1
- 学以致用——英文姓名高词频分析-使用Excel制作高频词标签云(VBA)
- Spring JDBC-NamedParameterJdbcTemplate模板类
- C语言中插入汇编nop指令
- java中如何将String类型的日期格式为yyyyMMdd转化为date类型的yyyy-MM-dd格式
- [linux] 自动ssh登录