您的当前位置:首页正文

软件工程课程设计

2023-11-26 来源:汇智旅游网


软件工程课程设计报告

班级: 姓名: 学号:

指导教师:

目录

1.

设计内容 ......................................... 2

1.1开发背景 .................................................................................................................................................... 2

1.2开发目的 .................................................................................................................................................... 2 1.3 数据流图 ................................................................................................................................................... 2 1.4局部E—R设计 .......................................................................................................................................... 5 1.5全局E-R设计 ............................................................................................................................................ 7 1.6数据字典 ..................................................................................................................................................... 8

2. 概要设计 ......................................... 9

2.1总体设计原理 ............................................................................................................................................ 9

2.2 运行环境与系统结构 ............................................................................................................................. 10 2.3系统功能模块图与设计 .......................................................................................................................... 10 2.4系统功能分析 ...........................................................................................................................................11 2.5系统安全与维护措施 ...............................................................................................................................11

3. 详细设计 ........................................ 12

3.1数据库的概念设计 .................................................................................................................................. 12

3.2数据库的逻辑设计 .................................................................................................................................. 12 3.3程序流程图 .............................................................................................................................................. 13

4. 5.

程序源码 ........................................ 14 程序运行与调试 .................................. 19

5.1 测试计划 ................................................................................................................................................. 19

5.2测试目的 .................................................................................................................................................. 20 5.3 测试目标 ................................................................................................................................................. 20 5.4 测试方法 ................................................................................................................................................. 20 5.5 测试项目 ................................................................................................................................................. 20

6. 7.

总结 ............................................ 20 参考文献 ........................................ 21

I

1. 设计内容

1.1开发背景

随着计算机及网络技术的飞速发展,Internet/Intranet应用在全球范围内日益普及,当今社会正快速向信息化社会前进,信息自动化的作用也越来越大,从而使我们从繁杂的事务中解放出来,提高了我们的工作效率。如何利用现代信息技术使企业拥有快速、高效的市场反映能力和高度的效率,已是医药经营企业,特别是医药连锁经营企业特别关心的问题。尽快建立一个功能齐备的药品管理系统,完善现代企业的信息化管理机制,已成为医药企业生存发展的当务之急. 通过本系统软件,能帮助用户利用计算机管理药品,快速方便地对客户所需要的药品进行查找,方便了客户的同时,也使用户更加方便的管理每天的进货情况.

1.2开发目的

为了适应现代社会人们高度强烈的时间观念,中小型医院药品管理系统软件为医院带来了极大的方便。

中小型医院药品管理系统可实现对药品进行各项管理。借助本系统显示的结果可以达到以下目的:

方便使用者可以安全的查找自己想要的各种药品信息; 通过全面的药品信息采集和处理,辅助提高系统的管理水平;

1.3 数据流图

数据流程图,它是描述数据处理过程的有力工具。数据流程图从数据传递和加工的角度,以图型的方式刻画数据处理系统的工作情况。数据流程图是一种能全面地描述信息系统逻辑模型的主要工具,它可以用少数几种符号综合地反映出信息在系统中的流动、处理和存储情况。本管理系统的数据流图如下图1.1所示:

药 品 管 理 员 药品出入库信息 药 品 管 理 系 统 药品信息 药品管理员

2

图1.1药品管理系统的基本系统模型 药品 管理员 药品信息 1 药品管理 需求信息 2 销售管理 销售信息 客 户 药品信息 库存信息 定货信息 4 更新库 存清单 5 处 理 定 货 采购员 定货信息 3 供货商 图1.2药品管理系统的顶层数据流图 1.1 接收药品信息 药品 管理员 药品信息 药品信息 1.2 更新库存信息药品编号D1 药品信息 D2 库存清单1.3 药品查询 查询信息 查询信息 D3 查询信息 客 户 图1.3药品管理层数据流图

3

药品 管理员 药品信息 2.1 接收药品信息 药品信息 2.2 更新库存信息库存信息 药品D1 药品信息 D2 库存清单2.3 处理出货 客户 报表信息 2.4 产生报表 出货信息 出货信息 D3 出货信息 图1.4销售管理层数据流图

