⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 文本文档 (2).txt

📁 为一设备管理系统
💻 TXT
字号:
#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=getch(); 
} 
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); 
} 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -