當前位置:編程學習大全網 - 編程語言 - C語言課程設計:計算機設備管理系統(非常著急 懇請各位幫忙 超高懸賞)

C語言課程設計:計算機設備管理系統(非常著急 懇請各位幫忙 超高懸賞)

這個行不?

#define N 100

#include<stdio.h>

#include<string.h>

#include<conio.h>

/*聲明*/

void myprint();

int mycreat(struct shebei_type*p,int n);

void mydisplay(struct shebei_type*p,int n);

void mysearch(struct shebei_type*p,int n);

void mymodify(struct shebei_type*p,int n);

int myadd(struct shebei_type*p,int n);

int mydelete(struct shebei_type*p,int n);

void mysort(struct shebei_type*p,int n);

void sch_num(struct shebei_type*p,int n);

void sch_name(struct shebei_type*p,int n);

void mystatic(struct shebei_type*p,int n);

int loadinfo(struct shebei_type*p,int n);

int saveinfo(struct shebei_type*p,int n);

struct date

{ int year;

int month;

int date;

};

struct shebei_type

{int num;

char name[10];

char kind[10];

int price;

struct date time;

char lab[10];

int amount;

}

/*主程序*/

main()

{char choose,yes_no;

struct shebei_type record[N];

int total=0,flag;

total=loadinfo(record,N);

do

{

myprint();

printf(" 請選擇: ");

choose=getche();

switch(choose)

{

case 1: mycreat(record,total);break;

case 2: mydisplay(record,total);break;

case 3: mysearch(record,total);break;

case 4: mymodify(record,total);break;

case 5: myadd(record,total);break;

case 6: mydelete(record,total);break;

case 7: mysort(record,total);break;

case 8: flag=saveinfo(record,total);

if( flag == 1 )

{

printf( "\n保存成功!\n" );

}

else

{

printf( "\n保存失敗\n" );

}

break;

case 9:mystatic(record,total);break;

case 0:break;

default:

printf("\n %c為非法選項!\n",choose);

}

if(choose=='0')break;

printf("\n 要繼續選擇嗎(Y/N)?");

do

{

yes_no=getche();

}

while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');

}

while(yes_no!='Y'||yes_no!='y');

}

/*界面*/

void myprint();

{

printf("\n");

printf("************************");

printf(" 實驗室設備管理系統 ");

printf("***********************");

printf(" 請輸入選項編號(0--7) \n");

printf(" 1--創建設備信息 \n");

printf(" 2--顯示設備信息 \n");

printf(" 3--查詢設備信息 \n");

printf(" 4--修改設備信息 \n");

printf(" 5--添加設備信息 \n");

printf(" 6--刪除設備信息 \n");

printf(" 7--排序設備信息 \n");

printf(" 8--保存設備信息 \n");

printf(" 9--統計設備信息 \n");

printf(" 0--退出 \n");

}

/*載入信息*/

int loadinfo(struct shebei_type*p,int n)

{

FILE *fp;

int i,all=0;

char filename[30]="tx1.dat";

fp=fopen(filename, "r");

if ( fp == NULL )

{

return 0;

}

fscanf(fp,"%d\n",&all);

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

{

fscanf( fp,"%s%s%f%f%f%f\n",p[i].num ,p[i].name ,p[i].price ,p[i].time ,p[i].lab ,p[i]kind );

}

fclose(fp);

return all;

}

/*保存信息*/

int saveinfo(struct shebei_type*p,int n)

{

FILE *fp;

int i; int all=0;

char filename[30]="tx1.dat";

fp = fopen ( filename,"w");

if ( fp == NULL)

{

printf( "\n***不能建立或打開文件%s!", filename );

return 0;

}

fprintf( fp, "%d\n", n );

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

{

fprintf( fp, "%8s%8s%8.2f%8.2f%8.2f%8.2f\n",p[i].num ,

p[i].name ,p[i].kind ,p[i].price ,p[i].time ,p[i].lab );

}

fclose(fp);

return 1;

}

/*顯示信息*/

void mydisplay(struct shebei_type*p,int n)

{

int i = 0;

printf("\n");

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

printf(" 編號 分類 名稱 價格 購買時間 所屬實驗室\n");

while( i < n )

{

printf("%8s%8s%8.2f%8.2f%8.2f\n", p->num , p->kind , p->name , p->price , p->time , p->lab);

p++;

i++;

}

}

/*輸入信息*/

int mycreat(struct shebei_type*p,int n)

{

int i;

int m;

printf("\n請輸入要輸入設備的個數(<%d): ",N);

scanf("%d",&m);

i=0;

while(i<m)

{

printf("\n");

printf("請輸入第%d個記錄:\n",i+1);

printf("編號:");

do

{

scanf( "%s",p->num);

}

while(strcmp(p->num,"")==0);

printf("名稱:");

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

printf("類別:");

scanf( "%f", &p->kind );

printf( "購買時間:" );

scanf( "%f", &p->time );

printf("所屬實驗室:");

scanf( "%f", &p->lab );

rintf("購買價格:");

scanf( "%f", &p->price );

i++;

p++;

}

return m+n;

}