药品管理员 药品信息 3.1 更新库存信息库存信息 3.2 处理订货 定货信息 D1 定货信息 定货信息 药品 3.4 供货商 定货信息 处理订货 定货报表 定货报表 3.3 产生报表 采购员 定货信息 3.5 处理出货 图1.5供货商管理层数据流图

4

1.4局部E—R设计

利用ER方法可分成三步进行:首先设计局部ER模式,然后把各局部ER模式综合成一个全局模式,最后对全局ER模式进行优化,得到最终的模式,即概念模式。 各个实体的E-R图如下所示:

药品信息 生产日期 生产厂商 规格 数量

图1.6 药品信息E-R图

单价 编号 用户信息 编号 籍 贯 出生日期 联系电话 姓名 性别 年龄 图1.7 用户信息E-R图

客户信息 家庭住址 联系电话 年龄 家庭住址 姓名 性别

图1.8客户信息E-R图

5

供货商信息 供货商编号 供货商邮编 供货商名称 供货商地址 供货商电话

图1.9供货商信息E-R图

定货报表 药品编号规格药品名称 „数量 „ „ 定货日期 生产厂商

图1.10 定货报表E-R图

出货报表 药品编号规格药品名称 „数量 „ „ 出货日期 生产厂商

图1.11出货报表E-R图 定货信息 药品编号入库单价药品名称定货日期 „ „ „ 数量 规格生产厂商

图1.12定货信息E-R图

6

出货信息 药品编号出库单价药品名称 „ „ „ 数量 生产厂商 出库日期规格

图1.13出货信息E-R图 用户登录 用户名 密码

图1.14用户登录信息E-R图

1.5全局E-R设计

所有局部ER模式都设计好了后,接下来就是把它们综合成单一的全局概念结构。全局概念结构不仅要支持所有局部ER模式,而且必须合理地表示一个完整、一致的数据库概念结构。

系统的总体E-R图说明

每个用户可以查看多个定货报表,一份定货报表可以被多个用户查看; 每个用户可以查看多种药品信息,每一种药品信息可被多个用户查看; 每个用户可以查看多个出货信息,每一种出货信息可被多个用户查看; 每个客户可以购买多种药品,每一种药品可被多个客户购买;

每个客户可以查看多个出货报表,而每个出货报表只能被买药品的客户所查看; 每个供货商可以提供多种药品,每种药品可以被多个供货商所提供;

每个供货商可以查看多个定货信息,但每个定货信息只能被一个供货商查看,即提供药品的供货商;

7

定货报表 m 出货信息 查看 n n 用 户 m 药 品 n 出货报表 购买 n m n 供 查看 1货商 n n 定货信息 查看 1m 供应 客 户 1查看 m 查看 用 户 n 查看 图1.15全局E-R图

1.6数据字典

《药品管理系统》中,数据字典的部分条目。 ① 基本数据项 名称:药品编号 编号:A-001 别名:编号

简述:用来标识药品的唯一编号 类型:字符型 长度:8位字符 取值:8位自定义字符, 不可重复

8

名称:职工编号 编号:B-001 别名:无

简述:用来标识职工的唯一编号 类型:字符型 长度:8位字符

取值:8位自定义字符,不可重复

名称:药品价格 编号:C-001 别名:价格

简述:药品的零售价格 类型:数值型

长度:9位字符(其中小数2位) 取值:0.00~999999.99

2. 概要设计

2.1总体设计原理

经过了需求分析,我们已经清楚了系统所要完成的全部功能,接下来就是决定“怎么做”。 概括的说,总体设计的基本目的就是回答“系统应该如何实现?”的这个问题。通过这个阶段的工作,将划分出组成系统的物理元素:程序,文件,数据库,人工过程和文件等。总体设计阶段的另一项重要任务是设计基本的结构,也就是要确定系统中每个程序是由哪些模块组成,以及这些模块间的相互关系。

