有代码 信管一班 蓝俊杰 单位仪器设备基本信息管理软件设计.docx

上传人:b****6 文档编号:8192920 上传时间:2023-01-29 格式:DOCX 页数:40 大小:299.62KB
下载 相关 举报
有代码 信管一班 蓝俊杰 单位仪器设备基本信息管理软件设计.docx_第1页
第1页 / 共40页
有代码 信管一班 蓝俊杰 单位仪器设备基本信息管理软件设计.docx_第2页
第2页 / 共40页
有代码 信管一班 蓝俊杰 单位仪器设备基本信息管理软件设计.docx_第3页
第3页 / 共40页
有代码 信管一班 蓝俊杰 单位仪器设备基本信息管理软件设计.docx_第4页
第4页 / 共40页
有代码 信管一班 蓝俊杰 单位仪器设备基本信息管理软件设计.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

有代码 信管一班 蓝俊杰 单位仪器设备基本信息管理软件设计.docx

《有代码 信管一班 蓝俊杰 单位仪器设备基本信息管理软件设计.docx》由会员分享,可在线阅读,更多相关《有代码 信管一班 蓝俊杰 单位仪器设备基本信息管理软件设计.docx(40页珍藏版)》请在冰豆网上搜索。

有代码 信管一班 蓝俊杰 单位仪器设备基本信息管理软件设计.docx

有代码信管一班蓝俊杰单位仪器设备基本信息管理软件设计

课程设计

课程名称程序设计课程设计

班级与班级代码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.c

main

总控函数

select

菜单选择

menu_select

菜单处理

quit

结束运行

Facility_add_sum.c

showTable

打印表头

show

显示所有的设备信息

addfacility

在表尾追加信息

facility_Modify_remove.c

findRecord

查找到指定的信息

seekfacility

查询指定设备的信息

removefacility

报废设备

modifyfacility

修改设备

facility.h

常数

提供常数

结构声明

设备结构

库函数及函数原型声明

引用库函数及函数

facility_save_load.c

saveRecords

存储信息

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.6

 

facility.h

#ifndefH_STUDENT_HH//如果没有定义H_STUDENT_HH,继续执行

#defineH_STUDENT_HH//定义H_STUDENT_HH,可避免重复编绎

#include

#include

#include

#include

//头文件包含

#defineINITIAL_SIZE5//数组初始大小

#defineINCR_SIZE5//数组每次增加的大小

//可根椐系统使用需要的常量定义

structfacility_info{

charnumber[20];//设备编号

charname[20];//设备名称

charmanufactory[20];//设备生产厂家

charyear[20];//设备购进年代

floatgetnumbers;//设备购进数目

floatusable;//可用设备

floatprice;//设备单价

};

typedefstructfacility_infoSBInfo;//定义一个类型名SBInfo代表定义的结构体shebei_info

externintnumStus;//记录的设备数

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_HH

 

facility.c

#include"facility.h"

#include

/**************************

*初始化

**************************/

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

{

//打印设备的信息

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

{

//打印设备的信息

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;

intj;

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个记录大小

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 企业管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1