/*查找*/

void mysearch(struct shebei_type*p,int n)

{

char c;

mydisplay(p,n);

printf("\n按不編號查詢(h),還是按名稱查詢(m)?");

c=getche();

if(c=='h'||c=='H')

sch_num(p,n);

else if(c=='m'||c=='M')

sch_name(p,n);

else

printf("\n非法字符!\n");

}

/*按編號查找*/

void sch_num(struct shebei_type*p,int n)

{

int i,flag=0;

char nm[10];

printf("\n請輸入要查設備的編號:");

gets(nm);

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

if(strcmp(nm,p[i].num)==0)

{

printf("編號 名稱 價格 夠買時間 所屬實驗室 類別\n");

printf("%8s%8s%8.2f%8.2f%8.2f\n",p[i].num ,

p[i].name ,p[i].price ,p[i].time ,p[i].lab , p[i].kind);

flag=1;

}

if(flag==0)

printf("無此設備!\n");

}

/*按名稱查詢*/

void sch_name(struct shebei_type*p,int n)

{

int i,flag=0;

char nam[10];

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

gets(nam);

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

if(strcmp(nam,p[i].name)==0)

{

printf("編號 名稱 價格 夠買時間 所屬實驗室 類別\n");

printf("%8s%8s%8.2f%8.2f%8.2f\n",p[i].num ,

p[i].name ,p[i].price ,p[i].time ,p[i].lab ,p[i].kind);

flag=1;

}

if(flag==0)

printf("無此設備!\n");

}

/*修改信息*/

void mymodify(struct shebei_type*p,int n)

{

int i;

char nam[10];

mydisplay(p,n);

printf("\n 請輸入要修改的名稱:");

gets(nam);

for(i=0;i<n;i++,p++)

{

if(strcmp(nam,p->name)==0)break;

}

if(i==n)

printf("無此設備!\n");

else

{

printf("請輸入正確的編號:");

do

{

scanf( "%s",p->num);

}

while(strcmp(p->num,"")==0);

printf("請輸入正確的名稱:");

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

printf("請輸入正確的價格:");

scanf( "%f", &p->price );

printf( "請輸入正確的購買時間:" );

scanf( "%f", &p->time );

printf("請輸入正確的所屬實驗室:");

scanf( "%f", &p->lab );

printf("請輸入正確的類別:");

scanf( "%f", &p->kind );

}

}

/*增加信息*/

int myadd(struct shebei_type*p,int n)

{

int i=0;

char c;

struct shebei_type t,*q;

/*clscr();*/

printf("添加前的記錄: \n");

printf("編號 名稱 價格 夠買時間 所屬實驗室 類別\n");

i=0;

q=p;

/*顯示原有記錄信息*/

while(i<n)

{

printf("%8s%8s%8.2f%8.2f%8.2f%8.2f\n", q->num , q->name , q->price , q->time , q->lab , q->kind );

i++;

q++;

}

do

{

printf("請輸入新記錄的編號: \n");

do

{

scanf( "%s",t.num );

}

while(strcmp(p->num,"")==0);

/*不能為空*/

printf("請輸入新記錄的名稱: ");

scanf( "%s",t.name );

printf("請輸入新記錄的價格:");

scanf( "%f", &t.price );

printf( "請輸入新記錄的購買時間:" );

scanf( "%f", &t.time );

printf("請輸入新記錄的所屬實驗室:");

scanf( "%f", &t.lab );

printf("請輸入新記錄的類別:");

scanf( "%f", &t.kind );

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

if(strcmp(t.num,(p+i)->num)==0)

{

printf("編號重復,要重新輸入嗎(Y/N)?");

c=getche();

putchar('\n');

break;

}

/*找到最後沒有重復*/

if(i==n)

{

*(p+i)=t;

printf("添加後的紀錄:\n");

printf("編號 名稱 價格 夠買時間 所屬實驗室 類別\n");

for(i=0;i<n+1;i++)

printf("%8s%8s%8.2f%8.2f%8.2f%8.2f\n",p[i].num ,

p[i].name ,p[i].price ,p[i].time ,p[i].lab ,p[i].kind );

break;

}

}

while(c=='y'||c=='Y');

return n+1;

}

/*刪除信息*/

int mydelete(struct shebei_type*p,int n)

