实验设备管理系统c语言版.docx

上传人:b****8 文档编号:11007104 上传时间:2023-02-24 格式:DOCX 页数:22 大小:296.66KB
下载 相关 举报
实验设备管理系统c语言版.docx_第1页
第1页 / 共22页
实验设备管理系统c语言版.docx_第2页
第2页 / 共22页
实验设备管理系统c语言版.docx_第3页
第3页 / 共22页
实验设备管理系统c语言版.docx_第4页
第4页 / 共22页
实验设备管理系统c语言版.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

实验设备管理系统c语言版.docx

《实验设备管理系统c语言版.docx》由会员分享,可在线阅读,更多相关《实验设备管理系统c语言版.docx(22页珍藏版)》请在冰豆网上搜索。

实验设备管理系统c语言版.docx

实验设备管理系统c语言版

C语言课程设计实验报告

班级

姓名

学号

实验课程

C

实验名称

实验设备管理系统

实验成绩

实验日期

任课教师

一、目的(本次课程设计所涉及并要求掌握的知识点。

课程设计

在学校实验室的设备管理工作中,设备的编排是一项十分复杂、棘手的工作。

在编排过程中,由于数量多容易出错。

利用计算机辅助进行设备编排工作,既提高了编排的科学性,又可大大减轻管理人员的工作强度,提高工作效率,从而教学设备管理现代化迈上了一个新台阶。

实验室设备信息用文件存储,故要提供文件的输入输出操作;要能够完成设备的录入和修改,需要提供设备添加和修改操作;实现对设备进行分类统计,需要提供排序操作;实现对设备的查询需要提供查找操作;另外还要提供键盘式选择菜单以实现功能选择总体设计

整个系统被设计为实验设备信息输入模块、实验设备信息添加模块、实验设备信息修改模块、实验设备分类统计模块和实验设备查询模块。

知识点

1.对于结构体数组的定义使用

2.指针变量的使用

3.以文件方式输入输出,熟练掌握文件的各种方式

4.对于循环的应用格式

5.一些函数的应用,如strcmp函数

总结:

提高程序设计能力与课堂知识内容的应用,掌握程序设计的基本方法和调

试技能。

对指针,数组,文件了解更加深刻。

二、使用环境(本次上机实践所使用的平台和相关软件。

VisualC++

三、内容与设计思想(1.设计思路2.主要数据结构3.主要代码结构4.主要代码段分析。

1.设计思路

如下图所示

 

2.主要数据结构

typedefstructEquInfo函数

2.添加模块

 

 

3.修改模块

4.统计模块

 

5.搜索模块

4.主要代码段分析

(1).添加模块

主要是实现设备的添加,输入添加的设备个数,然后用for循环语句,循环次数是你输入的设备个数。

循环输出设备的编号,种类名称,用fopen打开文件,w写方式实现首次添加。

intaddition()/*添加模块*/

{

EquInfonews[50];

inti,j,c;

FILE*fp;

system("cls");

printf("你想输入多少个设备?

\n");

scanf("%d",&i);/*输入要添加的设备个数*/

for(j=0;j

{printf("------------------\n");

printf("输入设备编号\n");

scanf("%s",&news[j].equipCode);

printf("输入设备种类\n");

scanf("%s",news[j].equipType);

……

if((fp=fopen("","w"))==NULL)/*打开文件,输入保存*/

{printf("不能打开文件!

\n");}

for(j=0;j

{fprintf(fp,"%s%s%s%f%s%d%s",news[j].equipCode,news[j].equipType,news[j].equipName,news[j].equipPrice,news[j].buyDate,news[j].scrap,news[j].scrapDate);}

fclose(fp);

printf("\n-----------------------\n");

printf("返回主菜单?

\n");

printf("1.是\n");

printf("2.不,退出\n");

scanf("%d",&c);

if(c==1)return(-1);

if(c==2)return(0);}/*任务结束选择是返回主菜单还是跳出*/

(2).修改模块

用for循环使用feof函数从文件头逐个读取文件字符直到文件结尾,其中用了strcmp函数,比较文件中的数据与输入数是否匹配,若是匹配,返回0,说明你输入的编号正确,键面进入请输入新的编号、种类、名称等,将修改后的信息写入文件中,成功后输出write。

intmodifty()/*修改模块*/

{

if((fp=fopen("","r"))==NULL)

{printf("\n不能打开文件!

\n");}

for(i=0;!

feof(fp);i++)quipCode,equ[i].equipType,equ[i].equipName,&equ[i].equipPrice,&equ[i].buyDate,&equ[i].scrap,&equ[i].scrapDate);

if(strcmp(equ[i].equipCode,code)==0)quipCode);

printf("输入新设备种类\n");}}/*将修改后的信息写入文件

fclose(fp);

j=i;

for(i=0;i

{

fprintf(fp,"%s%s%s%f%s%d%s",equ[i].equipCode,equ[i].equipType,equ[i].equipName,equ[i].equipPrice,equ[i].buyDate,equ[i].scrap,equ[i].scrapDate);

}

printf("\nwrite!

\n");

fclose(fp);}

(3).统计模块

先输入设备类型,判断是否匹配,是的话输出ok,并把相应的内容输出,定义一个计数器count,每循环一次,自加1

inttotal()索模块

分为按编号搜索,设备名搜索,设备价格搜索,用switch循环,来判断进入哪个,比如若输入为1,就会按编号搜索。

switch(choice)

{

case0:

exit(0);break;

case1:

printf("请输入设备编号:

\n");

scanf("%s",code);

for(i=0;!

feof(fp);i++)加模块

与添加模块相似,只有一个地方不同,追加是以fopen打开文件,以a追加的方式追加数据的

if((fp=fopen("","a"))==NULL)quipCode,newequ[j].equipType,newequ[j].equipName,newequ[j].equipPrice,newequ[j].buyDate,newequ[j].scrap,newequ[j].scrapDate);

}

fclose(fp);

四、调试过程(1.测试数据设计2.测试结果分析)

(1)测试数据设计:

进入主菜单:

根据需求操作,按“1”添加信息,以便测试

设备个数:

2

设备编号:

1

设备各类:

abc

设备名称:

switch

设备价格:

90

购买日期:

是否报废:

0

报废日期:

0

(2)测试结果分析:

1.主菜单函数:

根据需求输入相应的操作

主菜单

2.添加模块:

当输入1后,进入添加页面,对设备的各方面信息进行添加

添加设备

添加后文本中的数据

3.修改模块:

输入您需要修改的设备编号,如果输入的编号与查找不相同将真的提示返回菜单或退出,正确进入如下键面

修改设备信息

修改后文本中的信息

4.追加模块:

输入您需要追加的设备个数,进行设备信息的添加,进入如下所示

追加设备

追加后文件中的数据

5.统计模块:

输入设备类型,进行设备信息的统计,进入如下所示

分类统计

6.搜索模块:

选择你需要搜索的方式,可以按编号搜索,也可以按设备名搜索,还可以按设备价格搜索,如下所示

按编号搜索

按价格搜索

按设备名搜索

7.退出模块:

选择5直接退出系统

退出

五、总结

1.设计中遇到的问题及解决过程

文本中会出现乱码,但不是所有数据都就乱码,而是文件是的其中某一项是

乱码,应该不是fread与fprint的问题,后来发现我定义的是char字符串

类型,但在输入数据时scanf("%d",&equ[i].buyDate);用的是%d的格式输

入。

2.设计中产生的错误及原因分析

在修改模块中,修改数据成功后,信息写入文件中,成功后,在键面上输出

Write证明你已经修改信息成功。

可是会出现好几个write,文本中有几条

就会出现几个write。

经过讨论,得知,修改成功后没有跳出for循环,

遍历文本中的信息,每遍历一次,循环输出一次ok。

最后把输出语句放入

For循环外面。

这问题就成功解决。

3.设计体会和收获。

经过一个星期的上机实践学习,使我对C语言有了更进一步的认识和了解,运用C语言可以解决许多实际问题,尤其在在信息管理方面。

要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现自己有好多不足之处,对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解。

通过询问老师和同学,翻阅课本和上网查找等方式,在解决问题的过程中,使我在这几个方面的认识有所提高,同时也学到了新东西。

通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。

同时我们随时都要培养自己的动手能力,只有这样,才能更好的适应这个日新月异的飞速发展的社会。

 

六、附录

1、原代码

#include<>

#include<>quipCode);

printf("输入设备种类\n");

scanf("%s",news[j].equipType);

printf("输入设备名称\n");

scanf("%s",news[j].equipName);

printf("输入设备价格\n");

scanf("%f",&news[j].equipPrice);

printf("输入购买日期\n");

scanf("%s",&news[j].buyDate);crap);

printf("输入报废日期\n");

scanf("%s",&news[j].scrapDate);

}

if((fp=fopen("","w"))==NULL)/*打开文件,输入保存*/

{printf("不能打开文件!

\n");

}

for(j=0;j

fprintf(fp,"%s%s%s%f%s%d%s",news[j].equipCode,news[j].equipType,news[j].equipName,news[j].equipPrice,news[j].buyDate,news[j].scrap,news[j].scrapDate);

}

fclose(fp);

printf("\n-----------------------\n");

printf("返回主菜单?

\n");

printf("1.是\n");

printf("2.不,退出\n");

scanf("%d",&c);

if(c==1)return(-1);

if(c==2)return(0);/*任务结束选择是返回主菜单还是跳出*/

}

/*******************************修改模块*********************/

intmodifty()/*修改模块*/

{

EquInfoequ[50];

charcode[10];

inti,j,c;

FILE*fp;

system("cls");

printf("**********************************************************\n");

printf("修改设备信息:

\n");

printf("**********************************************************\n");

printf("请输入要修改的设备编号:

\n");

scanf("%s",code);/*输入要修改的设备编号*/

printf("------------------------------------\n");

if((fp=fopen("","r"))==NULL)

{

printf("\n不能打开文件!

\n");

}

for(i=0;!

feof(fp);i++)quipCode,equ[i].equipType,equ[i].equipName,&equ[i].equipPrice,&equ[i].buyDate,&equ[i].scrap,&equ[i].scrapDate);

if(strcmp(equ[i].equipCode,code)==0)quipCode);

printf("输入新设备种类\n");

scanf("%s",equ[i].equipType);

printf("输入新设备名称\n");

scanf("%s",equ[i].equipName);

printf("输入新设备价格\n");

scanf("%f",&equ[i].equipPrice);

printf("输入新购买日期\n");

scanf("%s",&equ[i].buyDate);crap);

printf("输入新报废日期\n");

scanf("%s",&equ[i].scrapDate);

}

}/*将修改后的信息写入文件中*/

fclose(fp);

j=i;

if((fp=fopen("","w"))==NULL)

{

printf("\n不能打开文件!

\n");

}

for(i=0;i

{

printf("\nwrite!

\n");

fprintf(fp,"%s%s%s%f%s%d%s",equ[i].equipCode,equ[i].equipType,equ[i].equipName,equ[i].equipPrice,equ[i].buyDate,equ[i].scrap,equ[i].scrapDate);

}

fclose(fp);

printf("\n------------------------------------\n");

printf("返回菜单?

\n");

printf("1.是\n");

printf("2.不,退出\n");

scanf("%d",&c);

if(c==1)return(-1);

if(c==2)return(0);

}

inttotal()....");

getchar();\n");

printf("2.否,退出\n");

scanf("%d",&c);

if(c==1)return(-1);

if(c==2)return(0);

}

/***********************************搜索模块******************************/

intsearch()/*搜索模块*/

{

charcode[10];

charname[20];

floatprice;

intchoice;

intc;

FILE*fp;

EquInfoequ;

inti;

system("cls");

fp=fopen("","r");

if(fp==NULL)exit(0);

printf("选一种方式搜索:

\n\n");

printf("1.编号搜索\n\n");

printf("2.设备名搜索\n\n");

printf("3.设备价格搜索\n\n");

printf("0.返回\n\n");

printf("请输入号码0-3:

");

scanf("%d",&choice);

if(choice==0)exit(0);

switch(choice)

{

case0:

exit(0);break;

case1:

printf("请输入设备编号:

\n");

scanf("%s",code);

for(i=0;!

feof(fp);i++)\n");

printf("2.否,退出\n");

scanf("%d",&c);

if(c==1)return(-1);

if(c==2)return(0);

}

intinput()/*追加模块*/

{EquInfonewequ[50];

inti,j;

intc;

FILE*fp;

system("cls");

printf("**********************************************************\n");

printf("追加设备:

\n");

printf("*******************************MENU***********************\n");

printf("你想追加多少个设备?

\n");

scanf("%d",&i);/*追加要添加的设备个数*/

for(j=0;j

{

printf("------------------\n");

printf("输入设备编号\n");

scanf("%s",&newequ[j].equipCode);

printf("输入设备种类\n");

scanf("%s",newequ[j].equipType);

printf("输入设备名称\n");

scanf("%s",newequ[j].equipName);

printf("输入设备价格\n");

scanf("%f",&newequ[j].equipPrice);

printf("输入购买日期\n");

scanf("%s",&newequ[j].buyDate);

crap);

printf("输入报废日期\n");

scanf("%s",&newequ[j].scrapDate);

}

if((fp=fopen("","a"))==NULL)/*打开文件,输入保存*/quipCode,newequ[j].equipType,newequ[j].equipName,newequ[j].equipPrice,newequ[j].buyDate,newequ[j].scrap,newequ[j].scrapDate);

}

fclose(fp);

printf("\n-----------------------\n");

printf("返回主菜单?

\n");

printf("1.是\n");

printf("2.不,退出\n");

scanf("%d",&c);

if(c==1)return(-1);

if(c==2)return(0);/*任务结束选择是返回主菜单还是跳出*/

}

Voidmain()/************主函数***************************/

{

intn,w,t;

for(t=0;t<1;t++)

{

do

{

system("cls");

puts("\t\t**************************MENU***************************\n");

puts("\t\t**0.追加设备信息**\n");

puts("\t\t**1.添加设备信息**\n");

puts("\t\t**2.修改设备信息**\n");

puts("\t\t**3.分类统计信息**\n");

puts("\t\t**4.搜索设备信息**\n");

puts("\t\t**5.退出管理系统**\n");

puts("\t\t**********************************************************\n");

printf("你想做什么?

(0-5):

");

scanf("%d",&n);

if(n<0||n>5)/*对选择的数字作出判断*/

{w=1;

getchar();

}

elsew=0;

}

while(w==1);

switch(n)

{

case0:

t=input();break;度文库

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

当前位置:首页 > 表格模板 > 合同协议

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

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