神秘博客

C语言设备管理程序设计

1、设计题目:设备管理程序设计。
2、设计内容及要求:
(1)进行需求分析,规划设计。
(2)进行界面设计和相关数据表(包括:设备编号、设备种类、设备名称、设备价格、设备购入日期、是否报废等信息)的设计。
(3)实现对设备信息的数据录入、删除、修改、显示、插入、查找、排序以及数据保存等功能。
要求
1、用C语言程序设计方法进行应用程序的开发,综合运用数组、结构体、函数、文件的知识实现功能。

 

#ifndef _DEVICE_H_
#define _DEVICE_H_
typedef struct EquInfo //定义结构体

{
  char equipCode[10]; //编号
  char equipType[20]; //种类
  char equipName[20]; //名称
  float equipPrice; //价格
  char buyDate[20]; //购买日期
  int scrap; //是否报废
  int cut; //是否删除
} EquInfo;



/*添加模块*/
void addition();

/*修改模块*/
void modifty();

//显示模块
void show();

//删除
void delete();

/*搜索模块*/
void search();

//排序显示菜单
void menu();

//排序
void sort(EquInfo *pst, int n, int m);

//插入
void insert();

#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdlib.h>
#include "device.h"
#define SIZE 100
//清空输入
void Dstdin();

void Dstdin()
{
  while (getchar() != '\n')
    continue;
}

/*********************添加模块*****************************/


void addition() /*添加模块*/

{
  EquInfo news[SIZE];
  EquInfo temp;
  int i, j;
  int count;
  FILE *fp;
  errno_t err;

  if ((err = fopen_s(&fp, "swy.txt", "a+")) != 0)
  {
    fputs("错误: 无法创建数据文件, 返回主菜单.\n", stderr);
    system("pause");
    return;
  }

  for (count = 0; !feof(fp); count++) //从文件头一个一个的读取字符,读到文件的结尾。 
  {

    fscanf_s(fp, "%s %s %s %f %s %d %d ", temp.equipCode, 10, temp.equipType, 20, temp.equipName, 20, &temp.equipPrice, temp.buyDate, 20, &temp.scrap, &temp.cut);
  }
  system("cls");

  if (count == SIZE)
  {
    fputs("错误: 文件已满, 请先删除后添加, 返回主菜单.\n", stderr);
    fclose(fp);
    system("pause");
    return;
  }
  printf("**********************************************************\n");
  printf("添加设备[1-%d]\n", SIZE - count);
  printf("请输入添加多少个设备[q退出]:\n");
  printf("**********************************************************\n");


  while (scanf_s("%d", &i)==1)
  {
    if (i<1 || i>SIZE - count)
    {
      printf("错误: 请输入1-%d\n", SIZE - count);
      continue;
    }
    for (j = 0; j < i; j++)

    {

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

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

      scanf_s("%s", news[j].equipCode, 10);

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

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

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

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

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

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

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

      scanf_s("%s", news[j].buyDate, 20);

      printf("是否报废,0/1\n");

      scanf_s("%d", &news[j].scrap);
      news[j].cut = 1;

    }
    for (j = 0; j < i; j++)
    {

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

    }
    count += i;
    system("pause");
    system("cls");
    if (count == SIZE)
    {
      fputs("错误: 文件已满, 请先删除后添加, 返回主菜单.\n", stderr);
      fclose(fp);
      system("pause");
      return;
    }
    printf("**********************************************************\n");
    printf("添加设备[1-%d]\n", SIZE - count);
    printf("请输入添加多少个设备[q退出]:\n");
    printf("**********************************************************\n");

  }

  Dstdin();
  fclose(fp);
  

}

/*******************************修改模块*********************/
void modifty() /*修改模块*/

