版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、c 语言课程设计个人消费管理系统c 语言课程设计个人消费管理系统目 录 1 需求分析需求分析.1 1.1 问题描述.1 1.2 输入数据要求 .1 1.3 输出数据要求 .1 1.4 开发环境和工具 .1 1.5 成员分工 .1 2 总体设计总体设计.2 2.1 总体设计思路.2 2.2 模块结构图.2 2.3 模块说明.3 3 详细设计详细设计.4 3.1 数据类型定义.5 3.2 打开模块实现.6 3.3 更新模块实现.6 3.4 统计模块实现.74 测试结果及分析测试结果及分析.125 总结总结.17参考文献参考文献.18附录附录.19c 语言课程设计- 1 -1 需求分析需求分析1.1
2、 问题描述问题描述随着社会经济的发展,大学生已经成为这个社会上一个很重要的团体,而他们的消费情况也越来越多的被更多的人关注,大学生自己也应当管理好自己的消费内容,让自己的消费更加合理化,提高自己生活的质量。在这种情况下,就需要一个软消费表信息:编号,时间,类别,品名,单价,数量,金额对学生每天的消费情况作一个较为详细的统计,该系统可以实现由计算机代替人工执行一些复杂而且较为繁琐的操作,从而使大学生们能够更为便捷地管理自己的消费,也为其他的一些调查研究提供了方便。1.2 输入数据要求输入数据要求可录入消费者当天的消费情况,消费表信息包括:编号,时间,类别,品名,单价,数量,金额消费信息存放在文件
3、中,以编号的先后顺序存放1.3 输出数据要求输出数据要求打开:显示文件中的所有消费记录,提供分页显示保存:将消费表的更新结果存入文件更新:可插入、删除、修改各消费记录查找:按时间,类别、品名查找消费记录排序:按时间,类别,金额统计:求各类别消费品的总金额,求各月的消费总金额,求各年消费总金额1.4 开发环境和工具开发环境和工具开发环境:windows 2000开发工具:visual c+ 6.01.5 成员分工成员分工刘倩钰:主函数模块,保存模块,排序模块刘冬梅:打开模块,更新模块,数据统计模块c 语言课程设计- 2 -2 总体设总体设计计2.1 总体设计思路总体设计思路1. 设计思路设计思路
4、个人消费系统管理包含的操作有:打开、保存、更新、查找、排序和统计。在程序开始运行的时候从文件加载已有数据,并输出可以进行的操作提供给用户,1、打开:显示文件中的所有消费记录,通过取模运算提供分页显示功能2、保存:以 wb 模式打开文件,将修改的内容写入文件3、更新:可插入、删除、修改各消费记录4、查找:按时间,类别、品名查找消费记录5、排序:按时间,类别,金额6、统计:分别按类别、月、年统计消费品的总金额2. 数据存储数据存储为了操作的方便,用 typedef 自定义了一些数据类型,其中包含一个长度为 max 的数组,用来存放从文件中读取的数据。2.2 模块结构图模块结构图根据需求将系统划分为
5、六个功能模块,函数之间的调用关系如图 2.1 所示。图 2.1 个人消费系统的模块结构图 main主函数 showtotal统计 calleditupdaterec更新 sortrec排序 findrec查找 saverec保存 showrec打开c 语言课程设计- 3 -calledit:在主函数的控制下,调用各个模块1)showrec: 输出已存在的记录。2)saverec:保存更新的内容。3)updaterec: 按一定的方式更新记录。这个模块下包含三个子模块 插入:insert 删除: deletebynum 修改:modify 4)findrec: 按一定的方式查找记录。 这个模块下
6、也包含三个子模块 按日期查找:findbytime 按类型查找:findbytype 按名称查找: findbyname 5)sortrec: 按一定的方式查找记录。 这个模块下也包含三个子模块 按日期查找:sortbytime 按类型查找:sortbytype 按名称查找: sortbysum6)showtotal: 显示各种统计的结果2.3 模块说明模块说明(以从上至下,从左至右的顺序说明)2.3.1:打开模块:打开模块:自定义函数:showrec( )函数功能:输出已存在的历史记录 无参函数:无参数2.3.2:更新模块:更新模块:自定义函数:updaterec( ) 函数功能: 可对输入
7、数据实现插入,删除,修改操作。无参函数:void 类型,无返回值。调用 insert()函数,delete()函数和modify() 插入模块:自定义函数:插入模块:自定义函数: insert()()c 语言课程设计- 4 - 函数功能:实现插入新的信息并保存到记录中,其中插入的数据最后金额可以自己运算出来,插入的记录保存在尾部。 无参函数:返回值为 int 类型 删除模块:自定义函数删除模块:自定义函数; removebynum(int num) 函数功能:对所选信息按编号删除,删除过后,后面记录到编号将全部减 1,记录的编号即下标。 输入参数:int 类型,返回
8、值是 int 类型。num-int 类型,表示 define.h 文件中定义的类型 rec_con 中数组 record的下标,删除过后,后面记录到编号将全部减 1,记录的编号即下标。后面的记录全部向前移动一个距离。 修改模块:自定义修改函数:修改模块:自定义修改函数:modify() 函数功能:按名称修改记录,先判断要查找的名称所对应的记录是否存在,不存在则直接返回。 无参函数:返回值为 int 型2.3.3:统计模块:统计模块:函数原型:函数原型:showtotal( ) 函数功能:显示统计结果无参函数:void 类型,无返回值。 按类型统计:按类型统计:sho
9、wtype( )函数功能:按类型显示统计结果无参函数; void 类型,无返回值。 按月显示统计结果:按月显示统计结果:函数原型函数原型:showmonth() 函数功能:忽略了年,按月显示统计结果无参函数:void 类型,无返回值。 按年显示统计结果按年显示统计结果:函数原型函数原型:showyear() 函数功能:按年显示统计结果无参函数:void 类型,无返回值。c 语言课程设计- 5 -3 详细设计详细设计3.1 数据类型定义数据类型定义关键数据都定义在关键数据都定义在 define.h 里里#define max 100 /人为定义的一个上限typedef
10、 struct / 定义记录结构体,并重新命名类型名int num; /编号char times11; /时间char types20; /类别char name20; /品名double price; /单价int quantity; /数量double sum; /金额rec;typedef struct / 定义操作结构体,并重新命名类型名rec recordmax+1; /定义结构体变量,可操作的记录总数,下标为 0 和 max 不存放记录int total_count; /整型变量,记录总数rec_con,*prec_con;union /定义一个查找时使用的共用体char time
11、s11; /存放按时间查找时输入的时间char types20; /存放按类型查找时输入的类型char name20; /存放按名称查找时输入的名称found;c 语言课程设计- 6 -/下面三个变量都是全局变量file *fp; /定义文件指针rec_con rs; /用来定义变量,避免了动态分配中的安全问题prec_con records=&rs; /定义操作指针变量int type_count=0; /记录里相关的类型数目int year_count=0; /记录里相关的年数目char *ptypemax+1; /字符型变量,记录里相关的类型char pyearmax+15; /字符型变
12、量,记录里相关的年char tmp5; /字符型变量,取年份所用char tmp015,tmp025; /存放 get4 的返回值,在比较时使用char c; /字符型变量,临时使用变量,没有固定的限制3.2 showrec 模块实现模块实现1.算法思想算法思想:按编号, 时间,类别,品名,单价,数量,金额的顺序打开文件,并显示结果。其中提供分页显示功能。2.具体实现:具体实现:void openfile() /打开文件函数,以二进制append形式操作if(fp=fopen(consum,ab+)=null)printf(file open fail!n);return ;void show
13、i(int i) /根据i值输出记录printf(记录:nn); printf(n编号 时间 类别 品名 单价 数量 c 语言课程设计- 7 -金额 n);printf(%-5d% -10s%15s%15s %8.2f%5d%8.2fn,records-recordi.num,records-recordi.times,records-recordi.types,,records-recordi.price,records-recordi.quantity,records-recordi.sum);int showrec() /显示所有记录int i;f
14、or(i=1;itotal_count;i+)printf(%-5d%-10s%15s%15s%8.2f%5d%8.2fn,records-recordi.num,records-recordi.times,records-recordi.types,,records-recordi.price,records-recordi.quantity,records-recordi.sum);if(i%10)=0) /实现分页功能printf(press any key show next pagen);getchar();/cls();return 1;3.
15、3 更新模三个块:更新模三个块:更新包括内容;插入,删除,查找1.算法思想:算法思想:利用三个自定义函数:int insert() /插入函数,int deletebynum() /按编号删除,int modify() /按名称修改记录。插入过程用max控制插入信息的范围;删除时按编号删除,删除过后,后面记录到编号将全部减1,记录的编号即下标。修改时c 语言课程设计- 8 -先利用int findbyname(char *name);按名称查找记录函数,找到相关信息,若无此信息直接跳转,否则修改。2.具体实现:具体实现:int insert() /插入函数if(records-total_co
16、unt=(max-1)printf(数据已达可控范围,不能再插入!n); return 0;int i=(+records-total_count);records-recordi.num=i; /编号是连续的, printf(n 时间 类别 品名 单价 数量 金额 n);scanf(%s%s%s%lf%d,records-recordi.times,records-recordi.types,,&records-recordi.price,&records-recordi.quantity);if(strlen(records-recordi.time
17、s)!=10|records-recordi.times4!=-|records-recordi.times7!=-) /简单的判断一下日期是否符合格式要求printf(时间格式错误,请重试!n);records-total_count-;return 0;records-recordi.sum = records-recordi.price * records-recordi.quantity; /金额是计算所得#ifdef debugc 语言课程设计- 9 -showi(i);#endifreturn 1;int removebynum(int num) /删除过后,后面记录到编号将全部减
18、1,记录的编号即下标int i;if(numrecords-total_count)printf(位置错误!n);return 0;for(i=num;itotal_count;i+) /i后面的记录全部向前移动一个距离records-recordi.num=records-recordi+1.num-1;strcpy(records-recordi.times,records-recordi+1.times);strcpy(records-recordi.types,records-recordi+1.types);strcpy(,records-re
19、cordi+1.name);records-recordi.price=records-recordi+1.price;records-recordi.quantity=records-recordi+1.quantity;records-recordi.sum=records-recordi+1.sum;return 1;int deletebynum() /按编号删除c 语言课程设计- 10 -int num;printf(请输入要删除记录的编号:);scanf(%d,&num);if(!(removebynum(num)printf(程序执行错误,删除失败!n);return 0;els
20、ereturn 1;int findbyname(char *name); /声明按名称查找记录函数,下面就要使用到int modify() /按名称修改记录 int i;char names20;printf(请输入要修改的记录名称:);scanf(%s,names);i=findbyname(names);if(!i) /判断要查找的名称所对应的记录是否存在,不存在则直接跳转return 0;printf(请输入所需信息:n);printf(n 时间 类别 品名 单价 数量 金额 n);scanf(%s%s%s%lf%d,records-recordi.times,records-c 语言
21、课程设计- 11 -recordi.types,,&records-recordi.price,&records-recordi.quantity);records-recordi.sum = records-recordi.price * records-recordi.quantity;return 1;3.4 showtotal 模块实现模块实现showtotal 包括三种方式:类型、月、年,以类型为例说明1、算法思想、算法思想为确保不会溢出,保存统计结果的 total 数组定义长度为 max,接下来对记录集进行遍历,并与ptype数组中统计的类型
22、进行比对,按照对应的下标将统计结果加到 total数组中,这样做便于输出时一一对应。(复杂算法用流程图辅助说明)2、具体实现、具体实现(给出实现算法的关键代码)按类型显示统计结果void showtype() int i=1,j=0;double totalmax=0.0; /定义保存统计结果的数组while(itotal_count&jrecordi.types)=0)totalj += records-recordi.sum;i+;else j+;/输出统计结果c 语言课程设计- 12 -printf(按类型统计结果如下:n); for(i=0;itype_count;i+)printf(
23、%s:t%8.2fn,ptypei,totali);printf(n);4 测试结果及分析测试结果及分析1.1. 打开程序,进入主界面打开程序,进入主界面2.2. 输入输入“1”“1” ,打开历史消费记录:,打开历史消费记录:3.3. 输入输入“1”“1” ,测试更新模块:,测试更新模块:c 语言课程设计- 13 -4.输入输入“1” ,插入信息数据:,插入信息数据:5.输入输入“2” ,按编号删除数据:,按编号删除数据:c 语言课程设计- 14 -6.输入输入“3” ,修改历史信息,修改历史信息;7.输入输入“0” ,返回主菜单:,返回主菜单:c 语言课程设计- 15 -8.输入输入“6”
24、,测试统计结果;,测试统计结果;9. 输入“1”,按类别统计结果:c 语言课程设计- 16 -10,输入“2”,按月显示统计结果:10. 输入“3”,按年显示统计结果:c 语言课程设计- 17 -5.总结总结为期四天的课程设计结束了,其中的酸甜苦辣恐怕只有经历过的人才会懂得。其实课程设计的题目老师很早就发下来了,但由于自己时间观念不强,没有提前准备,所以搞得开始做的时候发现很多东西都不会,又临时学占用了很多时间。下次一定要吸取教训,不能临时抱佛脚啊!此次课程设计虽然很难,但也让我学到了很多东西。它让我学会的不仅仅是怎么去编一个大的程序,更让我学会了怎样去开始做一件事,怎样规划自己的时间做好一件
25、事。刚开始看到提示真的是一片茫然,不知如何下手,然后经过自己上网查阅和看了一些课程设计的书之后渐渐有了一点眉目。这些对我的自学能力锻炼很大。另外,在编程过程中也遇到了很多很多的问题,比如统计模块的数组元素定义错误导致结果不能运行,等等、 、我知道自己在 c 这条路上还有很长的路要走,但这次得课程设计无疑给了我更加坚定走下去的信心,他让我体会了迷茫,烦躁,痛苦、 、 、但它也让我学会了淡定,从容,坚持、 、 、它带给我四个晚上熬夜到两点半的记录,它也带给了我看到程序运行出结果的喜悦、 、 、程序中的各种各样的错误曾经让我失望甚至绝望,想放弃,但同组的我们相互鼓励视乎又看到了希望、 、 、在这次设
26、计中还请教了几c 语言课程设计- 18 -个学计算机的高中同学,这让我学会了要善于向他人求助,同时好久没联系的同学通过这次设计也加强了我们的联系。我认为这次课程设计对我们的锻炼很大,它处在离考试只有三四天的时候,这么紧迫的时刻有这么短的时间,这大大的锻炼了我们的时间安排能力和不急不躁心态。另外程序中还有很多不完善的地方,希望以后加强学习能够将其改正至臻完善吧。非常感谢这次设计中给我们帮助的同学,学长和老师!6.参考文献:参考文献:参考文献:1谭浩强等.c 语言程序设计教程.北京:高等教育出版社,1997.2谭浩强.c 程序设计.第 2 版.北京:清华大学出版社,1999.3徐士良.c 程序设计
27、教程附录附录主函数源程序代码:主函数源程序代码:#include#include#include#include#includedefined.h#includearc.hint main(void)int chioce; /开始的时候使用 char 试了一下,有些功能不能实现records-total_count=0;#ifdef debugprintf(jskdljf:%dn,records-total_count);#endifvoid calledit(int chioce); /声明中间过程函数openfile(ab+); /打开文件并初始化数组,即加载数据while(!feof(f
28、p)c 语言课程设计- 19 -fread(&records-record+rs.total_count,sizeof(rec),1,fp); /record0中并不存放记录数据,以后作为查找到前哨站fclose(fp);#ifdef debugprintf(jskdljf:%dn,records-total_count);showrec();#endifwhile(1) /用一个死循环实现循环操作,只有选择退出的时候才退出system(cls);printf(-消费记录系统-n);printf(1-打开n);printf(2-保存n);printf(3-更新n);printf(4-查找n);
29、printf(5-排序n);printf(6-统计n);printf(other-退出n); printf(请输入操作序号:);scanf(%d,&chioce);system(cls);if(chioce6|chioce1)break;elsecalledit(chioce); /调用中间过程函数return 0;void calledit(int chioce)void updaterec();void findrec();void sortrec();switch(chioce)case 1:showrec();break;case 2:saverec();break;case 3:c
30、语言课程设计- 20 -updaterec();break;case 4:findrec();break;case 5:sortrec();break;case 6:showtotal();break;default:break;return ;void updaterec()int mc;while(1)printf(1-插入n);printf(2-删除n);printf(3-修改n);printf(0-离开n);printf(请选择:);scanf(%d,&mc);if(mc=1)insert();else if(mc=2)deletebynum();else if(mc=3)modify
31、();else if(mc=0)break;elseprintf(输入有误,请重试!n);continue;scanf(%c,&c);c 语言课程设计- 21 -void findrec()int mc;int i;while(1)printf(1-按时间查找n);printf(2-按类型查找n);printf(3-按名称查找n);printf(0-离开n);printf(请选择:);scanf(%d,&mc);if(mc=1)printf(请输入时间(format:2011-12-31):);scanf(%s,found.times);if(strlen(found.times)!=10|f
32、ound.times4!=-|found.times7!=-) /简单的判断一下日期是否符合格式要求printf(时间格式错误,请重试!n);continue;i=findbytime(found.times);if(i)showi(i);else if(mc=2)printf(请输入类型:);scanf(%s,found.types);i=findbytype(found.types);if(i)showi(i);else if(mc=3)printf(请输入名称:);scanf(%s,);i=findbyname();c 语言课程设计- 22 -if
33、(i)showi(i);else if(mc=0)break;elseprintf(输入有误,请重试!n);continue;scanf(%c,&c);system(cls);void sortrec()int mc;while(1)printf(1-按时间排序n);printf(2-按类型排序n);printf(3-按金额排序n);printf(0-离开n);printf(请选择:);scanf(%c,&mc);if(mc=1)sortbytime();else if(mc=2)sortbytype();else if(mc=3)sortbysum();else if(mc=0)break;
34、elseprintf(输入有误,请重试!n);continue;scanf(%c,&c);system(cls);define.hdefine.h文件代码文件代码:c 语言课程设计- 23 -#define max 100 /人为定义的一个上限/#define debug /控制调试信息的输出typedef structint num; /编号char times11; /时间char types20; /类别char name20; /品名double price; /单价int quantity; /数量double sum; /金额rec;typedef structrec record
35、max+1; /可操作的记录总数int total_count; /记录总数rec_con,*prec_con;union char times11; char types20; char name20; found;/下面三个变量都是全局变量file *fp; /定义文件指针rec_con rs; prec_con records=&rs; /定义指针变量int type_count=0; /记录里相关的类型数目int year_count=0; /记录里相关的年数目char *ptypemax+1; /记录里相关的类型char pyearmax+15; /记录里相关的年char tmp5;
36、 /取年份所用char c; /使用频率很高的一个变量,后来好像又没声明用了,先放着吧arc.h 文件代码文件代码:#includevoid openfile(char * mode) /打开文件函数,以二进制append形式操作if(fp=fopen(consum,mode)=null)printf(file open fail!n);c 语言课程设计- 24 -return ;void showi(int i) /根据i值输出记录printf(记录:%-5d%-10s%15s%15s%8.2f%5d%8.2fn,records-recordi.num,records-recordi.tim
37、es,records-recordi.types,,records-recordi.price,records-recordi.quantity,records-recordi.sum);int showrec() /显示所有记录int i;printf(tt-打印记录-nn);printf(编号t 日期tt 类型t 名称t 单价 数量t 金额n);for(i=1;itotal_count;i+)printf(%-5d %-10s%15s%15s%8.2f%5d %8.2fn,records-recordi.num,records-recordi.tim
38、es,records-recordi.types,,records-recordi.price,records-recordi.quantity,records-recordi.sum);if(i%9)=0) /实现分页功能printf(press any key show next page);getchar();getchar(); /不明白这里为什么非要两次getchar()?system(cls); printf(tt-打印记录-nn);printf(编号t 日期tt 类型t 名称t 单价 数量t 金额n);printf(press any ke
39、y into main menu);return 1;int saverec() /保存更新int i;openfile(wb);for(i=1;itotal_count;i+)fwrite(&records-recordi,sizeof(rec),1,fp);c 语言课程设计- 25 -fclose(fp);return 1;int insert() /插入函数if(records-total_count=(max-1)printf(数据已达可控范围,不能再插入!n); return 0;int i=(+records-total_count);records-recordi.num=i;
40、/编号是连续的,1nprintf(请输入所需信息(顺序为:时间,类别,品名,单价,数量):);scanf(%s%s%s%lf%d,records-recordi.times,records-recordi.types,,&records-recordi.price,&records-recordi.quantity);if(strlen(records-recordi.times)!=10|records-recordi.times4!=-|records-recordi.times7!=-) /简单的判断一下日期是否符合格式要求printf(时间格式错
41、误,请重试!n);records-total_count-;return 0;records-recordi.sum = records-recordi.price * records-recordi.quantity; /金额是计算所得#ifdef debugshowi(i);#endifreturn 1;int removebynum(int num) /删除过后,后面记录到编号将全部减1,记录的编号即下标int i=num;if(numrecords-total_count)printf(位置错误!n);return 0;#ifdef debugshowi(i);#endiffor(i=
42、num;itotal_count;i+) /i后面的记录全部向前移动一个距c 语言课程设计- 26 -离records-recordi.num=records-recordi+1.num-1;strcpy(records-recordi.times,records-recordi+1.times);strcpy(records-recordi.types,records-recordi+1.types);strcpy(,records-recordi+1.name);records-recordi.price=records-recordi+1.pric
43、e;records-recordi.quantity=records-recordi+1.quantity;records-recordi.sum=records-recordi+1.sum;records-total_count-;return 1;int deletebynum() /按编号删除int num;printf(请输入要删除记录的编号:);scanf(%d,&num);if(!(removebynum(num)printf(程序执行错误,删除失败!n);return 0;elsereturn 1;int findbyname(char *name); /声明按名称查找记录函数,
44、下面就要使用到int modify() /按名称修改记录int i;char names20;printf(请输入要修改的记录名称:);scanf(%s,names);i=findbyname(names);if(!i) /判断要查找的名称所对应的记录是否存在,不存在则直接跳转return 0;printf(请输入所需信息(顺序为:时间,类别,品名,单价,数量):);scanf(%s%s%s%lf%d,records-recordi.times,records-recordi.types,,&records-recordi.price,&records-
45、recordi.quantity);records-recordi.sum = records-recordi.price * records-recordi.quantity;c 语言课程设计- 27 -#ifdef debugshowi(i);#endifreturn 1;int findbytime(char *times) /按时间查找记录int i=1;strcpy(records-recordrecords-total_count+1.times,times);while(strcmp(records-recordi.times,times)!=0)i+;if(i=records-
46、total_count+1)printf(记录不存在!n);return 0;elsereturn i;int findbytype(char *types) /按类型查找记录int i=1;strcpy(records-recordrecords-total_count+1.types,types);while(strcmp(records-recordi.types,types)!=0)i+;if(i=records-total_count+1)printf(记录不存在!n);return 0;elsereturn i;int findbyname(char *name) /按名称查找记录
47、int i=1;strcpy(records-recordrecords-total_count+1.name,name);while(strcmp(,name)!=0)i+;if(i=records-total_count+1)printf(记录不存在!n);return 0;c 语言课程设计- 28 -elsereturn i;char * get4(char times) /获取时间字段的前四位,即年份tmp0=times0;tmp1=times1;tmp2=times2;tmp3=times3;tmp4=0;return tmp;int sort
48、bytime() /按时间排序rec rectmp;int i,j,t;for(i=1;itotal_count;i+)for(j=i+1,t=i;jtotal_count;j+)if(strcmp(records-recordt.times,records-recordj.times)0)t=j;rectmp=records-recordt;records-recordt=records-recordi;records-recordi=rectmp;#ifdef debugshowrec();#endifyear_count=1;strcpy(pyear0,get4(records-reco
49、rd1.times);for(i=1;itotal_count;i+)if(strcmp(get4(records-recordi.times),get4(records-recordi+1.times)=0) /there is something wrong,还有最后一个bug,就在这里continue;elsestrcpy(pyearyear_count+,get4(records-recordi+1.times); /遇到不同的年份,把最新的存储进来#ifdef debugprintf(nfrom sortbytimen);c 语言课程设计- 29 -for(i=0;iyear_count;i+)printf(%st,pyeari);printf(n);#endifreturn 1;int sortbytype() /按类型排序rec rectmp;int i,j,t;for(i=1;itotal_count;i+)for(j=i+1,t=i;jtotal_count;j+)if(strcmp(records-recordt.types,records-recordj.types)0)t=j;rectmp=records-recordt;records-recordt=records-recordi;records-recordi=rectmp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024绿化带杂草管理协议样本
- 2024年适用租车服务协议综合范例
- 2024年工程项目食堂供应承包协议
- 2024年土建工程协议示范文本
- 2024在线支付安全规范SET协议
- 2024年个人贷款协议模板大全2
- 医生聘用合同的岗位职责
- 2024年师徒合作协议范本下载
- 2024年度西安二手房销售协议模板
- 2024年金融领域反担保协议参考样式
- 农村电商知到章节答案智慧树2023年西昌学院
- 2023年江苏省数学竞赛初赛试题原题详解
- 酒精(乙醇)安全技术说明书(MSDS)
- 食品生产质量手册
- 《建设项目全过程造价咨询规程27188307》课件
- 数控刀具切削山高seco中文turning cn2007lr
- m301样车nvh改进方案
- 新鲁科版三年级英语上册全册教案教学设计(鲁教版)
- 产品技术信息-电芯规格书
- JJG 1036-2022电子天平
- GB/T 26704-2022铅笔
评论
0/150
提交评论