设备管理系统设计.docx

上传人:b****4 文档编号:11532528 上传时间:2023-03-18 格式:DOCX 页数:13 大小:22.19KB
下载 相关 举报
设备管理系统设计.docx_第1页
第1页 / 共13页
设备管理系统设计.docx_第2页
第2页 / 共13页
设备管理系统设计.docx_第3页
第3页 / 共13页
设备管理系统设计.docx_第4页
第4页 / 共13页
设备管理系统设计.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

设备管理系统设计.docx

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

设备管理系统设计.docx

设备管理系统设计

8、设备管理

问题描述:

已知一公司需要使用10种设备(设备编号、设备名称),4个部门(部门编号、部门名称),该四个部门需要其他供应商购买使用设备,设计一程序,,完成以下功能:

1)1)购买:

输入设备编号、部门编号(购买),购买日期、设备数量,完成购买的功能:

需要判断设备编号、部门编号是否存在,设备数量是否大于0,购买日期格式是否合法(格式为:

YYYY-MM-DD,如2009-01-02))

2)2)报废:

输入设备编号、部门编号(报废),报废日期、设备数量,完成报废功能:

需要判断设备编号、部门编号是否存在,设备数量是否大于0小于该部门当前正使用设备数量。

报废日期格式是否合法(格式为:

YYYY-MM-DD,如2009-01-02))

3)3)查询指定设备编号购买历史

4)4)指定部门报废设备的历史

5)5)统计指定日期公司各设备可以使用的数量

提示:

●●定义一个日期结构体保存日期,具体信息为:

年、月、日

●●判断购买(报废)日期的格式是否合法时,需要判断长度是否为10,第5位和第8位是否为’-’,字符,将1-4位表示的年份,6-7位表示的月份,9-10位表示的日期分别转换成整数。

判断是否满足构成日期的条件闰年月份只能是1-12之间的数,如果是闰年,二月可以是29天否则不能大于28,1,3,5,7,8,10,12月可以是31天,其余只能小于等于30(建议写成函数)。

●●定义一个结构体数组保存10种设备的信息,具体为:

设备编号,设备名称

●●定义一个结构体数组保存4个部门的信息,具体为部门编号、部门名称

●●定义一个链表保存购买(报废)信息,具体为设备编号、部门编号、购买(报废)日期、操作类型、设备数量、购买单价、购买金额。

其中操作类型为1表示购买、-1表示报废。

●●输入购买信息时,查询设备数组和部门数组,是否设备编号和部门编号存在,如果存在,根据购买数量和购买单价计算购买金额,找出设备的插入购买(报废)链表(操作类型为1)。

●●输入报废信息时,查询购买(报废)链表,计算在报废日期之前购买的设备数量(操作类型为1的),计算在报废日期之前报废的设备数量,得到当前在使用的设备数量,如果输入的报废数量小于当前在使用的设备数量则插入入购买(报废)链表(操作类型为-1)。

●●统计在指定日期,查询购买(报废)链表,计算各个部门在统计日期之前购买的设备数量(操作类型为1的),计算各个部门在统计日期之前报废的设备数量,可以使用一个数组保存这些数据信息,打印形成报表。

/******头文件(.h)***********/

#include"stdio.h" /*I/O函数*/

#include"stdlib.h"/*标准库函数*/

#include"string.h"/*字符串函数*/

#include"ctype.h"/*字符操作函数*/

#include"cstdlib"

/*定义时间结构体*/

structtime{

    intyear;

    intmouth;

    intday;

}a;

/*定义设备结构体*/

structshebei{

    charbh[10];

    charmc[10];

}b[10];

/*定义部门结构体*/

structbumen{

    charbh[10];

    charmc[10];

}c[4];

/*定义链表结构体*/

structsave{

    charsbbh[10];/*设备编号*/

    charbmbh[11];/*部门编号*/

    chartime[20];/*日期*/

    intitem;/*操作类型1或者-1*/

    intn;/*设备数量*/

    doubleprice;/*单价*/

    doublemoney;/*总金额*/

    structsave*next;

};

/*函数申明*/

voidread();/*文件读入函数*/

intmenu_show();/*菜单函数,函数返回值为整数,代表所选的菜单项*/

intmenu_select(intsel,structsave*head);/*根据参数选择相应的功能函数 sel功能选择代码 head链表头节点*/

inttimes(inttime[]);/*日期函数*/

voidsaved(structsave*head);/*购买功能函数*/

