程序设计课程设计论文

上传人:花里****1 文档编号:113282425 上传时间:2022-06-24 格式:DOC 页数:56 大小:397KB
返回 下载 相关 举报
程序设计课程设计论文_第1页
第1页 / 共56页
程序设计课程设计论文_第2页
第2页 / 共56页
程序设计课程设计论文_第3页
第3页 / 共56页
点击查看更多>>
资源描述
课程设计课程名称 程序设计课程设计 班级与班级代码 2011级信息管理1班 专 业 信息管理 指导教师: 胡玉平 学 号: 11251101121 姓 名: 蓝俊杰 提交日期: 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显示所有设备信息函数函数原型:void show (void)功能:显示内存里的记录信息参数:void 返回值:void 工作方式:从头部开始逐个显示记录内容。要求:报告是否有记录及记录条数和内容。2购进设备函数函数原型:void addfacility (void)功能:增加记录参数:void 返回值:void 工作方式:从尾部开始逐个追加记录。要求:将新记录追加在记录尾部,并对记录进行计数。3显示所有设备信息函数函数原型:void showTable(void)功能:输出表头信息参数:void 返回值:void 工作方式:输出一行表头信息。要求:输出一行表头信息。4报废设备函数函数原型:void removefacility (void)功能:把所选的仪器报废,被报废设备数减x。参数:void 返回值:void 工作方式:根据给定的关键字,查找符合的记录并将报废的设备删除。要求:将报废的设备数减去。5显示所有设备信息函数函数原型:int findRecord(char* target, int targetType, int from)功能:查找指定的记录参数:char* target:欲查找记录的某一项与target相同返回值:int targetType:表明通过哪项来查找,0为编号,1为名称。 int from:从第from个记录开始找。工作方式:根据给定的关键字,查找符合记录的序号。要求:找不到则返回1.6查询指定设备的信息函数函数原型:void seekfacility (void)功能:查询指定设备的信息参数:void 返回值:void 工作方式:可以按照编号、名称来查询要求:打印查询到的设备的信息7修改设备信息函数原型:void modifyfacility (void)功能:修改指定设备的信息参数:void 返回值:void 工作方式:修改设备的信息要求:报告是否有记录及记录条数和内容 8、文件存储操作函数 函数原型:int saveRecords (void)功能:把信息存储进指定文件中参数:int返回值:void 工作方式:输入文件名字并保存要求:有空间存储 9、文件读取操作函数函数原型:int loadRecords (void)功能:从指定文件中读取出的记录参数:int返回值:void 工作方式:输入已经存在的文件名字来读取文件中的信息要求:已经存在文件可供读取10主函数函数原型:int main()功能:控制程序参数:void 返回值:void 要求:管理菜单命令并完成初始化11菜单处理函数函数原型:void select(void)功能:处理选择的菜单命令参数:void 返回值:void 工作方式:根据命令,调用相应函数要求:给出结束信息12菜单选择函数函数原型:int menu_select( )功能:接收用户选择的命令代码参数:void 返回值:int 工作方式:返回命令代码的整数值要求:只允许选择规定键,如果输入不合要求,则提醒用户重新输入13结束程序运行函数函数原型:void quit(void)功能:结束程序运行参数:void 返回值:void 工作方式:根据要求决定在退出前是否将修改的记录存入文件要求:结束运行之前,询问是否对修改的记录进行存储14头文件函数原型:device.h功能:声明函数原型,包含文件及自定义宏和数据结构参数:void 返回值:void 要求:报告是否能正常打开文件执行存入操作及存入记录的条数 15、文件 (2)主要函数流程图 1void addfacility(void) 2. void select(void) 3. void show(void) 4. int findRecord(char* target, int targetType, int from) 5. void removfacility(void)6. void modifyfacility (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#ifndef H_STUDENT_HH /如果没有定义H_STUDENT_HH,继续执行#define H_STUDENT_HH/定义H_STUDENT_HH,可避免重复编绎#include #include #include #include /头文件包含#define INITIAL_SIZE 5 / 数组初始大小#define INCR_SIZE 5 / 数组每次增加的大小/可根椐系统使用需要的常量定义struct facility_info char number20; /设备编号char name20; /设备名称char manufactory20; /设备生产厂家 char year20; /设备购进年代float getnumbers; /设备购进数目 float usable; /可用设备float price; /设备单价 ;typedef struct facility_info SBInfo;/定义一个类型名SBInfo代表定义的结构体shebei_infoextern int numStus; / 记录的设备数extern SBInfo* records; / 记录设备信息的数组指针extern int arraySize; / 数组大小extern char savedTag;/共享的全局变量定义void select(void);int menu_select(void);void addfacility(void);void modifyfacility(void);void show(void);void seekfacility(void);void removefacility(void);void quit(void);void showTable(void);int findRecord(char* target, int targetType, int from);int getIndex(float sum);int saveRecords(void);int loadRecords(void);void copyRecord(SBInfo* hum, SBInfo* orc);/函数申明,注意()里必须包含对应函数形参类型#endif / H_STUDENT_HHfacility.c#include facility.h#include/* * 初始化 */int numStus = 0; / 记录的学生数SBInfo *records = NULL;/ 记录学生信息的数组int arraySize; / 数组大小char ch115,ch215=JJ;char savedTag = 0;/ 信息是否已保存的标志,1为未保存,0为已保存/* * 主函数 */int main()system(color 9);/ 初始化数组records = (SBInfo*)malloc(sizeof(SBInfo)*INITIAL_SIZE);/给数组分配StuInfo分配INITIAL_SIZE个记录空间大小if (records = NULL) printf(memory fail!); exit(-1);/如果内存空间不够分配,退出程序arraySize = INITIAL_SIZE; printf( * n);printf( * callmeJJ SINGLEJJ BIRTHDAY * n);printf( * lovelove * handsome 19920929 * n);printf(* * * * * *n);printf(* * * * * *n);printf(* * QQ:496798140 * * *n);printf(* * 嘿我是蓝俊杰 * * *n);printf(* * QQ QQ QQ * * * * *n);printf(* 手机:150 QQ QQ QQ 673798 673798 *n);printf(* 15593798 QQ QQ QQ * * *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; else printf(n SORRY!密码错啦T_T!n); printf(ntt欢迎使用设备管理系统!tn);select();/* * 菜单处理函数 */void select(void)for ( ; ; ) switch(menu_select()case 1:addfacility();break; case 2:seekfacility();break;case 3:removefacility();break;case 4:modifyfacility();break;case 5:show();break;case 6:saveRecords();break;case 7:loadRecords();break; case 8:quit();/* * 菜单选择函数menu_select */int menu_select( )char s2;int cn=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 ( nt左边数字对应功能选择,请选1-8 : );for(; ;)gets(s);cn = atoi (s);if(cn8 ) printf(nt输入错误,重选1-8:);else break;return cn;/*结束运行,退出*参数量void*/void quit(void) char str5; if (savedTag=1) printf(n 是否保存记录?(Y/n)n); printf( 选择: ); gets(str); if(str0!=n&str0!=N) saveRecords(); free(records);printf(n ByeBye啦啦啦啦 nn);exit(0);facility_add_sum.c#include facility.h/* * 打印表头 */float getnumbers,usenumbers_1,usenumbers_2;float unusable,usable;void showTable(void)printf(nt编号t名称t厂家);printf(t年代t单价t数量t可用数n);/* * 显示所有的设备信息 */void show(void)int i;if (numStus = 0) printf(n 没有可供显示的记录!n); return;showTable();if(getnumbers=100) for (i=0; i100) for (i=0; i= arraySize) / 现在的数组空间不足,需要重新申请空间records = realloc(records,(arraySize+INCR_SIZE)*sizeof(SBInfo);/新空间大小变为(arraySize+INCR_SIZE)记录大小,即在原来基础上增加INCR_SIZE个记录大小if (records = NULL)printf(memory failed!);exit(-1);arraySize = arraySize+INCR_SIZE; /arraySize修改为新空间可保存的记录数printf(n 请输入设备编号:);gets(recordsnumStus.number);printf( 请输入设备名称:);gets(recordsnumStus.name); printf( 请输入设备购进年代:);gets(recordsnumStus.year); printf( 请输入设备生产厂家:); gets(recordsnumStus.manufactory); printf( 请输入设备单价:); gets(str);price = (float)atof(str);recordsnumStus.price=price;printf( 购进设备数量是否大于100台?(Y/N);gets(str);if (str0=y | str0=Y)printf(n 请输入购进设备数量:);gets(str);getnumbers = (float)atof(str);recordsnumStus.getnumbers=getnumbers; printf( 可用设备的数量有:);gets(str);usenumbers_1= (float)atof(str);recordsnumStus.usable=usenumbers_1;else if(str0=n | str0=N) printf( 请输入购进设备数量:); gets(str);getnumbers = (float)atof(str);recordsnumStus.getnumbers=getnumbers;unusable=0;usable=0;for(j=1;j=getnumbers;j+) printf(第%d台设备的可用性为: (设备不可用请输入0,设备可用请输入1) : ,j); gets(str); if (str0 = 0) unusable=unusable+1; else if(str0=1) usable=usable+1; recordsnumStus.usable=usable; unusable=0;usable=0;numStus+; /输入一设备记录后,设备数加1printf(n 现在一共有%d条设备信息n,numStus);savedTag = 1;facility_Modify_remove.c#include facility.h/* * 查找指定的记录 * 参数:target:欲查找记录的某一项与target相同 *targetType:表明通过哪一项来查找,0为设备编号,1为设备名称 *from:从第from个记录开始找 * 返回:找到的记录的序号,若找不到则返回-1 */int findRecord(char* target, int targetType, int from) int i; for(i=from;i=0)/ 打印查询到的设备的信息 showTable(); count = 0;while(i != -1)count+;/查询到的设备数加1printf(t%st%st%st%st%.2ft%.ft%.fn,recordsi.number,recordsi.name,recordsi.manufactory,recordsi.year,recordsi.price,recordsi.getnumbers,recordsi.usable); /输出i记录的各个数据项 i = findRecord(target,type,i+1);/从i+1条记录起查找下一条符合条件的记录if (count=0) printf(n 没有符合条件的设备!n); else printf(n 一共找到了%d种设备的信息nn,count);/* * 删除指定的记录 */void removefacility(void)char str5;char target20;int type;int i,j; if(numStus=0)printf(n 没有可供删除的记录n);return;while(1) printf(n 请输入如何找到欲报废的设备:(直接输入回车键则结束移除操作)n);printf( 1. 按设备编号n);printf( 2. 按设备名称n);printf(n 选择:);gets(str);if (str0 = 1)printf(n 请输入该设备的编号:);gets(target);type = 0; else if (str0 = 2)printf( 请输入该设备的名称:);gets(target);type = 1;else break;i = findRecord(target,type,0);if (i=-1) printf(n 没有符合条件的设备!n);while(i != -1)showTable();printf(t%st%st%st%st%.2ft%.ft%.fn,recordsi.number,recordsi.name,recordsi.manufactory,recordsi.year,recordsi.price,recordsi.getnumbers,recordsi.usable);printf(n 真的要删除该设备吗?(y/N);gets(str);if(str0=Y|str0=y)numStus-;for (j=1;jnumber,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;/* * 修改指定设备的信息 */void modifyfacility(void)char str5;char target20;int type;int i,j;float getnumbers,usenumbers_1,usenumbers_2,usable,unusable;float price;int count = 0; if(numStus=0)printf(n 没有可供修改的记录n);return;while(1) printf(n 请输入想要修改的设备记录的方式:(直接输入回车键则结束移除操作)n);printf( 1. 按设备编号n);printf( 2. 按设备名称n);printf(n 选择:);gets(str);if (str0 = 1)printf(n 请输入该设备的编号:);gets(target);type = 0; else if (str0 = 2)printf( 请输入该设备的名称:);gets(target);type = 1; else break;i=findRecord(target,type,0);if (i=-1) printf(n 没有符合条件的设备!n);while(i != -1)showTable();printf(t%st%st%st%st%.2ft%.ft%.ft%.fn,recordsi.number,recordsi.name,recordsi.manufactory,recordsi.year,recordsi.price,recordsi.getnumbers,recordsi.usable);printf(n 确定要修改该设备的信息吗?(Y/N);gets(str);if (str0=y | str0=Y)printf(n 下面请重新输入该设备的信息:n);printf(n 请输入设备编号:); gets(recordsi.number); printf( 请输入设备名称:); gets(recordsi.name); printf( 请输入设备购进年代:); gets(recordsi.year); printf( 请输入设备生产厂家:); gets(recordsi.manufactory); printf( 请输入设备单价:); gets(str); price = (float)atof(str); recordsi.price=price; printf(购进设备数量是否大于100台?(Y/N)n); gets(str); if (str0=y | str0=Y) printf( 请输入购进设备数量:); gets(str); getnumbers = (float)atof(str);recordsi.getnumbers=getnumbers; printf( 可用设备的数量有:); gets(str); usenumbers_1= (float)atof(str); recordsi.usable=usenumbers_1; printf( 不可用设备的数量有:); gets(str); usenumbers_2= (float)atof(str); else if(str0=n | str0=N) printf( 请输入购进设备数量:); gets(str); getnumbers = (float)atof(str); recordsi.getnumbers=getnumbers;unusable=0;usable=0; for(j=1;j=getnumbers;j+) printf(第%d台设备的可用性为:“0”设备不可用,“1”设备可用: ,j); gets(str); if (str0 = 0)
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 金融资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!