(C语言)换热器报价生成器设计报告
来源:互联网 发布:数据网关介绍 编辑:程序博客网 时间:2024/04/27 18:05
目录
1. 课题概述
1.1课题目标和主要内容
1.2系统的主要功能
1.2.1.功能列表
1.2.2 显示分项价格【以板片为例】
2. 系统设计
2.1 系统总体框架
2.2 系统详细设计
3. 程序运行结果分析
【附件】
1.源代码
(1). pay.c
(2). bar and pad.h
(3) . kuangjia.h
(4) . falan.h
(5) . pack.h
(6) . dituo.h
2. 价格表文件
(1) . 板片及垫片.txt
(2) . 框架.txt
(3) . 法兰.txt
(4) . 包装.txt
(5) . 底托.txt
源代码文件等
链接:http://pan.baidu.com/s/1bphcoRP 密码:bcpi
1. 课题概述
1.1课题目标和主要内容
根据选型结果自动生成报价开发平台:windows32系统运行平台:windows开发工具:Visual studio 2010
1.2系统的主要功能
1.2.1.功能列表
(1)报价:录入产品型号,输出总价格: Cost()函数实现 【注:换热器价格=板片价格(板片面积*板片单价)+框架价格+法兰价格+包装/底托价格】(2)显示分项价格:录入部件名称,输出相应的价目表格在屏幕上: view()函数实现
1.2.2 显示分项价格【以板片为例】
(1).从文件中读取数据存入链表:createlink_pad()函数实现 (2).输出链表数据到屏幕:outlink_pad(node_pad *head)函数实现
3.计算部件价格(用于作运算总价):
search_pad(node_pad *head,char type[])函数实现
2. 系统设计
2.1 系统总体框架
系统框架图或层次逻辑图
设计思想
1.通过输入的字符选择计算总报价或显示分项价格2.每个分项的函数里,将此分项的价格读取并保存到一个结构体里3.将结构体里的数据以表格的形式输出显示
2.2 系统详细设计
见附件
3.程序运行结果分析
【附件】
1.源代码
(1). pay.c
#include<stdio.h>#include<stdlib.h>#include<memory.h>#include"goodmorning.h"#include"bar and pad.h"#include"pack.h"#include"kuangjia.h"#include"dituo.h"#include"falan.h"typedef struct node { char data[20]; struct node *next;}node;void Cost()//算总价{ void extract(char all[],char impart[]); node *head; float cost_pad=0,cost_kj=0,cost_fl=0,cost_bz=0,cost_dt=0,cost_hrq=0; char type[10]; char vi_type[10]={0}; float pad_area; int i; char fl,bd; do { printf("input type : ");//型号 scanf("%s",type);//strcpy(type,"BP100B"); extract(type,vi_type);//得到vip型号 head=createlink_pad();//把pad的头指针给了head }while(iftype(head,type)==1); cost_pad=search_pad(head,type); do { printf("input pad_area (not 0): ");//板片面积 scanf("%f",&pad_area); }while(pad_area==0);//pad_area=2; head=createlink_kj(); cost_kj=search_kj(head,vi_type); printf("Do you want the 'FaLan'?(y/n)");//法兰 do { scanf("%c",&fl); fflush(stdin); if(fl=='y') { head=createlink_fl(); cost_fl=search_fl(head); } else if(fl=='n'); else { printf("please input right (y/n)\n"); } }while((fl=='y'||fl=='n')==0); do { printf("While one do you want,'BaoZhuang' or 'DiTuo'?(b/d)");//包装 或 底托 do { scanf("%c",&bd); fflush(stdin); if(bd=='b') { head=createlink_bz(); cost_bz=search_bz(head,type); } else if(bd=='d') { head=createlink_dt(); if(strcmp(type,"BP250B")==0) cost_dt=search_dt(head,type); else cost_dt=search_dt(head,vi_type); } else { printf("please input right (b/d)\n"); } }while((bd=='d'||bd=='b')==0); }while(cost_bz==1||cost_dt==1); cost_hrq = cost_pad*pad_area+cost_kj+cost_fl*4+cost_bz+cost_dt; printf("count cost %.2f %s\n",cost_hrq,type);}void view(){ node *head; char a[3]; scanf("%s",a); //printf("input the strname while you want view \n(pad/kj/fl/bz/dt)\n"); if(strcmp(a,"pad")==0) { head=createlink_pad(); outlink_pad(head); } else if(strcmp(a,"kj")==0) { head=createlink_kj(); outlink_kj(head); } else if(strcmp(a,"fl")==0) { head=createlink_fl(); outlink_fl(head); } else if(strcmp(a,"bz")==0) { head=createlink_bz(); outlink_bz(head); } else if(strcmp(a,"dt")==0) { head=createlink_dt(); outlink_dt(head); } else { printf("please input right strname\n"); view(); } printf("\n");}int main(){ int i; good(); printf("\nHello,"); for(;;) { printf("\n---------------------------------------------------\nWhat do you want to do?\n(input the NUMBER at the beginning at every sentence)\n\n"); printf("*1.calculate the cost of my hrq.\n*2.view the good table.\n*0.exit\n"); scanf("%d",&i); if(i==1) Cost(); if(i==2) { printf("input the tablename while you want view \n(pad/kj/fl/bz/dt)\n"); view(); } if(i==0) { printf("Goodbye\n"); return 0; } } system("pause"); return 0;}void extract(char all[],char impart[])//take vip type{ int i; for(i=0;i<strlen(all);i++) { if(all[i]>=48&&all[i]<=57) { if((all[i+1]>=48&&all[i+1]<=57)==0) { impart[i]=all[i]; break; } } impart[i]=all[i]; impart[i+1]='\0'; }}int iftype(node *head,char type[]){ node *p = head; int i,k,j; int in=0; for(i=1;p!=NULL;i++)//i=0 , because first chain is none { if(strcmp(type,p->data)==0)//找型号 { for(j=0;j<k+1;j++) { p=p->next; } in=0;//找到了型号就跳出,并返回0告知外部循环结束 break; } if(p->next==NULL) { printf("pad XingHao none\n"); in=1; } p=p->next; } return (in);}
(2). bar and pad.h
#include<stdio.h>7890#include<stdlib.h>#include<memory.h>typedef struct node_pad{ char data[20]; struct node_pad *next;}node_pad;//从文件中读取数据存入链表node_pad *createlink_pad(){ node_pad *head =(node_pad*)malloc(sizeof(node_pad)); char t[20]; node_pad *p; node_pad *q; p=q=head; FILE * r= fopen("板片及垫片.txt","r"); if(r==NULL) { printf("打开文件失败!"); return NULL; } while(fscanf(r,"%s",t)!=EOF) { q= (node_pad*)malloc(sizeof(node_pad)); strcpy(q->data,t); //q->data=t; p->next=q; p=q; } p->next=NULL; fclose(r); //printf("success"); return head;}//输出链表到屏幕和文件output.txtvoid outlink_pad(node_pad *head){ //printf("??\n"); node_pad *p=head->next; //FILE *w =fopen("output.txt","w"); int i=0; /*if(w==NULL) { printf("打开文件失败!"); return; }*/ while(p) { //输出链表节点数据到屏幕 i++; if(i%9==1) { printf("%-10s",p->data); //fprintf(w,"%-10s",p->data); p=p->next; } else { printf("%10s",p->data); //输出链表节点数据到文件output.txt //fprintf(w,"%10s",p->data); p=p->next; }② if(i%9==0) { printf("\n"); //fprintf(w,"\n"); } } //fclose(w); return;}// 查找特定元素数据float search_pad(node_pad *head,char type[])//总型号{ char b[10],a[10];//a是规格,b是型号 char hang[][20]={"304/0.5","304/0.6","316l/0.6","316L/0.6","TAI/0.5","TAI/0.6","nie","pjdpE/N"}; node_pad *p = head; int i,k,j; int in=0; float cost_pad=0; strcpy(b,type); do { printf("input pad-GuiGe : "); scanf("%s",a);//strcpy(a,"304/0.6"); for(i=0;i<(sizeof(hang)/sizeof(hang[0]));i++) { if(strcmp(a,hang[i])==0)//找规格 { k=i; in=0; break; } if(i==(sizeof(hang)/sizeof(hang[0]))-1) { printf("pad GuiGe none\n"); in=1; } } }while(in==1); for(i=1;p!=NULL;i++)//i=0 , because first chain is none { if(strcmp(b,p->data)==0)//找型号 { for(j=0;j<k+1;j++) { p=p->next; } printf("pad = %s\n",p->data); cost_pad = atof(p->data); break; } if(p->next==NULL) printf("pad XingHao none\n"); p=p->next; } //printf("%.4f\n",cost); return (cost_pad);}
(3). kuangjia.h
//#ifndef 框架_H_INCLUDED//#define 框架_H_INCLUDED#include<stdio.h>#include<stdlib.h>#include<memory.h>typedef struct node_kj { char data[20]; struct node_kj *next;}node_kj;//从文件中读取数据存入链表node_kj *createlink_kj(){ node_kj *head =(node_kj*)malloc(sizeof(node_kj)); char t[20]; node_kj *p; node_kj *q; p=q=head; FILE * r= fopen("框架.txt","r"); if(r==NULL) { printf("打开文件失败!"); return NULL; } while(fscanf(r,"%s",t)!=EOF) { q= (node_kj*)malloc(sizeof(node_kj)); //if(t[0]!=32) strcpy(q->data,t); p->next=q; p=q; } p->next=NULL; fclose(r); return head;}void outlink_kj(node_kj *head){ node_kj *p=head->next; node_kj *p2; char a[20]={0}; int i=0,j=0,o; while(p) { //输出链表节点数据到屏幕 i++; if(i==3) printf("\n "); if(i==9) printf("\n"); if(i<10) j=0; strcpy(a,p->data); //printf("%s",a); if(a[0]=='B') { p2=p->next; j=0; if(strcmp(p2->data,"/")==0) { printf("%-7s",p->data); printf("%s ",p2->data); p=p2->next; printf("%s\n",p->data); } else { printf("%-13s",p->data); printf("\n"); } } //else if(p->data[0]='/'); else { printf("%13s",p->data); } for(o=0;o<20;o++) a[o]=0; j++; //printf("%d.",j); if(j==8) { j=1; printf("\n"); } p=p->next; }}// 查找特定元素数据float search_kj(node_kj *head,char vi_type[]){ char a[10],b[20]="16",c[10]="50-100";//a 型号 b 公斤 c 片数 char padnum[][10]={"50片","50-100片","100-150片","150-200片","200-300片","300以上"}; node_kj *p = head,*temp; int i,j,k; int in=0,ing=0,inn=0,inx=0; float cost_kj; strcpy(a,vi_type); //printf("%d\n",sizeof(padnum)/sizeof(padnum[0])); do { for(i=0;p!=NULL;i++)//i=0 , because first chain is none { if(strcmp(a,p->data)==0)//找型号 { inx=0; temp=p; //printf("1 %s\n",p->data); do { do { //printf("%s_",p->data); p=temp;//归位 printf("input kuanfjia-gongjin(公斤以下)"); scanf("%s",b); strcat(b,"公斤以下"); while(p!=NULL) { if(strcmp(b,p->data)==0)//找公斤 { ing=0; //printf("2 %s\n",p->data); do { printf("input kuanfjia-pianshu(片) "); scanf("%s",c); strcat(c,"片"); for(j=0;j<sizeof(padnum)/sizeof(padnum[0]);j++) { //printf("%d\n",j); if(strcmp(c,padnum[j])==0)//找片数 { //printf("3 %s %d\n",padnum[j],j); for(k=0;k<j+1;k++) { p=p->next; } printf("cost of 'kj' = %s\n",p->data); if(strcmp(p->data,"----")==0) { inn=1; printf("intput again\n"); } else inn=0; cost_kj = atof(p->data); in=0; break;//片数 } if(j==5) { printf("KunagJia PianShu none\n");//片数不存在 in=1; } } }while(in==1);//片数 break;//公斤 } if(p->next==NULL) { printf("KuangJia GongJin none\n");//公斤不存在 ing=1; } p=p->next; } }while(ing==1);//公斤 }while(inn==1);//---- break;//型号 } if(p->next==NULL) { printf("KuangJia type none!! input agagin\n");//型号不存在 inx=1; } p=p->next; } }while(inx==1); return (cost_kj);}//#endif // 框架_H_INCLUDED
(4). falan.h
#include<stdio.h>#include<stdlib.h>#include<memory.h>typedef struct node_fl { char data[20]; struct node_fl *next;}node_fl;//从文件中读取数据存入链表node_fl *createlink_fl(){ node_fl *head =(node_fl*)malloc(sizeof(node_fl)); char t[20]; node_fl *p; node_fl *q; p=q=head; FILE * r= fopen("法兰.txt","r"); if(r==NULL) { printf("打开文件失败!"); return NULL; } while(fscanf(r,"%s",t)!=EOF) { q= (node_fl*)malloc(sizeof(node_fl)); strcpy(q->data,t); //q->data=t; p->next=q; p=q; } p->next=NULL; fclose(r); //printf("success"); return head;}//输出链表到屏幕和文件output.txtvoid outlink_fl(node_fl *head){ //printf("??\n"); node_fl *p=head->next; //FILE *w =fopen("output.txt","w"); int i; /*if(w==NULL) { printf("打开文件失败!"); return; }*/ for(i=1;p!=NULL;i++,p=p->next) { //输出链表节点数据到屏幕 if(i==1) { printf("%-7s",p->data); continue; } if(i<5&&i>1) { printf("%17s ",p->data); if(i==4) { printf("\n"); i=7; } continue; } if(i%7==1) { printf("%-7s",p->data); //fprintf(w,"%-10s",p->data); //p=p->next; } else { printf("%12s",p->data); //输出链表节点数据到文件output.txt //fprintf(w,"%10s",p->data); //p=p->next; } if(i%7==0) { printf("\n"); //fprintf(w,"\n"); } } //fclose(w); return;}// 查找特定元素数据float search_fl(node_fl *head){ char a[10]="DN40",b[20]="tangangPN1.6";//a是规格,b是材料 char hang[][20]={"tangangPN1.0","tangangPN1.6","304PN1.0","304PN1.6","316PN1.0","316PN1.6"}; node_fl *p = head; int i,k,j,inc=0,ing=0; float cost_fl; do { printf("input falan-cailiao : "); scanf("%s",b); for(i=0;i<(sizeof(hang)/sizeof(hang[0]));i++) { if(strcmp(b,hang[i])==0)//找材料 { inc=0; k=i; break; } if(i==(sizeof(hang)/sizeof(hang[0]))-1) { printf("FaLan CaiLiao none\n"); inc=1; } } }while(inc==1); do { p=head; printf("input falan-guige : "); scanf("%s",a); for(i=0;p!=NULL;i++)//i=0 , because first chain is none { if(strcmp(a,p->data)==0)//找规格 { ing=0; for(j=0;j<k+1;j++) { p=p->next; } printf("The cost of fl : %s\n",p->data); cost_fl = atof(p->data); break; } if(p->next==NULL) { printf("FaLan GuiGe none\n"); ing=1; } p=p->next; } }while(ing==1); return (cost_fl);}
(5). pack.h
#include<stdio.h>#include<stdlib.h>#include<memory.h>#define FN(a) for(n=0;n<(a);n++,p=p->next)//链表的指针移动步数typedef struct node_bz { char data[20]; struct node_bz *next;}node_bz;//从文件中读取数据存入链表node_bz *createlink_bz(){ node_bz *head =(node_bz*)malloc(sizeof(node_bz)); char t[20]; node_bz *p; node_bz *q; p=q=head; FILE * r= fopen("包装.txt","r"); if(r==NULL) { printf("打开文件失败!"); return NULL; } while(fscanf(r,"%s",t)!=EOF) { q= (node_bz*)malloc(sizeof(node_bz)); //if(t[0]!=32) strcpy(q->data,t); p->next=q; p=q; } p->next=NULL; fclose(r); return head;}void outlink_bz(node_bz *head){ node_bz *p=head->next; int i; for(i=1;p!=NULL;i++,p=p->next) { if(i<8) { printf("%12s |",p->data); if(i==7) { printf("\n"); i=14; continue; } } else { if(i%2==0) printf("%7s |",p->data); else printf("%7s",p->data); } if(i%14==0) { printf("\n"); } }}// 查找特定元素数据float search_bz(node_bz *head,char type[10]){ char a[10],b[10]="200㎡"; char num[][10]={"BP50B","BP50M","BP100B","BP100M","BP150B","BP150M","BP200M"}; node_bz *p = head,*temp; int i,j,k,n,inm=0,inz=0; int size_num = sizeof(num)/sizeof(num[0]);//半个行的元素数 float cost_bz; strcpy(a,type); //printf("%s %s \n",a,b); for(j=0;j<size_num;j++) { if(strcmp(a,num[j])==0)//找型号 break; if(j==size_num-1) { printf("BaoZhuang type none??!!\n"); inz=1; return (inz); } } FN(size_num*3+j*2+1);//从匹配型号下面积开始 temp=p; do { p=temp; printf("input BaoZuang area(㎡) "); scanf("%s",b); strcat(b,"㎡"); for(i=0;p!=NULL;i++) { if(strcmp(b,p->data)==0)//找面积 { inm=0; p=p->next; printf("baozhuang = %s\n",p->data); cost_bz = atof(p->data); break;//面积 } FN(size_num*2)//一次跳转一行 { if(p->next==NULL) { printf("BaoZhuang area none\n"); inm=1; p=p->next; break; } } } }while(inm==1); return (cost_bz);}
(6). dituo.h
#include<stdio.h>#include<stdlib.h>#include<memory.h>typedef struct node_dt { char data[20]; struct node_dt *next;}node_dt;//从文件中读取数据存入链表node_dt *createlink_dt(){ node_dt *head =(node_dt*)malloc(sizeof(node_dt)); char t[20]; node_dt *p; node_dt *q; p=q=head; FILE * r= fopen("底托.txt","r"); if(r==NULL) { printf("打开文件失败!"); return NULL; } while(fscanf(r,"%s",t)!=EOF) { q= (node_dt*)malloc(sizeof(node_dt)); strcpy(q->data,t); //q->data=t; p->next=q; p=q; } p->next=NULL; fclose(r); //printf("success"); return head;}//输出链表到屏幕和文件output.txtvoid outlink_dt(node_dt *head){ node_dt *p=head->next; int i; for(i=1;p!=NULL;i++) { if(i%6==1) { printf("%-10s",p->data); } else { printf("%10s",p->data); } if(i%6==0) { printf("\n"); } p=p->next; } return;}// 查找特定元素数据float search_dt(node_dt *head,char type[]){ char b[10]="BP100",a[10]="caogang";//a是材料,b是型号 char hang[][10]={"BP5","BP100","BP150","BP200","BP250B"}; node_dt *p = head; int i,k,j,inc=0,inx=0; int n = sizeof(hang)/sizeof(hang[0]); float cost_dt; strcpy(b,type); do { p=head; printf("input dituo-cailiao :"); scanf("%s",a); for(i=0;p!=NULL;i++)//i=0 , because first chain is none { if(strcmp(a,p->data)==0)//找材料 { inc=0; for(k=0;k<n;k++) { if(strcmp(b,hang[k])==0)//找型号 { inx=0; break; } if(k==n-1) { printf("DiTuo type none\n"); inx=1; return(inc) ; } } for(j=0;j<k+1;j++) { p=p->next; } printf("底托 = %s\n",p->data); cost_dt = atof(p->data); break; } if(p->next==NULL) { printf("DiTuo CaiLiao none\n"); inc=1; } p=p->next; } }while(inc==1); return (cost_dt);}
2.价格表文件
(1). 板片及垫片.txt
(2). 框架.txt
(3). 法兰.txt
(4). 包装.txt
(5). 底托.txt
- (C语言)换热器报价生成器设计报告
- 第一次C语言设计上机报告
- 第二次C语言设计上机报告
- 第二次c语言上机设计报告
- 第二次C语言设计上机报告
- 随机数生成器C语言
- C语言 破解字典生成器
- C语言中的随机数生成器
- Java语言设计模式之生成器(Builder)
- 网页设计报价
- 网页设计报价
- C语言上机报告
- C语言:打印输出矩阵生成器练习
- 郑州企业VI设计报价
- 生成器(Builder)设计模式
- 设计模式---生成器(Builder)
- C语言课程设计报告.doc
- 第一次C语言上机报告
- 操作系统:虚拟页式存储管理(缺页中断、页面置换算法)
- 先埋下一些坑,以后再填
- 【位运算符与逻辑运算符知识点】【二进制枚举子集】【just for 状压】
- LeetCode之Merge Two Sorted Lists
- MySql的学习
- (C语言)换热器报价生成器设计报告
- Codeforces Round #426 (Div. 2)The Meaningless Game(思维+二分)
- 开篇手记
- 递归求解C(n,m)
- codeforces 801C Voltage Keepsake 二分答案
- 广告公司内部流出版:互联网广告作弊的十八般武艺
- Eclipse下DFS Locations下显示的文件数为0
- Linux下Redis安装教程
- maven 版本冲突