有代码_信管一班_蓝俊杰_单位仪器设备基本信息管理软件设计_第1页
有代码_信管一班_蓝俊杰_单位仪器设备基本信息管理软件设计_第2页
有代码_信管一班_蓝俊杰_单位仪器设备基本信息管理软件设计_第3页
有代码_信管一班_蓝俊杰_单位仪器设备基本信息管理软件设计_第4页
免费预览已结束,剩余52页可下载查看

下载本文档

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

文档简介

1、.课程设计课程名称程序设计课程设计班级与班级代码2011 级信息管理 1 班专业信息管理指导教师:胡玉平学号:姓名:蓝俊杰提交日期: 2012年 6月 23日商学院教务处制.蓝俊杰课程设计成绩评语:评价容不及格及格中良优表达精练,格式准确,基本无错别字容完整,思路清晰,结构严谨,设计科学,可操作性强程序能完成课程设计任务书所规定的任务,功能完善,独立分析和解决问题能力较好。代码简洁,算法清晰,可读性强无抄袭现象且课程设计报告体会深刻指导教师(签名)年月日说明:指导教师评分后,课程设计交院(系)办公室保存。.课程设计报告正文的容及排版要求标题:单位仪器设备基本信息管理软件设计1 系统功能要求:

2、( 一级标题:黑体、四号)容:单位仪器设备基本信息管理软件设计 :采用结构体数组或文件形式存储每种设备的信息,每个仪器设备应包含如下几方面的信息:设备编号、设备名称、设备单价、购进年代、生产厂家、该设备数量、可用性。软件由主函数(含欢迎界面)下列 5 个功能模块组成:(1)购进功能(被购进设备数量增 x);( 2)显示已有设备;( 3)报废功能(对“可用性” 信息为“否”的设备报废, 被报废设备数减 x);(3)查找功能(需指定设备号或设备名) ;(5)统计功能(统计每种设备可用数、不可用数);(6)退出程序的运行。2 系统总体设计思想(1)开发与设计的总体思想容示例:单位仪器设备基本信息管理

3、软件算法说明:STEP1 预处理 , 定义结构体STEP2 进入欢迎界面STEP3 选择某一种功能STEP4 根据提示输入一个数字STEP5 对于输入的数字编辑关于购进、报废、查找、统计功能的函数STEP6 如果输入的字母表示退出, 退出系统( 2)系体模块结构图容示例:欢迎界面主菜单购进设备查找设备报废设备修改设备显示程序保存设备读取设备退出(3)系统文件及函数组成、功能( 参考 P154的表 12-1)源文件函数名或其他成分功能.main总控函数facility.cselect菜单选择menu_select菜单处理quit结束运行showTable打印表头Facility_add_sum.

4、cshow显示所有的设备信息addfacility在表尾追加信息findRecord查找到指定的信息facility_Modify_reseekfacility查询指定设备的信息move.cremovefacility报废设备modifyfacility修改设备常数提供常数facility.h结构声明设备结构库函数及函数原型声引用库函数及函数明facility_save_loadsaveRecords存储信息.cloadRecords读取信息3 系统详细设计思想(1) 函数的描述容包括:分模块(函数)简述其功能;函数中使用的各变量的类型及作用等(可参考材 P155的写法)。1显示所有设备信息函

5、数函数原型: voidshow (void)功能:显示存里的记录信息参数: void返回值: void工作方式:从头部开始逐个显示记录容。要求:报告是否有记录及记录条数和容。2购进设备函数函数原型: voidaddfacility(void)功能:增加记录参数: void返回值: void.工作方式:从尾部开始逐个追加记录。要求:将新记录追加在记录尾部,并对记录进行计数。3显示所有设备信息函数函数原型: void showTable(void)功能:输出表头信息参数: void返回值: void工作方式:输出一行表头信息。要求:输出一行表头信息。4报废设备函数函数原型: voidremovef

6、acility(void)功能:把所选的仪器报废,被报废设备数减x。参数: void返回值: void工作方式:根据给定的关键字,查找符合的记录并将报废的设备删除。要求:将报废的设备数减去。5显示所有设备信息函数函数原型:intfindRecord(char*target,inttargetType,intfrom)功能:查找指定的记录参数: char* target:欲查找记录的某一项与target相同返回值: int targetType:表明通过哪项来查找,0 为编号, 1为名称。int from:从第 from 个记录开始找。工作方式:根据给定的关键字,查找符合记录的序号。要求:找不到