{

int i,x;

char c,nm[10],nam[10];

printf("\n刪除前的記錄: \n");

printf("編號 名稱 價格 夠買時間 所屬實驗室 類別\n");

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

printf("%8s%8s%8.2f%8.2f%8.2f%8.2f\n",p[i].num ,

p[i].name ,p[i].price ,p[i].time ,p[i].lab ,p[i].kind );

printf("按編號刪除(h),還是按名稱刪除(m)?");

c=getche();

if(c=='h'||c=='H')

{

printf("\n請輸入要刪除記錄的編號: ");

gets(nm);

for(x=0;x<n;x++)

if(strcmp(nm,p[x].num)==0)

{

return n-1;

break;

}

if(x<n)

{

for

(i=x;i<n;i++)

{

p[i]=p[i+1];

}

printf("刪除後的記錄: \n");

printf("編號 名稱 價格 夠買時間 所屬實驗室 類別\n");

for(i=0;i<n-1;i++)

printf("%8s%8s%8.2f%8.2f%8.2f%8.2f\n",p[i].num ,

p[i].name ,p[i].price ,p[i].time ,p[i].lab ,p[i].kind );

}

else

printf("無此設備\n");

}

else

if(c=='m'||c=='M')

{

printf("\n請輸入要刪除記錄的名稱: ");

gets(nam);

for(x=0;x<n;x++)

if(strcmp(nam,p[x].name)==0)

{

return n-1;

break;

}

if(x<n)

{

for(i=x;i<n-1;i++)

{

p[i]=p[i+1];

}

printf("刪除後的記錄: \n");

printf("編號 名稱 價格 夠買時間 所屬實驗室 類別\n");

for(i=0;i<n-1;i++)

printf("%8s%8s%8.2f%8.2f%8.2f%8.2f\n",p[i].num ,

p[i].name ,p[i].price ,p[i].time ,p[i].lab ,p[i].kind );

}

else

printf("無此設備\n");

}

else

{

printf("\n非法字符\n");

return n;

}

}

/*排序*/

void mysort(struct shebei_type*p,int n)

{

int j,i,k;

char c1,c2;

struct lab temp;

/*clrscr()*/

printf("排序前的記錄:\n");

printf("編號 名稱 價格 夠買時間 所屬實驗室 類別\n");

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

printf("%8s%8s%8.2f%8.2f%8.2f%8.2f\n",p[i].num ,

p[i].name ,p[i].price ,p[i].time ,p[i].lab ,p[i].kind );

printf("按價格排序(c),按時間排序(m),按類別排序(e),按編號排序(k),按實驗室排序(a)?");

c1=getche();

/*按價格排序*/

if(c1=='c'||c1=='C')

{

for(i=0;i<n-1;i++)

{

k=i;

for(j=i;j<n;j++)

if( p[k].price >p[j].price )

k=j;

temp=p[k];

p[k]=p[i];

p[i]=temp;

}

printf("\n排序後的記錄:\n");

printf("編號 名稱 價格 夠買時間 所屬實驗室 類別\n");

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

printf("%8s%8s%8.2f%8.2f%8.2f%8.2f\n",p[i].num ,

p[i].name ,p[i].price ,p[i].time ,p[i].lab ,p[i].kind );

}

/*按時間排序*/

else if(c1=='m'||c1=='M')

{

for(i=0;i<n-1;i++)

{

k=i;

for(j=i;j<n;j++)

if( p[k].time > p[j].time )

k=j;

temp=p[k];

p[k]=p[i];

p[i]=temp;

}

printf("\n排序後的記錄:\n");

printf("編號 名稱 價格 夠買時間 所屬實驗室 類別\n");

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

printf("%8s%8s%8.2f%8.2f%8.2f%8.2f\n",p[i].num ,

p[i].name ,p[i].price ,p[i].time ,p[i].lab ,p[i].kind );

}

/*按類別排序*/

else if(c1=='e'||c1=='E')

{

for(i=0;i<n-1;i++)

{

k=i;

for(j=i;j<n;j++)

if( p[k].kind > p[j].kind )

k=j;

temp=p[k];

p[k]=p[i];

p[i]=temp;

}

printf("\n排序後的記錄:\n");

printf("編號 名稱 價格 夠買時間 所屬實驗室 類別\n");

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

printf("%8s%8s%8.2f%8.2f%8.2f%8.2f\n",p[i].num ,

p[i].name ,p[i].price ,p[i].time ,p[i].lab ,p[i].kind );

}

/*統計信息*/

sort_amount()

{ struct shebei_type *p,*q[MAX];

int i,j,k;

clrscr();

printf("\n 庫存排行\n");

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

printf("\n 排名 設備號 設備名稱 設備類別 設備價格 設備購買時間 設備所屬實驗室\n");

p=shebei;

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

q[i]=p++;

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

{ k=i;

for(j=i+1;j<sum;j++)

if(q[k]->amount<q[j]->amount) k=j;

if (k!=i)

{ p=q[i];q[i]=q[k];q[k]=p;}

}

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

printf("\n%4d %6d %8s %11s %4d %d-%d-%d %4s\n",

i+1,q[i]->num,q[i]->name,q[i]->kind,q[i]->price,q[i]->time,q[i]->lab);

bioskey(0);

}

/*排序函數*/

void mystatic(struct shebei_type*p,int n)()

{int choice;

do

{ clrscr();

printf("\n\n\n **********設備排行信息**********\n\n");

printf(" 1.庫存排行\n\n");

printf(" 0.返回主菜單\n\n");

printf(" 請選擇(0-1):");

scanf("%d",&choice);

switch(choice)

{ case 1:sort_amount();break;

case 0:break;

}

}while(choice!=0);

}

}

  • 上一篇:JAVA編程題:創建有壹個文本框和三個按鈕的小程序。當按下每個按鈕時,使不同的文字顯示在文本框中
  • 下一篇:單詞和句子:用軟水造句(30個左右)
  • copyright 2024編程學習大全網