软件项目管理课程作业

2023-04-24 版权声明 我要投稿

第1篇:软件项目管理课程作业

软件测试方法和技术—课程总结作业

软件测试方法和技术 课程总结作业 2012-2013学年第一学期

软件测试方法和技术

课程总结作业

1、提交期限和方法

期限:第17周周2晚。

方法:由各班学习委员收集所有学生的纸质作业上交到授课老师处,其中电子档报告以E-mail提交给任课教师(可发邮箱:dfeng808@126.com )。

2、实验任务

任务1:(30分)判断三角形类的核心代码如下:

/** 判断三角形的类 */

public class TriangleTestMethod {

/** 判断三角形的种类。参数a, b, c分别为三角形的三边,

* 返回的参数值为0,表示非三角形;

* 为1,表示普通三角形;

* 为2,表示等腰三角形;

* 为3,表示等边三角形。

*/

public static int comfirm(int a, int b, int c) {

if((a + b > c) && (b + c > a) && (a + c > b)) // 判断为三角形{if((a == b) && (b ==c)) // 判断为等边三角形

return 3;

if((a == b) || (b == c) || (a == c)) // 判断为等腰三角形

return 2;

else // 判断为普通三角形

return 1;

}

else { // 为非三角形

return 0;

}

}

}

要求:

1、首先画出程序的流程图;

2、为以上所示的程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖。

3、对上述程序用基本路径测试法设计测试用例;具体按下列步骤进行:

依据代码绘制流程图(参考书的流程图,必须类似) 确定程序环路复杂度; 确定线性独立路径的基本集合; 设计测试用例覆盖每条基本路径 第 1 页 共 2 页

软件测试方法和技术 课程总结作业 2012-2013学年第一学期 任务2:(20分)设有一个档案管理系统,要求用户输入以年月表示的日期。假设日期限定

在1990年1月~2049年12月,并规定日期由6位数字字符组成,前4位表示年,后2位表示月。现用等价类划分法设计测试用例,来测试程序的"日期检查功能"。 任务3:(50分)用你已经设计好的系统或借用其他系统,来进行软件系统测试,编写出系统测试报告。

3、补充说明

课程总结作业必须自己独立、认真完成,不得抄袭,如发现抄袭别人,则视本门课程为不及格处理。希望大家切记。

第2篇:软件技术课程设计作业应提交的资料列表

1. 开题报告(每个课程小组一份,电子版和纸质(A4纸)两种);

2. 结题报告(每人一份,电子版和纸质(A4纸)两种);

3. 源程序以所有相关的文件(如系统中用到的图片、视频等)和

已经生成的可执行程序;

注:(1)每个班由学习委员收齐本班的上述所有资料之后,提交给老师,请每位同学自觉尽快的在课程设计实验完毕之后提交上述资料。

(2)班级负责人收取电子版资料时按照以下目录结构存放:

班级/课程设计题目(小组成员学号)

如:09020301/网络考试系统(032376, 032383)

跨班的小组成员请注明所在班级,如

09020301/超市管理信息系统(032372, 032380, 032378注09020303班)

第3篇:互联网软件开发(Java)课程大作业总结报告

互联网软件开发(Java)课程

大作业总结报告

(第3组)

小组成员:曾志鑫

3131101242

3131101216

3131101243

曾海达

3131101241

潘宝坤

3131101237

一、小组作业题目

学生信息管理系统

二、功能(业务)描述及设计思想(建议UML图示辅助介绍更好)

本系统是用JAVA编写的,运行环境也是在JAVA下,所用数据库为SQL Server 2008,本系统有教师和学生两个版本,即有学生和教师两种权限。在运行了本系统后,可能通过注销来切换用户。现在登陆的为教师权限的教师版,在有这个权限时,可以添加任意想添加的学生信息。当需要删除某个学生的信息时,也可以做出想应的操作。当要为学生录入成绩时,点击相应的按钮根据界面做出相应的操作就可以完成了,删除某个学生的成绩时,也是一样的。另外还有添加选修课程名的功能,这个功能是为了实现现在学生有选修课的,当有不同的选修课时就可以自己加入即可。当某门选修课不再开时,删除对应的选修课就行了。当鼠标放在每一个按键上,界面右边就会提示并介绍这个按键的功能。

