C语言课程设计:计算机设备管理系统(非常着急 恳请各位帮忙 超高悬赏)

一、设计题目
计算机设备管理设计
二、主要内容
某机房要对计算机设备进行自动管理,计算机设备信息括编号、计算机名称、CPU型号、规格、基本配置、生产日期、厂家、单价、数量、管理人、到货日期、是否在用、金额等。
要求编程程序实现如下功能:
1)数据录入:按上面录入计算机设备信息; 2)计算:计算金额=单价*数量,并显示计算机名称、单价、数量、金额、生产商、到货日期等信息;3)修改操作:输入计算机设备名称,修改计算机设备的基本配置、数量、管理人等信息;4)删除:删除指定计算机设备的记录信息。
要求以每个功能以函数实现,以菜单的形式显示各功能,从菜单中选择相应的编号后执行相应的功能。
要求使用结构体定义计算机设备信息,使用C语言实现各功能
楼下的可能需要改一下吧 有谁能帮忙改的 可以提高悬赏
比较着急 最好能今天内搞掂

第1个回答  2009-06-30
这个行不?

#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);
}
}
第2个回答  2009-06-30
发邮件给你了。本回答被提问者采纳
相似回答