机房失物招领系统用c语言写代码
时间: 2023-06-02 21:03:00 浏览: 119
基于C++实现的(控制台)失物招领系统【100010910】
5星 · 资源好评率100%
很抱歉,我作为AI语言模型并不能编写完整的代码,但我可以给你提供一个基本的代码框架,你可以根据你的需求和具体实现来进行修改和完善。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//定义结构体,表示失物信息
typedef struct{
char name[20]; //失主姓名
char item[50]; //失物名称
char date[20]; //丢失日期
char contact[20]; //联系方式
}LostItem;
//定义链表结构体
typedef struct Node{
LostItem item; //储存失物信息
struct Node *next; //指向下一个节点
}ListNode;
//链表头指针
ListNode *head = NULL;
//函数声明
void showMenu(); //显示菜单
void addItem(); //添加失物信息
void searchItem(); //查询失物信息
void deleteItem(); //删除失物信息
void displayAll(); //显示所有失物信息
void saveToFile(); //将失物信息保存到文件
void readFromFile(); //从文件中读取失物信息
int main(){
readFromFile(); //从文件中读取失物信息
int choice;
do{
showMenu(); //显示菜单
scanf("%d", &choice);
switch(choice){
case 1:
addItem(); //添加失物信息
break;
case 2:
searchItem(); //查询失物信息
break;
case 3:
deleteItem(); //删除失物信息
break;
case 4:
displayAll(); //显示所有失物信息
break;
case 5:
saveToFile(); //将失物信息保存到文件
break;
case 0:
printf("谢谢使用,再见!\n");
break;
default:
printf("输入错误,请重新输入!\n");
}
}while(choice != 0);
return 0;
}
//显示菜单
void showMenu(){
printf("失物招领系统菜单:\n");
printf("1. 添加失物信息\n");
printf("2. 查询失物信息\n");
printf("3. 删除失物信息\n");
printf("4. 显示所有失物信息\n");
printf("5. 保存失物信息到文件\n");
printf("0. 退出系统\n");
printf("请输入选项:");
}
//添加失物信息
void addItem(){
printf("请输入失主姓名:");
char name[20];
scanf("%s", name);
printf("请输入失物名称:");
char item[50];
scanf("%s", item);
printf("请输入丢失日期:");
char date[20];
scanf("%s", date);
printf("请输入联系方式:");
char contact[20];
scanf("%s", contact);
//创建新节点
ListNode *newNode = (ListNode*)malloc(sizeof(ListNode));
strcpy(newNode->item.name, name);
strcpy(newNode->item.item, item);
strcpy(newNode->item.date, date);
strcpy(newNode->item.contact, contact);
newNode->next = NULL;
//将新节点插入链表
if(head == NULL){
head = newNode;
}else{
ListNode *p = head;
while(p->next != NULL){
p = p->next;
}
p->next = newNode;
}
printf("添加成功!\n");
}
//查询失物信息
void searchItem(){
printf("请输入要查询的失物名称:");
char item[50];
scanf("%s", item);
ListNode *p = head;
int found = 0;
while(p != NULL){
if(strcmp(p->item.item, item) == 0){
printf("失主姓名:%s\n", p->item.name);
printf("失物名称:%s\n", p->item.item);
printf("丢失日期:%s\n", p->item.date);
printf("联系方式:%s\n", p->item.contact);
found = 1;
}
p = p->next;
}
if(!found){
printf("未找到匹配的失物信息!\n");
}
}
//删除失物信息
void deleteItem(){
printf("请输入要删除的失物名称:");
char item[50];
scanf("%s", item);
ListNode *p = head;
ListNode *prev = NULL;
while(p != NULL){
if(strcmp(p->item.item, item) == 0){
if(prev == NULL){ //要删除的是第一个节点
head = p->next;
}else{
prev->next = p->next;
}
free(p); //释放节点内存
printf("删除成功!\n");
return;
}
prev = p;
p = p->next;
}
printf("未找到匹配的失物信息,删除失败!\n");
}
//显示所有失物信息
void displayAll(){
if(head == NULL){
printf("暂无失物信息!\n");
}else{
printf("所有失物信息如下:\n");
ListNode *p = head;
while(p != NULL){
printf("失主姓名:%s\n", p->item.name);
printf("失物名称:%s\n", p->item.item);
printf("丢失日期:%s\n", p->item.date);
printf("联系方式:%s\n", p->item.contact);
printf("\n");
p = p->next;
}
}
}
//将失物信息保存到文件
void saveToFile(){
FILE *fp = fopen("lost_items.txt", "wb");
if(fp == NULL){
printf("打开文件失败!\n");
return;
}
ListNode *p = head;
while(p != NULL){
fwrite(&(p->item), sizeof(LostItem), 1, fp);
p = p->next;
}
fclose(fp);
printf("保存成功!\n");
}
//从文件中读取失物信息
void readFromFile(){
FILE *fp = fopen("lost_items.txt", "rb");
if(fp == NULL){
return;
}
while(!feof(fp)){
LostItem item;
fread(&item, sizeof(LostItem), 1, fp);
if(feof(fp)){ //到达文件末尾
break;
}
ListNode *newNode = (ListNode*)malloc(sizeof(ListNode));
newNode->item = item;
newNode->next = NULL;
if(head == NULL){
head = newNode;
}else{
ListNode *p = head;
while(p->next != NULL){
p = p->next;
}
p->next = newNode;
}
}
fclose(fp);
}
阅读全文