如果现在登陆的为学生权限的学生版,在有这个权限时,可以查看自己"的个人信息和成绩,学生进入的用户名为自己的学号,默认的密码为学号。学生自己可以在登陆了本系统后自行修改自己的密码。切记要修改自己的个人进入密码,并妥善保管好自己的密码。在登陆本系统后,学生就可以选课了,所有可选的课程名都可以选择,但每个人限选一门,当在有选修课后再去选课就会出现相应的提示,如需重选,则点击相应的按钮,就会出现重选界面。但要注意重选选修课是先删除已选的选修课之后再选,所以重选和删除选修课要慎重.查看个人信息,就可以看到自己的信息和成绩。

系统总体结构图如下:

三、运行结果截图

系统登入界面

系统首界面

添加信息界面

添加成功界面

删除信息界面

查询信息界面

修改信息界面

添加选课界面

删除选课界面

四、程序中存在的缺陷及解决思路

1、系统没有设计注册,账号密码是通过管理员分配的。

2、对数据库的操作是对于单表操作的,没有在多表实现同步。表与表之间没有建立起连接。

五、程序调试情况说明

1、 开始的时候,数据库连接不上,上网搜索找资料后才知道是数据库在安装的时候是默认使用windows方式验证的,需要设置为window 与sql 的混合方式验证,并且启用sa账户并设置密码与应用程序匹配。

2、 在数据库解决时候还是连接不上,在阅读书籍之后忽略了eclipse里需要导入相应的数据库包,比如sql的sqljdbc.jar

3、 界面设计时需要根据数据的大小显示出想要的大小,以及位置。开始数据的方式不是那么的好用,上网搜索了一下电脑分辨率的获取,然后利用电脑的分辨率来进行控制。

4、 在对数据库进行操作时,一开始没有考虑到数据的同步,所以表与表之间需要建立主键与外键的连接,那样的话设计到视图的操作,感觉时间上没那么多,就没有解决。

六、开发心得

一个好的团队的总体力量超过一个个体力量的总共和。

开发我们提倡团队开发,主要原因有

三、第一,软件开发过程复杂,而团队可以使问题简单许多,遇到问题可以大家一起解决。第二,团队操作可以在很大程度上实现优势的互补。第三,团队合作在很大程度上培养了人与人之间沟通的理解能力。

一直以来期望从事自己喜欢的事业的我,对软件开发有者及大的兴趣,可由说种种原因使我从事工作以来走了好几年弯路,心中的梦想迟迟不能得以实现,可程序员的梦想从来没有从我的心中抹去,但这扇大门好像并没有向我敞开,今天,贵公司给了我敲开这扇大门的机会,让我真实体验了程序员的诞生过程。早就听说,程序员的前几个月是最苦的,可从来没有感受到,海马实习基地让我提前感受到了刚刚进入软件行业的压力和困惑,再也没有在自己家里随便写段小程序后的那种“自豪”感了。要面对每天必须面对的问题,再也不可能以“逃避”而了之了。也让我感觉到做为一个程序员所应该具备的基本素质在这不到一个月的实习过程中也让我深深体会到了作为一个合格的程序员应该具备的基本素质。

团队精神和协作能力是程序员应该具备的基本素质,最近的工作中让我深深休会到了这一点,由于小组成员配合不好,使本来很方便的cvs给自己的工作带来的及大的麻烦,一不小心自己写的的东西就会被小组别的成员在上传文件的时候给覆盖掉,一整天的工作可能就这样被反工,我们小组这次就是因为协作不好,导致各模块之间不法连接,给工作带来了及大的麻烦,消耗了大量的劳动力还没有提高工作效率。这使我深深的体会到:一个成功商业性软件的开发必须有一个有强大凝聚力的团队,个人的力量是有限的,团队精神和良好的协作会使我们做出优秀的软件。

良好的文档是正规研发流程中非常重要的环节,作为代码程序员,30%的工作时间写技术文档是很正常的,缺乏文档,一个软件系统就缺乏生命力,在未来的查错,升级以及模块的复用时就都会遇到极大的麻烦。这次的这个小小的项目,就因为文档上的一点点理解错误让我们花了很大的工夫去改代码,改页面。很庆幸的是,这是一个小项目,要是大项目,这种问题可能就会导致大量的代码修改,可见文档在一个项目中起者巨大的做用。

