软工导论实验报告健康管理系统的设计与实现.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 导论 实验 报告 健康 管理 系统 设计 实现
- 资源描述:
-
健康管理系统的设计与实现 df 题目:健康管理系统的设计与实现 软件工程 jdfohewk 提交日期:2016/11/13 目录 一、需求分析 4 1.项目目标概述 4 2.问题初始分析 4 2.1 场景描述 4 2.2 初始功能提取 4 3.系统功能分析建模论述 5 3.1系统流程图 5 3.2 功能模型(数据流图) 6 3.3 数据模型(实体-关系图) 6 3.4 行为模型(状态转换图) 7 3.5 层次方框图(描绘产品的数据结构) 7 4.系统性能需求 8 4.1 时间要求 8 4.2 空间要求 8 5.系统界面与接口需求 8 5.1 界面需求 8 5.2 接口需求 9 6.可行性分析 9 二、系统设计 9 1.引言 9 1.1 目的 9 1.2 命名规则 10 2.系统设计 10 2.1 方案设计 10 2.2 软件结构设计 10 2.3 数据库设计 11 2.4 详细设计 11 三、系统实现 15 1、 编程环境概述 15 2、 程序源代码 15 2.1 三餐安排功能模块源代码 15 2.1 登录功能模块源代码 22 四、系统测试 25 1. 概述 25 2. 测试 25 2.1 单元测试 25 2.2 测试报告 25 3.系统主要运行界面 27 4. 系统测试结论 29 五、实验总结 29 参考文献: 29 一、需求分析 1.项目目标概述 该系统旨在为长期工作在电脑前的用户提供日常的作息安排,进而改善用户的作息,从而将生物钟调整至最佳状态,更好地迎接每一天的工作。 2.问题初始分析 2.1 场景描述 目前越来越多的白领型工作人员由于缺乏健康管理意识,身体素质大幅度下降,以致于出现各种健康问题。合理的安排每天的日常行为,可以很有效地改善身体的各种调节,从而能够正常地作息,用最好的状态去完成每天的工作。因此,开发一种能够帮助长期工作在电脑前的朋友进行自我健康管理的软件是很有必要的。 2.2 初始功能提取 本系统意图实现以下功能: 一、 初步判断用户的基本身体状况,即根据身高、体重、年龄、性别来判断。 二、 帮助用户合理地安排一日三餐。 三、 帮助用户合理地安排每天的运动,以达到健身的功效。 四、 实时提醒用户进行身体放松。 五、 待完善。 3.系统功能分析建模论述 3.1系统流程图 开始由用户输入个人信息,经过处理保存到个人信息数据库,再分别调用三餐安排和运动安排程序。由运动安排程序生成并显示运动安排,三餐生成程序调用数据库中的内容,显示三餐安排。 3.2 功能模型(数据流图) 3.3 数据模型(实体-关系图) 每一个用户都拥有一个账户,包含账号和密码,而用户本身信息即他的身体信息,包含年龄、性别、身高、体重。多个用户可以同时使用一个系统。 3.4 行为模型(状态转换图) 打开系统,最初处于登录界面(即闲置),登录成功后,进入主界面。如果用户第一次使用,会提示用户进行信息登记。当到达特定时间时,会提示当前应做的事。当用户修改了他的信息之后,系统会实时的进行相应调整。 3.5 层次方框图(描绘产品的数据结构) 4.系统性能需求 4.1 时间要求 (1)响应时间:150ms。 (2)数据库更新时间:2~4s。 4.2 空间要求 (1)支持的终端数:1。 (2)支持的并行操作的使用者数:3-10,根据计算机内存和CPU决定。 (3)处理的文件和记录数:数据库文件*1,记录根据操作决定。 (4)根据软件提示进行输入,否则会提示出错 5.系统界面与接口需求 5.1 界面需求 界面的原则要求,如方便、简洁、美观、一致等。整个系统的界面风格定义,某些功能模块的特殊的界面要求。 (1)输入设备:键盘、鼠标; (2)输出设备:显示器; (3)显示风格:对话框; (4)显示方式:1024*768; (5)输出格式:对话框中的字符集。 5.2 接口需求 (1)用户接口 采用对话框式的界面,结合菜单设计,并且采用智能提示,给用户提供最大的便利和最好的操作可行性。支持用键盘和鼠标同时操作。 (2)软件接口 运行环境:windows xp/windows7/windows8 数据库连接:access 2007、ADO动态链接库 6.可行性分析 1、技术可行性 目前能够通过VC++ 6.0进行系统的程序编写; 能够通过ADO方法连接ACCESS数据库,并且对其进行操作(增删改查); 2、操作可行性 系统能够提示第一次使用本系统的用户如何操作,并且界面简单大方,因此具有很好的操作可行性。 3、经济可行性 开发成本忽略不计。 二、系统设计 1.引言 本章对该文档的目的、功能范围、术语、相关文档、参考资料、版本更新进行说明。 1.1 目的 本文档的目旨在推动软件工程的规范化,使设计人员遵循统一的概要设计书写规范,节省制作文档的时间,降低系统实现的风险,做到系统设计资料的规范性与全面性,以利于系统的实现、测试、维护、版本升级等。 1.2 命名规则 变量对象命名规则:根据变量的实际意义命名,如姓名:name; 年龄:age; 身高:height;体重:weight。 数据库对象命名规则:根据字段的实际意义命名,但不能使用数据库的保留关键字(否则会出错)。如账号:username;密码:password1(防止使用保留关键字)。 2.系统设计 2.1 方案设计 选择方案1. 2.2 软件结构设计 层次图:本系统包含两个主要模块,用户管理模块和健康管理模块。用户管理模块包含账户管理和个人信息管理,账户管理包含三个功能:注册、登录、改密码;个人信息管理提供一个功能:更改个人信息。健康管理模块提供三个功能:安排三餐、安排运动、实时提醒。 2.3 数据库设计 1、数据库文件:一个文件:user.mdb; 2、表:用户信息表一张、三餐安排表若干、运动安排表一张、日程安排表若干; 3、用户信息表包括7个字段:账号、密码、姓名、性别、年龄、身高、体重; 4、三餐安排表各包含3个字段:早餐、午餐、晚餐; 5、运动安排表各包含个字段:身高、体重、年龄、性别、运动消耗卡路里量。 2.4 详细设计 各个功能模块间传递用户账号的方式:建立临时的TXT文件,在登录成功时保存账号,进而在调用其他模块时寻找到账号。 三、系统实现 1、 编程环境概述 编程环境:VC++6.0(MFC程序) 数据库:access 2007(连接方法:ADO) 操作系统:windows7 2、 程序源代码 2.1 三餐安排功能模块源代码 1.描述 1.1代码功能描述:实时更新对用户安排的三餐信息以及BMI指数。 1.2代码描述:(自然语言) 开始; 读取用户账号; 打开数据库; 读取数据库中用户信息表的内容; 读取所有的用户信息; If(用户第一次使用本软件)打开用户信息更改界面; If(身高或体重数据为空)返回,结束; 根据身高体重计算BMI指数; 在主界面显示BMI指数; 根据BMI指数打开对应的三餐安排数据库表; 读取安排信息,并且写入对应的列表控件中; 关闭数据库和其他文件; 结束。 2.代码(共154行,包括必要的空行) void CMyDlg::OnTimer(UINT nIDEvent) { CString filename="D:\\user.txt"; CStdioFile file; file.Open(filename,CFile::modeRead);//用只读方式打开临时TXT文件,以便读取user的ID CString user; file.ReadString(user); _ConnectionPtr m_pConnection; _variant_t RecordsAffected; _RecordsetPtr m_pRecordset;//设置操作数据库的ADO对象指针 //下面是打开数据库 try { m_pConnection.CreateInstance(__uuidof(Connection)); m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=user.mdb","","",adModeUnknown); } catch(_com_error e) { CString errormessage; errormessage.Format("打开数据库失败!\r错误信息:%s",e.ErrorMessage()); AfxMessageBox(errormessage); return; } //下面读取数据库(用户信息)中的内容 try { m_pRecordset.CreateInstance("ADODB.Recordset"); char strcmd[1024]; sprintf(strcmd,"select * from usertable"); m_pRecordset=m_pConnection->Execute(strcmd,&RecordsAffected,adCmdText); //将usertable表里面的所有数据读取到recordset这个东西里面,以后就直接用这个东西操作表了 } catch(_com_error e) { CString errormessage; errormessage.Format("错误!\r错误信息:%s",e.ErrorMessage()); AfxMessageBox(errormessage); return; } //下面寻找对应的用户信息 _variant_t theuser,theheight,theweight,theage,thename,thesex; CString tuser,theight,tweight,tname,tage,tsex; while(!m_pRecordset->adoEOF)//用while循环直到把这个表读完,即做一次遍历 { theuser=m_pRecordset->GetCollect("username"); theheight=m_pRecordset->GetCollect("身高(厘米)"); theweight=m_pRecordset->GetCollect("体重(斤)"); theage=m_pRecordset->GetCollect("年龄"); thesex=m_pRecordset->GetCollect("性别");//先用_variant_t这个变量读取数据库中的字符串 thename=m_pRecordset->GetCollect("姓名"); if(theuser.vt==VT_NULL)tuser=""; else tuser=theuser.bstrVal; if(thename.vt==VT_NULL)tname=""; else tname=thename.bstrVal; if(theheight.vt==VT_NULL)theight=""; else theight=theheight.bstrVal; if(theweight.vt==VT_NULL)tweight=""; else tweight=theweight.bstrVal; if(thesex.vt==VT_NULL)tsex=""; else tsex=thesex.bstrVal; if(theage.vt==VT_NULL)tage=""; else tage=theage.bstrVal;//然后把_variant_t类型强制转换为CString类 if(tuser==user)break;//退出循环 m_pRecordset->MoveNext();//如果当前所指的用户名不对,就指向下一个,直到最后一个 } if(tweight==""&&theight==""&&tage==""&&tsex==""&&tname=="") { KillTimer(1); MessageBox(" "); file.Close(); CInformation dlg; dlg.DoModal(); SetTimer(1,150,NULL); file.Open(filename,CFile::modeRead); file.ReadString(user); } if(tweight==""||theight=="")return; int height,weight; height=_ttoi(theight); weight=_ttoi(tweight); //BMI指数单位:kg/m^2 bmi=((float)weight/2)/pow((float)height/100,2); CString str; str.Format("%f",bmi); SetDlgItemText(IDC_EDIT2,str); //把数据库中的三餐表格插入表格中(按三个等级分) //先读取数据库(安排一日三餐的表格)中的内容 try { m_pRecordset.CreateInstance("ADODB.Recordset"); char strcmd[1024]; if(bmi<18.5)sprintf(strcmd,"select * from mealsforthin"); if(bmi<22.9&&bmi>18.5)sprintf(strcmd,"select * from mealsfornormal"); if(bmi>22.9)sprintf(strcmd,"select * from mealsforfat"); m_pRecordset=m_pConnection->Execute(strcmd,&RecordsAffected,adCmdText); //将usertable表里面的所有数据读取到recordset这个东西里面,以后就直接用这个东西操作表了 } catch(_com_error e) { CString errormessage; errormessage.Format("错误!\r错误信息:%s",e.ErrorMessage()); AfxMessageBox(errormessage); return; } //下面把三餐安排写入列表控件 int n=0; m_pRecordset->MoveFirst(); while(!m_pRecordset->adoEOF) { n++;//记录的总数,用n表示 m_pRecordset->MoveNext(); }//记录表的总记录数,为以后的添加功能做准备 _variant_t thebreakfast,thenoon,thedinner; CString tbreakfast,tnoon,tdinner; m_pRecordset->MoveFirst(); int index=0; m_list.DeleteAllItems(); while(!m_pRecordset->adoEOF) { thebreakfast=m_pRecordset->GetCollect("breakfast"); thenoon=m_pRecordset->GetCollect("noon"); thedinner=m_pRecordset->GetCollect("dinner"); if(thebreakfast.vt==VT_NULL)tbreakfast=""; else tbreakfast=thebreakfast.bstrVal; if(thenoon.vt==VT_NULL)tnoon=""; else tnoon=thenoon.bstrVal; tdinner=thedinner.bstrVal; if(thedinner.vt==VT_NULL)tdinner=""; else tdinner=thedinner.bstrVal; m_list.InsertItem(index,tbreakfast); m_list.SetItemText(index,0,tbreakfast); m_list.SetItemText(index,1,tnoon); m_list.SetItemText(index,2,tdinner); index++; m_pRecordset->MoveNext(); }//用这个循环往列表中写入数据 file.Close(); } 2.1 登录功能模块源代码 1.描述 1.1代码功能描述:通过访问数据库中的用户信息进行登录。 1.2代码描述(自然语言) 开始; 读取输入的账号和密码; 打开账户信息数据库; 读取数据库中所有的账号和对应的密码; 在所有账号中寻找用户输入的账号; If(没有找到匹配的账号)提示,返回; If(密码正确)提示成功,打开主程序,将账号写入user.txt用于后续操作; Else 提示密码错误,返回; 关闭数据库; 结束。 2.代码(78行,无空行) void CLogin::OnOK() { CString user; CString password; GetDlgItemText(IDC_user,user); GetDlgItemText(IDC_password,password); _ConnectionPtr m_pConnection; _variant_t RecordsAffected; _RecordsetPtr m_pRecordset;//设置操作数据库的ADO对象指针 //打开数据库 try { m_pConnection.CreateInstance(__uuidof(Connection)); m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=user.mdb","","",adModeUnknown); //这两行代码用来打开数据库,具体含义不懂,但是文件名要写对,打开方式不用管 } catch(_com_error e) { CString errormessage; errormessage.Format("打开数据库失败!\r错误信息:%s",e.ErrorMessage()); AfxMessageBox(errormessage); return; //如果出错则返回 } //读取数据库的内容 try { m_pRecordset.CreateInstance("ADODB.Recordset"); char strcmd[1024]; sprintf(strcmd,"select * from usertable"); m_pRecordset=m_pConnection->Execute(strcmd,&RecordsAffected,adCmdText); //将usertable表里面的所有数据读取到recordset这个东西里面,以后就直接用这个东西操作表了 } catch(_com_error e) { CString errormessage; errormessage.Format("错误!\r错误信息:%s",e.ErrorMessage()); AfxMessageBox(errormessage); return; } _variant_t theuser,thepassword; CString tuser,tpassword; while(!m_pRecordset->adoEOF)//用while循环直到把这个表读完,即做一次遍历 { theuser=m_pRecordset->GetCollect("username"); thepassword=m_pRecordset->GetCollect("password1"); tuser=(TCHAR*)(_bstr_t)theuser; tpassword=(TCHAR*)(_bstr_t)thepassword; if(tuser==user)break; //如果找到用户名,则退出循环 m_pRecordset->MoveNext();//如果当前所指的用户名不对,就指向下一个,直到最后一个 } if(tuser!=user){MessageBox("此用户不存在!","提示");return;} if(tpassword==password)//如果密码正确就打开程序 { CString filename="D:\\user.txt"; CStdioFile file; file.Open(filename,CFile::modeCreate|CFile::modeWrite);//创建TXT文件 file.SeekToBegin(); file.WriteString(user);//把用户名写入txt//如果没有找到输入的用户名,则说明用户还没有注册,或者用户名输错了 file.Close();//必须关闭,不然没有保存,会出现致命错误! MessageBox("successed"); CDialog::OnOK(); CMyDlg dlg; dlg.DoModal(); } else { MessageBox("密码错误!","提示");return;} m_pRecordset->Close(); m_pRecordset=NULL; m_pConnection->Close(); m_pConnection=NULL; } 四、系统测试 1. 概述 本次测试将对两个功能模块进行详细测试,分别是修改密码模块和安排三餐模块。 2. 测试 2.1 单元测试 表5-1 测试模块清单 编 号 模块中文名 模块功能简述 接口简述 M 1-3 修改密码 提供修改密码的功能 对话框 M 2-1 安排三餐 为用户安排三餐 对话框 2.2 测试报告 模块一 程序流程如下图 环形复杂度:3 测试用例设计 (已有用户名为admin,密码为123456的账户) 输入数据 预期输出 说明 测试用例1 旧密码:123,新密码:jdfohewk,确认密码:jdfohewk 提示:密码错误 旧密码为123456,输入错误 测试用例2 旧密码:123456,新密码:jdfohewk,确认密码:jdfohewk 提示:修改成功 旧密码正确,新密码=确认密码 测试用例3 旧密码:123456,新密码:jdfohewk,确认密码:123 提示:修改失败,请确认两次密码输入一致 旧密码正确,新密码!=确认密码 一、 输入条件 1、 条件1:旧密码错误,新密码=确认密码; 路径:1→2→3→4→5→6→5 2、 条件2:旧密码正确,新密码=确认密码; 路径:1→2→3→4→5→6→7→8→9 3、 条件3:旧密码正确,新密码!=确认密码。 路径:1→2→3→4→5→6→7→5 二、 输出内容 1、 提示:密码错误。 2、 修改成功。 3、 提示:两次新密码不一致。 三、 测试结果:成功,模块没有问题。 四、 测试人:肖飞。 模块二 程序流程如下图 环形复杂度:1 路径:1→2→3→4→5→6→7 测试结果:工作正常 测试人:肖飞 3.系统主要运行界面 4. 系统测试结论 测试日期:2016.11.12 测试地点:软件学院机房 测试环境:vc++ 6.0;windows7 测试的模块/功能项数:2 通过的模块功能项数:2 结论:两项模块能够正常工作,没有问题出现。 五、实验总结 1、需求要点: 首先从整体定义了软件,主要从功能方面。接着通过若干个图分别分析了软件的系统流程、功能模型、数据模型、行为模型以及数据结构。接着分析了系统的性能需求、界面需求和接口需求,从各个方面描绘出了本系统的轮廓。 2、分析要点: 要熟悉使用各种图形,包括系统流程图、数据流图、实体关系图、状态转换图和层次方框图,才能用更高的效率完成需求的分析工作。我对于数据流图、实体关系图以及状态转换图相对熟悉,而对于其他两种图形并不熟悉,因此耗费了比较多的时间。 3、设计要点: 总体设计主要运用模块化方法,画出了系统的功能层次图,然后在详细设计中将每个模块绘制成程序流程图,进而写出代码。这两种图相对比较简单,而且对于系统的实现至关重要,因此必须要做好。 4、实现和测试要点 4.1本系统选用了C++语言,用VC++6.0作为编程环境,采用MFC对话框的形式进行程序编写。MFC封装了windows提供的各种API函数,使用起来非常方便,而且功能强大,编写程序时方法多样,灵活性极高,因此使用MFC进行C++编程是省时又省力的,而且能够快速实现更强大的功能。比起JAVA来,C++同样是面向对象的语言,但是比JAVA的执行效率高,更加稳定,功能也更加丰富。虽然门槛比较高,但却是复杂编程最好的语言。 4.2测试 测试步骤:画出流程图、计算环形复杂度、选取路径进行测试。 测试技术:白盒测试,采用路径覆盖。 参考文献: 1. 张海潘.软件工程(第6版).北京:清华大学出版社,2013.8 2. (美)法禾,(美)罗伯森 《SQL语言艺术》 电子工业出版社,2008.3 (美)帕罗塞斯 《MFC Windows程序设计》(第2版)(修订版) 清华大学出版社 2007.1目 录 第一章 总论 1 一、项目概况 1 二、项目提出的理由与过程 6 三、项目建设的必要性 8 四、项目的可行性 12 第二章 市场预测 15 一、市场分析 15 二、市场预测 16 三、产品市场竞争力分析 19 第三章 建设规模与产品方案 22 一、建设规模 22 二、产品方案 22 三、质量标准 22 第四章 项目建设地点 25 一、项目建设地点选择 25 二、项目建设地条件 25 第五章 技术方案、设备方案和工程方案 28 一、技术方案 28 二、产品特点 30 三、主要设备方案 32 四、工程方案 32 第六章 原材料与原料供应 35 一、原料来源及运输方式 35 二、燃料供应与运输方式 35 第七章 总图布置、运输、总体布局与公用辅助工程 37 一、总图布置 37 二、 运输 38 三、总体布局 38 四、公用辅助工程 39 第八章 节能、节水与安全措施 44 一、主要依据及标准 44 二、节能 44 三、节水 45 四、消防与安全 45 第九章 环境影响与评价 47 一、法规依据 47 二、项目建设对环境影响 48 三、环境保护措施 48 四、环境影响评价 49 第十章 项目组织管理与运行 50 一、项目建设期管理 50 二、项目运行期组织管理 52 第十一章 项目实施进度 55 第十二章 投资估算和资金筹措 56 一、投资估算 56 二、资金筹措 58 第十三章 财务评价与效益分析 61 一、项目财务评价 61 二、财务评价结论 65 三、社会效益 68 四、生态效益 68 第十四章 风险分析 70 一、主要风险分析识别 70 二、风险程度分析及防范风险的措施 70 第十五章 招标方案 72 一、招标范围 72 二、招标组织形式 72 三、招标方式 72 第十六章 结论与建议 74 一、可行性研究结论 74 二、建议 75 附 件 77 一、附表 77 二、附件 77 三、附图 77 3. 26展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




软工导论实验报告健康管理系统的设计与实现.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/2654561.html