采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解。因为程序的错

9

误通常局限在有关的模块及它们之间的接口中,所以模块化使软件容易测试和调试。应而有助于提高系统的可靠性。并且模块化还能够提高软件的可修改性,也有助于软件开发工程的组织管理。因此,在进行软件结构设计时应该遵循的最主要的原理就是模块化独立原理。

2.2 运行环境与系统结构 2.3系统功能模块图与设计

采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解。因为程序错误常局限在有关的模块及它们之间的接口中,所以模块化使软件容易测试和调试,因而有助于提高软件的可靠性。一个好的电子系统要有一些必要的模块组成,若缺少了某些模块那么这个系统就会有缺陷。

1)中小型医院药品管理系统需要实现的功能主要有五大块,系统的功能模块图如下图所示:

用户管理 模 块 药品管理 模 块 供 货商管理 模块 销 售 管 理 模 块 统 计 模 块 药品管理系统 添加用户 删除用户 更新用户 添加药 品 删除药品 更新药品 药品查询 添加供货商 删除供货商 修改供货商 销售查询 退货 查询 销售统计 进货统计 报损统计

10

图 2.1功能模块图

2)功能的实现:

用户管理模块:药品管理员可以在登陆验证通过以后,进入药品管理系统界面进行增加,删除,更新用户信息以及修改用户密码等.

药品管理模块:用户登录该系统后,可对药品信息进行增加,删除,更新,并且对药品进行查询等操作.

供货商管理模块:用户登录该系统后,可对供货商信息进行增加,删除,修改. 销售管理模块:用户登录系统后,可对销售信息进行查询,对退货信息进行查询. 统计模块:用户登录该系统后,可对销售信息进行统计,对进货信息进行统计,对报损信息进行统计.

2.4系统功能分析

权限功能:为用户设置权限功能,可分为普通用户,一般用户,超级用户。普通用户只是查询不能修改,一般用户只能对授权范围内进行相应修改及删除,超级用户能修改、删除所有信息。

录入功能:为一般用户提供相应的录入功能,为超级用户提供对所有信息的录入功能。 查询功能:为所有用户提供查询的功能,可查询允许范围内的所有信息。

维护功能:为一般用户提供查询及相应的修改,删除功能,为超级用户提供对所有信息的修改删除功能。

帮助功能:能帮助初次使用者对本系统的应用及处理常见的问题。 退出功能:结束并关闭系统。

2.5系统安全与维护措施

本系统采用直接方式添加记录,该方法直接而简单,为了避免输入有错误,该功能界面对用户容易出错的地方都给出了输入提示,同时也使用了更新和取消按钮来确认数据的取消输入,如果输入数据与实际数据不相复,则系统会给出提示信息,让你重新输入正确的数值。

此管理系统也为系统用户提供了一定的安全性,该系统可以多人使用,每人使用不同的用户名和密码进入系统,但只有系统管理员的权限可以进行用户的管理,其它用户都不能对用户进行操作。一个好的管理系统,应该为系统提供处理系统故障,恢复系统数据的功能。该系统也同样提供了数据维护(包括对数据的备份、恢复)两项功能。建议用户定期备份系

11

统数据,这样在系统出现问题时,可以进行有效地恢复。

3. 详细设计

3.1数据库的概念设计

根据对数据流图和数据字典的分析,确定该应用中的实体、属性和实体之间的联系,并画出系统总体的E-R图。概念设计可分为三步进行:首先设计局部E-R模式,然后把各局部E-R模式综合成一个全局模式,最后对全局ER模式进行优化,得到最终的模式,即概念模式。

3.2数据库的逻辑设计

药品(药品编号、药品名称、药品单价、数量、规格、购置日期、生产厂家) 用户(用户编号、姓名、性别、出生日期、家庭住址、联系电话) 供货商(供货商编号、名称、地址、电话、邮编、)

客户(姓名、性别、年龄、出生日期、家庭住址、联系电话)

定货报表(药品编号、药品名称、数量、定货日期、生产厂商、规格) 出货报表(药品编号、药品名称、数量、出货日期、生产厂商、规格)