此外,良好的代码编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。作为一个程序员,对需求的理解能力也是很重要的,只有真正理解了一个模块的作用,才会写出高效率的代码,才能使整个软件项目作出来更加优秀,具备更好的安全性和稳定性,我在写代码的过程中就遇到了需求理解上的问题,使得写出来的代码功能不全,幸好不是给客户发现在,要不,这个软件的商业价值可能就会打折扣了。单元测试对于一个程序员来说是不可不做的一项工作,不做好测试就会给后期的集成工作带来麻烦,往往为了一个小问题会让我们查找好多模块,给后期工作带来很大麻烦。

这一段时间的工作也让我明白了一点:一个优秀的程序员必须不断的学习,随时总结,找到自己的不足,这样逐步提高,才能让自己很快的成长起来。

七、小组成员的工作分配,及完成情况(作为评个人成绩的依据): 曾志鑫:部分代码撰写及文档撰写

洋:主要负责代码的撰写

超:部分代码撰写及部分文档撰写

曾海达:负责代码调试及部分文档撰写 潘宝坤:负责代码调试及部分文档撰写

八、源代码清单(注:只需列出文件名,具体的项目代码和该报告一起打包上传到服务器本课程目录下的“课程大作业”子目录)

1)数据库操作函数

public boolean Method_InsertInto(String query,String number)//添加学生信息到数据库中的方法 public String Method_query(String query,String number)//查询学生信息的数据库

public boolean Method_alter(String query_message,String query_score)//修改学生信息的数据库方法 public String Method_print_all_name()//得到数据库中所有的学生姓名

public int Method_delete(String number,boolean category_delete)//删除学生信息的数据库方法 public void Method_add_curriculum(String query)//将新的选修课名添加到数据库中的方法 public void Method_del_curriculum(String query)//删除数据库中选修课名的数据库方法

public String Method_query_curriculum(String number)//查询数据中学生选修课这项是否有了选修课名 public String Method_teacher_query_all_curriculum()//得到教师所有可删除的选修课程名 public String Method_student_query_all_curriculum()//得到学生所有可以选择的选修课程名 public boolean Method_student_add_curriculum(String curriculum)//将学生的选课加入到数据库中的学生信息中

public boolean Method_student_del_curriculum()//将数据库中学生已选的选修课删除 public boolean Method_change_password(String password)//修改数据库中学生的密码

2)登录及操作函数

public void Method_Login()//用户登陆操作 public void Method_Inquire()//查询的处理

public void Method_Add_Student_Information()//添加学生信息操作

public void Method_Print_All_Name()//将得到的所有学生姓名加入到下拉菜单中 public void Method_Del_Information()//删除学生信息操作 public void Method_Add_Curriculum()//教师添加选修课程名操作 public void Method_Del_Curriculum()//教师删除选修课程名操作

3)学生操作函数

public void Method_Student_Add_Curriculum()//学生选课操作 public void Method_Student_Del_Curriculum()//学生删除选修课操作 public void Method_Change_Password()//学生修改密码操作 public void Method_Explain()//显示系统说明的操作

4)界面显示操作的部分函数

public static Point getMidDimesion(Dimension d)//获得屏幕中间的坐标 public Image getImage(String url) private JFrame getJFrame_addinformation() private JFrame getJFrame_addinformation() 5)对学生信息按钮的操作的部分函数

private JButton getJButton_query() private JButton getJButton_delscore() private JButton getJButton_alterscore() private JButton getJButton_addscore() private JButton getJButton_delinformation() private JButton getJButton_addinformation() 6)对菜单子项的操作的部分函数

private JMenuItem getJMenuItem_explain() private JMenuItem getJMenuItem_last() private JMenuItem getJMenuItem_query() private JMenuItem getJMenuItem_delscore() private JMenuItem getJMenuItem_alterscore() private JMenuItem getJMenuItem_addscore() private JMenuItem getJMenuItem_delinformation() private JMenuItem getJMenuItem_addinformation() private JMenuItem getJMenuItem_change() 7)对菜单主目录操作的部分函数

private JMenu getJMenu_help() private JMenu getJMenu_inquiry() private JMenu getJMenu_result() private JMenu getJMenu_information() private JMenu getJMenu_file() 8)对学生信息的操作,如:性别、选修课、成绩等部分函数

