├── README.md ├── image ├── data.jpg └── datam.jpg └── manager ├── connection.h ├── logindialog.cpp ├── logindialog.h ├── logindialog.ui ├── main.cpp ├── manager.pro ├── manager.pro.user ├── pieview.cpp ├── pieview.h ├── widget.cpp ├── widget.h └── widget.ui /README.md: -------------------------------------------------------------------------------- 1 | # 基于qt的简单数据管理系统 2 | qt开发,实现用户登录,密码修改,数据库操作,XML文档操作和自定义视图等 3 | 4 | ![Image text](https://github.com/lidian53/data-management-system-based-on-Qt/blob/master/image/data.jpg) 5 | ![Image text](https://github.com/lidian53/data-management-system-based-on-Qt/blob/master/image/datam.jpg) 6 | -------------------------------------------------------------------------------- /image/data.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lidian53/data-management-system-based-on-Qt/fa7dab5e795b6b02155c66553b9d5b7029c89fa4/image/data.jpg -------------------------------------------------------------------------------- /image/datam.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lidian53/data-management-system-based-on-Qt/fa7dab5e795b6b02155c66553b9d5b7029c89fa4/image/datam.jpg -------------------------------------------------------------------------------- /manager/connection.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lidian53/data-management-system-based-on-Qt/fa7dab5e795b6b02155c66553b9d5b7029c89fa4/manager/connection.h -------------------------------------------------------------------------------- /manager/logindialog.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lidian53/data-management-system-based-on-Qt/fa7dab5e795b6b02155c66553b9d5b7029c89fa4/manager/logindialog.cpp -------------------------------------------------------------------------------- /manager/logindialog.h: -------------------------------------------------------------------------------- 1 | #ifndef LOGINDIALOG_H 2 | #define LOGINDIALOG_H 3 | 4 | #include 5 | 6 | namespace Ui { 7 | class LoginDialog; 8 | } 9 | 10 | class LoginDialog : public QDialog 11 | { 12 | Q_OBJECT 13 | 14 | public: 15 | explicit LoginDialog(QWidget *parent = 0); 16 | ~LoginDialog(); 17 | 18 | private slots: 19 | void on_loginBtn_clicked(); 20 | 21 | void on_quitBtn_clicked(); 22 | 23 | private: 24 | Ui::LoginDialog *ui; 25 | }; 26 | 27 | #endif // LOGINDIALOG_H 28 | -------------------------------------------------------------------------------- /manager/logindialog.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | LoginDialog 4 | 5 | 6 | 7 | 0 8 | 0 9 | 400 10 | 300 11 | 12 | 13 | 14 | Dialog 15 | 16 | 17 | 18 | 19 | 110 20 | 40 21 | 160 22 | 16 23 | 24 | 25 | 26 | 27 | 12 28 | 29 | 30 | 31 | 欢迎使用数据管理系统 32 | 33 | 34 | Qt::AlignCenter 35 | 36 | 37 | 38 | 39 | 40 | 110 41 | 110 42 | 211 43 | 21 44 | 45 | 46 | 47 | QLineEdit::Password 48 | 49 | 50 | 51 | 52 | 53 | 60 54 | 111 55 | 36 56 | 16 57 | 58 | 59 | 60 | 密码: 61 | 62 | 63 | 64 | 65 | 66 | 235 67 | 214 68 | 75 69 | 23 70 | 71 | 72 | 73 | 退出 74 | 75 | 76 | 77 | 78 | 79 | 81 80 | 214 81 | 75 82 | 23 83 | 84 | 85 | 86 | 登录 87 | 88 | 89 | 90 | 91 | 92 | 93 | -------------------------------------------------------------------------------- /manager/main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lidian53/data-management-system-based-on-Qt/fa7dab5e795b6b02155c66553b9d5b7029c89fa4/manager/main.cpp -------------------------------------------------------------------------------- /manager/manager.pro: -------------------------------------------------------------------------------- 1 | #------------------------------------------------- 2 | # 3 | # Project created by QtCreator 2011-12-28T09:23:16 4 | # 5 | #------------------------------------------------- 6 | 7 | QT += core gui 8 | QT += sql xml 9 | 10 | TARGET = manager 11 | TEMPLATE = app 12 | 13 | 14 | SOURCES += main.cpp\ 15 | widget.cpp \ 16 | pieview.cpp \ 17 | logindialog.cpp 18 | 19 | HEADERS += widget.h \ 20 | connection.h \ 21 | pieview.h \ 22 | logindialog.h 23 | 24 | FORMS += widget.ui \ 25 | logindialog.ui 26 | -------------------------------------------------------------------------------- /manager/manager.pro.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | ProjectExplorer.Project.ActiveTarget 7 | 0 8 | 9 | 10 | ProjectExplorer.Project.EditorSettings 11 | 12 | true 13 | false 14 | true 15 | 16 | Cpp 17 | 18 | CppGlobal 19 | 20 | 21 | 22 | QmlJS 23 | 24 | QmlJSGlobal 25 | 26 | 27 | 2 28 | UTF-8 29 | false 30 | 4 31 | false 32 | 80 33 | true 34 | true 35 | 1 36 | true 37 | false 38 | 0 39 | true 40 | 0 41 | 8 42 | true 43 | 1 44 | true 45 | true 46 | true 47 | false 48 | 49 | 50 | 51 | ProjectExplorer.Project.PluginSettings 52 | 53 | 54 | 55 | ProjectExplorer.Project.Target.0 56 | 57 | lidian 58 | lidian 59 | {c69e2983-0a7b-40b0-82d1-14c7c01cb818} 60 | 0 61 | 0 62 | 0 63 | 64 | D:/新建文件夹/《Qt及Qt+Quick开发实战精解》代码/《Qt及Qt Quick开发实战精解》代码/src/4/4-5/build-manager-lidian-Debug 65 | 66 | 67 | true 68 | qmake 69 | 70 | QtProjectManager.QMakeBuildStep 71 | false 72 | true 73 | 74 | false 75 | 76 | 77 | true 78 | Make 79 | 80 | Qt4ProjectManager.MakeStep 81 | 82 | false 83 | 84 | 85 | 86 | 2 87 | 构建 88 | 89 | ProjectExplorer.BuildSteps.Build 90 | 91 | 92 | 93 | true 94 | Make 95 | 96 | Qt4ProjectManager.MakeStep 97 | 98 | true 99 | clean 100 | 101 | 102 | 1 103 | 清理 104 | 105 | ProjectExplorer.BuildSteps.Clean 106 | 107 | 2 108 | false 109 | 110 | Debug 111 | 112 | Qt4ProjectManager.Qt4BuildConfiguration 113 | 2 114 | true 115 | 116 | 117 | D:/新建文件夹/《Qt及Qt+Quick开发实战精解》代码/《Qt及Qt Quick开发实战精解》代码/src/4/4-5/build-manager-lidian-Release 118 | 119 | 120 | true 121 | qmake 122 | 123 | QtProjectManager.QMakeBuildStep 124 | false 125 | true 126 | 127 | false 128 | 129 | 130 | true 131 | Make 132 | 133 | Qt4ProjectManager.MakeStep 134 | 135 | false 136 | 137 | 138 | 139 | 2 140 | 构建 141 | 142 | ProjectExplorer.BuildSteps.Build 143 | 144 | 145 | 146 | true 147 | Make 148 | 149 | Qt4ProjectManager.MakeStep 150 | 151 | true 152 | clean 153 | 154 | 155 | 1 156 | 清理 157 | 158 | ProjectExplorer.BuildSteps.Clean 159 | 160 | 2 161 | false 162 | 163 | Release 164 | 165 | Qt4ProjectManager.Qt4BuildConfiguration 166 | 0 167 | true 168 | 169 | 2 170 | 171 | 172 | 0 173 | 部署 174 | 175 | ProjectExplorer.BuildSteps.Deploy 176 | 177 | 1 178 | 在本地部署 179 | 180 | ProjectExplorer.DefaultDeployConfiguration 181 | 182 | 1 183 | 184 | 185 | 186 | false 187 | false 188 | false 189 | false 190 | true 191 | 0.01 192 | 10 193 | true 194 | 1 195 | 25 196 | 197 | 1 198 | true 199 | false 200 | true 201 | valgrind 202 | 203 | 0 204 | 1 205 | 2 206 | 3 207 | 4 208 | 5 209 | 6 210 | 7 211 | 8 212 | 9 213 | 10 214 | 11 215 | 12 216 | 13 217 | 14 218 | 219 | 2 220 | 221 | manager 222 | manager2 223 | Qt4ProjectManager.Qt4RunConfiguration:C:/Qt/dd/manager/manager.pro 224 | 225 | manager.pro 226 | false 227 | false 228 | 229 | 3768 230 | false 231 | true 232 | false 233 | false 234 | true 235 | 236 | 1 237 | 238 | 239 | 240 | ProjectExplorer.Project.TargetCount 241 | 1 242 | 243 | 244 | ProjectExplorer.Project.Updater.EnvironmentId 245 | {76e170ba-2d79-4e6c-9157-bb2c866eb87e} 246 | 247 | 248 | ProjectExplorer.Project.Updater.FileVersion 249 | 15 250 | 251 | 252 | -------------------------------------------------------------------------------- /manager/pieview.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lidian53/data-management-system-based-on-Qt/fa7dab5e795b6b02155c66553b9d5b7029c89fa4/manager/pieview.cpp -------------------------------------------------------------------------------- /manager/pieview.h: -------------------------------------------------------------------------------- 1 | #ifndef PIEVIEW_H 2 | #define PIEVIEW_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | 14 | QT_BEGIN_NAMESPACE 15 | class QRubberBand; 16 | QT_END_NAMESPACE 17 | 18 | class PieView : public QAbstractItemView 19 | { 20 | Q_OBJECT 21 | 22 | public: 23 | PieView(QWidget *parent = 0); 24 | 25 | QRect visualRect(const QModelIndex &index) const; 26 | void scrollTo(const QModelIndex &index, ScrollHint hint = EnsureVisible); 27 | QModelIndex indexAt(const QPoint &point) const; 28 | 29 | protected slots: 30 | void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight); 31 | void rowsInserted(const QModelIndex &parent, int start, int end); 32 | void rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end); 33 | 34 | protected: 35 | bool edit(const QModelIndex &index, EditTrigger trigger, QEvent *event); 36 | QModelIndex moveCursor(QAbstractItemView::CursorAction cursorAction, 37 | Qt::KeyboardModifiers modifiers); 38 | 39 | int horizontalOffset() const; 40 | int verticalOffset() const; 41 | 42 | bool isIndexHidden(const QModelIndex &index) const; 43 | 44 | void setSelection(const QRect&, QItemSelectionModel::SelectionFlags command); 45 | 46 | void mousePressEvent(QMouseEvent *event); 47 | 48 | void mouseMoveEvent(QMouseEvent *event); 49 | void mouseReleaseEvent(QMouseEvent *event); 50 | 51 | void paintEvent(QPaintEvent *event); 52 | void resizeEvent(QResizeEvent *event); 53 | void scrollContentsBy(int dx, int dy); 54 | 55 | QRegion visualRegionForSelection(const QItemSelection &selection) const; 56 | 57 | private: 58 | QRect itemRect(const QModelIndex &item) const; 59 | QRegion itemRegion(const QModelIndex &index) const; 60 | int rows(const QModelIndex &index = QModelIndex()) const; 61 | void updateGeometries(); 62 | 63 | int margin; 64 | int totalSize; 65 | int pieSize; 66 | int validItems; 67 | double totalValue; 68 | QPoint origin; 69 | QRubberBand *rubberBand; 70 | }; 71 | 72 | #endif 73 | -------------------------------------------------------------------------------- /manager/widget.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lidian53/data-management-system-based-on-Qt/fa7dab5e795b6b02155c66553b9d5b7029c89fa4/manager/widget.cpp -------------------------------------------------------------------------------- /manager/widget.h: -------------------------------------------------------------------------------- 1 | #ifndef WIDGET_H 2 | #define WIDGET_H 3 | 4 | #include 5 | 6 | #include 7 | 8 | class QStandardItemModel; 9 | 10 | namespace Ui { 11 | class Widget; 12 | } 13 | 14 | class Widget : public QWidget 15 | { 16 | Q_OBJECT 17 | 18 | public: 19 | explicit Widget(QWidget *parent = 0); 20 | ~Widget(); 21 | 22 | enum DateTimeType{Time, Date, DateTime}; 23 | QString getDateTime(DateTimeType type); 24 | 25 | private slots: 26 | void on_sellTypeComboBox_currentIndexChanged(QString ); 27 | 28 | void on_sellBrandComboBox_currentIndexChanged(QString ); 29 | 30 | void on_sellNumSpinBox_valueChanged(int ); 31 | 32 | void on_sellCancelBtn_clicked(); 33 | 34 | void on_sellOkBtn_clicked(); 35 | 36 | void on_typeComboBox_currentIndexChanged(QString ); 37 | 38 | void on_updateBtn_clicked(); 39 | 40 | void on_manageBtn_clicked(); 41 | 42 | void on_chartBtn_clicked(); 43 | 44 | void on_passwordBtn_clicked(); 45 | 46 | void on_originpwdpushButton_clicked(); 47 | 48 | void on_newpwdBtn_clicked(); 49 | 50 | private: 51 | Ui::Widget *ui; 52 | QDomDocument doc; 53 | 54 | QStandardItemModel *chartModel; 55 | 56 | private: 57 | bool docRead(); 58 | bool docWrite(); 59 | void writeXml(); 60 | void createNodes(QDomElement &date); 61 | void showDailyList(); 62 | 63 | void createChartModelView(); 64 | void showChart(); 65 | }; 66 | 67 | #endif // WIDGET_H 68 | -------------------------------------------------------------------------------- /manager/widget.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | Widget 4 | 5 | 6 | 7 | 0 8 | 0 9 | 750 10 | 500 11 | 12 | 13 | 14 | 数据管理系统 15 | 16 | 17 | 18 | 19 | 50 20 | 10 21 | 631 22 | 61 23 | 24 | 25 | 26 | 27 | QLayout::SetDefaultConstraint 28 | 29 | 30 | 31 | 32 | 33 | 0 34 | 0 35 | 36 | 37 | 38 | 商品管理 39 | 40 | 41 | 42 | 43 | 44 | 45 | Qt::Horizontal 46 | 47 | 48 | 49 | 40 50 | 20 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 0 60 | 0 61 | 62 | 63 | 64 | 销售统计 65 | 66 | 67 | 68 | 69 | 70 | 71 | Qt::Horizontal 72 | 73 | 74 | 75 | 40 76 | 20 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 0 86 | 0 87 | 88 | 89 | 90 | 修改密码 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 25 100 | 70 101 | 700 102 | 410 103 | 104 | 105 | 106 | 1 107 | 108 | 109 | 110 | 111 | 112 | 0 113 | 20 114 | 700 115 | 20 116 | 117 | 118 | 119 | 120 | 12 121 | 122 | 123 | 124 | QFrame::StyledPanel 125 | 126 | 127 | 商品管理 128 | 129 | 130 | Qt::AlignCenter 131 | 132 | 133 | 134 | 135 | 136 | 20 137 | 50 138 | 321 139 | 360 140 | 141 | 142 | 143 | QFrame::WinPanel 144 | 145 | 146 | QFrame::Raised 147 | 148 | 149 | 150 | 151 | 0 152 | 0 153 | 317 154 | 278 155 | 156 | 157 | 158 | 出售商品 159 | 160 | 161 | 162 | 163 | 20 164 | 200 165 | 36 166 | 16 167 | 168 | 169 | 170 | 金额: 171 | 172 | 173 | 174 | 175 | 176 | 150 177 | 250 178 | 75 179 | 23 180 | 181 | 182 | 183 | 取消 184 | 185 | 186 | 187 | 188 | 189 | 21 190 | 50 191 | 36 192 | 16 193 | 194 | 195 | 196 | 类型: 197 | 198 | 199 | 200 | 201 | 202 | 21 203 | 87 204 | 36 205 | 16 206 | 207 | 208 | 209 | 品牌: 210 | 211 | 212 | 213 | 214 | 215 | 63 216 | 50 217 | 161 218 | 20 219 | 220 | 221 | 222 | 223 | 0 224 | 0 225 | 226 | 227 | 228 | 229 | 230 | 231 | 63 232 | 87 233 | 210 234 | 20 235 | 236 | 237 | 238 | 239 | 0 240 | 0 241 | 242 | 243 | 244 | 245 | 246 | 247 | 30 248 | 250 249 | 75 250 | 23 251 | 252 | 253 | 254 | 确定 255 | 256 | 257 | 258 | 259 | 260 | 21 261 | 160 262 | 36 263 | 16 264 | 265 | 266 | 267 | 数量: 268 | 269 | 270 | 271 | 272 | 273 | 63 274 | 160 275 | 51 276 | 22 277 | 278 | 279 | 280 | 281 | 282 | 283 | 63 284 | 200 285 | 100 286 | 20 287 | 288 | 289 | 290 | 291 | 292 | 293 | 180 294 | 200 295 | 54 296 | 12 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 21 307 | 120 308 | 36 309 | 16 310 | 311 | 312 | 313 | 单价: 314 | 315 | 316 | 317 | 318 | 319 | 63 320 | 120 321 | 101 322 | 20 323 | 324 | 325 | 326 | 327 | 328 | 329 | 180 330 | 120 331 | 54 332 | 12 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 130 343 | 160 344 | 111 345 | 20 346 | 347 | 348 | 349 | 剩余数量:000 350 | 351 | 352 | 353 | 354 | 355 | 356 | 0 357 | 0 358 | 317 359 | 278 360 | 361 | 362 | 363 | 已有商品入库 364 | 365 | 366 | 367 | 368 | 21 369 | 50 370 | 36 371 | 16 372 | 373 | 374 | 375 | 类型: 376 | 377 | 378 | 379 | 380 | 381 | 21 382 | 87 383 | 36 384 | 16 385 | 386 | 387 | 388 | 品牌: 389 | 390 | 391 | 392 | 393 | 394 | 21 395 | 120 396 | 36 397 | 16 398 | 399 | 400 | 401 | 单价: 402 | 403 | 404 | 405 | 406 | 407 | 21 408 | 160 409 | 36 410 | 16 411 | 412 | 413 | 414 | 数量: 415 | 416 | 417 | 418 | 419 | 420 | 30 421 | 250 422 | 75 423 | 23 424 | 425 | 426 | 427 | 确定 428 | 429 | 430 | 431 | 432 | 433 | 150 434 | 250 435 | 75 436 | 23 437 | 438 | 439 | 440 | 取消 441 | 442 | 443 | 444 | 445 | 446 | 63 447 | 50 448 | 151 449 | 20 450 | 451 | 452 | 453 | 454 | 455 | 456 | 63 457 | 120 458 | 100 459 | 20 460 | 461 | 462 | 463 | 464 | 465 | 466 | 63 467 | 87 468 | 210 469 | 20 470 | 471 | 472 | 473 | 474 | 475 | 476 | 180 477 | 120 478 | 54 479 | 12 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 63 490 | 200 491 | 100 492 | 20 493 | 494 | 495 | 496 | 497 | 498 | 499 | 179 500 | 200 501 | 54 502 | 12 503 | 504 | 505 | 506 | 507 | 508 | 509 | 510 | 511 | 512 | 20 513 | 200 514 | 36 515 | 16 516 | 517 | 518 | 519 | 金额: 520 | 521 | 522 | 523 | 524 | 525 | 63 526 | 160 527 | 61 528 | 20 529 | 530 | 531 | 532 | 533 | 534 | 535 | 536 | 0 537 | 0 538 | 317 539 | 278 540 | 541 | 542 | 543 | 新商品入库 544 | 545 | 546 | 547 | 548 | 63 549 | 160 550 | 61 551 | 20 552 | 553 | 554 | 555 | 556 | 557 | 558 | 21 559 | 120 560 | 36 561 | 16 562 | 563 | 564 | 565 | 单价: 566 | 567 | 568 | 569 | 570 | 571 | 21 572 | 160 573 | 36 574 | 16 575 | 576 | 577 | 578 | 数量: 579 | 580 | 581 | 582 | 583 | 584 | 63 585 | 120 586 | 81 587 | 20 588 | 589 | 590 | 591 | 592 | 593 | 594 | 63 595 | 50 596 | 151 597 | 20 598 | 599 | 600 | 601 | 602 | 603 | 604 | 21 605 | 50 606 | 36 607 | 16 608 | 609 | 610 | 611 | 类型: 612 | 613 | 614 | 615 | 616 | 617 | 160 618 | 120 619 | 54 620 | 12 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 150 631 | 250 632 | 75 633 | 23 634 | 635 | 636 | 637 | 取消 638 | 639 | 640 | 641 | 642 | 643 | 21 644 | 87 645 | 36 646 | 16 647 | 648 | 649 | 650 | 品牌: 651 | 652 | 653 | 654 | 655 | 656 | 30 657 | 250 658 | 75 659 | 23 660 | 661 | 662 | 663 | 确定 664 | 665 | 666 | 667 | 668 | 669 | 63 670 | 87 671 | 210 672 | 20 673 | 674 | 675 | 676 | 677 | 678 | 679 | 62 680 | 200 681 | 100 682 | 20 683 | 684 | 685 | 686 | 687 | 688 | 689 | 179 690 | 200 691 | 54 692 | 12 693 | 694 | 695 | 696 | 697 | 698 | 699 | 700 | 701 | 702 | 20 703 | 200 704 | 36 705 | 16 706 | 707 | 708 | 709 | 金额: 710 | 711 | 712 | 713 | 714 | 715 | 716 | 717 | 360 718 | 50 719 | 321 720 | 360 721 | 722 | 723 | 724 | QAbstractItemView::NoEditTriggers 725 | 726 | 727 | 728 | 729 | 730 | 731 | 732 | 0 733 | 20 734 | 700 735 | 20 736 | 737 | 738 | 739 | 740 | 12 741 | 742 | 743 | 744 | QFrame::StyledPanel 745 | 746 | 747 | 销售统计 748 | 749 | 750 | Qt::AlignCenter 751 | 752 | 753 | 754 | 755 | 756 | 10 757 | 50 758 | 191 759 | 22 760 | 761 | 762 | 763 | 764 | 765 | 766 | 210 767 | 50 768 | 75 769 | 23 770 | 771 | 772 | 773 | 更新显示 774 | 775 | 776 | 777 | 778 | 779 | 780 | 781 | 200 782 | 80 783 | 41 784 | 16 785 | 786 | 787 | 788 | 原密码: 789 | 790 | 791 | 792 | 793 | 794 | 270 795 | 80 796 | 161 797 | 20 798 | 799 | 800 | 801 | 802 | 803 | 804 | 450 805 | 80 806 | 75 807 | 23 808 | 809 | 810 | 811 | 确定 812 | 813 | 814 | 815 | 816 | 817 | 818 | 819 | 200 820 | 110 821 | 41 822 | 16 823 | 824 | 825 | 826 | 新密码: 827 | 828 | 829 | 830 | 831 | 832 | 450 833 | 110 834 | 75 835 | 23 836 | 837 | 838 | 839 | 确定 840 | 841 | 842 | 843 | 844 | 845 | 270 846 | 110 847 | 161 848 | 20 849 | 850 | 851 | 852 | 853 | 854 | 855 | 856 | 857 | 858 | 859 | --------------------------------------------------------------------------------