{

  EquInfo equ[SIZE];

  int num;
  int count = 0;
  int i, j;
  errno_t err;
  FILE *fp;

  system("cls");
  

  if ((err = fopen_s(&fp, "swy.txt", "r")) != 0)
  {

    fputs("错误: 没有数据文件, 请先添加数据, 返回主菜单.\n", stderr);
    system("pause");
    return;
  }

  for (i = 0; !feof(fp); i++) //从文件头一个一个的读取字符,读到文件的结尾。 
  {
    fscanf_s(fp, "%s %s %s %f %s %d %d ", equ[i].equipCode, 10, equ[i].equipType, 20, equ[i].equipName, 20, &equ[i].equipPrice, equ[i].buyDate, 20, &equ[i].scrap, &equ[i].cut);
  } 

  printf("序号 设备编号   设备种类   设备名称   设备价格   购买日期   是否报废\n");
  for (j = 0; j < i; j++)
  {
    printf("%-4d %-10s %-10s %-10s %-10g %-10s %-10d \n", j + 1, equ[j].equipCode, equ[j].equipType, equ[j].equipName, equ[j].equipPrice, equ[j].buyDate, equ[j].scrap);
  }
  printf("请输入要修改的设备序号[q退出]: ");
  while (scanf_s("%d", &num) == 1)
  {
    if (num<1 || num>i)
    {
      printf("错误: 请输入1-%d\n", i);
      continue;
    }
    printf("*************************\n");

    printf("输入新设备编号\n");
    scanf_s("%s", equ[num - 1].equipCode, 10);
    printf("输入新设备种类\n");
    scanf_s("%s", equ[num - 1].equipType, 20);
    printf("输入新设备名称\n");
    scanf_s("%s", equ[num - 1].equipName, 20);
    printf("输入新设备价格\n");
    scanf_s("%f", &equ[num - 1].equipPrice);
    printf("输入新购买日期\n");
    scanf_s("%s", equ[num - 1].buyDate, 20);
    printf("输入新是否报废,0/1\n");
    scanf_s("%d", &equ[num - 1].scrap);
    equ[num - 1].cut = 1;
    printf("*************************\n");
    count++;
    system("cls");
    printf("序号 设备编号   设备种类   设备名称   设备价格   购买日期   是否报废\n");
    for (j = 0; j < i; j++)
    {
      printf("%-4d %-10s %-10s %-10s %-10g %-10s %-10d \n", j + 1, equ[j].equipCode, equ[j].equipType, equ[j].equipName, equ[j].equipPrice, equ[j].buyDate, equ[j].scrap);
    }
    printf("请输入要修改的设备序号[q退出]: ");
  }

  fclose(fp);
  Dstdin();
  if (count > 0)
  {
    puts("提示: 写入数据中...");
    if ((err = fopen_s(&fp, "swy.txt", "w")) != 0)
    {

      fputs("错误: 无法创建数据文件, 返回主菜单.\n", stderr);
      system("pause");
      return;

    }

    for (j = 0; j < i; j++)
    {
      fprintf(fp, "%s %s %s %f %s %d %d \n", equ[j].equipCode, equ[j].equipType, equ[j].equipName, equ[j].equipPrice, equ[j].buyDate, equ[j].scrap, equ[j].cut);
    }
    puts("提示: 写入完成, 返回主菜单.");
    fclose(fp);
    system("pause");
    return;
  }
  else
  {
    puts("提示: 您没有任何删除操作, 返回主菜单.");
    system("pause");
    return;
  }


}



void show()//显示模块

