當前位置:編程學習大全網 - 源碼下載 - C語言程序設計《實驗設備管理系統設計》~

C語言程序設計《實驗設備管理系統設計》~

下面的是我前幾天剛針對這題目做的做的:

#include "stdio.h"

#include "stdlib.h"

#include "string.h"

struct shebei

{

char ID[10];

char name[15];

char kind[15];

char over[15];

char yesno[10];

char time[10];

char price[10];

};

typedef struct node

{

struct shebei data;

struct node *next; //建立壹個鏈表。

}Node;

void Add(Node *equip) //添加記錄

{

Node *p,*r,*s;

char id[10]; //先用於輸入ID,也用於判斷是否跳出循環

r=equip;

s=equip->next; //使s為第壹個有用的結點

while(r->next!=NULL) //這個循環的作用是使r為最後壹個有用的結點

r=r->next; //將指針置於最末尾

while(1)

{

printf(">>>>>>>>>>提示:輸入0則返回主菜單!\n");

printf("\n請妳輸入設備ID號:");

scanf("%s",id);

if(strcmp(id,"0")==0) break;

p=(Node *)malloc(sizeof(Node)); //申請空間

strcpy(p->data.ID,id);

printf("\n請輸入設備名稱:");

scanf("%s",p->data.name);

printf("\n請輸入設備種類:");

scanf("%s",p->data.kind);

printf("\n請輸入報廢日期:");

scanf("%s",&p->data.over);

printf("\n請輸入設備是否報廢:");

scanf("%s",&p->data.yesno);

printf("\n請輸入設備購買時間:");

scanf("%s",&p->data.time);

printf("\n請輸入設備價格:");

scanf("%s",&p->data.price);

printf(">>>>>>>>>>提示:已經完成壹條記錄的添加。\n");

p->next=NULL;

r->next=p; //這壹步是必需的,將p與先前的鏈表連起來構成壹條新鏈表

r=p; //也是必需的.將r 又重設為新鏈的最後壹個有用結點

}

}

void Modify(Node *equip)//修改

{

Node *p;

char find[20];

if(!equip->next)

{

printf("\n>>>>>>>>>>提示:沒有資料可以修改!\n");

return;

}

printf("請輸入要修改的設備ID號:");

scanf("%s",find);

p=equip->next;

while(p!=NULL)

{

if(strcmp(p->data.ID,find)==0) //如果找到的話返回的是符合要求

break;

p=p->next;

}

if(p) //若找到

{

int x;

while(1)

{

printf("完成修改請輸入0否則輸入任意數再進行修改:");

scanf("%d",&x);

if(x==0)

{break;}

printf("請輸入新設備號(原來是 %s ):",p->data.ID);

scanf("%s",p->data.ID);

printf("請輸入新設備名稱(原來是 %s ):",p->data.name);

scanf("%s",p->data.name);

printf("請輸入新設備設備種類名稱(原來是 %s ):",p->data.kind);

scanf("%s",p->data.kind);

printf("請輸入新設備報廢日期名稱(原來是 %s ):",p->data.over);

scanf("%s",p->data.over);

printf("請輸入新設備是否報廢(原來是 %s ):",p->data.yesno);

scanf("%s",p->data.yesno);

printf("請輸入新設備購買時間(原來是 %s ):",p->data.kind);

scanf("%s",p->data.time);

printf("請輸入新設備價格(原來是 %s ):",p->data.price);

scanf("%s",p->data.price);

printf("\n>>>>>>>>>>提示:該項記錄資料已經成功修改!\n");

}

}

else printf("\n>>>>>>>>>>提示:妳要修改的信息不存在!\n");

}

void Disp(Node *equip)//輸出記錄

{

Node *p;

p=equip->next;

if(!p)

{

printf("\n>>>>>>>>>>提示:沒有記錄可以顯示!\n");

return;

}

printf("\t\t\t\t顯示結果\n");

printf("設備號 設備名稱 設備種類 報廢日期 是否報廢 購買時間 價格\n");

while(p)

{

printf("\n%-13s%-11s%-7s%-10s%-13s%-10s%-5s\n",p->data.ID,p->data.name,p->data.kind,p->data.over,p->data.yesno,p->data.time,p->data.price);

p=p->next;

}

}

