有代码-信管一班-蓝俊杰-单位仪器设备基本信息管理软件设计_第1页
有代码-信管一班-蓝俊杰-单位仪器设备基本信息管理软件设计_第2页
有代码-信管一班-蓝俊杰-单位仪器设备基本信息管理软件设计_第3页
有代码-信管一班-蓝俊杰-单位仪器设备基本信息管理软件设计_第4页
有代码-信管一班-蓝俊杰-单位仪器设备基本信息管理软件设计_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计课程名称程序设计课程设计班级与班级代码2011级信息管理1班专业信息管理指导教师:胡玉平姓名:蓝俊杰提交日期:2012年6月23日广东商学院教务处制姓名蓝俊杰课程设计成绩评语:评价内容不及格及格中良优表达精练,格式准确,根本无错别字内容完整,思路清晰,结构严谨,设计科学,可操作性强程序能完成课程设计任务书所规定的任务,功能完善,独立分析和解决问题能力较好。代码简洁,算法清晰,可读性强无抄袭现象且课程设计报告体会深刻指导教师〔签名〕年月日说明:指导教师评分后,课程设计交院〔系〕办公室保存。课程设计报告正文的内容及排版要求标题:单位仪器设备根本信息管理软件设计1系统功能要求:(一级标题:黑体、四号)内容:单位仪器设备根本信息管理软件设计:采用结构体数组或文件形式存储每种设备的信息,每个仪器设备应包含如下几方面的信息:设备编号、设备名称、设备单价、购进年代、生产厂家、该设备数量、可用性。软件由主函数〔含欢送界面〕+以下5个功能模块组成:〔1〕购进功能〔被购进设备数量增x〕;〔2〕显示已有设备;〔3〕报废功能〔对“可用性”信息为“否”的设备报废,被报废设备数减x〕;〔3〕查找功能〔需指定设备号或设备名〕;〔5〕统计功能〔统计每种设备可用数、不可用数〕;〔6〕退出程序的运行。2系统总体设计思想〔1〕开发与设计的总体思想内容例如:单位仪器设备根本信息管理软件算法说明:STEP1预处理,定义结构体STEP2进入欢送界面STEP3选择某一种功能STEP4根据提示输入一个数字STEP5对于输入的数字编辑关于购进、报废、查找、统计功能的函数STEP6如果输入的字母表示退出,退出系统〔2〕系体模块结构图欢送界面主菜单欢送界面主菜单购进设备 查找设备 报废设备 修改设备 显示程序 保存设备退出读取设备退出读取设备〔3〕系统文件及函数组成、功能(参考P154的表12-1)源文件函数名或其他成分功能facility.cmain总控函数select菜单项选择择menu_select菜单处理quit结束运行Facility_add_sum.cshowTable打印表头show显示所有的设备信息addfacility在表尾追加信息facility_Modify_remove.cfindRecord查找到指定的信息seekfacility查询指定设备的信息removefacility报废设备modifyfacility修改设备facility.h常数提供常数结构声明设备结构库函数及函数原型声明引用库函数及函数facility_save_load.csaveRecords存储信息loadRecords读取信息3系统详细设计思想〔1〕函数的描述内容包括:分模块〔函数〕简述其功能;函数中使用的各变量的类型及作用等〔可参考材P155的写法〕。1.显示所有设备信息函数函数原型:voidshow(void)功能:显示内存里的记录信息参数:void返回值:void工作方式:从头部开始逐个显示记录内容。要求:报告是否有记录及记录条数和内容。2.购进设备函数函数原型:voidaddfacility(void)功能:增加记录参数:void返回值:void工作方式:从尾部开始逐个追加记录。要求:将新记录追加在记录尾部,并对记录进行计数。3.显示所有设备信息函数函数原型:voidshowTable(void)功能:输出表头信息参数:void返回值:void工作方式:输出一行表头信息。要求:输出一行表头信息。4.报废设备函数函数原型:voidremovefacility(void)功能:把所选的仪器报废,被报废设备数减x。参数:void返回值:void工作方式:根据给定的关键字,查找符合的记录并将报废的设备删除。要求:将报废的设备数减去。5.显示所有设备信息函数函数原型:intfindRecord(char*target,inttargetType,intfrom)功能:查找指定的记录参数:char*target:欲查找记录的某一项与target相同返回值:inttargetType:说明通过哪项来查找,0为编号,1为名称。intfrom:从第from个记录开始找。工作方式:根据给定的关键字,查找符合记录的序号。要求:找不到那么返回-1.6.查询指定设备的信息函数函数原型:voidseekfacility(void)功能:查询指定设备的信息参数:void返回值:void工作方式:可以按照编号、名称来查询要求: 打印查询到的设备的信息7.修改设备信息函数原型:voidmodifyfacility(void)功能:修改指定设备的信息参数:void返回值:void工作方式:修改设备的信息要求:报告是否有记录及记录条数和内容8、文件存储操作函数函数原型:intsaveRecords(void)功能:把信息存储进指定文件中参数:int返回值:void工作方式:输入文件名字并保存要求:有空间存储9、文件读取操作函数函数原型:intloadRecords(void)功能:从指定文件中读取出的记录参数:int返回值:void工作方式:输入已经存在的文件名字来读取文件中的信息要求:已经存在文件可供读取10.主函数函数原型:intmain()功能:控制程序参数:void返回值:void要求:管理菜单命令并完成初始化11.菜单处理函数函数原型:voidselect(void)功能:处理选择的菜单命令参数:void返回值:void工作方式:根据命令,调用相应函数要求:给出结束信息12.菜单项选择择函数函数原型:intmenu_select()功能:接收用户选择的命令代码参数:void返回值:int工作方式:返回命令代码的整数值要求:只允许选择规定键,如果输入不合要求,那么提醒用户重新输入13.结束程序运行函数函数原型:voidquit(void)功能:结束程序运行参数:void返回值:void工作方式:根据要求决定在退出前是否将修改的记录存入文件要求:结束运行之前,询问是否对修改的记录进行存储14.头文件函数原型:device.h功能:声明函数原型,包含文件及自定义宏和数据结构参数:void返回值:void要求:报告是否能正常翻开文件执行存入操作及存入记录的条数15、文件〔2〕主要函数流程图1.voidaddfacility(void)2.voidselect(void)3.voidshow(void)4.intfindRecord(char*target,inttargetType,intfrom)5.voidremovfacility(void)6.voidmodifyfacility(void)调试结果:〔1〕欢送界面:输入密码〔2〕功能选择菜单〔3〕购进新设备功能而在于设备数量大于100台和小于100台的处理上,大于100台那么直接输入可用设备的数目,而对于小于100台,那么逐台输入每台的可用性不可用性。〔4〕显示已有设备〔5〕报废设备报废功能也可以按照名字和编号来报废,报废前还会打印出将要被报废的设备信息再一次询问操作者是否要删除该设备。〔6〕查找设备按编号查找按设备名称查找〔7〕保存设备信息〔8〕读取设备信息本人在程序设计中感想本人在程序设计的课程设计中感受到:很多的函数设计与学生管理系统还是有挺大的差异的。通过设置密码可改变背景和字体颜色的设计,让我懂得了C语言还是有很多我没有了解到的地方,通过互联网上的资源我们可以懂得的更多。而遇到不懂的地方就要耐心的读懂,实在不懂的就要谦虚地问同学和老师,例如在程序设计过程中scanf语句与getchar()语句混搭容易出现跳句,需要不断的修改来完善。将保存文件语句和读取文件语句穿插也需要注意,当记录为0时直接调用saveRecord()语句是保存不了的,所以需要再修改。通过实验让我更加深刻学习到了C语言的好处。5结束语C语言的程序设计实验的成功实验,靠得不仅仅是自己的努力,还有同学的帮助,当然最重要的还是老师的耐心解答。参考文献[1]谭浩强,C程序设计〔第二版〕,北京:清华大学出版社,2001.1〔左对齐,宋体,五号〕[2]陈朔鹰,C语言程序设计习题集,北京:人民邮电出版社,2003.6facility.h#ifndefH_STUDENT_HH//如果没有定义H_STUDENT_HH,继续执行#defineH_STUDENT_HH//定义H_STUDENT_HH,可防止重复编绎#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>//头文件包含#defineINITIAL_SIZE5 //数组初始大小#defineINCR_SIZE5 //数组每次增加的大小//可根椐系统使用需要的常量定义structfacility_info{ charnumber[20]; //设备编号 charname[20]; //设备名称 charmanufactory[20];//设备生产厂家 charyear[20];//设备购进年代 floatgetnumbers;//设备购进数目floatusable;//可用设备 floatprice;//设备单价};typedefstructfacility_infoSBInfo;//定义一个类型名SBInfo代表定义的结构体shebei_infoexternintnumStus; //记录的设备数externSBInfo*records; //记录设备信息的数组指针externintarraySize; //数组大小externcharsavedTag;//共享的全局变量定义voidselect(void);intmenu_select(void);voidaddfacility(void);voidmodifyfacility(void);voidshow(void);voidseekfacility(void);voidremovefacility(void);voidquit(void);voidshowTable(void);intfindRecord(char*target,inttargetType,intfrom);intgetIndex(floatsum);intsaveRecords(void);intloadRecords(void);voidcopyRecord(SBInfo*hum,SBInfo*orc);//函数申明,注意()里必须包含对应函数形参类型#endif//H_STUDENT_HHfacility.c#include"facility.h"#include<conio.h>/***************************初始化**************************/intnumStus=0; //记录的学生数SBInfo*records=NULL; //记录学生信息的数组intarraySize; //数组大小charch1[15],ch2[15]={"JJ"};charsavedTag=0; //信息是否已保存的标志,1为未保存,0为已保存/***************************主函数**************************/intmain(){ system("color9"); //初始化数组 records=(SBInfo*)malloc(sizeof(SBInfo)*INITIAL_SIZE);//给数组分配StuInfo分配INITIAL_SIZE个记录空间大小 if(records==NULL) { printf("memoryfail!"); exit(-1);//如果内存空间不够分配,退出程序 } arraySize=INITIAL_SIZE;printf("*************************************************************************\n");printf("*callmeJJSINGLEJJBIRTHDAY*\n");printf("*lovelove**handsome19920929*\n");printf("**********\n");printf("*********\n");printf("***QQ:496798140*****\n");printf("***嘿我是蓝俊杰*****\n");printf("***QQQQQQ*********\n");printf("*:150QQQQQQ673798673798*\n");printf("*15593798QQQQQQ*******\n");printf("***\n");printf("****\n");printf("**欢送使用仪器设备根本信息管理程序**\n");printf("****\n");printf("**设计者蓝俊杰1251101121**\n");printf("**********\n");printf("**********\n");printf("************\n");printf("**************************************************\n");printf("************************************************\n");printf("******\n");printf("******\n"); printf("\n"); for(;;) {printf("\n进入系统的密码是:"); gets(ch1); if(strcmp(ch1,ch2)==0)break; elseprintf("\nSORRY!密码错啦T_T!\n"); } printf("\n\t\t欢送使用设备管理系统!\t\n"); select();}/***************************菜单处理函数**************************/voidselect(void){ for(;;){ switch(menu_select()) { case1: addfacility(); break; case2: seekfacility(); break; case3: removefacility(); break; case4: modifyfacility(); break; case5: show(); break; case6: saveRecords(); break; case7: loadRecords(); break;case8: quit(); } }}/*****************************菜单项选择择函数menu_select****************************/intmenu_select(){ chars[2]; intcn=0; printf("\n");printf("\t1.购进设备\n"); printf("\t2.查找设备\n"); printf("\t3.报废设备\n"); printf("\t4.修改设备信息\n"); printf("\t5.显示设备信息\n"); printf("\t6.保存设备信息\n"); printf("\t7.读取设备信息\n"); printf("\t8.退出程序\n"); printf("\n\t左边数字对应功能选择,请选1-8:"); for(;;) { gets(s); cn=atoi(s); if(cn<1||cn>8)printf("\n\t输入错误,重选1-8:"); elsebreak; } returncn;}/****************************************结束运行,退出**参数量void***************************************/voidquit(void){charstr[5];if(savedTag==1){printf("\n是否保存记录?〔Y/n〕\n");printf("选择:");gets(str);if(str[0]!='n'&&str[0]!='N')saveRecords();}free(records);printf("\nByeBye啦啦啦啦~\n\n");exit(0);}facility_add_sum.c#include"facility.h"/*********************打印表头********************/floatgetnumbers,usenumbers_1,usenumbers_2;floatunusable,usable;voidshowTable(void){ printf("\n\t编号\t名称\t厂家"); printf("\t年代\t单价\t数量\t可用数\n");}/************************显示所有的设备信息***********************/voidshow(void){ inti; if(numStus==0) { printf("\n没有可供显示的记录!\n"); return; } showTable(); if(getnumbers<=100) {for(i=0;i<numStus;i++) { //打印设备的信息 printf("\t%s\t%s\t%s\t%s\t%.2f\t%.f\t%.f\n",records[i].number,records[i].name,records[i].manufactory,records[i].year,records[i].price,records[i].getnumbers,records[i].usable); } } elseif(getnumbers>100) { for(i=0;i<numStus;i++) { //打印设备的信息 printf("\t%s\t%s\t%s\t%s\t%.2f\t%.f\t%.f\n",records[i].number,records[i].name,records[i].manufactory,records[i].year,records[i].price,records[i].getnumbers,records[i].usable); } }}/******************************在当前表的末尾增加新的信息*结果:records中将记录新的信*息,如果数组大小不够,会重*新申请数组空间*****************************/voidaddfacility(void){ charstr[10]; floatunusable,usable; int j; floatgetnumbers,usenumbers_1; floatprice;if(numStus==0) printf("\n原来没有记录,现在建立新表\n"); else printf("\n下面在当前表的末尾增加新的信息\n"); while(1)//()中为1表示无条件反复循环 { printf("您将要添加一组信息,确定吗?(Y/n)"); gets(str); if(str[0]=='n'||str[0]=='N')//不再添加新的信息 break; if(numStus>=arraySize)//现在的数组空间缺乏,需要重新申请空间 { records=realloc(records,(arraySize+INCR_SIZE)*sizeof(SBInfo));//新空间大小变为(arraySize+INCR_SIZE)记录大小,即在原来根底上增加INCR_SIZE个记录大小 if(records==NULL) { printf("memoryfailed!"); exit(-1); } arraySize=arraySize+INCR_SIZE;//arraySize修改为新空间可保存的记录数 } printf("\n请输入设备编号:"); gets(records[numStus].number); printf("请输入设备名称:"); gets(records[numStus].name);printf("请输入设备购进年代:"); gets(records[numStus].year);printf("请输入设备生产厂家:");gets(records[numStus].manufactory);printf("请输入设备单价:");gets(str); price=(float)atof(str); records[numStus].price=price; printf("购进设备数量是否大于100台?(Y/N)"); gets(str); if(str[0]=='y'||str[0]=='Y') { printf("\n请输入购进设备数量:"); gets(str); getnumbers=(float)atof(str); records[numStus].getnumbers=getnumbers; printf("可用设备的数量有:"); gets(str); usenumbers_1=(float)atof(str); records[numStus].usable=usenumbers_1; } elseif(str[0]=='n'||str[0]=='N') { printf("请输入购进设备数量:"); gets(str); getnumbers=(float)atof(str); records[numStus].getnumbers=getnumbers;unusable=0;usable=0; for(j=1;j<=getnumbers;j++) {printf("第%d台设备的可用性为:(设备不可用请输入0,设备可用请输入1):",j); gets(str); if(str[0]=='0') { unusable=unusable+1; } elseif(str[0]=='1') { usable=usable+1; } }records[numStus].usable=usable; unusable=0;usable=0; }numStus++;//输入一设备记录后,设备数加1 } printf("\n现在一共有%d条设备信息\n",numStus); savedTag=1;}facility_Modify_remove.c#include"facility.h"/***************************************************************查找指定的记录*参数: target:欲查找记录的某一项与target相同* targetType:说明通过哪一项来查找,0为设备编号,1为设备名称* from:从第from个记录开始找*返回:找到的记录的序号,假设找不到那么返回-1**************************************************************/intfindRecord(char*target,inttargetType,intfrom){inti;for(i=from;i<numStus;i++){if((targetType==0&&strcmp(target,records[i].number)==0)||(targetType==1&&strcmp(target,records[i].name)==0))returni;//如果找到符合条件的记录,返回记录号i}return-1;//如果没有找到,返回-1}/*********************************查询指定设备的信息*可以按照设备编号或名称来查询********************************/voidseekfacility(void){ charstr[5]; chartarget[20]; inttype; intcount; inti;if(numStus==0) { printf("\n没有可供查询的记录\n"); return; } while(1){ printf("\n请输入查询的方式:〔直接输入回车键那么结束查询〕\n"); printf("1.按设备编号查找\n"); printf("2.按设备名称查找\n"); printf("\n选择:"); gets(str); if(str[0]=='1') { printf("\n请输入欲查找的设备编号:"); gets(target); type=0; }elseif(str[0]=='2') { printf("请输入欲查找的设备名称:"); gets(target); type=1; }elsebreak; i=findRecord(target,type,0);//,从0号记录起查找,查询项type,查询目标数据项target if(i>=0) { //打印查询到的设备的信息showTable();} count=0; while(i!=-1) { count++;//查询到的设备数加1 printf("\t%s\t%s\t%s\t%s\t%.2f\t%.f\t%.f\n",records[i].number,records[i].name,records[i].manufactory,records[i].year,records[i].price,records[i].getnumbers,records[i].usable);//输出i记录的各个数据项i=findRecord(target,type,i+1);//从i+1条记录起查找下一条符合条件的记录 } if(count==0)printf("\n没有符合条件的设备!\n");elseprintf("\n一共找到了%d种设备的信息\n\n",count); }}/*************************删除指定的记录************************/voidremovefacility(void){ charstr[5]; chartarget[20]; inttype; inti,j; if(numStus==0) { printf("\n没有可供删除的记录\n"); return; } while(1){ printf("\n请输入如何找到欲报废的设备:〔直接输入回车键那么结束移除操作〕\n"); printf("1.按设备编号\n"); printf("2.按设备名称\n"); printf("\n选择:"); gets(str); if(str[0]=='1') { printf("\n请输入该设备的编号:"); gets(target); type=0; }elseif(str[0]=='2') { printf("请输入该设备的名称:"); gets(target); type=1; }elsebreak; i=findRecord(target,type,0); if(i==-1)printf("\n没有符合条件的设备!\n"); while(i!=-1) { showTable(); printf("\t%s\t%s\t%s\t%s\t%.2f\t%.f\t%.f\n",records[i].number,records[i].name,records[i].manufactory,records[i].year,records[i].price,records[i].getnumbers,records[i].usable); printf("\n真的要删除该设备吗?(y/N)"); gets(str);if(str[0]=='Y'||str[0]=='y'){ numStus--; for(j=1;j<numStus;j++) { copyRecord(&records[j+1],&records[j]); }}i=findRecord(target,type,i+1);}} savedTag=1;//删除一条记录后,保存标志变为1,表示未保存}/******************************************将src指向的一条记录复制给dest指向的记录*****************************************/voidcopyRecord(SBInfo*hum,SBInfo*orc){ strcpy(orc->number,hum->number); strcpy(orc->name,hum->name); strcpy(orc->year,hum->year); strcpy(orc->manufactory,hum->manufactory); orc->price=hum->price; orc->usable=hum->usable; orc->getnumbers=hum->getnumbers;}/**************************修改指定设备的信息*************************/voidmodifyfacility(void){ charstr[5]; chartarget[20]; inttype; inti,j; floatgetnumbers,usenumbers_1,usenumbers_2,usable,unusable; floatprice; intcount=0;if(numStus==0) { printf("\n没有可供修改的记录\n"); return; } while(1){ printf("\n请输入想要修改的设备记录的方式:〔直接输入回车键那么结束移除操作〕\n"); printf("1.按设备编号\n"); printf("2.按设备名称\n"); printf("\n选择:"); gets(str); if(str[0]=='1') { printf("\n请输入该设备的编号:"); gets(target); type=0; }elseif(str[0]=='2') { printf("请输入该设备的名称:"); gets(target); type=1; }elsebreak; i=findRecord(target,type,0); if(i==-1)printf("\n没有符合条件的设备!\n"); while(i!=-1) { showTable(); printf("\t%s\t%s\t%s\t%s\t%.2f\t%.f\t%.f\t%.f\n",records[i].number,records[i].name,records[i].manufactory,records[i].year,records[i].price,records[i].getnumbers,records[i].usable); printf("\n确定要修改该设备的信息吗?(Y/N)"); gets(str); if(str[0]=='y'||str[0]=='Y') { printf("\n下面请重新输入该设备的信息:\n"); printf("\n请输入设备编号:"); gets(records[i].number); printf("请输入设备名称:"); gets(records[i].name);printf("请输入设备购进年代:"); gets(records[i].year);printf("请输入设备生产厂家:");gets(records[i].manufactory);printf("请输入设备单价:");gets(str); price=(float)atof(str); records[i].price=price; printf("购进设备数量是否大于100台?(Y/N)\n"); gets(str); if(str[0]=='y'||str[0]=='Y') { printf("请输入购进设备数量:"); gets(str); getnumbers=(float)atof(str); records[i].getnumbers=getnumbers; printf("可用设备的数量有:"); gets(str); usenumbers_1=(float)atof(str); records[i].usable=usenumbers_1; printf("不可用设备的数量有:"); gets(str); usenumbers_2=(float)atof(str); } elseif(str[0]=='n'||str[0]=='N') { printf("请输入购进设备数量:"); gets(str); getnumbers=(float)atof(str); records[i].getnumbers=getnumbers; unusable=0;usable=0; for(j=1;j<=getnumbers;j++) {printf("第%d台设备的可用性为:“0”设备不可用,“1”设备可用:",j); gets(str); if(str[0]=='0') { unusable=unusable+1; } elseif(str[0]=='1') { usable=usable+1; } }records[i].usable=usable; unusable=0;usable=0; }i=findRecord(target,type,i+1);}elsebreak; } }savedTag=1;}facility_save_load.c#include"facility.h"/***********************************文件存储操作函数*结果:数组records被保存至指定文件*返回:成功0,失败-1**********************************/intsaveRecords(){ FILE*fp; charfname[30]; if(numStus==0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论