{

  EquInfo equ[SIZE];
  EquInfo temp[SIZE];
  int i, j;
  int num;
  int save;
  FILE *fp;
  errno_t err;


  system("cls");

  if ((err = fopen_s(&fp, "swy.txt", "r")) != 0)
  {
    fputs("错误: 没有数据文件, 请先添加数据, 返回主菜单.\n", stderr);
    system("pause");
    return;
  }
  for (i = 0; !feof(fp); i++)
  {
    fscanf_s(fp, "%s %s %s %f %s %d %d ", equ[i].equipCode, 10, equ[i].equipType, 20, equ[i].equipName, 20, &equ[i].equipPrice, equ[i].buyDate, 20, &equ[i].scrap, &equ[i].cut);
  }
  memmove(&temp[0], &equ[0], i * sizeof(EquInfo));
  menu();
  while (scanf_s("%d", &num) == 1)
  {
    if (num < 1 || num>7)
    {
      puts("错误: 请输入1-7");
      continue;
    }
    switch (num)
    {
    case 1:
      printf("序号 设备编号   设备种类   设备名称   设备价格   购买日期   是否报废\n");
      for (j = 0; j < i; j++)
      {
        printf("%-4d %-10s %-10s %-10s %-10g %-10s %-10d \n", j + 1, equ[j].equipCode, equ[j].equipType, equ[j].equipName, equ[j].equipPrice, equ[j].buyDate, equ[j].scrap);
      }
      break;
    case 2:
      sort(&temp[0], i, num);
      break;
    case 3:
      sort(&temp[0], i, num);
      break;
    case 4:
      sort(&temp[0], i, num);
      break;
    case 5:
      sort(&temp[0], i, num);
      break;
    case 6:
      sort(&temp[0], i, num);
      break;
    case 7:
      sort(&temp[0], i, num);
      break;
    default:
      break;
    }
    if (num > 1)
    {
      printf("序号 设备编号   设备种类   设备名称   设备价格   购买日期   是否报废\n");
      for (j = 0; j < i; j++)
      {
        printf("%-4d %-10s %-10s %-10s %-10g %-10s %-10d \n", j + 1, temp[j].equipCode, temp[j].equipType, temp[j].equipName, temp[j].equipPrice, temp[j].buyDate, temp[j].scrap);
      }
    }
    if (num > 1)
    {
      puts("\n提示: 是否要保存排序后的数据, 写入文件.");
      puts("1. 保存 \t2. 不保存");
      scanf_s("%d", &save);
      if (save == 1)
      {
        fclose(fp);
        puts("提示: 写入数据中...");
        if ((err = fopen_s(&fp, "swy.txt", "w")) != 0)
        {
          fputs("错误: 无法创建数据文件, 返回主菜单.\n", stderr);
          system("pause");
          return;
        }

        for (j = 0; j < i; j++)
        {
          fprintf(fp, "%s %s %s %f %s %d %d \n", temp[j].equipCode, temp[j].equipType, temp[j].equipName, temp[j].equipPrice, temp[j].buyDate, temp[j].scrap, temp[j].cut);
        }
        fclose(fp);
        puts("提示: 写入完成, 返回菜单.");
        if ((err = fopen_s(&fp, "swy.txt", "r")) != 0)
        {
          fputs("错误: 没有数据文件, 请先添加数据, 返回主菜单.\n", stderr);
          system("pause");
          return;
        }
        for (i = 0; !feof(fp); i++)

        {
          fscanf_s(fp, "%s %s %s %f %s %d %d ", equ[i].equipCode, 10, equ[i].equipType, 20, equ[i].equipName, 20, &equ[i].equipPrice, equ[i].buyDate, 20, &equ[i].scrap, &equ[i].cut);

        }
      }
    }
    system("pause");
    system("cls");
    menu();

  }
  Dstdin();
  
  fclose(fp);



}



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



void search() /*搜索模块*/