voidbroken(structsave*head);/*报废功能*/

voidsearch1(structsave*head);/*查询指定设备编号购买历史*/

voidsearch2(structsave*head);/*查询指定部门报废设备历史*/

voidlist(structsave*head);/*统计指定日期公司各设备可以使用的数量*/

structsave*load(structsave*head);/*读入函数,参数为头节点*/

/*主函数*/

main()

{   

    structsave*head; /*定义链表的头节点*/

    read();

    

    head=(structsave*)malloc(sizeof(structsave));

    system("color1F");

    head->next=NULL;

    system("cls");  /*清屏*/

    for(;;)/*无限循环*/

    {

   menu_select(menu_show(),head);

    }

}

/*

根据参数选择相应的功能函数

sel 功能选择代码

head 链表头节点

*/

menu_select(intsel,structsave*head)

{

  switch(sel) /*调用主菜单函数,返回值整数作开关语句的条件*/

   {

     case1:

saved(head);break;/*购买功能*/

     case2:

broken(head);break;/*报废功能*/

     case3:

search1(head);break;/*查询指定设备编号购买历史*/

     case4:

search2(head);break;/*查询指定部门报废设备历史*/

     case5:

list(head);break;/*统计指定日期公司各设备可以使用的数量*/

     case6:

save(head);break;

     case7:

head=load(head);break;

     case0:

exit(0);/*如返回值为11则程序结束*/

   }

}

/*菜单函数,函数返回值为整数,代表所选的菜单项*/

intmenu_show()