private JTextField getJTextField_student_result_sex() private JTextField getJTextField_student_result_curriculum() private JTextField getJTextField_student_result_NativePlace() private JTextField getJTextField_student_result_department() private JTextField getJTextField_student_result_specialty() private JTextField getJTextField_student_result_class() private JTextField getJTextField_student_result_java() private JTextField getJTextField_student_result_english() private JTextField getJTextField_student_result_math() private JTextField getJTextField_student_result_sports() 9)对选修课的操作的部分函数

private JTextField getJTextField_curriculum_number() private JTextField getJTextField_curriculum_name public Choice getChoice_curriculum() private JButton getJButton_curriculum_ok() public void mouseClicked(java.awt.event.MouseEvent e) private JButton getJButton_curriculum_return() public void mouseClicked(java.awt.event.MouseEvent e)

第4篇:软件项目管理的课程学习体会(共)

经过一个学期对软件项目管理的学习,通过这次分工做任务,真正对项目管理有了比较深刻的理解和认识,感触很多。

一. 项目要进行整体管理,善始善终

整个项目开始要做好项目整体计划,在项目的整个过程中,始终要按照项目计划执行,如若遇到项目发生变更,要进行影响分析,得到批准后制定变更计划,并按变更计划执行。变更的影响情况,如:费用,时间进度等要通知相关的项目利益干系人,说明变更的原因和产生的影响。

变更计划在软件项目中经常遇到。控制好软件项目的变更,首先需要做好项目的开始目标基准的确定,基准的用户需求明确,才能衡量出哪些是需要变更的。否则变更的东西和开始要求的东西混在一起,变更计划就无从制定,变更的界限也无从划清。

二. 项目范围管理的重要性

需求管理是项目范围管理中的问题,这是因为它实际上是开发过程中的所有管理原则的先决条件。只有在开发的目标被清楚明白地表述和理解的情况下,软件开发才能以一种有计划的有序的方式进行。实际上,没有文档化的需求,在开发工作完成前后都很有可能发生产品与要求的偏离。计划、追踪、配置管理以及软件质量保证这些在其他关键过程中涉及的原则,都是从一个稳定的基础开始的,那就是文档化的需求基线。

三.项目时间管理理论指导我们在项目管理中怎样抓主要矛盾

项目管理的实施最为直观的就是缩短项目时间。利用项目管理理论、方法,有许多缩短时间的例子。美国路易斯维化工厂检修时把检修流程精细分解,按导向图建立起控制关系。他们惊奇地发现,检修过程选择不同路径总时间是有差别的。通过反复压缩最长路径上的任务,将工期反复优化,最后只用78个小时就完成了通常需125小时完成的检修,节省时间38%。这就是至今项目管理工作者还在应用的著名的时间管理技术CPM,即“关键路径法”。

所以我们在软件的项目管理中,也要将时间控制理论运用进来,结合软件工程的实际,将任务分解的更加详细,并用网络图将整个工作过程建立起来,估算好每个阶段的历时,找出关键路径,并通过快速跟进方法,将关键路径的工期缩短,以提高工效。

体会还有很多,总之通过这次学习自己对项目的管理又有了新的认识,我会将这些理论知识运用到实际工作中去的。以提高项目的管理水平,提高项目的质量,降低项目的成本,降低项目的风险,最终提高企业的效益。

第5篇:信息管理与信息系统专业软件工程作业

问题:UML中提供了哪9种图?试述每种图所描述的内容

1、用例图

描述角色以及角色与用例之间的连接关系。说明的是谁要使用系统,以及他们使用该系统可以做些什么。一个用例图包含了多个模型元素,如系统、参与者和用例,并且显示了这些元素之间的各种关系,如泛化、关联和依赖。

2、类图

类图是描述系统中的类,以及各个类之间的关系的静态视图。能够让我们在正确编写代码以前对系统有一个全面的认识。类图是一种模型类型,确切的说,是一种静态模型类型。

3、对象图

与类图极为相似,它是类图的实例,对象图显示类的多个对象实例,而不是实际的类。它描述的不是类之间的关系,而是对象之间的关系。

4、活动图

描述用例要求所要进行的活动,以及活动间的约束关系,有利于识别并行活动。能够演示出系统中哪些地方存在功能,以及这些功能和系统中其他组件的功能如何共同满足前面使用用例图建模的商务需求。

5、状态图

