【软件工程导论】软件项目系统设计

相关文章:

【软件工程导论】网上订餐系统的分析与设计
【软件工程导论】软件项目系统需求分析说明书——宠物店铺管理系统

  • 应用程序设计:程序的处理流程与逻辑

1、应用程序实现框架

基于编写人员技术方向,拟设定使用C++下的Qt框架进行应用程序图形界面的编程。利用Qt图形库,采用C++语法,在Qt Creator集成开发环境下,实现一个基于Qt的宠物店管理系统。

Qt被用于高性能的跨平台软件开发,它是一个标准的技术成熟的C++框架,Qt不仅拥有扩展的C++类库,还提供了大量可用来快速编写应用程序的工具,Qt 是采用C++实现的框架。Qt Creator是一款新的轻量级集成开发环境(IDE),IDE支持跨平台运行,支持的系统包括Mac OS X、Linux( 32 位及 64 位)以及Windows等系统,这一点可以满足用户系统的兼容性需求。Qt Creator的设计目标是方便开发人员利用Qt 这个应用程序框架更加快速、轻易地完成相关开发任务。

2、输入与输出:

下面将描述应用程序的输入和输出,包括输入数据的来源、输出数据的格式及形式。

通过在 Qt Creator环境中新建一个 Qt WidgetsApplication 应用程序,并新建一个继承于 QMainWindow 类的 MainWindow 窗口类,设计一个主界面,方便用户进行常规的汉字、数字、英文字母及部分的特殊符号输入和管理信息功能的选择,也方便对用户查询条件和操作进行常规的汉字、数字、英文字母及部分的特殊符号组成的信息输出,以图形化界面窗口的形式进行交互,其中管理信息包括了销售管理子系统和人力资源管理子系统的选择,在子系统下的功能选择操作大致可以概括为对信息的添加、查询、修改、删除。

下面将描述应用程序的主要流程及涉及的数据处理过程,说明处理过程中的数据结构、算法选择和执行逻辑等。

在这里插入图片描述图 系统程序操作框图

宠物店管理系统分为销售子系统和人力资源管理子系统两部分,以子类继承的方式进行管理,在销售管理子系统的功能有:宠物管理、销售订单的管理、公告管理、网上商店的管理、宠物用品管理、客户管理;而在人力资源管理子系统的功能有:招聘管理、员工档案管理、薪酬管理、绩效管理、劳动关系管理、员工离职管理。在设计层面就不一一展开叙述,大致操作可以概况为对信息的添加、查询、修改、删除四大操作,编码人员需要根据功能点的不同逐一调整编写。

3、添加操作处理流程

通过单击模块功能的界面中的“添加”按钮,进入图8.2所示 inputDialog界面。InputDialog界面类是在Qt Creator开发环境中界面文件下通过添加继承于QDialog类自动生成。在Qt中为了能实现事件处理及界面跳转可以通过对控件的信号函数添 加槽函数,当单击图 1 的“添加学生信息”按钮时,发出一个click信号,再在click信号函数上添加on_inputButton_clicked()槽函数来实现从主界面到添加学生信息界面的跳转。

代码编写参考算法处的拟代码。

在 inputDialog 界面中分别插入对象属性的QLable标签控件。宠物性别做成QRadioButton 单选按钮控件,宠物出生日期对应插入QDate Edit控件,用于避免输入日期格式的不一致,在其他QLable 标签后面插入QLineEdit单行文本框控件以实现各类信息数据的输入,如图8.2所示。单击“保存”按钮实现信息的添加并保存于student.txt 磁盘文件中,并在InputDialog 界面清空掉前一次所输入信息。 在“保存”按钮的 click 信号函数上添加 on_saveButton_clicked() 槽函数实现信息保存功能。

代码编写参考算法处的拟代码。
在这里插入图片描述
图 添加信息界面演示图

4、查询操作处理流程

通过在如图8.3的QComBox下拉列表控件中添加各分类查询项,在其后添加QTextEdit 控件以用于输入查询内容,再在“查询”按钮的click信号函数上添加on_searchButton_clicked()槽函数实现分类模糊查询功能。在实现分类模糊查询时,首先将stu_Model中的数据清除,再通过 ui→findcomboBox→currentIn⁃dex()获取当前查询选项,由于在初始化界面时,stu_list中存放着文件中所有记录,因此把输入的查询内容与stu_list中存放的信息按查询字段进行逐条比较,如果不同则contin⁃ue略过本次循环,否则把本条记录重置于与表格关联的stu_model中,以作为多条或单条查询结果记录显示于tableView表格中。

代码编写参考算法处的拟代码。

在这里插入图片描述

图 增删查改功能实现界面演示图

5、 删除操作处理流程

删除功能的实现不但在界面的显示上需要删除,而且在确认删除后,student.txt 文件中的相应内容也需要删除。代码实现时,首先通过ui→tableView→currentIndex().row()获取要删除的行,通过QMessageBox::information()函数弹出一个确认删除信息提示框,通过选择yes或no进行确认或取消删除,若返回值与QMessageBox::Yes相等表示确认删除,则需要将stu_mod⁃el中的该条记录用 removeRow(index)删除,同时把stu_list中的 该条记录也移除,并把stu_list中的内容重写入文件,以保证文 件内容与界面上所显示数据的一致性。

代码编写参考算法处的拟代码。

6、 修改操作处理流程

