《软件课程设计报告格式.doc》由会员分享,可在线阅读,更多相关《软件课程设计报告格式.doc(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、西安郵電學院软件课程设计报 告 书院系名称:计算机学院学生姓名:薛婷专业名称:光信息班 级:1103学号:时间:2012年4月11日至2012年4月20日 实验题目:博爱医院药品信息管理系统一、 实验目的 :实现对博爱医院药品信息的及时管理。二、 实验内容 :内容包括药品信息的录入、输出、添加、修改、删除排序等。三、 需求分析 对所开发系统功能的描述,想要实现的目标,测试数据等。1. 在录入函数中:实现对药品信息的录入;2. 在更新函数中:实现对药品信息的更改与添加;3. 在查询函数中:实现对药品信息的快速查询;4. 在统计函数中:实现对药品信息的及时统计;5. 在排行函数中:实现对药品信息的
2、等级排序;四、 概要设计删除用户模块:将用户信息从相应的文件中删除。创建信息模块:即对信息的原始录入。输出模块:打印从文件读出或创建的信息。查询模块:可以分别根据药品号或名称查询信息,查到则打印输出,未查到显示提示信息。增加模块:增加信息,以头插的方法插到当前的链表。删除模块:删除与药品对应的信息,若无此药品显示提示信息。修改模块:输入要修改的信息的名称部分,然后输入新的信息。排序模块:对信息进行升序排序。保存模块:将当前的信息保存进文件。读取模块:打开输入的文件名对应的文件,文件不存在提示信息。统计模块:统计出系统管理的所有药品数。2各功能函数的数据流程图录入模块删除模块查询模块创建用户模块
3、统计模块3.重点代码:删除部分:void del_message()/删除函数/ int i,j,del_num,b; system(cls); printf( 1输入要删除的编号:); scanf(%d,&del_num); for(i=0;isum;i+) if(medicinei.num=del_num)break; for(j=i;jsum;j+)medicinej=medicinej+1;if(i=sum)printf(n 所删除药品信息不存在!n);system(cls); printf(nn该药品信息已被删除!n); printf(n 要继续删除吗?(按T删,按其它键返回!);b
4、=getch();if(b=T|b=t)printf(n (按T健)继续删!);system(cls);else break;sum-;2.打印部分:print_message()int i;system(cls);for(i=0;isum;i+) printf(nn -药物信息表- 第%d页nn);PRINT2;printf(%4d%8s%8s%8d%15d-%2d-2d%10dn,medicinei.name,medicinei.name,medicinei.kind,medicinei.out_price,medicinei.pro_time.year,medicinei.pro_tim
5、e.month,medicinei.pro_time.date,medicinei.save_day);printf(4445请按任意键返回!);getch();五、 详细设计及运行结果 六、 调试情况,设计技巧及体会 六调试情况,设计技巧及体会1 体会:1、对自己设计进行评价,指出合理和不足之处,提出改进的方案。 我的程序基本满足课程设计的要求,各个功能都能实现,但是还有需要提高之处。如:修改信息函数,需要把新信息整条输入,但是有时可能就需要改变信息的一部分,这样就比较麻烦。改进方法:可以用多路分支switch语句,可让用户进行选择。修改后没有提示保存语句,改进方法:在主函数结束处加一条提示
6、语句和一个选择分支语句。2.创建工程文件可以方便查找和改进代码,而且使主函数所在文件较为清晰,在程序较大的情况下,比不创建优势更为明显。3.int fscanf(FILE *fp, “格式化字符串”,【输入项地址表】)忽然和int fprintf(FILE *fp,格式化字符串”,【输入项地址表】);这两个函数在存为文件和度文件时较为方便,因为这两个函数是格式化写或度信息,一次能写入一条信息,且条理清楚。4. 对代码添加注释是很有用的,添加注释不仅可以增加程序的可读性,而且自己或别人也可以根据注释判断思路是否正确,便于修改调试,就是所谓的磨刀不误砍柴工,所以要尽量多的鞋注释。七、 源程序清单(
7、略,详见电子版实验报告)格式:内容部分用宋体、小四号字,代码用Courier New字体、五号。A4打印纸#include #include #include #includeconio.h#define MAX 200#define N 100#define M 6#define PAGE 200#define PRINT1 printf(-n)#define PRINT2 printf(药物号-药物名称-药物种类-销售价格-生产日期(年-月-日)-保质n)/*#define PRINT3 printf(%4d%8s%8s%8d%15d-%2d-2d%10dn,medicinei.num,m
8、edicinei.name,medicinei.kind,medicinei.out_price,medicinei.pro_time.year,medicinei.pro_time.month,medicinei.pro_time.date,medicinei.save_day) ;*/int sum;/*用来记录药物数目*/*日期结构体类型*/struct Dateint year;int month;int date;/*药物结构体类型*/struct medicine_typeint num; /*药物号*/char name10; /*药物名称*/ char kind10; /*药物
9、类别*/int amount; /*药物数量*/int medicine_up; /*药物上限*/int medicine_down; /*药物下限*/int in_price; /*药物库存价格*/int out_price; /*药物销售价格*/int in_num; /*药物库存数量*/struct Date in_time; /*药物库存日期*/struct Date pro_time; /*药物生产日期*/char factory10; /*药物生产厂家*/int save_day; /*药物保质期*/int profit; /*药物利润*/medicineMAX; /*存放MAX种
10、药物记录的结构体数组*/*保存测试*/save_message()FILE *fp;int i;if(fp=fopen(hosptial.txt,wb)=NULL)printf(读文件错误!n);return 0;for(i=0;isum;i+)if(fwrite(&medicinei,sizeof(struct medicine_type),1,fp)!=1)printf(写文件错误!n);return i;fclose(fp);/*输入模块*/input_message()int i=0,s=MAX;system(cls);printf(nn 录入药物信息 (最多%d种)n,s);prin
11、tf( -n);doprintf(n 第%d种药物,i+1);printf(n 药物号:);fflush(stdin);scanf(%d,&medicinei.num);if(medicinei.num=0) break;printf(n 药物名称:); fflush(stdin);scanf(%s,&medicinei.name);printf(n 药物类别:); fflush(stdin);scanf(%s,&medicinei.kind);printf(n 药物数量:); fflush(stdin);scanf(%d,&medicinei.amount);printf(n 药物上限:);
12、 fflush(stdin);scanf(%d,&medicinei.medicine_up);printf(n 药物下限:); fflush(stdin);scanf(%d,&medicinei.medicine_down);printf(n 库存价格:); fflush(stdin);scanf(%d,&medicinei.in_price);printf(n 销售价格:); fflush(stdin);scanf(%d,&medicinei.out_price);printf(n 库存数量:); fflush(stdin);scanf(%d,&medicinei.in_num);prin
13、tf(n 库存日期(yyyy-mm-dd):); fflush(stdin);scanf(%d-%d-%d,&medicinei.in_time.year,&medicinei.in_time.month,&medicinei.in_time.date);printf(n 生产日期(yyyy-mm-dd):); fflush(stdin);scanf(%d-%d-%d,&medicinei.pro_time.year,&medicinei.pro_time.month,&medicinei.pro_time.date);printf(n 生产厂家:); fflush(stdin);scanf(
14、%s,&medicinei.factory);printf(n 保质期:); fflush(stdin);scanf(%d,&medicinei.save_day);i+;while(iMAX);printf(n -%d种药物信息输入完毕!-n,i);sum=i;printf(n 按任意键返回主菜单!);getch();/*读取信息*/read_message()FILE *fp;int i=0;if(fp=fopen(hosptoal.txt,rb)=NULL)printf(nn*暂时还没有任何库存信息,按任意键进入主菜单选择基本信息的录入!*n);getch();return 0;whil
15、e(feof(fp)!=1)fread(&medicinei,sizeof(struct medicine_type),1,fp);if(medicinei.num=0) break;else i+;return i;fclose(fp);/*输出模块*/output_message()int i=0,j=0,page=1;system(cls);printf(nn -药物信息表- 第%d页nn,page);PRINT2;PRINT1;doif(medicinei.num!=0)j+;if(j%PAGE!=0)printf(%4d%8s%8s%8d%15d-%2d-2d%10dn,medici
16、nei.num,medicinei.name,medicinei.kind,medicinei.out_price,medicinei.pro_time.year,medicinei.pro_time.month,medicinei.pro_time.date,medicinei.save_day);PRINT1;elseprintf(%4d%8s%8s%8d%15d-%2d-2d%10dn,medicinei.num,medicinei.name,medicinei.kind,medicinei.out_price,medicinei.pro_time.year,medicinei.pro_
17、time.month,medicinei.pro_time.date,medicinei.save_day);PRINT1;if(medicinei+1.num!=0)printf(按任意键继续!);getch();system(cls);printf(nn -药物信息表- 第%d页nn,+page);PRINT2; PRINT1;i+;while(medicinei.num!=0);printf(按任意键返回主菜单!);getch();insert_message()int i=sum,flag=0; char med;system(cls);printf(nn 添加一种新药物n);prin
18、tf( -n);domedicinei.num=+sum;printf(n 新药物号%d,medicinei.num);printf(n 药物名称:); fflush(stdin);scanf(%s,&medicinei.name);printf(n 药物类别:); fflush(stdin);scanf(%s,&medicinei.kind);printf(n 药物数量:); fflush(stdin);scanf(%d,&medicinei.amount); printf(n 药物上限:); fflush(stdin);scanf(%d,&medicinei.medicine_up);pr
19、intf(n fflush(stdin); 药物下限:);scanf(%d,&medicinei.medicine_down);printf(n 库存价格:); fflush(stdin);scanf(%d,&medicinei.in_price);printf(n 销售价格:); fflush(stdin);scanf(%d,&medicinei.out_price);printf(n 库存数量:); fflush(stdin);scanf(%d,&medicinei.in_num);printf(n 库存日期(yyyy-mm-dd):); fflush(stdin);scanf(%d-%d
20、-%d,&medicinei.in_time.year,&medicinei.in_time.month,&medicinei.in_time.date);printf(n 生产日期(yyyy-mm-dd):); fflush(stdin);scanf(%d-%d-%d,&medicinei.pro_time.year,&medicinei.pro_time.month,&medicinei.pro_time.date);printf(n 生产厂家:); fflush(stdin);scanf(%s,&medicinei.factory);printf(n 保质期:); fflush(stdi
21、n);scanf(%d,&medicinei.save_day);printf(n 要继续吗?(Y/N);med=getch();if (med=y|med=Y)printf(n 继续!n);i+;flag=1; else flag=0;while(flag=1);printf(n 按任意键返回主菜单!);getch();revise_message()int i=0,med,revise_num,flag;dosystem(cls);printf(n 输入要修改的药物号:);scanf(%d,&revise_num);for(i=0;isum;i+)if(medicinei.num=revi
22、se_num)printf(n -药物信息-n);PRINT1;PRINT2;printf(%4d%8s%8s%8d%15d-%2d-2d%10dn,medicinei.num,medicinei.name,medicinei.kind,medicinei.out_price,medicinei.pro_time.year,medicinei.pro_time.month,medicinei.pro_time.date,medicinei.save_day);printf(n 你要修改哪一项?n);printf(n 1.名称n);printf(n 2.种类n);printf(n 3.销售价格n
23、);printf(n 4.生产日期n);printf(n 5.保质期n);printf(n 请选择(1-5):n);scanf(%d,&med);switch(med)case 1:printf(n 输入修改后的名称:n);scanf(%s,&medicinei.name);break;case 2:printf(n 输入修改后的种类:n);scanf(%s,&medicinei.kind);break;case 3:printf(n 输入修改后的销售价格:n);scanf(%d,&medicinei.out_price);break;case 4:printf(n 输入修改后的生产日期:n)
24、;scanf(%d-%d-%d,&medicinei.pro_time.year, &medicinei.pro_time.month, &medicinei.pro_time.date); break;case 5:printf(n 输入修改后的保质期:n);scanf(%d,&medicinei.save_day);break;PRINT1;PRINT2;printf(%4d%8s%8s%8d%15d-%2d-2d%10dn,medicinei.num,medicinei.name,medicinei.kind,medicinei.out_price,medicinei.pro_time.
25、year,medicinei.pro_time.month,medicinei.pro_time.date,medicinei.save_day);break;if(i=sum)printf(n 该药物不存在!n);getch();printf(nn 要继续吗?(Y/N);med=getch();if (med=y|med=Y)flag=1;printf(n 继续!n);else flag=0;while(flag=1);printf(n 按任意键返回主菜单!);getch(); void del_message()/删除函数/ int i,j,del_num,b; system(cls);
26、printf( 1输入要删除的编号:); scanf(%d,&del_num); for(i=0;isum;i+) if(medicinei.num=del_num)break; for(j=i;jsum;j+)medicinej=medicinej+1;if(i=sum)printf(n 所删除药品信息不存在!n);system(cls); printf(nn该药品信息已被删除!n); printf(n 要继续删除吗?(按T删,按其它键返回!);b=getch();if(b=T|b=t)printf(n (按T健)继续删!);system(cls);else break;sum-;print
27、f(nn请按任意键返回!);getch();renew_message()int med;dosystem(cls);printf(nnn *更新药物信息*nn);printf( 1.添加药物信息nn);printf( 2.修改药物信息nn); printf( 3.删除药物信息nn);printf( 0.返回主菜单nn);printf( 请选择(0-3):);scanf(%d,&med);switch(med)case 1:insert_message();break;case 2:revise_message();break; case 3:del_message();break;case
28、0:break;while(med!=0);inquire_name()int i,j=0;char inquire_name10;system(cls);printf(n 输入要查询的药物名称:n);scanf(%s,inquire_name);for(i=0;isum;i+)if(strcmp(medicinei.name,inquire_name)=0&medicinei.num!=0)printf(n -药物信息-:n);PRINT1;PRINT2;printf(%4d%8s%8s%8d%15d-%2d-2d%10dn,medicinei.num,medicinei.name,medi
29、cinei.kind,medicinei.out_price,medicinei.pro_time.year,medicinei.pro_time.month,medicinei.pro_time.date,medicinei.save_day);else j+;if(j=sum) printf(n 该药物不存在!n);getch();inquire_count_time()int i,j=0;char inquire_name10;system(cls);printf(n 输入要查询的药物名称:n);scanf(%s,inquire_name);for(i=0;isum;i+)if(strc
30、mp(medicinei.name,inquire_name)=0&medicinei.num!=0)printf(n -药物信息-:n);PRINT1;PRINT2;printf(%4d%8s%8s%8d%15d-%2d-2d%10dn,medicinei.num,medicinei.name,medicinei.kind,medicinei.out_price,medicinei.pro_time.year,medicinei.pro_time.month,medicinei.pro_time.date,medicinei.save_day);else j+;if(j=sum) print
31、f(n 该药物不存在!n);getch();inquire_kind()int i,j=0;char inquire_kind10;system(cls);printf(n 输入要查询的药物类别:n);scanf(%s,inquire_kind);for(i=0;isum;i+)if(strcmp(medicinei.kind,inquire_kind)=0&medicinei.num!=0)printf(n -药物信息-:n);PRINT1;PRINT2;printf(%4d%8s%8s%8d%15d-%2d-2d%10dn,medicinei.name,medicinei.name,med
32、icinei.kind,medicinei.out_price,medicinei.pro_time.year,medicinei.pro_time.month,medicinei.pro_time.date,medicinei.save_day);else j+;if(j=sum) printf(n 该药物不存在!n);getch();inquire_message()int med;dosystem(cls);printf(nnn *查询药物信息*:nn);printf( 1.按药物名称查询nn);printf( 2.按药物类别查询nn);printf( 3.按药物名称和库存价格查询nn);printf( 0.返回主菜单nn);printf( 请选择(0-3):);scanf(%d,&med);switch(med)case 1:inquire_name();break;case 2:inquire_kind();break;case 3:inquire_count_time();break;case 0:break;while(med!=0);count_profit()int i,j=0,count_num,profit;system(cls);printf(