7、则返回 1.6查询指定设备的信息函数函数原型: voidseekfacility(void)功能:查询指定设备的信息参数: void返回值: void工作方式:可以按照编号、名称来查询要求:打印查询到的设备的信息.7修改设备信息函数原型: voidmodifyfacility(void)功能:修改指定设备的信息参数: void返回值: void工作方式:修改设备的信息要求:报告是否有记录及记录条数和容8 、文件存储操作函数函数原型: int saveRecords(void)功能:把信息存储进指定文件中参数: int返回值: void工作方式:输入文件名字并保存要求:有空间存储9 、文件读取操

8、作函数函数原型: int loadRecords(void)功能:从指定文件中读取出的记录参数: int返回值: void工作方式:输入已经存在的文件名字来读取文件中的信息要求:已经存在文件可供读取10主函数函数原型: int main()功能:控制程序参数: void返回值: void要求:管理菜单命令并完成初始化11菜单处理函数函数原型: void select(void)功能:处理选择的菜单命令参数: void返回值: void工作方式:根据命令,调用相应函数.要求:给出结束信息12菜单选择函数函数原型: int menu_select( )功能:接收用户选择的命令代码参数: void返

9、回值: int工作方式:返回命令代码的整数值要求:只允许选择规定键,如果输入不合要求,则提醒用户重新输入13结束程序运行函数函数原型: void quit(void)功能:结束程序运行参数: void返回值: void工作方式:根据要求决定在退出前是否将修改的记录存入文件要求:结束运行之前,询问是否对修改的记录进行存储14头文件函数原型: device.h功能:声明函数原型,包含文件及自定义宏和数据结构参数: void返回值: void要求:报告是否能正常打开文件执行存入操作及存入记录的条数15 、文件(2)主要函数流程图1 void addfacility(void).2. void sel

10、ect(void).3. void show(void)4. int findRecord(char* target, int targetType, int from).5. void removfacility(void)6. voidmodifyfacility(void).调试结果:(1)欢迎界面:输入密码(2)功能选择菜单.(3)购进新设备功能而在于设备数量大于 100 台和小于 100 台的处理上,大于 100 台则直接输入可用设备的数目, 而对于小于 100 台,则逐台输入每台的可用性不可用性。.(4)显示已有设备( 5)报废设备报废功能也可以按照名字和编号来报废,报废前还会打印

11、出将要被报废的设备信息再一次询问操作者是否要删除该设备。.( 6)查找设备按编号查找按设备名称查找.(7)保存设备信息(8)读取设备信息本人在程序设计中感想.本人在程序设计的课程设计中感受到 : 很多的函数设计与学生管理系统还是有挺大的差别的。 通过设置密码可改变背景和字体颜色的设计,让我懂得了 C 语言还是有很多我没有了解到的地方,通过互联网上的资源我们可以懂得的更多。 而遇到不懂的地方就要耐心的读懂,实在不懂的就要谦虚地问同学和老师,例如在程序设计过程中 scanf 语句与 getchar() 语句混搭容易出现跳句,需要不断的修改来完善。将保存文件语句和读取文件语句穿插也需要注意,当记录为

12、 0 时直接调用 saveRecord() 语句是保存不了的,所以需要再修改。通过实验让我更加深刻学习到了 C语言的好处。5 结束语C语言的程序设计实验的成功实验,靠得不仅仅是自己的努力,还有同学的帮助,当然最重要的还是老师的耐心解答。参考文献1谭浩强, C 程序设计(第二版),:清华大学, 2001.1 (左对齐,宋体,五号)2朔鹰, C语言程序设计习题集,:人民邮电,2003.6.facility.h#ifndef H_STUDENT_HH /如果没有定义 H_STUDENT_HH,继续执行#define H_STUDENT_HH/ 定义 H_STUDENT_HH,可避免重复编绎#incl

13、ude <stdio.h>#include <stdlib.h>#include <conio.h>#include <string.h>/ 头文件包含#define INITIAL_SIZE 5/数组初始大小#define INCR_SIZE 5/数组每次增加的大小/ 可根椐系统使用需要的常量定义struct facility_info char number20;/设备编号char name20;/设备名称char manufactory20;/设备生产厂家char year20;/设备购进年代float getnumbers;/设备购进数目

14、.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 modify

15、facility(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);/ 函数申明 , 注意 () 里