{
  char code[10];
  char name[20];
  float price;
  int choice;
  FILE *fp;
  EquInfo equ[SIZE];
  int i, j;
  int count;
  char type[20];
  char date[20];
  errno_t err;


  system("cls");

  if ((err = fopen_s(&fp, "swy.txt", "r")) != 0)
  {

    fputs("错误: 没有数据文件, 请先添加数据, 返回主菜单.\n", stderr);
    system("pause");
    return;
  }

  for (i = 0; !feof(fp); i++)
  {
    fscanf_s(fp, "%s %s %s %f %s %d %d ", equ[i].equipCode, 10, equ[i].equipType, 20, equ[i].equipName, 20, &equ[i].equipPrice, equ[i].buyDate, 20, &equ[i].scrap, &equ[i].cut);
  }
  printf("***************选一种方式搜索***************\n");
  printf("1. 设备编号搜索 \t2. 设备种类搜索\n");
  printf("3. 设备名称搜索 \t4. 设备价格搜索\n");
  puts("5. 设备购入日期 \tq. 退出");
  puts("********************************************");
  printf("请输入号码 1-5:");

  while (scanf_s("%d", &choice) == 1)
  {
    if (choice < 1 || choice>5)
    {
      puts("错误: 请输入1-5");
      continue;
    }
    
    switch (choice)

    {

    case 1:

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

      scanf_s("%s", code, 10);

      for (j = 0, count = 0; j < i; j++)
      {
        if (strcmp(equ[j].equipCode, code) == 0)
        {
          if (count == 0)
          {
            puts("****************************************************************");
            printf("设备编号   设备种类   设备名称   设备价格   购买日期   是否报废\n");
          }
          printf("%-10s %-10s %-10s %-10g %-10s %-10d\n", equ[j].equipCode, equ[j].equipType, equ[j].equipName, equ[j].equipPrice, equ[j].buyDate, equ[j].scrap);
          count++;
        }
      }
      if (count == 0)
      {
        puts("查找结果: 未找到");
      }
      else
        puts("****************************************************************");
      break;


    case 2:
      printf("请输入设备种类:\n");

      scanf_s("%s", type, 20);

      for (j = 0, count = 0; j < i; j++)
      {
        if (strcmp(equ[j].equipType, type) == 0)
        {
          if (count == 0)
          {
            puts("****************************************************************");
            printf("设备编号   设备种类   设备名称   设备价格   购买日期   是否报废\n");
          }
          printf("%-10s %-10s %-10s %-10g %-10s %-10d\n", equ[j].equipCode, equ[j].equipType, equ[j].equipName, equ[j].equipPrice, equ[j].buyDate, equ[j].scrap);
          count++;
        }
      }
      if (count == 0)
      {
        puts("查找结果: 未找到");
      }
      else
        puts("****************************************************************");
      break;
    case 3:

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

      scanf_s("%s", name, 20);

      for (j = 0, count = 0; j < i; j++)
      {
        if (strcmp(equ[j].equipName, name) == 0)
        {
          if (count == 0)
          {
            puts("****************************************************************");
            printf("设备编号   设备种类   设备名称   设备价格   购买日期   是否报废\n");
          }
          printf("%-10s %-10s %-10s %-10g %-10s %-10d\n", equ[j].equipCode, equ[j].equipType, equ[j].equipName, equ[j].equipPrice, equ[j].buyDate, equ[j].scrap);
          count++;
        }
      }
      if (count == 0)
      {
        puts("查找结果: 未找到");
      }
      else
        puts("****************************************************************");
      break;

    case 4:

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

      scanf_s("%f", &price);

      for (j = 0, count = 0; j < i; j++)
      {
        if (equ[j].equipPrice == price)
        {
          if (count == 0)
          {
            puts("****************************************************************");
            printf("设备编号   设备种类   设备名称   设备价格   购买日期   是否报废\n");
          }
          printf("%-10s %-10s %-10s %-10g %-10s %-10d\n", equ[j].equipCode, equ[j].equipType, equ[j].equipName, equ[j].equipPrice, equ[j].buyDate, equ[j].scrap);
          count++;
        }
      }
      if (count == 0)
      {
        puts("查找结果: 未找到");
      }
      else
        puts("****************************************************************");
      break;
    case 5:

      printf("请输入设备购入日期:\n");

      scanf_s("%s", date, 20);

      for (j = 0, count = 0; j < i; j++)
      {
        if (strcmp(equ[j].buyDate, date) == 0)
        {
          if (count == 0)
          {
            puts("****************************************************************");
            printf("设备编号   设备种类   设备名称   设备价格   购买日期   是否报废\n");
          }
          printf("%-10s %-10s %-10s %-10g %-10s %-10d\n", equ[j].equipCode, equ[j].equipType, equ[j].equipName, equ[j].equipPrice, equ[j].buyDate, equ[j].scrap);
          count++;
        }
      }
      if (count == 0)
      {
        puts("查找结果: 未找到");
      }
      else
        puts("****************************************************************");
      break;
    }
    system("pause");
    system("cls");
    printf("***************选一种方式搜索***************\n");
    printf("1. 设备编号搜索 \t2. 设备种类搜索\n");
    printf("3. 设备名称搜索 \t4. 设备价格搜索\n");
    puts("5. 设备购入日期 \tq. 退出");
    puts("********************************************");
    printf("请输入号码 1-5:");
  }

  
  Dstdin();
  fclose(fp);


}