描述类的对象所有可能的状态,以及事件发生时状态的转移条件。可以捕获对象、子系统和系统的生命周期。他们可以告知一个对象可以拥有的状态,并且事件(如消息的接收、时间的流逝、错误、条件变为真等)会怎么随着时间的推移来影响这些状态。一个状态图应该连接到所有具有清晰的可标识状态和复杂行为的类;该图可以确定类的行为,以及该行为如何根据当前的状态变化,也可以展示哪些事件将会改变类的对象的状态。状态图是对类图的补充。

6、序列图 (顺序图)

序列图是用来显示你的参与者如何以一系列顺序的步骤与系统的对象交互的模型。顺序图可以用来展示对象之间是如何进行交互的。顺序图将显示的重点放在消息序列上,即强调消息是如何在对象之间被发送和接收的。

7、协作图

和序列图相似,显示对象间的动态合作关系。可以看成是类图和顺序图的交集,协作图建模对象或者角色,以及它们彼此之间是如何通信的。如果强调时间和顺序,则使用序列图;如果强调上下级关系,则选择协作图;这两种图合称为交互图。

8、构件图 (组件图)

描述代码构件的物理结构以及各种构建之间的依赖关系。用来建模软件的组件及其相互之间的关系,这些图由构件标记符和构件之间的关系构成。在组件图中,构件时软件单个组成部分,它可以是一个文件,产品、可执行文件和脚本等。

9、部署图 (配置图)

是用来建模系统的物理部署。例如计算机和设备,以及它们之间是如何连接的。部署图的使用者是开发人员、系统集成人员和测试人员

第6篇:软件工程课程设计 (个人账本管理系统)

软件工程课程设计报告 ---个人帐本管理

一、需求分析

1、 系统开发背景

当今社会是一个信息与科技并行的时代,在社会中消费时每个人都有的社会行为,消费与人的日常生活是息息相关的,一个人如果有一个很好的消费观的话能给自己带来很到好处。鉴于此目的,编写了一个小型的个人账本管理系统。此系统是一个简单的系统,可以管理个人的日常消费,可以为一般人所使用。对于业务较多的用户来说此系统就不是一个很好的选择。

2、 软件主要组成及功能

收入模块

功能:录入收入

任何时间录入你所得到的收入(共有以下几种选择:

1、工资;

2、奖金;

3、其他收入;);

输入你所的到的金额; 录入金额的原因(可选);

支出模块

功能:支出的记录

什么时候

什么类型的支出(

1、生活费;

2、日常用品;

3、休闲娱乐;

4、社交应酬;

5、交通费;

6、通讯费;

7、医疗保健;

8、其他支出) 输入支出的金额 什么原因的支出

查询模块 功能:查询

以选择查询的类型(

1、支出;

2、收入;

3、全部)

时间(

1、今天;

2、昨天;

3、本周;

4、上周;

5、本月;

6、上月;

7、本年;

8、去年;

9、全部;) 以及什么类别

消费的金额在什么范围之类的记录 将时间,类别,金额,备注显示出来

统计模块 功能:统计

选择统计的类型(

1、支出;

2、收入;)

时间(

1、今天;

2、昨天;

3、本周;

4、上周;

5、本月;

6、上月;

7、本年;

8、去年;

9、全部;) 什么类别

统计的方式(

1、总和;

2、平均值;

3、最大值;

4、最小值;) 将时间,类别,方式,数值显示出来

管理模块

功能:完成系统相应的管理

可以对数据库进行备份 数据库的还原 查看日志操作。

修改模块

功能:对已有数据进行修改更新操作

对记录进行修改 对记录删除。

退出模块 退出此系统

3、

4、 用户特点及一般约束 功能需求(DFD图)

收入 顶层图:

填写相应的信息收入录入事务确认成功录入成功

一层图: 收入录入事务填写相应的信息返回确认信息确认成功录入成功D:添加收入信息

支出 顶层图:

填写相应的信息支出录入事务确认成功录入成功

一层图:

填写相应的信息支出录入事务返回确认信息确认成功录入成功D:添加支出信息

查询 顶层图:

填写相应的信息查询命令输入事务确认成功查询成功

一层图: 查询命令输入事务填写相应的信息返回确认信息确认成功显示查询结果D:查询信息

统计 顶层图:

填写相应的信息统计命令输入事务确认成功显示统计结果

一层图:

填写相应的信息统计命令输入事务返回确认信息确认成功显示统计结果D:查询信息

管理 顶层图:

填写相应的信息管理命令输入事务确认成功管理成功

