该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
#include
//
typedef struct equipment
{
int num; //设备号
char name[20]; //设备名称
char user[20]; //领用人
int department; //所属部门
int quantity; //数量
long time; //购买日期
int price; //价格
struct equipment *next;
}Equipment;
void fprintE(Equipment *head); //输入文件
void addEquipment(Equipment *head); //追加设备
void deleteEquipment(Equipment *head,int num); //删除设备
void changeEquipment(Equipment *head,int num); //修改设备
int countEquipment(Equipment *head); //统计设备
Equipment* fscanE(); //从文件读取设备信息
void printList(Equipment *head); //显示设备信息
int checkNum(Equipment *head, int num);
//追加设备
void addEquipment(Equipment *head)
{
Equipment *tail = head;
while(tail->next!=NULL)
tail = tail->next;
Equipment *newnode = (Equipment*)malloc(sizeof(Equipment));
printf("请输入设备号:");
scanf("%d",&newnode->num);
if(checkNum(head,newnode->num)){
printf("该设备号已有,输入失败!");
return;
}
printf("请输入设备名称:");
scanf("%s",&newnode->name);
printf("请输入领用人:");
scanf("%s",&newnode->user);
printf("请输入所属部门:");
scanf("%d",&newnode->department);
printf("请输入设备数量:");
scanf("%d",&newnode->quantity);
printf("请输入设备购买日期:");
scanf("%ld",&newnode->time);
printf("请输入设备价格:");
scanf("%d",&newnode->price);
tail->next = newnode;
newnode->next = NULL;
fprintE(head);
printf("录入成功!");
}
//将链表输入到文件
void fprintE(Equipment *head){
FILE *fp=fopen("data.txt","w");
Equipment *current = head->next;
while(current){
fprintf(fp,"%d\n",current->num);
fprintf(fp,"%s\n",current->name);
fprintf(fp,"%s\n",current->user);
fprintf(fp,"%d\n",current->department);
fprintf(fp,"%d\n",current->quantity);
fprintf(fp,"%ld\n",current->time);
fprintf(fp,"%d\n",current->price);
current = current->next;
}
fclose(fp);
}
//删除设备
void deleteEquipment(Equipment *head,int num){
if(head->next==NULL){
printf("没有设备!请先录入设备!");
return;
}
Equipment *current = head;
Equipment *current_next = current->next;
while(current_next){
if(current_next->num==num){
current->next = current_next->next;
printf("删除成功!");
fprintE(head);
return;
}
current = current->next;
current_next = current_next->next;
}
printf("删除失败,没有找到设备编号!");
}
//修改设备
void changeEquipment(Equipment *head,int num){
if(head->next==NULL){
printf("没有设备!请先录入设备!");
return;
}
Equipment *current = head->next;
while(current && (current->num!=num)){
current = current->next;
}
if(current!=NULL){
printf("请输入更新后的数据:\n");
printf("请输入设备号:");
scanf("%d",current->num);
printf("请输入设备名称:");
scanf("%s",current->name);
printf("请输入领用人:");
scanf("%s",current->user);
printf("请输入所属部门:");
scanf("%s",current->department);
printf("请输入设备数量:");
scanf("%s",current->quantity);
printf("请输入设备购买日期:");
scanf("%s",current->time);
printf("请输入设备价格:");
scanf("%s",current->price);
fprintE(head);
}else{
printf("操作失败,没有找到设备编号!");
}
}
//输出设备信息列表
void printList(Equipment *head)
{
if(head->next==NULL)
{
printf("没有设备,请先录入设备!");
return;
}
Equipment *current = head->next;
printf("=====================================================\n");
printf(" 设备号 名称 领用人 所属部门 数量 购买日期 价格\n");
while(current){
printf("\t%d\t%s\t%s\t%d\t%d\t%ld\t%d\n",current->num,current->name,current->user,current->department,current->quantity,current->time,current->price);
current = current->next;
}
printf("===================================================\n");
}