C语言课程设计报告-药品销售管理系统(22页).doc
《C语言课程设计报告-药品销售管理系统(22页).doc》由会员分享,可在线阅读,更多相关《C语言课程设计报告-药品销售管理系统(22页).doc(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-C语言课程设计报告-药品销售管理系统-第 22 页武汉纺织大学数学与计算机学院C语言程序设计课程设计报告题目: 药品销售管理系统 专业班级: 计算机类11508班 学 号: 学生姓名: 指导教师: 2016年 5 月 30日一、 引言通过本课程设计,使自己更加系统地理解和C语言专业学习的基本概念;能自如地根据实际要求,设计相应的程序设计,并运用C语言实现所设计的算法,编写较大型的程序,分析和解决实际问题进一步加深和巩固所学专业课程的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。掌握C语言独立的编写、调试应用程序和进行其它相关设计的技能。此项目主要是考察我们对结构体、
2、数组、文件等具体操作,以及对C语言语法的掌握,所以完成此项目要求比较高的设计要求,对整体有很熟悉的概括,同时调试过程也是很重要的,对程序界面的要求也比较高,要设计的合理同时也要美观一点,能够人性化的描述清楚你的各个功能,一目了然,对其他用户使用本程序简单易懂,这才能成本程序或本系统是成功的。这个设计能够练习我们的理解和运用结构化程序设计的思想和方法,掌握开发一个小型实用系统的基本方法,学会调试一个比较长的程序的基本方法,同时掌握书写程序设计开发文档的能力。二、 系统介绍:1.设计平台介绍:VisualC+不仅仅是是一个C+编译器,而是一个基于Windows操作系统的可视化集成开发环境,这种环境
3、开发出来的软件定性好、可移植性强,可以编制各种各样的Windows应用程序。2.介绍开发的系统功能和解决的问题:该系统实现对若干个大药品的种类进行管理和销售统计。包括以下信息:药品编号、名称、价格、类型,生产日期,保质期,库存等。具备药品信息的查询(多种查询方式),修改,删除,添加等基本功能,解决药品销售的管理与统计问题。3.说明涵盖的知识点及技术难点分析:本系统涉及到的知识点包括顺序结构、选择结构、循环结构、数组、指针、函数、结构体及文件操作,技术难点在于文件的读写操作,结构体的定义,函数功能的划分与程序的调试等。要求编写者熟练掌握C语言基本知识,独立调试程序,学会知识的拓展与查阅资料。三、
4、模块设计:1.功能模块创建药品管理文件:如果药品管理文件不存在,则创建一个新的药品管理文件,并输入信息,输入药品名称为“*”结束录入。(当录入相同的名称时,系统会提示,并请重新录入)。保存药品信息:将链表中的信息写入到文件。读取药品信息:从文件中读取信息到链表中。显示所有药品信息:选择此功能时,先将药品管理文件中的信息读取到链表中,然后显示链表中的所有信息。添加药品信息:选择此功能时,先将药品管理文件中的信息读取到链表中,然后在链表尾节点后增加一个新节点,录入新数据,并询问用户是否保存修改?用户输入y,就保存修改,否则不保存。修改药品信息:选择此功能时,先将药品管理文件中的信息读取到链表中,根
5、据用户输入的药品名称,查找到该药品,然后输入改药品的信息,并询问用户是否保存修改?用户输入y,就保存修改,否则不保存。查找药品:先将药品管理文件中的信息读取到链表中,该菜单项分为3个子菜单,按名称查找、按类型查找和按编号查找。用户选择子菜单后,就按照用户输入的信息进行链表的查找。显示过期时间:读取所有药品信息,根据生产日期与保质期计算出药品过期时间。药品销售管理:销售时输入药品编号和数量,库存数减少对应数量,当库存数不足,提示重新输入,且药品库存数不变,当输入0代表销售结束,计算销售数量与销售额。删除功能:先将药品文件中的信息读取到链表中,根据用户输入的名称,进行删除,并询问用户是否保存修改?
6、用户输入y,就保存修改,否则不保存。退出:退出通讯录管理系统。2. 系统详细设计文档主菜单创建退出销售期限查询删除修改添加显示类型名称编号3. 用图示的方式给出各模块中过程或函数之间的调用关系(流程图等)YN名称是否为*号 开始药品管理文件已经存在?结束YYN新建药品管理文件 输入新建药品的名称N名称和编号是否重复Y输入药品其他信息追加在链表尾部是否保 存YN调用保存函数NN是否到了链表尾部? 开始 读取管理文件成功? 结束YY打印药品信息 结点指针后移N开始读取信息管理文件成功?结束N 移动指针到链表尾部 输入新建药品的名称与编号Y 编号和名称是否重复?Y 输入药品其他信息 追加在链表尾部
7、是否保存?YN 调用保存函数 输入编号是否一致?是否有重复?N 输入其他信息YY 指向下一结点N 开始读取药品管理文件成功? 结束N输入需要修改的名称Y 是否链表尾部?N 是否保存?YN 调用保存函数YY名称是否一致? 指向下一结点N开始读取信息管理文件成功? 结束N输入需要删除的名称Y 是否链表尾部?N 是否保存?YN 调用保存函数 确定要删除吗?Y删除该结点 调用保存函数开 始查找子菜单输入查找条件是否到达链表尾部?打印信息,指针后移是否继续?结 束是否是否编号名称类型是否在链表尾部开 始从链表中读取生产日期 和保质期否计算并打印过期时间结束是是结束开 始输入药品 编号和数量编号为0?库存
8、大于0?库存数量,计算价格是否重新销售? 结 束输出总价及件数否是是否编号存在?否是否是药品库存以及总价不变四、程序清单:#include#include#include#includestruct production_date int year; int month; int day; /定义结构体记录生产日期struct medcine_info int no; /编号 int num; /数量 int life; /保质期 double price; /价格 char name10; /名称 char style10; /药品类型 struct production_date date
9、1; /生产日期 struct medcine_info *next; /下一个指针; /定义结构体记录药品信息typedef struct medcine_info ID;void Showmenu(); /显示主菜单ID* Create(); /创建函数ID* ReadFromFile(); /从文件读取信息void Display(ID* head); /显示函数void WriteToFile(ID *head); /将信息写入文件ID* InputRecord(ID* head); /添加药品信息ID* ChangeRecord(ID* head); /修改药品信息ID* Delet
10、eRecord(ID* head); /删除void Query(ID* head); /查询void Date(ID* head); /保质期计算void Sale(ID *head); /销售int main() ID *head; int choice; while(1) Showmenu(); printf(n请输入所选功能的序号:); scanf(%d,&choice); system(cls); switch(choice) case 1: head=Create(); break; case 2: head=ReadFromFile(); if(head!=NULL) Displ
11、ay(head); break; case 3: head=ReadFromFile(); if(head!=NULL) head=InputRecord(head); break; case 4: head=ReadFromFile(); if(head!=NULL) head=DeleteRecord(head); break; case 5: head=ReadFromFile(); if(head!=NULL) Query(head); break; case 6: head=ReadFromFile(); if(head!=NULL) head=ChangeRecord(head);
12、 break; case 7: head=ReadFromFile(); if(head!=NULL) Date(head); break; case 8: head=ReadFromFile(); if(head!=NULL) Sale(head); WriteToFile(head); break; case 9: exit(0); break; default: printf(输入错误,请重新输入n); getch();void Showmenu() system(cls); printf(=药品管理系统=nn); printf(t1.创建信息文件); printf(t 2.查看药品列表
13、nn); printf(t3.添加药品信息); printf(t 4.删除药品信息nn); printf(t5.查找特定药品); printf(t 6.修改药品信息nn); printf(t7.药品过期时间); printf(t 8.药品销售管理nn); printf(t9.退出管理系统nn); printf(=n);void WriteToFile(ID *head) FILE *fp; ID* pchk; if(fp=fopen(medcine_info.txt,w+)=NULL) printf(n打开文件失败,按任意键返回!n); getch(); exit(0); /判断是否能打开文件
14、 pchk=head; while(pchk!=NULL) fprintf(fp,n%d %d %d %d %d %d %lf %s %s,pchk-no,pchk-num,pchk-date1.year,pchk-date1.month,pchk-date1.day,pchk-life,pchk-price,pchk-name,pchk-style); pchk=pchk-next; /指针指向下一个结点 fclose(fp); printf(n文件保存成功n); printf(n请按任意键返回主菜单n); getch();ID* ReadFromFile() FILE *fp; ID *t
15、1,*t2,*head=NULL; /清空链表 if(fp=fopen(medcine_info.txt,r)=NULL) printf(打开文件失败!没有该文件n); printf(请按任意键返回主菜单); getch(); return 0; rewind(fp); /指针移动到文件头部 t1=(ID *)malloc(sizeof(ID); /分配空间 head=t2=t1; while(!feof(fp) /当没有到文件尾 fscanf(fp,n%d %d %d %d %d %d %lf %s %s,&t1-no,&t1-num,&t1-date1.year,&t1-date1.mon
16、th,&t1-date1.day,&t1-life,&t1-price,t1-name,t1-style); t1-next=(ID *)malloc(sizeof(ID); t2=t1; t1=t1-next; t2-next=NULL; /t2作为尾结点 fclose(fp); return head;ID* Create() FILE *fp; ID *head,*tail,*pnew,*pchk; char Saveflag; /存储标记 if (fp=fopen(medcine_info.txt,r)!=NULL) printf(n药品信息文件已经存在,不能重复创建!按任意键返回主菜
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 药品 销售 管理 系统 22
限制150内