//删除
void delete()
{
  EquInfo equ[SIZE];
  int i, j;
  FILE *fp;
  int num;
  int count = 0;
  errno_t err;

  system("cls");

  if ((err = fopen_s(&fp, "swy.txt", "r")) != 0)
  {
    fputs("错误: 没有数据文件, 请先添加数据, 返回主菜单.\n", stderr);
    system("pause");
    return;
  }




  for (i = 0; !feof(fp); i++)
  {
    fscanf_s(fp, "%s %s %s %f %s %d %d ", equ[i].equipCode, 10, equ[i].equipType, 20, equ[i].equipName, 20, &equ[i].equipPrice, equ[i].buyDate, 20, &equ[i].scrap, &equ[i].cut);
  }
  printf("序号 设备编号   设备种类   设备名称   设备价格   购买日期   是否报废   是否删除\n");
  for (j = 0; j < i; j++)
  {
    if (equ[j].cut == 1)
      printf("%-4d %-10s %-10s %-10s %-10g %-10s %-10d 保留\n", j + 1, equ[j].equipCode, equ[j].equipType, equ[j].equipName, equ[j].equipPrice, equ[j].buyDate, equ[j].scrap);
    else
      printf("%-4d %-10s %-10s %-10s %-10g %-10s %-10d 删除\n", j + 1, equ[j].equipCode, equ[j].equipType, equ[j].equipName, equ[j].equipPrice, equ[j].buyDate, equ[j].scrap);

  }

  puts("请选择你要删除的项, 重复选择保留与删除切换[q退出]:");
  while (scanf_s("%d", &num) == 1)
  {
    if (num<1 || num>i)
    {
      printf("错误: 请重新输入1-%d\n", i);
      continue;
    }
    system("cls");
    if (equ[num - 1].cut == 1)
      equ[num - 1].cut = 0;
    else
      equ[num - 1].cut = 1;
    printf("序号 设备编号   设备种类   设备名称   设备价格   购买日期   是否报废   是否删除\n");
    for (j = 0; j < i; j++)
    {
      if (equ[j].cut == 1)
        printf("%-4d %-10s %-10s %-10s %-10g %-10s %-10d 保留\n", j + 1, equ[j].equipCode, equ[j].equipType, equ[j].equipName, equ[j].equipPrice, equ[j].buyDate, equ[j].scrap);
      else
        printf("%-4d %-10s %-10s %-10s %-10g %-10s %-10d 删除\n", j + 1, equ[j].equipCode, equ[j].equipType, equ[j].equipName, equ[j].equipPrice, equ[j].buyDate, equ[j].scrap);

    }
    count++;
    puts("请选择你要删除的项, 重复选择保留与删除切换[q退出]:");
  }
  
  Dstdin();
  fclose(fp);
  if (count > 0)
  {
    puts("提示: 写入数据中...");
    if ((err = fopen_s(&fp, "swy.txt", "w")) != 0)
    {
      fputs("错误: 无法创建数据文件, 返回主菜单.\n", stderr);
      system("pause");
      return;
    }

    for (j = 0; j < i; j++)
    {
      if (equ[j].cut == 1)
        fprintf(fp, "%s %s %s %f %s %d %d \n", equ[j].equipCode, equ[j].equipType, equ[j].equipName, equ[j].equipPrice, equ[j].buyDate, equ[j].scrap, equ[j].cut);

    }
    fclose(fp);
    puts("提示: 写入完成, 返回主菜单.");
    system("pause");
    return;
  }
  else
  {
    puts("提示: 您没有任何删除操作, 返回主菜单.");
    system("pause");
    return;
  }


}

