数学与计算机学院
课程设计说明书
课 程 名 称: 软件工程课程设计
课 程 代 码: 8404131
题 目: 汽车俱乐部业务管理
年级/专业/班:
学 生 姓 名:
学 号:
开 始 时 间: 2011 年 5 月 25 日
完 成 时 间: 2011 年 6 月 5 日
课程设计成绩:
指导教师签名: 年 月 日
汽车俱乐部管理任务书
学院名称: 数学与计算机学院 课程代码:__8404131______ 专业: 软件工程 年级: 2009
一、设计题目
汽车俱乐部管理— 实现功能2
二、主要内容
功能描述:
俱乐部业务处理,保险,理赔,救授,年检,二级保养,会员活动等业务。
三、具体要求及应提交的材料
1.分析阶段:
一个小型的汽车俱乐部管理系统,需完成以下工作:
保险业务:
(1)记录会员需要办理的保险类型;
(2)需要保险的年限;
理赔业务:
(1)记录理赔时间 ;
(2)记录发生事故的类型;
(3)理赔金额;
救授业务:
(1)确定施救时间(查询施救时间);
(2)确定施救人员(查询施救人员);
年检业务:
(1) 记录车辆的年检时间;
(2) 会员查询车辆的年检时间;
二级保养业务:
(1) 记录车辆进行二级保养的时间;
(2) 修改车辆的二级保养时间;
会员活动:
(1) 会员可查询活动信息;
(2) 管理员新增活动信息;
导出系统的数据流程图和实体关系图(E-R)
2.设计阶段:
针对分析阶段提出的软件要求,给出实现的方案和具体细节的说明。
(1)考虑该软件基本功能成份,该系统具有6个基本功能成分:
①保险业务 ②理赔业务 ③救授业务
④年检业务 ⑤二级保养业务 ⑥会员活动
(2)根据分析,导出系统的功能模块图。
(3)用文件操作实现数据的存取。
(4)根据功能确定软件模块组成及调用关系。
3.编码阶段
建造模块,在可视化编程环境下,按照软件设计要求制作界面和完成对模块的编码,由此使软件设计具体化为软件作品。
4.运行维护
在软件运行时,检查软件的不足或错误,并进行维护。
5.编写课程设计报告
(1)设计题目
(2)任务要求
(3)系统总体方案
(4)各功能模块和相关的流程图以及用例图等
(5)心得体会和参考资料
应提交的材料:
一、打印文档(课程设计文件袋内放如下2份文档)
1、课程设计报告:报告严格按照课程设计模板要求做,不能遗漏任何项目。
2、课程设计任务书:只要求和您题目对应的任务书
二、电子文档
1、课程设计报告
2、课程设计任务书
3、程序说明文件
4、总结报告
5、程序源代码
注意:电子文档要求刻录光盘,初拟方案是电子文档交到负责同学处统一刻录。
四、主要技术路线提示
使用 c++ 编辑程序,利用文件存储信息实现汽车俱乐部系统的一般业务描述及管理。
五、进度安排
六、推荐参考资料(不少于3篇)
[1] 张海藩. 软件工程导论,清华大学出版社,2004
[2] 陈明. 实用软件工程基础,清华大学出版社,2003
[3] 殷人昆.实用软件工程,清华大学出版社,2003
[4] 宋波.UML面向对象技术与实践,科学出版社,2004
指导教师 签名日期 年 月 日
系 主 任 审核日期 年 月 日
目 录
1.前言 ............................................................................................................................... 1
2.需求分析 ....................................................................................................................... 2
2.1. 功能分析 .......................................................................................................... 2
2.2 方案分析 ............................................................................................................ 2
2.3 需求规格说明书 ................................................................................................ 3
3概要设计 ........................................................................................................................ 4
3.1 数据结构 ............................................................................................................ 4
3.2 逻辑结构与物理结构 ........................................................................................ 4
3.3功能模块 ............................................................................................................. 6
3.3.1 结构框图 ................................................................................................. 6
3.3.2 程序流图 ................................................................................................. 6
3.3.3 模块功能分析及外部设计 ..................................................................... 6
3.4 抽象数据类定义 ................................................................................................ 7
4.详细设计 ..................................................................................................................... 7
4.1 数据类型定义 .................................................................................................... 7
4.2 主要模块内部设计 ............................................................................................ 8
4.2.1 建立会员及车辆信息等模块设计 ......................................................... 8
4.2.2 查询模块设计 ....................................................................................... 12
4.2.3 修改模块设计 ....................................................................................... 17
5.实现与调试分析......................................................................................................... 20
5.1 实现环境 .......................................................................................................... 20
5.2 语言选择 .......................................................................................................... 20
5.3 调试分析 .......................................................................................................... 20
6.测试分析 ..................................................................................................................... 20
6.1 测试用例及结果 .............................................................................................. 20
6.2 性能分析 .......................................................................................................... 21
7.用户手册 ..................................................................................................................... 22
总结 ................................................................................................................................. 23
参考文献 ......................................................................................................................... 24
1.前言
在目前的市场经济条件下,企业管理者不仅需要掌握客户信息,还需要高效的存储以及读取和安全的防护措施来保护客户信息不受侵犯。随着人民生活水平日益提高,越来越多的车购如家中,相同的爱好把他们聚集在汽车俱乐部,为了更好的管理俱乐部,特开放此系统。
本系统采用简单的人机界面,主要针对服务体系进行操纵,具有高效,安全的特点,是一种先进的用户管理系统。
随着社会的进步,俱乐部已不再是几个人的系统,随着人数的不断增多,越来越多人加入俱乐部,迫切需要一个更有效的用户服务的系统,同时安全保障用户信息的系统。
1
2.需求分析
2.1. 功能分析
在该系统中,有以下各种业务描述及管理
保险业务:
(1)记录会员需要办理的保险类型;
(2)需要保险的年限;
理赔业务:
(1)记录理赔时间 ;
(2)记录发生事故的类型;
(3)理赔金额;
救授业务:
(1)确定施救时间(查询施救时间);
(2)确定施救人员(查询施救人员);
年检业务:
(1)记录车辆的年检时间;
(2)会员查询车辆的年检时间;
二级保养业务:
(1)记录车辆进行二级保养的时间;
(2)修改车辆的二级保养时间;
会员活动:
(1)会员可查询活动信息;
(2)管理员新增活动信息;
2.2 方案分析
由于目前很多地方的汽车俱乐部不能及时更新和缓解用户的拥堵,导致会员在俱乐部的拥挤等等情况,以至于造成经济损失。所以很有必要设计一个汽车俱乐部管理系统的软件来管理各方面的问题,以免造成不必要的损失。此操作显得更人性化,更适合于日常汽车俱乐部的应用。下面我将详细分析开发该系统是否可行。
2
技术可行性:
设计该系统需要解决的主要问题是首先要建立汽车俱乐部会员文件以及车辆信息的文件,需要及时和服务器通信交流,保持对各种业务的动态管理,也需要及时的更新。该系统主要用C语言实现,需求的功能都是可以完成的,因此技术上是可行的。
操作可行性:
该系统只需要在安装有vc++6.0的计算机上既可以得到使用,因此操作上是可行的。 经济可行性:
此系统开发需要半个月,在这个期间,只需要一般的消费,但是在开发到此系统后能为汽车俱乐部创造的利益将是源源不断的,因此在经济上的可行的。
2.3 需求规格说明书
这是一个汽车俱乐部管理系统,该系统主要使用者是俱乐部管理员和俱乐部会员。
俱乐部管理员可以建立会员及会员车辆的相关文件,还可以建立保险,理赔,救援的相关文件,同时还有活动文件等;同时,作为管理者,还需要有更新相关文件的功能,需要修改年检,二级保养等时间。
作为俱乐部会员主要是查询功能,可以查询活动信息,保险,二级保养,年检等信息。
这个系统主要把功能分为3个模块,既建立信息,查询信息,修改信息。相关的资料都以文件来保存,所以的操作都是对文件进行操作。
3
3概要设计
3.1 数据结构
图3.1 各个实体的联系图
实体及其属性(其中有下划线的为主属性): 管理员(编号,姓名,性别,联系方式) 会员(会员号,姓名,性别,年龄) 车辆(车名,车牌号,所属会员)
3.2 逻辑结构与物理结构
逻辑结构:
4
图3.2 模块的逻辑结构图
物理结构:
管理员的信息结构:
车辆的信息结构:
5
3.3功能模块
3.3.1 结构框图
图3.3 结构框图
3.3.2 程序流图
图3.4 0层数据流图
3.3.3 模块功能分析及外部设计
登录系统与退出系统-----------------------------------------------------------int main() 会员信息:建立会员的相关信息并合成文件--------------------void Build_File() 车辆信息:建立车辆的相关信息并合成文件--------------------void Build_File()
6
保险理赔:建立购买保险及对应的理赔信息并合成文件-----void Build_File() 年检保养及活动:记录年检、二级保养时间及活动-----------void Build_File() 查询保险理赔:查询保险的类型,时间及理赔------------------void Serch_File() 查询年检保养:查询年检时间及二级保养时间------------------void Serch_File() 查询活动:查询活动的时间,类型,内容等---------------------void Serch_File() 修改年检保养:修改年检时间及二级保养的时间--------------------void amend() 新增活动:增加活动信息,包括活动时间,类型,内容等--------void amend()
3.4 抽象数据类定义
struct Activity
{
int act_number;
char act_name[20];
char content[30];
char time[11];
};
4.详细设计
4.1 数据类型定义
struct Vip
{
int vip_number; //会员号
char vip_name[7]; //会员姓名
char vip_gender[3]; //会员性别
int vip_age; //年龄
char vip_carname[10]; //车名
char vip_carnumber[10]; //车牌号
};
struct Insurance_Pay_Rescue
{
int vip_number; //会员号
char insure_type[15]; //保险类型
int num_year; //保险年限
char pay_time[11]; //理赔时间
7
char accident_type[8];
int pay_amount;
char rescue_time[11];
char rescue_person[7];
};
struct Check_Maintain_Act
{
int vip_number;
char check_time[11];
char main_time[11];
int act_number;
};
struct Activity
{
int act_number;
char act_name[20];
char content[30];
char time[11];
};
4.2 主要模块内部设计 //事故类型 //赔偿金额 //施救时间 //施救人员姓名 //会员号 //年检时间 //保养时间 //参加的活动号码 //活动号码 //活动名称 //活动内容 //活动日期
4.2.1 建立会员及车辆信息等模块设计
4.2.1.1 模块算法
管理员建立会员及车辆信息,保险及理赔信息,年检及二级保养信息,活动信息,分别用4个文件将这些信息装入,为后面的模块做好准备。具体如下: void Build_File() //文件建立函数
{
FILE *fp;
int num[100]={0};
int actnum[100]={0};
int i=0;
int n=0;
int flag=0;
struct Vip vip;
struct Insurance_Pay_Rescue ipr;
struct Check_Maintain_Act cma;
struct Activity act;
if((fp=fopen(
8
{
printf(
exit(0);
}
printf(
while(true)
{
scanf(
if(vip.vip_number==0)break;
num[i]=vip.vip_number;
i++;
scanf(
if(fwrite(&vip,sizeof(struct Vip),1,fp)!=1)
{
printf(
exit(0);
}
}
fclose(fp);
if((fp=fopen(
{
printf(
exit(0);
}
printf(
for(int j=0;j
{
printf(
ipr.vip_number=num[j];
scanf(
if(fwrite(&ipr,sizeof(struct Insurance_Pay_Rescue),1,fp)!=1)
{
printf(
exit(0);
}
}
9
fclose(fp);
if((fp=fopen(
{
printf(
exit(0);
}
printf(
while(true)
{
scanf(
if(act.act_number==0)break;
actnum[n]=act.act_number;
n++;
scanf(
if(fwrite(&act,sizeof(struct Activity),1,fp)!=1)
{
printf(
exit(0);
}
}
fclose(fp);
if((fp=fopen(
{
printf(
exit(0);
}
printf(
for(j=0;j
{
printf(
cma.vip_number=num[j];
scanf(
scanf(
getchar();
while(flag==0)
{
for(int k=0;k
{
if(cma.act_number==actnum[k])flag=1;
}
10
if(flag==0)
{
printf(
scanf(
getchar();
}}
flag=0;
if(fwrite(&cma,sizeof(struct Check_Maintain_Act),1,fp)!=1)
{
printf(
exit(0);
}
}
fclose(fp);
}
4.2.1.2 流程图
图4.1 模块一流程图
11
4.2.1.3 伪代码
Start
Loop: a
If b then
End loop
End if
C
Loop:d
If e then
End loop
End if
F
Stop
4.2.2 查询模块设计
4.2.2.1 模块算法
void Serch_File() //文件信息查询函数
{
FILE *fp;
char flag='v';
struct Vip vip;
struct Insurance_Pay_Rescue ipr;
struct Check_Maintain_Act cma;
struct Activity act;
while(flag=='v'||flag=='i'||flag=='c'||flag=='a')
{
system(
printf(
printf(
12
printf(
printf(
printf(
printf(
scanf(
getchar();
while(flag!='v'&&flag!='i'&&flag!='c'&&flag!='a'&&flag!='q')
{
printf(
scanf(
getchar();
}
switch(flag)
{
case 'v':
printf(
if((fp=fopen(
{
printf(
exit(0);
}
while(!feof(fp))
{
fread(&vip,sizeof(struct Vip),1,fp);
if(feof(fp))continue;
printf(
printf(
}
fclose(fp);
break;
case 'i':
printf(
if((fp=fopen(
{
printf(
exit(0);
}
while(!feof(fp))
13
{
fread(&ipr,sizeof(struct Insurance_Pay_Rescue),1,fp);
if(feof(fp))continue;
printf(
printf(
}
fclose(fp);
break;
case 'c':
printf(
if((fp=fopen(
{
printf(
exit(0);
}
while(!feof(fp))
{
fread(&cma,sizeof(struct Check_Maintain_Act),1,fp);
if(feof(fp))continue;
printf(
printf(
}
fclose(fp);
break;
case 'a':
printf(
if((fp=fopen(
{
printf(
exit(0);
}
while(!feof(fp))
{
fread(&act,sizeof(struct Activity),1,fp);
if(feof(fp))continue;
14
printf(
}
fclose(fp);
break;
case 'q':break;}
printf(
getch();
if(flag=='q')
{
printf(
Sleep(1000);
break;
}
}
}
4.2.2.2 流程图
15
图4.2 模块二流程图
各个字母代表的含义:
M;输入的字符 v:查询会员信息 i:查询保险、理赔、救援信息
c;查询年检、保养信息 a:查询活动信息
A:显示会员信息 B:显示保险及相关信息 C:显示年检、保养信息
D:显示活动的相关信息
4.2.2.3 伪代码
Start
Loop: a
If b then
A
Else if c then
B
Else if d then
C
Else if e then
D
16
End if
End if
End if
End if
End loop
Stop
4.2.3 修改模块设计
4.2.3.1 模块算法
void amend()
{
FILE *fp;
int n;
int num; //输入的会员号
struct Check_Maintain_Act record1;
struct Activity record2;
printf(
printf(
scanf(
if(n==1||n==2||n==3)
{
if((fp=fopen(
{
printf(
exit(0);
}
printf(
while(!feof(fp))
{
fread(&record1,sizeof(struct Check_Maintain_Act),1,fp);
if(record1.vip_number==num)
break;
}
if(feof(fp))
{ printf(
switch(n)
{
17
case 1:
printf(
scanf(
fseek(fp,sizeof(struct Check_Maintain_Act),1);
fwrite(&record1,sizeof(struct Check_Maintain_Act),1,fp);
break;
case 2:
printf(
scanf(
fseek(fp,sizeof(struct Check_Maintain_Act),1);
fwrite(&record1,sizeof(struct Check_Maintain_Act),1,fp);
break;
case 3:
printf(
scanf(
fseek(fp,sizeof(struct Check_Maintain_Act),1);
fwrite(&record1,sizeof(struct Check_Maintain_Act),1,fp);
break;
}
fclose(fp);
printf(
}
else if(n==4)
{
if((fp=fopen(
{
printf(
exit(0);
}
printf(
scanf(
scanf(
{printf(
fclose(fp);
printf(
}
else
printf(
}
4.2.3.2 流程图
18
图4.3 模块三流程图
各个字母含义解释:
v:修改年检时间 i:修改二级保养时间 c:修改年检和二级保养时间
a:新增一项活动
A:新的年检时间 B:新的二级保养时间 C:新的年检和二级保养时间 D:增加的活动号,活动名称,活动内容,活动时间
4.2.3.3 伪代码
Start
Loop: a
If b then
A
Else if c then
B
Else if d then
C
Else if e then
D
19
End if
End if
End if
End if
End loop
Stop
5.实现与调试分析
5.1 实现环境
汽车俱乐部业务管理系统可以运行在windows系列桌面操作系统之上。
5.2 语言选择
用vc++6.0环境下的c语言实现相应功能
5.3 调试分析
(1)在void Build_File()函数中,num[100]没有初始化,出现了地址错误的问题;之后,加上初始化num[100]={0},问题就迎刃而解了。
(2)在建立文件的过程中,没有把fclose写进去,结果运行的时候没有任何问题,但是文件中没有出现任何字段;检查后加上fclose既解决了出现的问题。
(3)在写关闭文件的操作时,fclose()没有写参数,出现了一下错误:error C2660: 'fclose' : function does not take 0 parameters;把它改成flose(fp)就没有任何错误了。
6.测试分析
这里的测试主要采用白盒测试来进行,具体如下。
6.1 测试用例及结果
一. 会员及车辆信息管理模块
20
根据这个模块的流程图(上面已经给出)用下面的测试用例做如下覆盖:
(1)01 黄倩 女 20 保时捷 闽H77777
车辆险 2 2011-1-1 追尾 300 2011-1-1 王伟
01 打折 车辆打折 2011-2-2
2011-1-1 2011-2-1 01
(2) 02 胡强 男 21 奔 驰 川A12345
03 陈其 男 22 法拉利 闽A45425
车辆险 2 2011-1-1 追尾 300 2011-1-1 王伟
安全险 2 2011-1-1 追尾 300 2011-1-1 王伟
(1)(2)分别满足语句覆盖,同时也满足判断覆盖,将两者结合起来即满足了条件覆盖和路径覆盖。
二. 查询信息管理模块
根据这个模块的流程图(上面已经给出)用下面的测试用例做如下覆盖:
(1) v(2) i(3) c(4) a(5) b
上面的(1)—(5)结合即可以满足语句覆盖,同时也能满足条件覆盖和判断覆盖,并且满足路径覆盖。
三. 修改信息管理模块
根据这个模块的流程图(上面已经给出)用下面的测试用例做如下覆盖:
(1) 1(2) 2(3) 3(4) 4(5) 0
上面的(1)—(5)结合可以满足语句覆盖,条件覆盖,判定覆盖,路径覆盖。
6.2 性能分析
该系统主要采用白盒测试,在知道整个系统的内部结构下做出测试,主要是对流程图中的各个语句进行覆盖,各个判定及条件进行覆盖,甚至对路径进行覆盖。通过对各个模块进行系统的白盒测试,组合起来即对整个系统进行了白盒测试,并且这些测试用例清晰的告诉使用者它是一个已经通过测试可以进行使用的系统。
21
7.用户手册
此系统操作简单易懂,直接登录界面后,按照屏幕上给的提示,用户可以根据自己所需要的操作进行操作。具体操作如下:
打开系统以后,出现以下界面:
图7.1 主菜单
用户可以通过自己的需求选择上面的选项,若选择建立源文件信息,则输入“b回车”即可出现下面界面:
图7.2 子菜单一
输入一系列信息后,按回车键,接着继续输入类似的信息,当信息输入结束后,再次回到主菜单,即如图八所示,若此时选择查询信息,则输入“s回车”即可出现下面界面:
22
图7.3 子菜单二
按照上面的提示就可以对刚才建立的文件进行查询,查询结束后输入“q”即可以退出这一层菜单,又回到主菜单。若这时你发现你输入的信息有误或是需要增加新的信息进去,则可以在主菜单输入“a回车”,即出现了下面的界面:
图7.4 子菜单三
用户可以根据提供的选项选择自己的操作,操作结束后又会回到主菜单,这时若是所有的操作已结束,则可以输入“q回车”即可以关闭此系统。
总结
本系统主要解决的针对汽车俱乐部业务管理而开发的,实现对俱乐部会员及车辆的管理,同时为会员提供保险,年检,二级保养等业务的管理,另外,该系统还能实现查询及修改业务的功能,让管理者能够动态的进行管理,使得整个管理更具有灵活性。
本系统的采用windows xp为开发平台,在vc++的环境下运行使用。vc++提供建立源文件信息,查询信息,修改信息,退出等服务,让使用者更好的对俱乐部的会员进行管理。
但是,此系统还有很多不足之处,比如说,若有会员要求退出该俱乐部,可是管理者却没有删除会员的这项操作,这是需要改进的地方。
23
参考文献
[1] 张海藩. 软件工程导论,清华大学出版社,2004
[2] 陈明. 实用软件工程基础,清华大学出版社,2003
[3] 殷人昆.实用软件工程,清华大学出版社,2003
[4] 宋波.UML面向对象技术与实践,科学出版社,2004
附录:
#include
#include
#include
#include
struct Vip
{
};
struct Insurance_Pay_Rescue
{
int vip_number; char vip_name[7]; int vip_age; //会员号 //会员姓名 //会员性别 //车名 //车牌号 char vip_gender[3]; char vip_carname[10]; //年龄 char vip_carnumber[10]; int vip_number; int num_year; //会员号 //保险年限 //理赔时间 24 char insure_type[15]; //保险类型 char pay_time[11];
char accident_type[8];
int pay_amount;
char rescue_time[11];
char rescue_person[7];
};
struct Check_Maintain_Act
{
int vip_number;
char check_time[11];
char main_time[11];
int act_number;
};
struct Activity
{
int act_number;
char act_name[20];
char content[30];
char time[11];
};
void Build_File()
{
FILE *fp;
int num[100]={0};
int actnum[100]={0};
int i=0;
int n=0;
int flag=0;
struct Vip vip;
//事故类型 //赔偿金额 //施救时间 //施救人员姓名 //会员号 //年检时间 //保养时间 //参加的活动号码 //活动号码 //活动名称 //活动内容 //活动日期 //文件建立函数 25
struct Insurance_Pay_Rescue ipr; struct Check_Maintain_Act cma; struct Activity act; if((fp=fopen(
} printf(
} if(fwrite(&act,sizeof(struct Activity),1,fp)!=1) { } printf(
} } getchar(); flag=0; if(fwrite(&cma,sizeof(struct Check_Maintain_Act),1,fp)!=1)
{
printf(
exit(0);
}
}
fclose(fp);
}
void Serch_File() //文件信息查询函数
{
FILE *fp;
char flag='v';
struct Vip vip;
struct Insurance_Pay_Rescue ipr;
struct Check_Maintain_Act cma;
struct Activity act;
while(flag=='v'||flag=='i'||flag=='c'||flag=='a')
{
system(
printf(
printf(
printf(
printf(
printf(
printf(
scanf(
29
getchar(); while(flag!='v'&&flag!='i'&&flag!='c'&&flag!='a'&&flag!='q') { } switch(flag) { case 'v': printf(
} printf(
} printf(
} } } fclose(fp); break; printf(
}
void amend()
{
FILE *fp; int n; int num; //输入的会员号 struct Check_Maintain_Act record1; struct Activity record2; printf(
} { case 1: } fclose(fp); printf(
}
} scanf(
int main()
{
char flag='s'; while(flag=='s'||flag=='b'||flag=='a') { system(
} } } printf(
36
数学与计算机学院
课程设计说明书
课 程 名 称: 软件工程课程设计
课 程 代 码: 8404131
题 目: 汽车俱乐部业务管理
年级/专业/班:
学 生 姓 名:
学 号:
开 始 时 间: 2011 年 5 月 25 日
完 成 时 间: 2011 年 6 月 5 日
课程设计成绩:
指导教师签名: 年 月 日
汽车俱乐部管理任务书
学院名称: 数学与计算机学院 课程代码:__8404131______ 专业: 软件工程 年级: 2009
一、设计题目
汽车俱乐部管理— 实现功能2
二、主要内容
功能描述:
俱乐部业务处理,保险,理赔,救授,年检,二级保养,会员活动等业务。
三、具体要求及应提交的材料
1.分析阶段:
一个小型的汽车俱乐部管理系统,需完成以下工作:
保险业务:
(1)记录会员需要办理的保险类型;
(2)需要保险的年限;
理赔业务:
(1)记录理赔时间 ;
(2)记录发生事故的类型;
(3)理赔金额;
救授业务:
(1)确定施救时间(查询施救时间);
(2)确定施救人员(查询施救人员);
年检业务:
(1) 记录车辆的年检时间;
(2) 会员查询车辆的年检时间;
二级保养业务:
(1) 记录车辆进行二级保养的时间;
(2) 修改车辆的二级保养时间;
会员活动:
(1) 会员可查询活动信息;
(2) 管理员新增活动信息;
导出系统的数据流程图和实体关系图(E-R)
2.设计阶段:
针对分析阶段提出的软件要求,给出实现的方案和具体细节的说明。
(1)考虑该软件基本功能成份,该系统具有6个基本功能成分:
①保险业务 ②理赔业务 ③救授业务
④年检业务 ⑤二级保养业务 ⑥会员活动
(2)根据分析,导出系统的功能模块图。
(3)用文件操作实现数据的存取。
(4)根据功能确定软件模块组成及调用关系。
3.编码阶段
建造模块,在可视化编程环境下,按照软件设计要求制作界面和完成对模块的编码,由此使软件设计具体化为软件作品。
4.运行维护
在软件运行时,检查软件的不足或错误,并进行维护。
5.编写课程设计报告
(1)设计题目
(2)任务要求
(3)系统总体方案
(4)各功能模块和相关的流程图以及用例图等
(5)心得体会和参考资料
应提交的材料:
一、打印文档(课程设计文件袋内放如下2份文档)
1、课程设计报告:报告严格按照课程设计模板要求做,不能遗漏任何项目。
2、课程设计任务书:只要求和您题目对应的任务书
二、电子文档
1、课程设计报告
2、课程设计任务书
3、程序说明文件
4、总结报告
5、程序源代码
注意:电子文档要求刻录光盘,初拟方案是电子文档交到负责同学处统一刻录。
四、主要技术路线提示
使用 c++ 编辑程序,利用文件存储信息实现汽车俱乐部系统的一般业务描述及管理。
五、进度安排
六、推荐参考资料(不少于3篇)
[1] 张海藩. 软件工程导论,清华大学出版社,2004
[2] 陈明. 实用软件工程基础,清华大学出版社,2003
[3] 殷人昆.实用软件工程,清华大学出版社,2003
[4] 宋波.UML面向对象技术与实践,科学出版社,2004
指导教师 签名日期 年 月 日
系 主 任 审核日期 年 月 日
目 录
1.前言 ............................................................................................................................... 1
2.需求分析 ....................................................................................................................... 2
2.1. 功能分析 .......................................................................................................... 2
2.2 方案分析 ............................................................................................................ 2
2.3 需求规格说明书 ................................................................................................ 3
3概要设计 ........................................................................................................................ 4
3.1 数据结构 ............................................................................................................ 4
3.2 逻辑结构与物理结构 ........................................................................................ 4
3.3功能模块 ............................................................................................................. 6
3.3.1 结构框图 ................................................................................................. 6
3.3.2 程序流图 ................................................................................................. 6
3.3.3 模块功能分析及外部设计 ..................................................................... 6
3.4 抽象数据类定义 ................................................................................................ 7
4.详细设计 ..................................................................................................................... 7
4.1 数据类型定义 .................................................................................................... 7
4.2 主要模块内部设计 ............................................................................................ 8
4.2.1 建立会员及车辆信息等模块设计 ......................................................... 8
4.2.2 查询模块设计 ....................................................................................... 12
4.2.3 修改模块设计 ....................................................................................... 17
5.实现与调试分析......................................................................................................... 20
5.1 实现环境 .......................................................................................................... 20
5.2 语言选择 .......................................................................................................... 20
5.3 调试分析 .......................................................................................................... 20
6.测试分析 ..................................................................................................................... 20
6.1 测试用例及结果 .............................................................................................. 20
6.2 性能分析 .......................................................................................................... 21
7.用户手册 ..................................................................................................................... 22
总结 ................................................................................................................................. 23
参考文献 ......................................................................................................................... 24
1.前言
在目前的市场经济条件下,企业管理者不仅需要掌握客户信息,还需要高效的存储以及读取和安全的防护措施来保护客户信息不受侵犯。随着人民生活水平日益提高,越来越多的车购如家中,相同的爱好把他们聚集在汽车俱乐部,为了更好的管理俱乐部,特开放此系统。
本系统采用简单的人机界面,主要针对服务体系进行操纵,具有高效,安全的特点,是一种先进的用户管理系统。
随着社会的进步,俱乐部已不再是几个人的系统,随着人数的不断增多,越来越多人加入俱乐部,迫切需要一个更有效的用户服务的系统,同时安全保障用户信息的系统。
1
2.需求分析
2.1. 功能分析
在该系统中,有以下各种业务描述及管理
保险业务:
(1)记录会员需要办理的保险类型;
(2)需要保险的年限;
理赔业务:
(1)记录理赔时间 ;
(2)记录发生事故的类型;
(3)理赔金额;
救授业务:
(1)确定施救时间(查询施救时间);
(2)确定施救人员(查询施救人员);
年检业务:
(1)记录车辆的年检时间;
(2)会员查询车辆的年检时间;
二级保养业务:
(1)记录车辆进行二级保养的时间;
(2)修改车辆的二级保养时间;
会员活动:
(1)会员可查询活动信息;
(2)管理员新增活动信息;
2.2 方案分析
由于目前很多地方的汽车俱乐部不能及时更新和缓解用户的拥堵,导致会员在俱乐部的拥挤等等情况,以至于造成经济损失。所以很有必要设计一个汽车俱乐部管理系统的软件来管理各方面的问题,以免造成不必要的损失。此操作显得更人性化,更适合于日常汽车俱乐部的应用。下面我将详细分析开发该系统是否可行。
2
技术可行性:
设计该系统需要解决的主要问题是首先要建立汽车俱乐部会员文件以及车辆信息的文件,需要及时和服务器通信交流,保持对各种业务的动态管理,也需要及时的更新。该系统主要用C语言实现,需求的功能都是可以完成的,因此技术上是可行的。
操作可行性:
该系统只需要在安装有vc++6.0的计算机上既可以得到使用,因此操作上是可行的。 经济可行性:
此系统开发需要半个月,在这个期间,只需要一般的消费,但是在开发到此系统后能为汽车俱乐部创造的利益将是源源不断的,因此在经济上的可行的。
2.3 需求规格说明书
这是一个汽车俱乐部管理系统,该系统主要使用者是俱乐部管理员和俱乐部会员。
俱乐部管理员可以建立会员及会员车辆的相关文件,还可以建立保险,理赔,救援的相关文件,同时还有活动文件等;同时,作为管理者,还需要有更新相关文件的功能,需要修改年检,二级保养等时间。
作为俱乐部会员主要是查询功能,可以查询活动信息,保险,二级保养,年检等信息。
这个系统主要把功能分为3个模块,既建立信息,查询信息,修改信息。相关的资料都以文件来保存,所以的操作都是对文件进行操作。
3
3概要设计
3.1 数据结构
图3.1 各个实体的联系图
实体及其属性(其中有下划线的为主属性): 管理员(编号,姓名,性别,联系方式) 会员(会员号,姓名,性别,年龄) 车辆(车名,车牌号,所属会员)
3.2 逻辑结构与物理结构
逻辑结构:
4
图3.2 模块的逻辑结构图
物理结构:
管理员的信息结构:
车辆的信息结构:
5
3.3功能模块
3.3.1 结构框图
图3.3 结构框图
3.3.2 程序流图
图3.4 0层数据流图
3.3.3 模块功能分析及外部设计
登录系统与退出系统-----------------------------------------------------------int main() 会员信息:建立会员的相关信息并合成文件--------------------void Build_File() 车辆信息:建立车辆的相关信息并合成文件--------------------void Build_File()
6
保险理赔:建立购买保险及对应的理赔信息并合成文件-----void Build_File() 年检保养及活动:记录年检、二级保养时间及活动-----------void Build_File() 查询保险理赔:查询保险的类型,时间及理赔------------------void Serch_File() 查询年检保养:查询年检时间及二级保养时间------------------void Serch_File() 查询活动:查询活动的时间,类型,内容等---------------------void Serch_File() 修改年检保养:修改年检时间及二级保养的时间--------------------void amend() 新增活动:增加活动信息,包括活动时间,类型,内容等--------void amend()
3.4 抽象数据类定义
struct Activity
{
int act_number;
char act_name[20];
char content[30];
char time[11];
};
4.详细设计
4.1 数据类型定义
struct Vip
{
int vip_number; //会员号
char vip_name[7]; //会员姓名
char vip_gender[3]; //会员性别
int vip_age; //年龄
char vip_carname[10]; //车名
char vip_carnumber[10]; //车牌号
};
struct Insurance_Pay_Rescue
{
int vip_number; //会员号
char insure_type[15]; //保险类型
int num_year; //保险年限
char pay_time[11]; //理赔时间
7
char accident_type[8];
int pay_amount;
char rescue_time[11];
char rescue_person[7];
};
struct Check_Maintain_Act
{
int vip_number;
char check_time[11];
char main_time[11];
int act_number;
};
struct Activity
{
int act_number;
char act_name[20];
char content[30];
char time[11];
};
4.2 主要模块内部设计 //事故类型 //赔偿金额 //施救时间 //施救人员姓名 //会员号 //年检时间 //保养时间 //参加的活动号码 //活动号码 //活动名称 //活动内容 //活动日期
4.2.1 建立会员及车辆信息等模块设计
4.2.1.1 模块算法
管理员建立会员及车辆信息,保险及理赔信息,年检及二级保养信息,活动信息,分别用4个文件将这些信息装入,为后面的模块做好准备。具体如下: void Build_File() //文件建立函数
{
FILE *fp;
int num[100]={0};
int actnum[100]={0};
int i=0;
int n=0;
int flag=0;
struct Vip vip;
struct Insurance_Pay_Rescue ipr;
struct Check_Maintain_Act cma;
struct Activity act;
if((fp=fopen(
8
{
printf(
exit(0);
}
printf(
while(true)
{
scanf(
if(vip.vip_number==0)break;
num[i]=vip.vip_number;
i++;
scanf(
if(fwrite(&vip,sizeof(struct Vip),1,fp)!=1)
{
printf(
exit(0);
}
}
fclose(fp);
if((fp=fopen(
{
printf(
exit(0);
}
printf(
for(int j=0;j
{
printf(
ipr.vip_number=num[j];
scanf(
if(fwrite(&ipr,sizeof(struct Insurance_Pay_Rescue),1,fp)!=1)
{
printf(
exit(0);
}
}
9
fclose(fp);
if((fp=fopen(
{
printf(
exit(0);
}
printf(
while(true)
{
scanf(
if(act.act_number==0)break;
actnum[n]=act.act_number;
n++;
scanf(
if(fwrite(&act,sizeof(struct Activity),1,fp)!=1)
{
printf(
exit(0);
}
}
fclose(fp);
if((fp=fopen(
{
printf(
exit(0);
}
printf(
for(j=0;j
{
printf(
cma.vip_number=num[j];
scanf(
scanf(
getchar();
while(flag==0)
{
for(int k=0;k
{
if(cma.act_number==actnum[k])flag=1;
}
10
if(flag==0)
{
printf(
scanf(
getchar();
}}
flag=0;
if(fwrite(&cma,sizeof(struct Check_Maintain_Act),1,fp)!=1)
{
printf(
exit(0);
}
}
fclose(fp);
}
4.2.1.2 流程图
图4.1 模块一流程图
11
4.2.1.3 伪代码
Start
Loop: a
If b then
End loop
End if
C
Loop:d
If e then
End loop
End if
F
Stop
4.2.2 查询模块设计
4.2.2.1 模块算法
void Serch_File() //文件信息查询函数
{
FILE *fp;
char flag='v';
struct Vip vip;
struct Insurance_Pay_Rescue ipr;
struct Check_Maintain_Act cma;
struct Activity act;
while(flag=='v'||flag=='i'||flag=='c'||flag=='a')
{
system(
printf(
printf(
12
printf(
printf(
printf(
printf(
scanf(
getchar();
while(flag!='v'&&flag!='i'&&flag!='c'&&flag!='a'&&flag!='q')
{
printf(
scanf(
getchar();
}
switch(flag)
{
case 'v':
printf(
if((fp=fopen(
{
printf(
exit(0);
}
while(!feof(fp))
{
fread(&vip,sizeof(struct Vip),1,fp);
if(feof(fp))continue;
printf(
printf(
}
fclose(fp);
break;
case 'i':
printf(
if((fp=fopen(
{
printf(
exit(0);
}
while(!feof(fp))
13
{
fread(&ipr,sizeof(struct Insurance_Pay_Rescue),1,fp);
if(feof(fp))continue;
printf(
printf(
}
fclose(fp);
break;
case 'c':
printf(
if((fp=fopen(
{
printf(
exit(0);
}
while(!feof(fp))
{
fread(&cma,sizeof(struct Check_Maintain_Act),1,fp);
if(feof(fp))continue;
printf(
printf(
}
fclose(fp);
break;
case 'a':
printf(
if((fp=fopen(
{
printf(
exit(0);
}
while(!feof(fp))
{
fread(&act,sizeof(struct Activity),1,fp);
if(feof(fp))continue;
14
printf(
}
fclose(fp);
break;
case 'q':break;}
printf(
getch();
if(flag=='q')
{
printf(
Sleep(1000);
break;
}
}
}
4.2.2.2 流程图
15
图4.2 模块二流程图
各个字母代表的含义:
M;输入的字符 v:查询会员信息 i:查询保险、理赔、救援信息
c;查询年检、保养信息 a:查询活动信息
A:显示会员信息 B:显示保险及相关信息 C:显示年检、保养信息
D:显示活动的相关信息
4.2.2.3 伪代码
Start
Loop: a
If b then
A
Else if c then
B
Else if d then
C
Else if e then
D
16
End if
End if
End if
End if
End loop
Stop
4.2.3 修改模块设计
4.2.3.1 模块算法
void amend()
{
FILE *fp;
int n;
int num; //输入的会员号
struct Check_Maintain_Act record1;
struct Activity record2;
printf(
printf(
scanf(
if(n==1||n==2||n==3)
{
if((fp=fopen(
{
printf(
exit(0);
}
printf(
while(!feof(fp))
{
fread(&record1,sizeof(struct Check_Maintain_Act),1,fp);
if(record1.vip_number==num)
break;
}
if(feof(fp))
{ printf(
switch(n)
{
17
case 1:
printf(
scanf(
fseek(fp,sizeof(struct Check_Maintain_Act),1);
fwrite(&record1,sizeof(struct Check_Maintain_Act),1,fp);
break;
case 2:
printf(
scanf(
fseek(fp,sizeof(struct Check_Maintain_Act),1);
fwrite(&record1,sizeof(struct Check_Maintain_Act),1,fp);
break;
case 3:
printf(
scanf(
fseek(fp,sizeof(struct Check_Maintain_Act),1);
fwrite(&record1,sizeof(struct Check_Maintain_Act),1,fp);
break;
}
fclose(fp);
printf(
}
else if(n==4)
{
if((fp=fopen(
{
printf(
exit(0);
}
printf(
scanf(
scanf(
{printf(
fclose(fp);
printf(
}
else
printf(
}
4.2.3.2 流程图
18
图4.3 模块三流程图
各个字母含义解释:
v:修改年检时间 i:修改二级保养时间 c:修改年检和二级保养时间
a:新增一项活动
A:新的年检时间 B:新的二级保养时间 C:新的年检和二级保养时间 D:增加的活动号,活动名称,活动内容,活动时间
4.2.3.3 伪代码
Start
Loop: a
If b then
A
Else if c then
B
Else if d then
C
Else if e then
D
19
End if
End if
End if
End if
End loop
Stop
5.实现与调试分析
5.1 实现环境
汽车俱乐部业务管理系统可以运行在windows系列桌面操作系统之上。
5.2 语言选择
用vc++6.0环境下的c语言实现相应功能
5.3 调试分析
(1)在void Build_File()函数中,num[100]没有初始化,出现了地址错误的问题;之后,加上初始化num[100]={0},问题就迎刃而解了。
(2)在建立文件的过程中,没有把fclose写进去,结果运行的时候没有任何问题,但是文件中没有出现任何字段;检查后加上fclose既解决了出现的问题。
(3)在写关闭文件的操作时,fclose()没有写参数,出现了一下错误:error C2660: 'fclose' : function does not take 0 parameters;把它改成flose(fp)就没有任何错误了。
6.测试分析
这里的测试主要采用白盒测试来进行,具体如下。
6.1 测试用例及结果
一. 会员及车辆信息管理模块
20
根据这个模块的流程图(上面已经给出)用下面的测试用例做如下覆盖:
(1)01 黄倩 女 20 保时捷 闽H77777
车辆险 2 2011-1-1 追尾 300 2011-1-1 王伟
01 打折 车辆打折 2011-2-2
2011-1-1 2011-2-1 01
(2) 02 胡强 男 21 奔 驰 川A12345
03 陈其 男 22 法拉利 闽A45425
车辆险 2 2011-1-1 追尾 300 2011-1-1 王伟
安全险 2 2011-1-1 追尾 300 2011-1-1 王伟
(1)(2)分别满足语句覆盖,同时也满足判断覆盖,将两者结合起来即满足了条件覆盖和路径覆盖。
二. 查询信息管理模块
根据这个模块的流程图(上面已经给出)用下面的测试用例做如下覆盖:
(1) v(2) i(3) c(4) a(5) b
上面的(1)—(5)结合即可以满足语句覆盖,同时也能满足条件覆盖和判断覆盖,并且满足路径覆盖。
三. 修改信息管理模块
根据这个模块的流程图(上面已经给出)用下面的测试用例做如下覆盖:
(1) 1(2) 2(3) 3(4) 4(5) 0
上面的(1)—(5)结合可以满足语句覆盖,条件覆盖,判定覆盖,路径覆盖。
6.2 性能分析
该系统主要采用白盒测试,在知道整个系统的内部结构下做出测试,主要是对流程图中的各个语句进行覆盖,各个判定及条件进行覆盖,甚至对路径进行覆盖。通过对各个模块进行系统的白盒测试,组合起来即对整个系统进行了白盒测试,并且这些测试用例清晰的告诉使用者它是一个已经通过测试可以进行使用的系统。
21
7.用户手册
此系统操作简单易懂,直接登录界面后,按照屏幕上给的提示,用户可以根据自己所需要的操作进行操作。具体操作如下:
打开系统以后,出现以下界面:
图7.1 主菜单
用户可以通过自己的需求选择上面的选项,若选择建立源文件信息,则输入“b回车”即可出现下面界面:
图7.2 子菜单一
输入一系列信息后,按回车键,接着继续输入类似的信息,当信息输入结束后,再次回到主菜单,即如图八所示,若此时选择查询信息,则输入“s回车”即可出现下面界面:
22
图7.3 子菜单二
按照上面的提示就可以对刚才建立的文件进行查询,查询结束后输入“q”即可以退出这一层菜单,又回到主菜单。若这时你发现你输入的信息有误或是需要增加新的信息进去,则可以在主菜单输入“a回车”,即出现了下面的界面:
图7.4 子菜单三
用户可以根据提供的选项选择自己的操作,操作结束后又会回到主菜单,这时若是所有的操作已结束,则可以输入“q回车”即可以关闭此系统。
总结
本系统主要解决的针对汽车俱乐部业务管理而开发的,实现对俱乐部会员及车辆的管理,同时为会员提供保险,年检,二级保养等业务的管理,另外,该系统还能实现查询及修改业务的功能,让管理者能够动态的进行管理,使得整个管理更具有灵活性。
本系统的采用windows xp为开发平台,在vc++的环境下运行使用。vc++提供建立源文件信息,查询信息,修改信息,退出等服务,让使用者更好的对俱乐部的会员进行管理。
但是,此系统还有很多不足之处,比如说,若有会员要求退出该俱乐部,可是管理者却没有删除会员的这项操作,这是需要改进的地方。
23
参考文献
[1] 张海藩. 软件工程导论,清华大学出版社,2004
[2] 陈明. 实用软件工程基础,清华大学出版社,2003
[3] 殷人昆.实用软件工程,清华大学出版社,2003
[4] 宋波.UML面向对象技术与实践,科学出版社,2004
附录:
#include
#include
#include
#include
struct Vip
{
};
struct Insurance_Pay_Rescue
{
int vip_number; char vip_name[7]; int vip_age; //会员号 //会员姓名 //会员性别 //车名 //车牌号 char vip_gender[3]; char vip_carname[10]; //年龄 char vip_carnumber[10]; int vip_number; int num_year; //会员号 //保险年限 //理赔时间 24 char insure_type[15]; //保险类型 char pay_time[11];
char accident_type[8];
int pay_amount;
char rescue_time[11];
char rescue_person[7];
};
struct Check_Maintain_Act
{
int vip_number;
char check_time[11];
char main_time[11];
int act_number;
};
struct Activity
{
int act_number;
char act_name[20];
char content[30];
char time[11];
};
void Build_File()
{
FILE *fp;
int num[100]={0};
int actnum[100]={0};
int i=0;
int n=0;
int flag=0;
struct Vip vip;
//事故类型 //赔偿金额 //施救时间 //施救人员姓名 //会员号 //年检时间 //保养时间 //参加的活动号码 //活动号码 //活动名称 //活动内容 //活动日期 //文件建立函数 25
struct Insurance_Pay_Rescue ipr; struct Check_Maintain_Act cma; struct Activity act; if((fp=fopen(
} printf(
} if(fwrite(&act,sizeof(struct Activity),1,fp)!=1) { } printf(
} } getchar(); flag=0; if(fwrite(&cma,sizeof(struct Check_Maintain_Act),1,fp)!=1)
{
printf(
exit(0);
}
}
fclose(fp);
}
void Serch_File() //文件信息查询函数
{
FILE *fp;
char flag='v';
struct Vip vip;
struct Insurance_Pay_Rescue ipr;
struct Check_Maintain_Act cma;
struct Activity act;
while(flag=='v'||flag=='i'||flag=='c'||flag=='a')
{
system(
printf(
printf(
printf(
printf(
printf(
printf(
scanf(
29
getchar(); while(flag!='v'&&flag!='i'&&flag!='c'&&flag!='a'&&flag!='q') { } switch(flag) { case 'v': printf(
} printf(
} printf(
} } } fclose(fp); break; printf(
}
void amend()
{
FILE *fp; int n; int num; //输入的会员号 struct Check_Maintain_Act record1; struct Activity record2; printf(
} { case 1: } fclose(fp); printf(
}
} scanf(
int main()
{
char flag='s'; while(flag=='s'||flag=='b'||flag=='a') { system(
} } } printf(
36