void Tongji(Node *equip)//統計

{

Node *p;

int sel;int flag2=0,ha=0;

p=equip->next;

char find[20];

if(!equip->next) //若鏈表為空

{

printf("\n>>>>>>>>>>提示:沒有資料可以統計分類!\n");

return;

}

printf(">>>>>>>>>>提示:\n=====>0退出\n=====>1按設備號統計\n=====>2按設備名稱統計\n");

scanf("%d",&sel);

if(sel==1)

{

printf("\n輸入妳要統計分類的設備號:");

scanf("%s",find);

while(p)

{

if(strcmp(p->data.ID,find)==0)

{

flag2++;

}

if(flag2==1&&ha!=flag2)

{ printf("設備號 設備名稱 設備種類 報廢日期 是否報廢 購買時間 價格\n");

printf("\n%-13s%-11s%-7s%-10s%-13s%-10s%-5s\n",p->data.ID,p->data.name,p->data.kind,p->data.over,p->data.yesno,p->data.time,p->data.price);

ha=flag2;

}

else if(flag2>ha){printf("\n%-13s%-11s%-7s%-10s%-13s%-10s%-5s\n",p->data.ID,p->data.name,p->data.kind,p->data.over,p->data.yesno,p->data.time,p->data.price);ha=flag2;}

p=p->next;

}

if(flag2)

{

printf("\n*************************按設備號%s統計分類的有%d條記錄:*************************\n\n",find,flag2);

}

else {printf("\n按設備號%s統計的結果為0個\n\n",find);}

}

else if(sel==2)

{

printf("\n輸入妳要統計分類的設備名稱:");

scanf("%s",find);

while(p)

{

if(strcmp(p->data.name,find)==0)

{

flag2++;

}

if(flag2==1&&ha!=flag2)

{ printf("設備號 設備名稱 設備種類 報廢日期 是否報廢 購買時間 價格\n");

printf("\n%-13s%-11s%-7s%-10s%-13s%-10s%-5s\n",p->data.ID,p->data.name,p->data.kind,p->data.over,p->data.yesno,p->data.time,p->data.price);

ha=flag2;

}

else if(flag2>ha){printf("\n%-13s%-11s%-7s%-10s%-13s%-10s%-5s\n",p->data.ID,p->data.name,p->data.kind,p->data.over,p->data.yesno,p->data.time,p->data.price);ha=flag2;}

p=p->next;

}

if(flag2)

{

printf("\n******************按設備名稱%s統計的有%d條記錄:********************\n\n",find,flag2);

}

else {printf("\n按設備名稱%s統計分類的結果為0個\n\n",find);}

}

else if(sel==0) return;

}

void main()

{

Node *equip;

FILE *fp;

int flag;

Node *p,*q;

printf("\t\t\t\t設備管理系統\n");

equip=(Node*)malloc(sizeof(Node));

equip->next=NULL;

p=equip;

fp=fopen("設備管理系統","wb+");

q=(Node*)malloc(sizeof(Node));

if(fread(q,sizeof(Node),1,fp)) //將文件的內容放入接點中

{

q->next=NULL;

p->next=q;

p=q; //將該接點掛入鏈表中

}

fclose(fp); //關閉文件

while(1)

{

printf("**************************************目錄**************************************");

printf("\n1添加記錄\n");

printf("\n2修改記錄\n");

printf("\n3顯示記錄\n");

printf("\n4統計分類記錄\n");

printf("\n0*-EXIT-*\n");

printf("請輸入妳要操作的序號:");

scanf("%d",&flag);

switch(flag)

{

case 0: printf("\n>>>>>>>>>>提示:已經退出系統,ByeBye!\n");break;

case 1: Add(equip); break; //增加記錄

case 2: Modify(equip); break;//修改記錄

case 3: Disp(equip); break;//顯示記錄信息

case 4: Tongji(equip); break;//統計記錄

default: printf("\n>>>>>>>>>>提示:輸入錯誤!\n"); break;

}

}

}

  • 上一篇:搭建壹個網絡直播教育平臺需要多少錢_做壹個直播平臺需要多少費用
  • 下一篇:人人網蛋蛋龍支線任務(要詳細的)
  • copyright 2024編程學習大全網