//排序显示菜单
void menu()
{
  puts("********************显示菜单********************");
  puts("1. 默认排序显示 \t2. 设备编号升序显示");
  puts("3. 设备种类升序显示 \t4. 设备名称升序显示");
  puts("5. 设备价格升序显示 \t6. 设备购入日期升序显示");
  puts("7. 设备报废升序显示 \tq. 退出");
  puts("************************************************");
}

//排序
void sort(EquInfo *pst, int n, int m)
{
  EquInfo temp;
  int i, j;


  if (m == 2)
  {
    for (i = 0; i < n; i++)
    {
      for (j = i; j < n; j++)
      {
        if (strcmp(pst[i].equipCode, pst[j].equipCode) > 0)
        {
          temp = pst[i];
          pst[i] = pst[j];
          pst[j] = temp;
        }
      }
    }
  }
  else if (m == 3)
  {
    for (i = 0; i < n; i++)
    {
      for (j = i; j < n; j++)
      {
        if (strcmp(pst[i].equipType, pst[j].equipType) > 0)
        {
          temp = pst[i];
          pst[i] = pst[j];
          pst[j] = temp;
        }
      }
    }
  }
  else if (m == 4)
  {
    for (i = 0; i < n; i++)
    {
      for (j = i; j < n; j++)
      {
        if (strcmp(pst[i].equipName, pst[j].equipName) > 0)
        {
          temp = pst[i];
          pst[i] = pst[j];
          pst[j] = temp;
        }
      }
    }
  }
  else if (m == 5)
  {
    for (i = 0; i < n; i++)
    {
      for (j = i; j < n; j++)
      {
        if (pst[i].equipPrice > pst[j].equipPrice)
        {
          temp = pst[i];
          pst[i] = pst[j];
          pst[j] = temp;
        }
      }
    }
  }
  else if (m == 6)
  {
    for (i = 0; i < n; i++)
    {
      for (j = i; j < n; j++)
      {
        if (strcmp(pst[i].buyDate, pst[j].buyDate) > 0)
        {
          temp = pst[i];
          pst[i] = pst[j];
          pst[j] = temp;
        }
      }
    }
  }
  else if (m == 7)
  {
    for (i = 0; i < n; i++)
    {
      for (j = i; j < n; j++)
      {
        if (pst[i].scrap > pst[j].scrap)
        {
          temp = pst[i];
          pst[i] = pst[j];
          pst[j] = temp;
        }
      }
    }
  }
}