一层图: 管理命令输入事务填写相应的信息返回确认信息确认成功处理成功D:记录 查询

修改 顶层图:

填写相应的信息修改命令输入事务确认成功修改成功

一层图:

填写相应的信息修改命令输入事务返回确认信息确认成功修改成功D:查询数据库

5、 外部接口需求

在用户界面方面要求对每一个操作都以主界面为前提弹出相应的对话框,硬软件接口方面没有特别的需求,一般用户都可以直接使用。

6、 性能需求

因为系统本身较小,实际使用的人群的特点,响应时间可能有不同的要求。

7、 软件属性需求

在数据的检索、数据的增删改方面必须做到丝毫不差,满足软件开发的正确性的要求。 必须充分考虑软件的异常处理机制以及软件的复用性,以增强软件的健壮性。

在软件的保密性方面可以不用考虑,此软件主要是面向小型用户,对系统的保密没有要求。

所开发出来的软件必须是可维护的,要有可以升级的空间,要预留接口,方便后面软件的升级。

8、

二、项目概要设计

1、 总体设计(系统总流程图)

个人账本管理系统数据需求(ER图)

收入管理模块支出管理模块查询功能模块统计模块管理模块修改模块退出模块

2、 各个界面的截图及相应的操作规则

在第一次运行是要首先运行此文件对控件进行注册。

第一次运行的结果如图所示

收入

支出

查询

统计

管理

退出

三、详细设计

1、 进行项目详细设计工作;

2、 写出详细设计说明书。

四、编 码

1、此系统用MFC来编写。

2、编码分工:

3、各个模块核心代码 查询模块:

// CSelect 消息处理程序

void CSelect::OnBnClickedOk() { // TODO: 在此添加控件通知处理程序代码

UpdateData(true); CString type,date,kind,count,start,end; m_type.GetLBText(m_type.GetCurSel(),type); m_date.GetLBText(m_date.GetCurSel(),date); m_kind.GetLBText(m_kind.GetCurSel(),kind); m_count.GetLBText(m_count.GetCurSel(),count); CTime t = CTime::GetCurrentTime(); int tyear,tmonth,tday; CString year,month,day; tyear=t.GetYear(); tmonth=t.GetMonth(); tday=t.GetDay(); if(date=="今天") {

year.Format(_T("%d"),tyear);

if(tmonth<10)

month.Format(_T("0%d"),tmonth);

else

month.Format(_T("%d"),tmonth);

if(tday<10)

day.Format(_T("0%d"),tday);

//确定查询

else

day.Format(_T("%d"),tday);

start=year+_T("-")+month+_T("-")+day;

end=year+_T("-")+month+_T("-")+day; }

CString str,str1,str2,str3,str4; ADOConn m_AdoConn; m_AdoConn.OnInitADOConn(); CString sql;

if(type==_T("0")&&kind!=_T("所有收入"))

sql.Format(_T("select 时间,类别,金额,备注from mymoney where 类型= "+type+" and 类别= +kind+ and 时间>= +start+and 时间<= +end+ and 金额>= "+count+" order by 时间asc"));

_RecordsetPtr m_pRecordset; m_pRecordset = m_AdoConn.GetRecordSet((_bstr_t)sql); m_list.DeleteAllItems(); while(m_AdoConn.m_pRecordset->adoEOF==0) {

m_list.InsertItem(0,_T(""));

m_list.SetItemText(0,0,(_bstr_t)m_pRecordset->GetCollect(_T("时间")));

m_list.SetItemText(0,1,(_bstr_t)m_pRecordset->GetCollect(_T("类别")));

m_list.SetItemText(0,2,(_bstr_t)m_pRecordset->GetCollect(_T("金额")));

m_list.SetItemText(0,3,(_bstr_t)m_pRecordset->GetCollect(_T("备注")));

m_pRecordset->MoveNext(); }

str=m_list.GetItemText(0,0); if(str==_T("")) {

m_list.DeleteAllItems();

m_date.GetLBText(m_date.GetCurSel(),str1);

m_kind.GetLBText(m_kind.GetCurSel(),str2);

m_count.GetLBText(m_count.GetCurSel(),str3);

str4=_T("无此记录");

m_list.InsertItem(0,_T(""));

}

} m_list.SetItemText(0,0,str1); m_list.SetItemText(0,1,str2); m_list.SetItemText(0,2,str3); m_list.SetItemText(0,3,str4); 管理模块:

