某地矿产资源信息管理系统

#include
#include
#include
#include
#define LEN sizeof(struct minerals)
struct minerals //类的定义
{
int bianhao;
char a[20];
float pingwei;
float chuliang;
float niancailiang;
struct minerals* next;
};
void print(struct minerals* head) //对链表的输出函数
{
struct minerals* p;
printf("\n以下是矿产的信息:\n");
p=head;
if(head!=NULL)
do
{
printf("%d,%s,%f,%f,%f\n",p->bianhao,p->a,p->pingwei,p->chuliang,p->niancailiang);
p=p->next;
}
while(p!=NULL);
}
FILE *fp;
char ch;
struct minerals* file(struct minerals* head) //存储信息到文件的函数
{
struct minerals* p;
p=head;
fputs("矿产信息为:\n",fp);
if(head==NULL)
{fputc(NULL,fp);}
else
{
while(p->next!=NULL)
{
fprintf(fp,"%f",p->bianhao);fputs(" ",fp);
fputs(p->a,fp);fputs(" ",fp);
fprintf(fp,"%f",p->pingwei);fputs(" ",fp);
fprintf(fp,"%f",p->chuliang);fputs(" ",fp);
fprintf(fp,"%f",p->niancailiang);
fputc('\n',fp);
p=p->next;
}
if(p->next==NULL)
{
fprintf(fp,"%f",p->bianhao);fputs(" ",fp);
fputs(p->a,fp);fputs(" ",fp);
fprintf(fp,"%f",p->pingwei);fputs(" ",fp);
fprintf(fp,"%f",p->chuliang);fputs(" ",fp);
fprintf(fp,"%f",p->niancailiang);
}
}
fclose(fp);
putchar(10);
return(head);
}
void Login() //首界面的显示函数
{
system("cls");
printf("\n\n\n\t\t欢迎使用XXX地矿产资源信息管理系统 \n");
printf("\n\n\t\t本程序设计者 XX 学号:XXXXXXX\n\n\n\n\n\n\n");
printf("\n\n\n\t\t 按 任 意 键 进 入 系 统 ...");
getch(); system("cls");
}
struct minerals* creat() //开始时对信息的录入函数
{
int n=0;
struct minerals* head;
struct minerals* p1,* p2;
printf("请输入矿区信息:\n");
printf("矿区编号 矿产类型 矿产品位 矿产储量 年开采量\n");
p1=p2=(struct minerals*)malloc(LEN);
scanf("%d %s %f %f %f",&p1->bianhao,&p1->a,&p1->pingwei,&p1->chuliang,&p1->niancailiang);
head=NULL;
while(p1->bianhao!=0)
{
n=n+1;
if(n==1)head=p1;
else p2->next=p1;
p2=p1;
p1=(struct minerals *)malloc(LEN);
scanf("%d %s %f %f %f",&p1->bianhao,&p1->a,&p1->pingwei,&p1->chuliang,&p1->niancailiang);
}
p2->next=NULL;
return(head);
}
struct minerals* delet(struct minerals* head) //对链表进行删除操作的函数
{
struct minerals* p,*q;int xh;p=head;
printf("请输入破产的矿区编号:\n");
scanf("%d",&xh);
if(head==NULL)
{printf("信息库里没有该矿区信息!\n");
getch(); system("cls");
return(head);}
while((p->next!=NULL)&&(p->bianhao!=xh))
{q=p;p=p->next;}
if(xh==p->bianhao)
{
if(head==p)
{
head=p->next;
}
else
{
q->next=p->next;
}
free(p);
}
else
{printf("信息库中没有此矿区的信息!\n");
getch(); system("cls");}
return(head);
}
struct minerals* addition(struct mi

nerals* head) //对链表进行添加的函数
{
struct minerals* neww,*p,*q;
neww=(struct minerals*)malloc(LEN);
printf("请输入你要添加的矿区信息:\n");
scanf("%d %s %f %f %f",&neww->bianhao,&neww->a,&neww->pingwei,&neww->chuliang,&neww->niancailiang);
p=head;
if(head==NULL)
{head=neww;neww->next=NULL;}
else
{
while(p->next!=NULL)
{q=p;p=p->next;
if(neww->bianhao==p->bianhao||neww->bianhao==head->bianhao)
{
printf("该矿区已被存在,请重新输入!\n");
getch(); system("cls");
return(head);
}
}
p->next=neww;
neww->next=NULL;
}
return(head);
}
struct minerals* demand(struct minerals* head) //具有查询功能的函数
{
char k[20];int l;float m;
struct minerals* p;
printf("\n请输入你要查询的关键字:\n");
printf("1.矿区编号 2.矿产类型 3.矿产品位\n");
scanf("%d",&l);
p=head;
if(head!=NULL)
switch(l)
{
case 1:printf("请输入你的数据:\n");scanf("%f",&m);
do
{
if(p->bianhao==m)
printf("%d,%s,%f,%f,%f\n",p->bianhao,p->a,p->pingwei,p->chuliang,p->niancailiang);
p=p->next;
}
while(p!=NULL);break;
case 2:printf("请输入你的数据:\n");scanf("%s",&k);
do
{
if(strcmp(p->a,k)==0)
printf("%d,%s,%f,%f,%f\n",p->bianhao,p->a,p->pingwei,p->chuliang,p->niancailiang);
p=p->next;
}
while(p!=NULL);break;
case 3:printf("请输入你的数据:\n");scanf("%f",&m);
do
{
if(p->pingwei==m)
printf("%d,%s,%f,%f,%f\n",p->bianhao,p->a,p->pingwei,p->chuliang,p->niancailiang);
p=p->next;
}
while(p!=NULL);break;
}
getch();return(head);
}
struct minerals* ranking(struct minerals* head) //对数据进行排序显示函数
{
struct minerals* p,* q;int i=0,j,l;
int bianhao;
char a[20];
float pingwei;
float chuliang;
float niancailiang,m,n;
printf("\n请输入你要排序的关键字:\n");
printf("1.矿区编号 2.矿产品位 3.储存量 4.年开采量\n");
scanf("%d",&l);
p=head;
if(head==NULL)
{
printf("信息库中无矿区信息!\n");
getch(); system("cls");
return(head);
}
else
{
for(j=0;j<=i;j++)
{
while(p->next!=NULL)
{
q=p;p=p->next;
switch(l)
{
case 1:m=q->bianhao;n=p->bianhao;break;
case 2:m=q->pingwei;n=p->pingwei;break;
case 3:m=q->chuliang;n=p->chuliang;break;
case 4:m=q->niancailiang;n=p->niancailiang;break;
}
if(m{
bianhao=p->bianhao;
strcpy(a,p->a);
pingwei=p->pingwei;
chuliang=p->chuliang;
niancailiang=p->niancailiang;
p->bianhao=q->bianhao;
strcpy(p->a,q->a);
p->pingwei=q->pingwei;
p->chuliang=q->chuliang;
p->niancailiang=q->niancailiang;
q->bianhao=bianhao;
strcpy(q->a,a);
q->pingwei=pingwei;
q->chuliang=chuliang;
q->niancailiang=niancailiang;
i++;
}
}
p=head;
}
}
print(head);
getch(); system("cls");
return(head);
}
void main() /

/主函数
{
system("color 1a"); //对显示界面的背景和字体颜色进行改变
Login(); //显示首页的函数
struct minerals* head;char filename[10];
printf("请输入存储信息的文件名:");
scanf("%s",&filename);
if((fp=fopen(filename,"a"))==NULL)
{
printf("无法打开此文件\n");
exit(0);
}
head=creat();
file(head);
int i,j;
struct minerals* p,*q;
p=head;
for(j=1;j>0;j++)
{
system("cls"); //清屏函数
system("color 1a");
print(p);
printf("请选择你要执行的操作:\n1.删除 2.添加 3.查询 4.排序 5.结束\n");
scanf("%d",&i);
if(i==5)
{printf("感谢使用本系统!\n");break;}
switch(i)
{
case 1:q=delet(p);file(q);break;
case 2:q=addition(p);file(q);break;
case 3:q=demand(p);file(q);break;
case 4:q=ranking(p);file(q);break;
}
p=q;
}
}

相关文档
最新文档