{

  chars[80];

  intc;

  printf("\n\n");

  printf("\n\n           欢迎使用设备管理系统!

!

!

!

!

!

!

!

\n\n");

  printf("\n\n\n\n\n             请按任意键继续......\n");/*提示压任意键继续*/

  getch();/*读入任意字符*/

  system("cls");  /*清屏*/

  printf(" ********************设备管理系统***********************\n\n");

  printf("        1.购买设备!

!

!

\n");

  printf("        2.报废设备!

!

!

\n");

  printf("        3.查询指定设备编号购买历史!

!

!

\n");

  printf("        4.查询指定部门报废设备历史!

!

!

\n");

  printf("        5.统计指定日期公司各设备可以使用的数量!

!

!

\n");

  printf("        6.导入购买与报废信息!

!

!

\n");

  printf("        7.导出购买与报废信息!

!

!

\n");

  printf("        0.退出系统!

!

!

\n");

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

  do{

   printf("\n    请输入0-7之间的数选择需要的操作(0~7):

");/*提示输入选项*/

   scanf("%s",s);/*输入选择项*/

   c=atoi(s);/*将输入的字符串转化为整型数*/

  }while(c<0||c>7);/*选择项不在0~7之间重输*/

  returnc;/*返回选择项,主程序根据该数调用相应的函数*/

}

/*文件读入函数*/

voidread()

{

    inti=0;

    FILE*fp1,*fp2;

    if((fp1=fopen("c:

\\f1.txt","r"))==NULL)

    {

        printf("打开出错!

");

        exit

(1);

    }

    while(!

feof(fp1))

    {

        fscanf(fp1,"%s%s",b[i].bh,b[i].mc);

        i++;

    }

    fclose(fp1);

    i=0;

    if((fp2=fopen("c:

\\f2.txt","r"))==NULL)

    {

        printf("打开出错!

");

        exit

(1);

    }

    while(!

feof(fp2))

    {

        fscanf(fp2,"%s%s",c[i].bh,c[i].mc);

        i++;

    }

    fclose(fp2);

}

/*日期函数*/

inttimes(chartime[])

{

    intflag=0;

    intn=0;

    char*p=time;

    if(strlen(time)!

=10)

        returnflag;

    while(*p!

='-')

    {

        n=n*10+*p-'0';

        p++;

    }

    a.year=n;

    p++;  n=0;

    while(*p!

='-')

    {

    

        n=n*10+*p-'0';

        p++;

    }

    a.mouth=n;

    p++;  n=0;

    while(*p!

='\0')

    {

    

        n=n*10+*p-'0';

        p++;

    }

    a.day=n;

    if(a.mouth>0&&a.mouth<=12)

    {   if(a.year%4==0&&a.year%100!

=0||a.year%400==0)

        {   if(a.mouth==2)

            {   if(a.day>=1&&a.day<=29)

                    flag=1;}

            elseif(a.mouth==1||a.mouth==3||a.mouth==5||a.mouth==7||a.mouth==8||a.mouth==10||a.mouth==12)

            {   if(a.day>=1&&a.day<=31)

                    flag=1;}

            else

            {   if(a.day>=1&&a.day<=30)

                    flag=1;}

        }

        else

        {   if(a.mouth==2)

            {if(a.day>=1&&a.day<=28)

                flag=1;}

            elseif(a.mouth==1||a.mouth==3||a.mouth==5||a.mouth==7||a.mouth==8||a.mouth==10||a.mouth==12)

            {   if(a.day>=1&&a.day<=31)

                    flag=1;}

            else

            {   if(a.day>=1&&a.day<=30)

                    flag=1;}

        }

    }

    returnflag;

}

/*购买功能函数*/

voidsaved(structsave*head)

{

    structsave*p,*temp;

    inti,j,k,k1,m=0,flag=0,flag1=0;

    p=head;

    

    while(p->next!

=NULL)

    {

        p=p->next;

    }

    system("cls");  /*清屏*/

    printf("请输入购买信息:

\n\n");

    temp=malloc(sizeof(structsave));

    temp->next=NULL;

    printf("设备编号 部门编号 购买日期(格式如2009-01-01) 设备数量 设备单价\n\n");

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

    scanf("%s%s%s%d%lf",temp->sbbh,temp->bmbh,temp->time,&temp->n,&temp->price);

    do{for(k=0;k<10;k++)

        if(!

strcmp(temp->sbbh,b[k].bh))

        {

            flag=1;break;}

    if(flag==0)

    {   printf("设备编号输入有误,请重新输入:

\n");

    scanf("%s",temp->sbbh);}}while(flag==0);

    do{for(k1=0;k1<4;k1++)

        if(!

strcmp(temp->bmbh,c[k1].bh))

        {

            flag1=1;break;}

    if(flag1==0)

    {   printf("部门编号输入有误,请重新输入:

\n");

    scanf("%s",temp->bmbh);}}while(flag1==0);

    while(times(temp->time)!

=1){

        printf("时间输入有误,请重新输入:

\n");

        scanf("%s",temp->time);}

    while(temp->n<=0){

        printf("设备数量输入有误,请重新输入:

\n");

        scanf("%d",&temp->n);}

    while(temp->price<=0){

        printf("设备单价输入有误,请重新输入:

\n");

        scanf("%lf",&temp->price);}

    for(i=0;i<10;i++)

        for(j=0;j<4;j++)

        {   if(!

strcmp(temp->sbbh,b[i].bh)&&!

strcmp(temp->bmbh,c[j].bh))

                if(times(temp->time)&&temp->n>0&&temp->price>0)

                {

                    temp->item=1;

                    temp->money=(temp->n)*(temp->price);

                    p->next=temp;

                    m=1;

                    printf("购买成功!

!

!

谢谢使用!

!

!

\n\n");

                }

        }

    if(m==0)

            printf("对不起,购买失败,请重新购买!

!

!

\n");

}

/*报废功能*/

voidbroken(structsave*head)

{

    structsave*p,*temp;

    intk,k1,m=0,flag=0,flag1=0;

    p=head;

    

    system("cls");  /*清屏*/

    printf("请输入报废信息:

\n\n");

    temp=malloc(sizeof(structsave));

    temp->next=NULL;

    printf("设备编号 部门编号 报废日期(格式如2009-01-01) 设备数量 \n\n");

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

    scanf("%s%s%s%d",temp->sbbh,temp->bmbh,temp->time,&temp->n);

    do{for(k=0;k<10;k++)

        if(!

strcmp(temp->sbbh,b[k].bh))

        {

            flag=1;break;}

    if(flag==0)

    {   printf("设备编号输入错误,请重新输入:

\n");

    scanf("%s",temp->sbbh);}}while(flag==0);

    do{for(k1=0;k1<4;k1++)

        if(!

strcmp(temp->bmbh,c[k1].bh))

        {

            flag1=1;break;}

    if(flag1==0)

    {   printf("部门编号输入有误,请重新输入:

\n");

    scanf("%s",temp->bmbh);}}while(flag1==0);

    while(times(temp->time)!

=1){

        printf("时间输入有误,请重新输入:

\n");

        scanf("%s",temp->time);}

    while(temp->n<=0){

   

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

当前位置:首页 > 工程科技 > 环境科学食品科学

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

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