16、必须包含对应函数形参类型#endif / H_STUDENT_HH.facility.c#include "facility.h"#include<conio.h>/* 初始化*/int numStus = 0;/记录的学生数SBInfo *records = NULL;/记录学生信息的数组int arraySize;/数组大小char ch115,ch215="JJ"char savedTag = 0;/信息是否已保存的标志,1为未保存, 0为已保存/* 主函数*/int main()system("color 9");

17、./ 初始化数组records =(SBInfo*)malloc(sizeof(SBInfo)*INITIAL_SIZE);/ 给数组分配 StuInfo 分配 INITIAL_SIZE 个记录空间大小 if (records = NULL)printf("memory fail!");exit(-1);/ 如果存空间不够分配 , 退出程序arraySize = INITIAL_SIZE;printf("*n");printf(" *callmeJJSINGLEJJBIRTHDAY* n");printf(" *lovelo

18、ve*handsome19920929* n");printf("*.*n");printf("*n");printf("*QQ:496798140*n");printf("*嘿我是蓝俊杰*n");printf("*QQQQQQ* * *n");printf("*手机 :150QQ QQ QQ673798673798*n");printf("*15593798QQQQ QQ*n");printf("* n"); printf(

19、" * n");printf(" *欢迎使用仪器设备基本信息管理程序* n");printf("*n");printf("*设计者蓝俊杰.1251101121*n");printf("* n");printf("*n");printf("* *n");printf("* *n");printf("* *n");printf("*n");printf("*n");printf(&

20、quot;n");for(;)printf("n进入系统的密码是:");gets(ch1);if(strcmp(ch1,ch2)=0)break;else printf("nSORRY!密码错啦 T_T!n");.printf("ntt欢迎使用设备管理系统!tn");select();/* 菜单处理函数*/void select(void)for ( ; ; ) switch(menu_select()case 1:addfacility();break;case 2:seekfacility();break;.case 3

21、: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=0;printf("n");printf ( "t1.购进设备 n" );printf ( "t2.查找设备 n" );printf ( "

22、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(cn<1|>8 ) printf("nt输

23、入错误,重选1-8 :.");else break;return;/* 结束运行,退出* 参数量 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("nByeBye啦啦啦啦 nn");exit(0);.facility

24、_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");.re

25、turn;showTable();if(getnumbers<=100)for (i=0; i<numStus; i+)/ 打印设备的信息printf("t%st%st%st%st%.2ft%.ft%.fn",recordsi.number,,recordsi.manufactory,recordsi.year,recordsi.price,recordsi.getnumbers,recordsi.usable);else if(getnumbers>100)for (i=0; i<numStus; i+)/ 打印设备的信息

26、.printf("t%st%st%st%st%.2ft%.ft%.fn",recordsi.number,,recordsi.manufactory,recordsi.year,recordsi.price,recordsi.getnumbers,recordsi.usable);/* 在当前表的末尾增加新的信息* 结果: records 中将记录新的信* 息,如果数组大小不够,会重* 新申请数组空间*/void addfacility(void)char str10;float unusable,usable;intj;float getnumb

27、ers,usenumbers_1;.float price;if(numStus=0)printf("n原来没有记录,现在建立新表n");elseprintf("n下面在当前表的末尾增加新的信息 n");while(1)/()中为 1表示无条件反复循环printf("您将要添加一组信息,确定吗?(Y/n)");gets(str);if (str0='n' | str0='N') /不再添加新的信息break;if(numStus >= arraySize)/现在的数组空间不足,需要重新申请空间re

28、cords =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)

29、;printf("请输入设备名称:");gets(recordsnumS);printf("请输入设备购进年代:");gets(recordsnumStus.year);printf("请输入设备生产厂家:");gets(recordsnumStus.manufactory);printf("请输入设备单价:");gets(str);price = (float)atof(str);recordsnumStus.price=price;printf("购进设备数量是否大于100台 ?(Y/

30、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=

31、9;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+

32、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为设备编号

33、,1为设备名称*from: 从第 from 个记录开始找*返回:找到的记录的序号,若找不到则返回-1*/intfindRecord(char*target,inttargetType,intfrom)int i;for(i=from;i<numStus;i+)if(targetType=0&&strcmp(target,recordsi.number)=0)|.(targetType=1&&strcmp(target,)=0)return i;/如果找到符合条件的记录,返回记录号 ireturn -1;/如果没有找到,返回1/*

34、查询指定设备的信息* 可以按照设备编号或名称来查询*/void seekfacility(void)char str5;char target20;int type;int count;int i;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)

温馨提示

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

评论

0/150

提交评论