通过双击图8.3表格中的某条记录的某条字段,该字段将会呈可编辑状态,从而可以修改某条记录的相关字段的内容,在代码实现时,本文用oldStr来保存修改前的记录字符串,用newStr来保存修改后的记录字符串,当单击“修改”按钮,若oldStr不同于 newStr时弹出“确认修改”对话框,否则不弹出。若确认修改,则把当前修改的记录首先从stu_list中删除,再把newStr2插入到 stu_list 中修改记录所在位置处,并将 stu_list 内容重写入文 件,为保持文件内容与系统界面显示内容一致,最后再把 stu_model中的相应记录重置为修改后的数据。若取消修改,则把oldStr中的内容重置于stu_model中,以把修改了的数据再还原为修改前的状态。

  • 拟代码

添加操作拟代码1:

void MainWindow::on_pushButton_clicked()

{ InputDialog d;

d.exec();}

添加操作拟代码代码2:

void InputDialog::on_saveButton_clicked()

{QString name,id,sex,birthday,english,math,chinese;//暂存界面上录入的信息

QString name=ui→nameEdit→text();

QString id=ui→idEdit→text();

……

double total=english.toDouble() + math.toDouble() + chinese.to⁃ Double();//计算总分

QStringtotalStr=QString::number(total,‘f’,2);

QFile file(“./student.txt”); //文件对象,保存信息

if(!file.open(QIODevice: : WriteOnly|QIODevice: : Text|QIODevice::Append))//追加打开文件

{return ;}

QTextStream out(&file);//使用输出流对象写数据入文件

out<<name<<" " <<id<<" " <<sex<<" " <<birthday<<" " << english<<" “<<math<<” “<<chinese<<” "<<totalStr<endl;

file.close();

ui→nameEdit→clear();//保存完信息后,清除界面之前输入的各类信息

……

}

查询操作拟代码:

void EditDialog::on_searchButton_clicked()

{

int rows=stu_model→rowCount();

for(int i=0;i<rows;i++)//将stu_Model中所有行的数据清除

{ stu_model→removeRow(0); }

int index=ui→findcomboBox→currentIndex();//获得分类查询项的index值

QStringinputFind=ui→searchEdit→text().trimmed();//获得查询内容

int row=0;

for(int i=0;i<stu_list.size();i++)//将文件中满足条件的信息重置于stu_model中

{

QString s=stu_list[i];

QStringList student=s.split(’ ');

if(index==0)

if(!student[0].contains(inputFind)) continue;//用contains()进行模糊匹配

if(index==1)

if(!student[1].contains(inputFind)) continue;

if(index==2)

if(inputFind!=student[2]) continue;

if(index==3)

ui→searchEdit→setText(“”);

for(int j=0;j<student.size();j ++ )//将查询到的内容置于stu_model 中并自动关联到tableView对象中再以表格形式显示,以作为查询结果

stu_model→setItem(row,j,new QStandardItem(student[j]));

row++;

}}

删除操作拟代码:

void EditDialog::on_delButton_clicked()

{

int index=ui→tableView→currentIndex().row();

QString s=stu_list[index];

QStringList student=s.split(’ ');

QString info=“确定要删除 “+student[0]+” 吗?”;

if(QMessageBox::Yes==QMessageBox::information(this,“确认删除”,info,QMessageBox::Yes,QMessageBox::No))

{ stu_model→removeRow(index);

stu_list.removeAt(index);

//重写文件

QFile file(“./student.txt”);

if(!file.open(QIODevice::WriteOnly|QIODevice::Text))

{return;}

QTextStream out(&file);

for(int i=0;i<stu_list.size();i++)

{ out<<stu_list[i]<<endl; }

}}

修改操作拟代码:

void EditDialog::on_modifyButton_clicked()

{int row=ui→tableView→currentIndex().row();

QStringnewStr,newStr2;

QStringoldStr=stu_list[row];

if(oldStr.trimmed()!=newStr.trimmed())

{ if(QMessageBox::Yes==QMessageBox::information(this,“确认修改”,“确认要修改?”,QMessageBox::Yes,QMessageBox::No))

{ stu_list.removeAt(row);

stu_list.insert(row,newStr2);

……//把stu_list中的内容重写入文件(同删除功能中重写文件),使文件内容与修改后的内容一致

QStringListnewStr2List=newStr2.split(’ ');

for(int i=0;i<7;i++)

{ stu_model→setItem(row,i,new QStandardItem(newStr2List

[i])); }

stu_model→setItem(row,7,new QStandardItem(totalStr));

}else

{ QStringListstus=oldStr.split(’ ');

for(int col=0;col<8;col++)

stu_model→setItem(row,col,new QStandardItem(stus[col]));

}}}

  • 限制条件

时间约束:

工期约束在三个月内完成开发工作,一个月进行测试及修改,后续有一个月时间进行软件交接前的准备工作。共计5个月内需要将完整功能的软件交给客户。

技术约束:

可使用技术:SQL Server 2000,JDK Version 1.4.2, eclipse, IntelliJ IDEA 2023, visual studio code,Tomcat, SQL Server 2000

人员约束:

初始开发团队为6个人,可以完成软件开发与测试和改进bug的工作。

若开发团队需要拓展能够在两个月内拓展到足够的人手,并使拓展人手学习并使用初始团队的技能。

组织约束:

各人员需要在规定工期内完成自身负责的工作并做好交接工作。各人员需要进行使用技术的协商与统一。各人员需严格按照客户需求并按照国家法规来进行工作,不允许掺杂个人恩怨及个人未上报的想法在工作中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值