//插入
void insert()
{
  EquInfo equ[SIZE];
  EquInfo temp;
  int num;
  int count = 0;
  int i, j;
  errno_t err;
  FILE *fp;

  system("cls");
  if ((err = fopen_s(&fp, "swy.txt", "r")) != 0)
  {

    fputs("错误: 没有数据文件, 请先添加数据, 返回主菜单.\n", stderr);
    system("pause");
    return;
  }

  for (i = 0; !feof(fp); i++) //从文件头一个一个的读取字符,读到文件的结尾。 
  {
    fscanf_s(fp, "%s %s %s %f %s %d %d ", equ[i].equipCode, 10, equ[i].equipType, 20, equ[i].equipName, 20, &equ[i].equipPrice, equ[i].buyDate, 20, &equ[i].scrap, &equ[i].cut);
  }
  if (i == SIZE)
  {
    fputs("错误: 文件已满, 请先删除后添加, 返回主菜单.", stderr);
    fclose(fp);
    system("pause");
    return;
  }
  printf("序号 设备编号   设备种类   设备名称   设备价格   购买日期   是否报废\n");
  for (j = 0; j < i; j++)
  {
    printf("%-4d %-10s %-10s %-10s %-10g %-10s %-10d \n", j + 1, equ[j].equipCode, equ[j].equipType, equ[j].equipName, equ[j].equipPrice, equ[j].buyDate, equ[j].scrap);
  }
  printf("***************************************************************************\n");
  puts("提示: 插入到输入的序号后面");
  printf("请输入要插入的设备序号[q退出]: ");
  while (scanf_s("%d", &num) == 1)
  {
    if (num<1 || num>i)
    {
      printf("错误: 请输入1-%d\n", i);
      continue;
    }
    printf("*************************\n");

    printf("输入新设备编号\n");
    scanf_s("%s", temp.equipCode, 10);
    printf("输入新设备种类\n");
    scanf_s("%s", temp.equipType, 20);
    printf("输入新设备名称\n");
    scanf_s("%s", temp.equipName, 20);
    printf("输入新设备价格\n");
    scanf_s("%f", &temp.equipPrice);
    printf("输入新购买日期\n");
    scanf_s("%s", temp.buyDate, 20);
    printf("输入新是否报废,0/1\n");
    scanf_s("%d", &temp.scrap);
    temp.cut = 1;
    printf("*************************\n");
    count++;
    if (num < i)
    {
      memmove(&equ[num + 1], &equ[num], (i - num) * sizeof(EquInfo));
    }
    equ[num] = temp;
    i++;
    system("cls");
    if (i == SIZE)
    {
      fputs("错误: 文件已满, 请先删除后添加, 返回主菜单.\n", stderr);
      fclose(fp);
      system("pause");
      return;
    }
    printf("序号 设备编号   设备种类   设备名称   设备价格   购买日期   是否报废\n");
    for (j = 0; j < i; j++)
    {
      printf("%-4d %-10s %-10s %-10s %-10g %-10s %-10d \n", j + 1, equ[j].equipCode, equ[j].equipType, equ[j].equipName, equ[j].equipPrice, equ[j].buyDate, equ[j].scrap);
    }
    printf("***************************************************************************\n");
    puts("提示: 插入到输入的序号后面");
    printf("请输入要插入的设备序号[q退出]: ");
  }

  fclose(fp);
  Dstdin();
  if (count > 0)
  {
    puts("提示: 写入数据中...");
    if ((err = fopen_s(&fp, "swy.txt", "w")) != 0)
    {

      fputs("错误: 无法创建数据文件, 返回主菜单.\n", stderr);
      system("pause");
      return;

    }

    for (j = 0; j < i; j++)
    {
      fprintf(fp, "%s %s %s %f %s %d %d \n", equ[j].equipCode, equ[j].equipType, equ[j].equipName, equ[j].equipPrice, equ[j].buyDate, equ[j].scrap, equ[j].cut);
    }
    puts("提示: 写入完成, 返回主菜单.");
    fclose(fp);
    system("pause");
    return;
  }
  else
  {
    puts("提示: 您没有任何删除操作, 返回主菜单.");
    system("pause");
    return;
  }

}
#include <stdio.h>
#include <stdlib.h> 
#include <string.h>
#include "device.h"

void main()
{

  int n, w, t;

  for (t = 0; t < 2; t++)
  {

    do

    {

      system("cls");

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

      puts("** 0. 添加设备信息 **\n"); 
      puts("** 1. 修改设备信息 **\n"); 
      puts("** 2. 排序显示信息 **\n"); 
      puts("** 3. 搜索设备信息 **\n"); 
      puts("** 4. 插入设备信息 **\n");
      puts("** 5. 删除设备信息 **\n");
      puts("** 6. 退出管理系统 **\n"); 
      puts("*********************************************************\n");

      printf("你想做什么,(0-6):");

      scanf_s("%d", &n);

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

      {
        w = 1;

        getchar();

      }

      else w = 0;

    } while (w == 1);



    switch (n)

    {

    case 0:
      addition();  //添加
      t = 0;
      break; 

    case 1:
      modifty();  //修改
      t = 0;
      break; 

    case 2:
      show();  //显示
      t = 0;
      break; 

    case 3:
      search();  //搜索
      t = 0;
      break; 
    case 4:
      insert();  //插入
      t = 0;
      break;
    case 5:
      delete();  //删除
      t = 0;
      break;

    case 6:
      exit(0); /*退出*/

    }

  }

}

 

版权说明:
点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注

觉得文章有用就请我吃包辣条吧

微信扫一扫打赏