void CManage::OnBnClickedButton1() //数据库备份 { // TODO: 在此添加控件通知处理程序代码

m_button1.EnableWindow(false); m_button2.EnableWindow(true); m_static.SetWindowTextW(_T("请选择备份目录:")); m_static.ShowWindow(SW_SHOW); m_button.ShowWindow(SW_SHOW); m_edit.ShowWindow(SW_SHOW); m_edit.SetWindowTextW(_T("")); flag=1; strname=_T(""); UpdateData(false); Invalidate(true); }

void CManage::OnBnClickedButton2() //数据库还原 { // TODO: 在此添加控件通知处理程序代码

m_button2.EnableWindow(false); m_button1.EnableWindow(true); m_static.SetWindowTextW(_T("请选择还原文件目录:")); m_static.ShowWindow(SW_SHOW); m_button.ShowWindow(SW_SHOW); m_edit.ShowWindow(SW_SHOW); m_edit.SetWindowTextW(_T("")); flag=-1; strname=_T(""); UpdateData(false); Invalidate(true); }

void CManage::OnBnClickedButton3() //察看日志 { // TODO: 在此添加控件通知处理程序代码

CFile file; CTime t=CTime::GetCurrentTime(); int tyear,tmonth,tday,thour,tmin,tsec; CString year,month,day,hour,min,sec; tyear=t.GetYear(); tmonth=t.GetMonth(); tday=t.GetDay(); thour=t.GetHour(); tmin=t.GetMinute(); tsec=t.GetSecond(); year.Format(_T("%d"),tyear); month.Format(_T("%d"),tmonth); day.Format(_T("%d"),tday); hour.Format(_T("%d"),thour); min.Format(_T("%d"),tmin); sec.Format(_T("%d"),sec);

CString str; str=year+_T("")+month+_T("")+day+_T(" ")+hour+_T(":")+min+_T(" 察看日志 "); }

void CManage::OnBnClickedButton4() //浏览 { // TODO: 在此添加控件通知处理程序代码

if(flag==1) {

UpdateData(true);

TCHAR szDir[MAX_PATH];

BROWSEINFO bi;

ITEMIDLIST *pidl;

bi.hwndOwner = this->m_hWnd;

bi.pidlRoot = NULL;

bi.pszDisplayName = szDir;

bi.lpszTitle = _T("请选择目录");

bi.ulFlags = BIF_RETURNONLYFSDIRS;

bi.lpfn = NULL;

bi.lParam = 0;

bi.iImage = 0;

pidl = SHBrowseForFolder(&bi);

if(pidl == NULL) return;

if(!SHGetPathFromIDList(pidl, szDir)) return;

else strname=szDir;

UpdateData(false); } else if(flag==-1) {

CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,_T("数据库文件|moneyback.db||"));

if(dlg.DoModal()==IDOK)

{

strname=dlg.GetPathName();

}

if(strname!=_T(""))

{

UpdateData(false);

} } }

收入模块:

// CIncome 消息处理程序

void CIncome::OnBnClickedOk() //确定按钮 { // TODO: 在此添加控件通知处理程序代码

UpdateData(true); if(m_count.IsEmpty()) {

MessageBox(_T("金额不能为空"));

return ; }

ADOConn m_AdoConn; m_AdoConn.OnInitADOConn(); _bstr_t sql; sql = "select * from mymoney"; _RecordsetPtr m_pRecordset; m_pRecordset=m_AdoConn.GetRecordSet(sql); CString mydate,mykind; m_date.GetLBText(m_date.GetCurSel(),mydate); m_kind.GetLBText(m_kind.GetCurSel(),mykind); mydate.Remove(); try {

m_pRecordset->AddNew();//添加新行

m_pRecordset->PutCollect("类型",(_bstr_t)_T("0"));

m_pRecordset->PutCollect("时间",(_bstr_t)mydate);

m_pRecordset->PutCollect("类别",(_bstr_t)mykind);

m_pRecordset->PutCollect("金额",(_bstr_t)m_count);

m_pRecordset->PutCollect("备注",(_bstr_t)m_remark);

m_pRecordset->GetFields()->GetItem("类型")->Value = (_bstr_t)_T("0");

m_pRecordset->GetFields()->GetItem("时间")->Value = (_bstr_t)mydate;

m_pRecordset->GetFields()->GetItem("类别")->Value = (_bstr_t)mykind;

m_pRecordset->GetFields()->GetItem("金额")->Value = (_bstr_t)m_count;

m_pRecordset->GetFields()->GetItem("备注")->Value = (_bstr_t)m_remark;

m_pRecordset->Update();

m_AdoConn.ExitConnect(); } catch(...) {

MessageBox(_T("操作失败"));

return; } }

