ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:532.22KB ,
资源ID:3904786      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3904786.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(加油机收费管理系统.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

加油机收费管理系统.docx

1、加油机收费管理系统沈阳航空航天大学课 程 设 计 报 告课程设计名称:C语言课程设计课程设计题目:加油机收费管理程序院 系:计算机学院专 业:计算机科学与技术班 级: 学 号: 姓 名: 指导教师: 高利军完成日期: 2012 年 3 月 16 日目 录第1章 需求分析 - 1 -1 题目的内容 - 1 - 1.1 输出形式-1-1.2 程序功能 - 1 -第2章 概要设计 - 2 -2.1 数据类型的定义 - 2 -2.2 主要函数和函数功能描述 - 2 -2.3 程序模块图 - 3 -第3章 详细设计 43.1主函数模块 53.2主菜单模块 53.3油料建立模块 73.4油价显示模块 93

2、.5 进货与调动模块 93.6 销售模块 103.7销售查看模块 11第4章 调试分析 13第5章 用户使用说明 14第6章 测试结果 15参考资料 20附 录 22第1章 需求分析1题目的内容要求能建立油料类别及收费标准(类别分别为汽油、柴油、机油等);并且加油机可以实现对油料的进货、销售、库存变动管理;还能实现对某日内以及近期各类油料销售数量和收入进行统计;能对一段时间的销售情况进行统计、排名来辅助进货管理。而且当程序关闭时,程序可对指定内容和销售情况进行存储,当下次开机时无需在此输入相关信息,程序会自动从文件中读取油料信息,以减少用户不便;1.1输出的形式输出时在界面上出现油料价格以及功

3、能选项,以菜单的形式进行选项的选择,第一次执行程序时须手动输入油料信息方可显示,第二次则通过对文件的读取获得所需油料信息显示在黑屏上,然后进行子函数的调用,完成所需功能,并且每项功能完成后会有输出信息提示,如果没完成则会有错误提示显示在黑屏上。1.2程序功能1建立有各种油料类别供用户参考选取;2能实现对油料的进货、销售、库存变动管理;3当一天销售完成时即可对一天的销售情况进行察看,也可对近期的销售情况进行察看;4当程序关闭时,程序可对指定内容和销售情况进行存储,当下次开机时无需在此输入相关信息,程序会自动从文件中读取油料信息;5能对一段时间的销售情况进行统计、排名来辅助进货管理。 第2章 概要

4、设计2.1 数据类型的定义该程序使用了链表来存储各类油料信息,该链表有3个节点。定义的结构体中含有8个成员,name1用来存储油料的名字,sum用来存储近期油料的销售收入,num用来存储该油料的储量,price用来存储该油料的价格,shou用来存储近期该油料的销售量,s用来存储该油料的每次销售时的收入, shou_1用来存储今日该油料的销售量,sum_1用来存储该油料的今日销售时的收入,定义的方式如下所示:struct oil_chargeint name1; /油料类别 float price; /油价 float num; /油料储量 float sum; /近期收入 float s; /

5、每次销售的收入 float shou; /近期销量float sum_1; /今日收入float shou_1; /今日销量struct oil_charge *next;2.2 主要函数和函数功能描述(1)主函数main():调用主菜单函数及其它函数;(2)主菜单函数menu_1(): 打印菜单内容,接收用户的选择并将其返回主函数;(3)副菜单函数menu_2():打印每个数字所代表的油料类别并接收用户所选油料类别;(4)创建链表函数create_1(): 创建链表,供存储油料信息使用;(5)创建链表函数 create_2():创建链表,供存储从文件中读取的油料信息使用;(6)显示函数 sh

6、ow_price(NODE *head):显示油料的价格信息;(7)销售函数sell(NODE *head):对用户所选油料进行销售处理;(8)写入文件函数 write_in(NODE *head): 将链表每个节点的内容写入文件,供二次运行程序时使用;(9)查看函数 situation_1(NODE *head):查看近期油料销售的信息;(10)查看函数 situation_2(NODE *head):查看今日油料销售的信息;(11)进货与调动函数 buy_change(NODE *head): 对所选油料进行进货或调动处理;(12)释放链表函数freelist(NODE *head): 释

7、放链表节点所占空间;2.3 程序模块图图2.1 加油机收费管理程序模块图第3章 详细设计3.1主函数模块main()是本程序的主函数,用来调用主菜单函数及其它函数。流程图如图3.1所示:图3.1 主函数流程图3.2功能选项模块(1)功能: menu_1()为本程序提供主菜单的显示,并且根据用户输入的选项调用其他的函数,借以完成用户所期望的功能。(2)数据类型描述:整型 i; 流程图如图3.2所示图3.2 menu_1()模块流程图3.3油料建立模块 (1)功能: 本模块共有两个创建函数,程序会根据指定文件是否存在来选择链表的建立方法。当程序为首次执行时,会选用create_1()函数,并要采取

8、手动输入数据;当程序为二次执行时,会选用create_2()函数 ,主动从文件中读取数据;(2)数据类型描述:整型 i;浮点型 n;结构体 struct oil_change; create_1()函数流程图如图3.3所示图3.3 create_1()模块流程图create_2()函数流程图如图3.4所示 图3.4 create_2()函数模块流程图3.4油价显示模块(1)功能:Show_price(NODE *head)函数的功能是显示油料价格的信息,然手在屏幕上打印出来。(2)数据类型描述:整型 i;结构体 struct oil_change; 流程图如图3.5所示 图3.5 show_p

9、rice(NODE*head)函数模块流程图3.5进货与调动模块(1)功能:buy_change(NODE *head)函数的作用是接收用户输入数据,寻找对应油料,并完成对油料的进货或调动工作。 (2)数据描述:浮点型 n;结构体 struct oil_change; 流程图如3.6所示图3.6 buy_change(NODE*head)函数模块流程图3.6 销售模块(1)功能:sell(NODE *head)函数的功能是接收用户输入数据,寻找对应油料,完成销售功能。流程图如3.7所示 图3.7 sell(NODE*head)函数模块流程图3.7销售查看模块(1)功能:查看函数功能是对今日或近

10、期的销售情况进行查看以达到辅助进货的目的。Situation_1(NODE 8head)为查看近期销售情况;(2)数据描述:结构体数组 struct oil_change tru3,结构体 struct oil_change,整型 i; 流程图如3.8所示图3.8 situation_1(NODE*head)函数模块流程图Situation_2(NODE 8head)为查看当日销售情况,流程图如3.9所示图3.9 situation_2(NODE*head)函数模块流程图第4章 调试分析(1)问题:油类名称无法输入,因为字符串无法整体赋值; 解决方法:用数字代表各油料名称,输入时也输入数字进行

11、查找。 (2)问题:无法将数据保存,而且读取时赋值混乱; 解决方法: 换取文件写入与读取方式,采用整体写入与读取。(3)问题:运行后有错误菜单提示; 解决方法:发现链表未释放,设一链表释放函数.(4)问题:当程序第一次执行完后,无法进行方便的二次操作,因为与第一次使用的是同一个建立链表函数,这样第二次就无法从文件中读取数据并赋值给相应变量;解决方法:用两个建立链表函数,判断是否为第一次执行程序,如果是,就执行第一个函数,否原则执行第二个。(5)问题:读取的数据总是第一个油料的信息; 解决方法:打开文件的步骤设在了循环内部,将其移至循环圈外即可。 第5章 用户使用说明(1) 在VC+环境下,将程

12、序代码输入。(2) 对输入好的程序进行编译。(3) 修改编译中出现的错误(如:符号的遗失,逻辑错误等)。(4) 运行程序。(5) 在运行界面下会出现油价信息及主菜单,如图5.1,上面有四个选项,通过用户的需要进行选择。(6)若输入1则进入进货或调动函数;输入2则进销售函数;输入3则进入查看函数;输入4则退出程序并保存油价信息及近期销售信息。图5.1 主菜单界面第6章 测试结果运行程序后,会出现主菜单,如图6.1所示图6.1 主菜单输入1,进入 进货或调动选项,输入油量。 会出现副菜单,然后再输入所需油料对应的代号即可,如图6.2所示:图6.2 进货或调动输入2,进入销售功能,输入油量。 会出现

13、副菜单,在输入对应油料对应的代号即可,若输入的代号没有发现或油量不足,会出现错误提示。如图6.2所示图6.3 销售输入3,进入查看功能, 再输入1或2选择查看的范围。如图6.4所示图6.41 查看当日销售情况图6.42 查看近期销售情况并排名输入4,执行退出功能,退出该程序并保存数据。如图图6.5退出程序下次运行程序后,会出现不同于第一次的主菜单,可不用手动输入油料信息如图6.6所示图6.6二次执行程序参考资料1 谭浩强主编,C语言程序设计【M】北京:高等教育出版社,20062 张磊。c语言程序设计【M】北京:高等教育出版社,20053 严蔚敏数据结构(c语言版)【M】北京:清华大学出版社 2

14、004附 录源程序: / 加油机收费管理系统.cpp : Defines the entry point for the console application.#include #include #include struct oil_charge int name1; float price; float num; float sum; float s; float shou; float sum_1; float shou_1; struct oil_charge *next;typedef struct oil_charge NODE;struct oil_charge *first,

15、*second,*third,*r;NODE*create_1();NODE*create_2();void buy_change(NODE *head);void sell(NODE *head);void situation_1(NODE *head);void situation_2(NODE *head);void freelist(NODE *head);void show_price(NODE *head);void write_in(NODE *head);int menu_1();int menu_2();void main(int argc, char* argv) /主函数

16、 NODE *head; FILE *fp; int i; printf(*加油机收费管理*n); printf( 注释菜单n); printf(*n); printf( 1.汽油n); printf( 2.柴油n); printf( 3.机油n); printf(输入相应数据的顺序为:机油 - 柴油 - 汽油n); printf(*n); if(fp=fopen(file.dat,rb)=NULL) head=create_1(); else head=create_2(); show_price(head); for(;) switch(menu_1() case 1:buy_change

17、(head); break; case 2:sell(head); break; case 3: printf( 1. 查看当天销售记录!n); printf( 2. 查看近期销售记录!n); scanf(%d,&i); switch(i) case 1:situation_2(head); break; case 2:situation_1(head); break; break; case 4: write_in(head); freelist(head); printf(收费工作结束!n); return; int menu_1() /主菜单函数 int choice; printf(

18、主菜单n); printf(*n); printf( 1.进货/调动n); printf( 2.销售n); printf( 3.查看n); printf( 4.退出n); printf(*n); do printf(enter you choice(14):); scanf(%d,&choice); while (choice4); return choice;int menu_2() /副菜单 int choice; printf( 副菜单n); printf(*n); printf( 1.汽油n); printf( 2.柴油n); printf( 3.机油n); printf(*n); d

19、o printf(enter you choice(13):); scanf(%d,&choice); while (choice3); return choice;NODE *create_1() / 创建链表 NODE*head,*p; int i=1; printf(储量 收入 价格 种类n); printf(-n); head=(NODE*)malloc(sizeof(NODE); if(head=NULL) printf(no enough memory!n); return NULL; head-next=NULL; while(inum,&p-sum,&p-price,&p-na

20、me1); p-next=head-next; head-next=p; p-shou=0.0; p-sum_1=0.0; p-shou_1=0.0; i+; printf(-n); return(head);NODE *create_2() / 创建链表 NODE*head,*p; FILE *fp; int i=1; head=(NODE*)malloc(sizeof(NODE); if(head=NULL) printf(no enough memory!n); return NULL; head-next=NULL; if(fp=fopen(file.dat,rb)=NULL) pri

21、ntf(the file2 cannot be found!n); exit (0); while(isum_1=0.0; p-shou_1=0.0; p-next=head-next; head-next=p; i+; fclose(fp); return(head);void show_price(NODE *head) /油价显示 NODE *p; int i; for(i=1;i=70;i+) printf(=); printf(n); printf(加油收费标准为:n); for(i=1;inext; for(i=1;iname1,p-price); p=p-next; for(i=

22、1;inext; while(p-next!=NULL)&(p-name1!=str1) p=p-next; if(p-name1!=str1) printf(error1!); else p-num=p-num+m; printf(工作完成!n); void sell(NODE *head) /油料销售 NODE *p; int str1; float m; printf(输入需求量:); scanf(%f,&m); switch(menu_2() case 1: str1=1; break; case 2: str1=2; break; case 3: str1=3; break; p=h

23、ead-next; while(p-next!=NULL)&(p-name1!=str1) p=p-next; if(p-name1!=str1)|(mp-num) printf(error2!); else p-num=p-num-m; p-shou=p-shou+m; p-s=p-price*m; p-shou_1=p-shou_1+m; p-sum=p-sum+p-s; p-sum_1=p-sum_1+p-s; printf(销售工作完成!n); void situation_1(NODE *head) / 统计近期销量并排名 NODE *q; int i=0,j,k; q=head-n

24、ext; while(q!=NULL) trui=q; q=q-next; i+; k=i; for(i=1;ik;i+) for(j=0;jsumtruj+1-sum) r=truj; truj=truj+1; truj+1=r; for(i=1;i=70;i+) printf(=); printf(n); printf(查看结果如下:n); for(j=0;jname1,truk-1-j-sum,truk-1-j-num,truk-1-j-shou); for(i=1;inext; printf(今日销售情况如下:n); while(iname1,p-shou_1,p-sum_1);p=p-next; i+; void write_in(NODE *head) /将近期销售信息写入文件 FILE *fp; NODE

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1