定货信息(药品编号、入库单价、药品名称、数量、定货日期、生产厂商、规格) 出货信息(药品编号、出库单价、药品名称、数量、出货日期、生产厂商、规格) 用户登陆(用户名,密码)

12

3.3程序流程图

开 始 N Y 出错超过3次? N 用户登录 用户名密码 正确? Y N 退 出 使用系统界面 Y N 进行操作? Y If 选择处理用户 处理用户 N 添加?删除? 更新? If 选择处理药品 处理药品 If 选择处理供货商 处理供货商 添加?删除? 更新? 添加?删除? Y 更新? Y N 药品查询 Y N If 更新If添加 If 删除If 更新按编号? 按名称? If 删除If 按名称 else If添加 更新用户 添加用户删除用户 更新用户 添加用户删除用户按名称查询 按编号 更新用户 更新用户 更新用户 图3.1药品管理系统的程序流程图

13

4. 程序源码

#include #include #include #include #define N 50 #define PR

printf(\"\\n\%8s %-8s%8d%10.2f%10.2f\rice,med[i].gross) struct medicine {char num[8]; char name[8]; int kgs; float price; float gross; }med[N],s,temp;

/*界面*/

void init()

{printf(\"\\n\\n\") ;

printf(\"\\\********************************************\\n\\n\"); printf(\"\\\ 药品管理系统\\n\\n\");

printf(\"\\\********************************************\\n\"); printf(\"\\\1-->输入\\n\"); printf(\"\\\2-->列表\\n\"); printf(\"\\\3-->查找\\n\"); printf(\"\\\4-->排序\\n\"); printf(\"\\\5-->插入\\n\"); printf(\"\\\0-->退出\\n\");

printf(\"\\\*********************************************\\n\"); printf(\"\\\*********************************************\\n\"); }

/*输入功能*/

void s_input() {int i,n; FILE*fp;

system(\"cls\");

14

printf(\"药品种类\"); scanf(\"%d\ for(i=0;iprintf(\"\\n输入药品数据 %d:\\n\输入药品数据,以序号1显示开始*/ printf(\"编号:\");

scanf(\"%s\ printf(\"名称:\");

scanf(\"%s\ printf(\"数量:\");

scanf(\"%d\ printf(\"价格:\");

scanf(\"%f\

med[i].gross=med[i].kgs*med[i].price; }

fp=fopen(\"information\将数据写入文件*/ for(i=0;iif(fwrite(&med[i],sizeof(struct medicine),1,fp)!=1)printf(\"文件读取错误\\n\"); fclose(fp);

printf(\"\\n\\n按任意键继续...\"); getch(); }

/*显示功能*/

void s_list() {int i; FILE*fp;

if((fp=fopen(\"information\从文件读数据*/ {printf(\"不能打开.\"); getch(); return; }

system(\"cls\"); printf(\"\\n\\n\\n\");

printf(\"\\n\ 编号 名称 数量 价格 总数\\n\");

printf(\"\ -------------------------------------------------\"); for(i=0;fread(&med[i],sizeof(struct medicine),1,fp)!=0;i++)PR; fclose(fp);

printf(\"\\n\\n\\n按任意键继续...\"); getch();

15

}

/*查找功能*/

void s_find() {int i,n;

char find_name[8]; FILE*fp;

system(\"cls\");

if((fp=fopen(\"information\从文件读数据*/ {printf(\"不能打开.\"); getch(); return; }

for(i=0;fread(&med[i],sizeof(struct medicine),1,fp)!=0;i++); printf(\"输入名称:\\n\"); scanf(\"%s\printf(\"\\n药品数据:\"); printf(\"\\n\\n\\n\");

printf(\"\\n\ 编号 名称 数量 价格 总数\\n\");

printf(\"\ -------------------------------------------------\"); n=i;

for(i=0;i<=n;i++) /*寻找相同的名字*/ if(strcmp(find_name,med[i].name)==0)PR; fclose(fp);

printf(\"\\n\\n按任意键继续...\"); getch(); }

/*排序功能*/

void s_sort() {FILE*fp; int i,j,n; system(\"cls\");

if((fp=fopen(\"information\从文件读数据*/ {printf(\"不能打开.\"); getch(); return; }

printf(\"\\n\ 编号 名称 数量 价格 总数\\n\");

16

printf(\"Old\ -------------------------------------------------\"); for(i=0;fread(&med[i],sizeof(struct medicine),1,fp)!=0;i++)PR; n=i;

for(i=0;iif(strcmp(med[i].name,med[j].name)>0) {temp=med[i]; med[i]=med[j]; med[j]=temp; } fclose(fp);

printf(\"\\nNow\ -------------------------------------------------\");

fp=fopen(\"information\向文件写数据*/ for(i=0;i{fwrite(&med[i],sizeof(struct medicine),1,fp); PR; }

printf(\"\\n\"); fclose(fp);

printf(\"\\n\\n按任意键继续...\"); getch(); }

/*插入功能*/

void s_insert () {FILE*fp; int i,j,t,n; system(\"cls\");

printf(\"\\n输入药品数据:\\n\"); /*输入插入的药品数据*/ printf(\"编号:\"); scanf(\"%s\printf(\"名称:\"); scanf(\"%s\printf(\"数量:\"); scanf(\"%d\ printf(\"价格:\");

scanf(\"%f\

17

s.gross=s.price*s.kgs;

if((fp=fopen(\"information\从文件读数据*/

{printf(\"不能打开文件.\"); getch(); return; }

printf(\"\\n\ 编号 名称 数量 价格 总数\\n\");

printf(\"Old\ -------------------------------------------------\"); for(i=0;fread(&med[i],sizeof(struct medicine),1,fp)!=0;i++)PR; fclose(fp);

printf(\"\\nNow\ -------------------------------------------------\"); n=i;

for(t=0;strcmp(med[t].name,s.name)>0&&tfor(i=0;ifwrite(&s,sizeof(struct medicine),1,fp);

printf(\"\\n->\%8s %-8s%8d%10.2f%10.2f\给插入的数据作了记号->*/ for(i=t;i{fwrite(&med[i],sizeof(struct medicine),1,fp); PR; }

fclose(fp);

printf(\"\\n\");

printf(\"\\n\\n按任意键继续...\"); getch(); }

/*主函数*/

main()

{int a,b=0;

18

do

{system(\"cls\"); init();

printf(\"\\n\\\请选择:\"); scanf(\"%d\ switch(a)

{case 1:s_input();break; case 2:s_list();break; case 3:s_find();break;

case 4:{s_sort(),b=1;};break;

case 5:if(b==1)s_insert();else {printf(\"请先选择4!\");getch();}break; /*必须先执行排序文件*/

case 0:exit(0); }

}while (a!=0); }

5. 程序运行与调试

5.1 测试计划

软件测试阶段的主要任务是发现并排除在分析、设计、编程各阶段中产生的各种类型的错误,以得到可使用的软件系统。

关于软件测试,很多人认为“测试是证实程序中不存在错误”、“测试的目的是要证实程序正确地执行了预期的功能”、“测试的过程是使人们确信程序可完成预期要完成的工作过程”等。但这些定义是有缺陷的。因为进行测试不应该只是为了证实程序的质量有多好,而应该从程序本身存在错误这个假定出发,从中发现尽可能多的错误。从这个定义出发,我们应该发发现了错误的测试看作是成功的测试,而没有发现错误的测试应该看作是失败的测试。

软件测试的目的:

(1) 测试是程序的执行过程,目的在于发现错误。 (2) 一个好的测试用例在于能发现至今未发现的错误。 (3) 一个成功的测试是发现了至今未发现的错误的测试。

因此,测试一般不可能发现程序中的所有错误,测试只能证明程序中存在错误,但不能证明程序中不存在错误。

19

5.2测试目的

在软件的开发过程中存在许多复杂的问题,为了保证软件在投入运行中;保证软件的质量和运行的安全行,测试过程是必不可少的,同时也是关键的。测试是为了发现软件在运行过程中所出现的问题,并在出现问题时能够及时的做出相应的修改。

5.3 测试目标

测试的目标是保证软件在投入运行中的安全性和稳定行。

5.4 测试方法

测试方法是测试过程中至关重要的环节,采用的测试方法不同所产生的效果和所用的测

试经费也是不同的。一个好的测试方法能够提高测试的效率,缩短测试的时间,也能够减少测试的经费。

5.5 测试项目

测试的项目主要有以下几个方面的内容: 1)基本的用户和管理员登陆测试 2)基本的输入和输出操作测试 3)输入错误时系统的正确反应 4)插入、删除及查询测试

6. 总结

通过软件工程作业让我们把学到的课本知识用到实践中,充分运用所学知识,培养了我们实践动手能力和理论联系实际能力,通过有目的的调查研究,运用所学知识,分析和解决实际问题,以获得有关的实际知识和技能,锻炼了自己的能力。

此次作业,让我们对传统软件工程方法学的软件过程有了更深的认识。基于瀑布模型的各个阶段,加深了对文档驱动的理解。通过分析需求,绘制各种图形,设计测试方案,对如何开发设计软件产品有了一个总体的把握。

20

7. 参考文献

[1]王鹏,数据库技术及其应应用。第一版,北京:人民邮电出版社,2001年2月。 [2]萨师煊,王珊,数据库系统概论,第一版,北京:高等教育出版社,1983 [3]王珊 陈红 数据库系统原理教程 北京 清华大学出版社 1998.7

[4] 何忠芳, 陈岚, 张虹.中华实用医药杂志 2003年第3卷第11期

[5] 卫 海 等 powerbuiler课程设计案例精编 北京 中国水利水电出版社 2002.8

[6] 吴志华 等 突破powerbuilder8.0编程实例五十讲北京 中国水利水电出版社 2002.6 [7] 李政 等 powerbuilder8.0应用开发实例 北京 中国水利水电出版社 2002.5

21

#include #include #include #include #define N 50 #define

printf(\"\\n\%8s %-8s%8d%10.2f%10.2f\

struct medicine {char num[8]; char name[8]; int kgs; float price; float gross; }med[N],s,temp; /*界面*/ void init() {printf(\"\\n\\n\") ;

printf(\"\\\********************************************\\n\\n\"); printf(\"\\\ 药品管理系统\\n\\n\");

printf(\"\\\********************************************\\n\"); printf(\"\\\1-->输入\\n\"); printf(\"\\\2-->列表\\n\"); printf(\"\\\3-->查找\\n\"); printf(\"\\\4-->排序\\n\"); printf(\"\\\5-->插入\\n\"); printf(\"\\\0-->退出\\n\");

22

PR

printf(\"\\\*********************************************\\n\"); printf(\"\\\*********************************************\\n\"); }

/*输入功能*/

void s_input() {int i,n; FILE*fp; system(\"cls\"); printf(\"药品种类\"); scanf(\"%d\ for(i=0;iprintf(\"\\n输入药品数据 %d:\\n\输入药品数据,以序号1显示开始*/ printf(\"编号:\"); scanf(\"%s\ printf(\"名称:\");

scanf(\"%s\ printf(\"数量:\");

scanf(\"%d\ printf(\"价格:\");

scanf(\"%f\

med[i].gross=med[i].kgs*med[i].price; }

fp=fopen(\"information\ /*将数据写入文件*/ for(i=0;i23

if(fwrite(&med[i],sizeof(struct medicine),1,fp)!=1)printf(\"文件读取错误\\n\"); fclose(fp);

printf(\"\\n\\n按任意键继续...\"); getch(); }

/*显示功能*/

void s_list() {int i; FILE*fp;

if((fp=fopen(\"information\ /*从文件读数据*/ {printf(\"不能打开.\"); getch(); return; }

system(\"cls\"); printf(\"\\n\\n\\n\");

printf(\"\\n\ 编号 名称 数量 价格 总数\\n\"); printf(\"\ -------------------------------------------------\"); for(i=0;fread(&med[i],sizeof(struct medicine),1,fp)!=0;i++)PR; fclose(fp);

printf(\"\\n\\n\\n按任意键继续...\"); getch(); }

/*查找功能*/

24

void s_find() {int i,n;

char find_name[8]; FILE*fp; system(\"cls\");

if((fp=fopen(\"information\ /*从文件读数据*/ {printf(\"不能打开.\"); getch(); return; }

for(i=0;fread(&med[i],sizeof(struct medicine),1,fp)!=0;i++); printf(\"输入名称:\\n\"); scanf(\"%s\printf(\"\\n药品数据:\"); printf(\"\\n\\n\\n\");

printf(\"\\n\ 编号 名称 数量 价格 总数\\n\"); printf(\"\ -------------------------------------------------\"); n=i;

for(i=0;i<=n;i++) /*寻找相同的名字*/ if(strcmp(find_name,med[i].name)==0)PR; fclose(fp);

printf(\"\\n\\n按任意键继续...\"); getch(); }

/*排序功能*/

25

void s_sort() {FILE*fp; int i,j,n; system(\"cls\");

if((fp=fopen(\"information\从文件读数据*/ {printf(\"不能打开.\"); getch(); return; }

printf(\"\\n\ 编号 名称 数量 价格 总数\\n\"); printf(\"Old\ -------------------------------------------------\"); for(i=0;fread(&med[i],sizeof(struct medicine),1,fp)!=0;i++)PR; n=i;

for(i=0;iif(strcmp(med[i].name,med[j].name)>0) {temp=med[i]; med[i]=med[j]; med[j]=temp; } fclose(fp);

printf(\"\\nNow\ -------------------------------------------------\");

fp=fopen(\"information\向文件写数据*/ for(i=0;i{fwrite(&med[i],sizeof(struct medicine),1,fp); PR;

26

} printf(\"\\n\"); fclose(fp);

printf(\"\\n\\n按任意键继续...\"); getch(); }

/*插入功能*/

void s_insert () {FILE*fp; int i,j,t,n; system(\"cls\");

printf(\"\\n输入药品数据:\\n\"); /*输入插入的药品数据*/ printf(\"编号:\"); scanf(\"%s\printf(\"名称:\"); scanf(\"%s\printf(\"数量:\"); scanf(\"%d\ printf(\"价格:\"); scanf(\"%f\

s.gross=s.price*s.kgs;

if((fp=fopen(\"information\ {printf(\"不能打开文件.\"); getch();

27

/*从文件读数据*/

return; }

printf(\"\\n\ 编号 名称 数量 价格 总数\\n\"); printf(\"Old\ -------------------------------------------------\"); for(i=0;fread(&med[i],sizeof(struct medicine),1,fp)!=0;i++)PR; fclose(fp);

printf(\"\\nNow\ -------------------------------------------------\"); n=i;

for(t=0;strcmp(med[t].name,s.name)>0&&tfor(i=0;ifwrite(&s,sizeof(struct medicine),1,fp);

printf(\"\\n->\%8s %-8s%8d%10.2f%10.2f\给插入的数据作了记号->*/

for(i=t;i{fwrite(&med[i],sizeof(struct medicine),1,fp); PR; } fclose(fp);

28

printf(\"\\n\");

printf(\"\\n\\n按任意键继续...\"); getch(); }

/*主函数*/ main() {int a,b=0; do

{system(\"cls\"); init();

printf(\"\\n\\\请选择:\"); scanf(\"%d\ switch(a)

{case 1:s_input();break; case 2:s_list();break; case 3:s_find();break; case 4:{s_sort(),b=1;};break;

case 5:if(b==1)s_insert();else {printf(\"请先选择4!\");getch();}break; /*必须先执行排序文件*/ case 0:exit(0); }

}while (a!=0); }

29

因篇幅问题不能全部显示,请点此查看更多更全内容