统计模块:

// CCount 消息处理程序

void CCount::OnBnClickedOk() //确定统计 { // TODO: 在此添加控件通知处理程序代码

UpdateData(true); CString type,date,kind,way,start,end; m_type.GetLBText(m_type.GetCurSel(),type); m_date.GetLBText(m_date.GetCurSel(),date); m_kind.GetLBText(m_kind.GetCurSel(),kind); m_way.GetLBText(m_way.GetCurSel(),way);

if(type=="支出")

type=_T("1"); else

type=_T("0");

CTime t = CTime::GetCurrentTime(); int tyear,tmonth,tday; CString year,month,day; tyear=t.GetYear(); tmonth=t.GetMonth(); tday=t.GetDay();

if(date=="今天") {

year.Format(_T("%d"),tyear);

month.Format(_T("%d"),tmonth);

day.Format(_T("%d"),tday);

start=year+_T("-")+month+_T("-")+day;

end=year+_T("-")+month+_T("-")+day; } ADOConn m_AdoConn; m_AdoConn.OnInitADOConn(); CString sql;

if(kind!=_T("所有收入")&&kind!=_T("所有支出")&&way==_T("总和"))

sql.Format(_T("select sum(金额) as my from mymoney where 类型= "+type+" and 类别= +kind+ and 时间>= +start+and 时间<= +end+ "));

_RecordsetPtr m_pRecordset; m_pRecordset = m_AdoConn.GetRecordSet((_bstr_t)sql);

while(m_AdoConn.m_pRecordset->adoEOF==0) {

m_list.InsertItem(0,_T(""));

m_list.SetItemText(0,0,date);

m_list.SetItemText(0,1,kind);

m_list.SetItemText(0,2,way);

try

{ m_list.SetItemText(0,3,(_bstr_t)m_pRecordset->GetCollect(_T("my")));

}

catch(...)

{

m_list.SetItemText(0,3,_T("0"));

}

m_pRecordset->MoveNext(); } } 支出模块:

// COutlay 消息处理程序

void COutlay::OnBnClickedOk() { // TODO: 在此添加控件通知处理程序代码

UpdateData(true); if(m_count.IsEmpty()) {

MessageBox(_T("金额不能为空"));

return ; } ADOConn m_AdoConn; m_AdoConn.OnInitADOConn(); _bstr_t sql; sql = "select * from mymoney"; _RecordsetPtr m_pRecordset; m_pRecordset=m_AdoConn.GetRecordSet(sql); CString mydate,mykind; m_date.GetLBText(m_date.GetCurSel(),mydate); m_kind.GetLBText(m_kind.GetCurSel(),mykind); mydate.Remove();

try {

m_pRecordset->AddNew();//添加新行

m_pRecordset->PutCollect("类型",(_bstr_t)_T("1"));

m_pRecordset->PutCollect("时间",(_bstr_t)mydate);

m_pRecordset->PutCollect("类别",(_bstr_t)mykind);

m_pRecordset->PutCollect("金额",(_bstr_t)m_count);

m_pRecordset->PutCollect("备注",(_bstr_t)m_remark);

m_pRecordset->GetFields()->GetItem("类型")->Value = (_bstr_t)_T("1");

m_pRecordset->GetFields()->GetItem("时间")->Value = (_bstr_t)mydate;

m_pRecordset->GetFields()->GetItem("类别")->Value = (_bstr_t)mykind;

m_pRecordset->GetFields()->GetItem("金额")->Value = (_bstr_t)m_count;

m_pRecordset->GetFields()->GetItem("备注")->Value = (_bstr_t)m_remark;

m_pRecordset->Update();

m_AdoConn.ExitConnect(); } catch(...) {

MessageBox(_T("操作失败"));

return; } }

五、项目测试

1、

2、

3、

4、 黑盒测试用例: 白盒测试用例: 黑盒测试记录: 白盒测试记录:

上一篇:安全生产职责履职情况下一篇:关于禁止教师乱收费