概述
该项目由C语言实现,主要分为两个子系统:1.用户子系统;2.商家子系统。
其中用结构体存储顾客信息,位置距离信息,订单信息,商家信息。用hash函数映射值存储顾客名和商家名,通过深拷贝对信息存储,并将信息从文件读取,存储文件,完成对顾客,商家的管理(用户名,密码)
可实现用户注册,登录,订餐,生成订餐订单,同时生成位置订单,商家注册,登录,同时展现菜单。
main.c文件(主程序)
#include "config.h"
#include <ctype.h>
#include <windows.h>
ConsumerInfoList consumers;
IndentInfoList indents;
DistanceList distances;
MerchantInfoTable merchants;
char consumer_file[100] = "user.txt";
char indent_file[100] = "order.txt";
char distance_file[100] = "distance.txt";
char merchant_file[100] = "shop.txt";
int compare(const char* str1, const char* str2){
return !strcmp(str1, str2);
}
void initDataInfo();
void printShopInfo(MerchantInfo* merchant);
void trim(char *str);
/**
* 散列表
**/
// 初始化哈希表
void HashInit();
int hashKey(char name[]);
void HashInsert(MerchantInfo* merchant);
void HashRemove(char* name);
void showHashTable();
// 拷贝节点
MerchantInfo* HashCopy(MerchantInfo* node);
void HashFree(MerchantInfo* node);
void HashDestroy();
MerchantInfo* findHashTable(char* name);
/**
* 信息处理模块
**/
// 读取文件
void readConsumers();
void readIndents();
void readMerchants();
void readDistances();
// 写入文件
void writeConsumers();
void writeIndents();
void writeMerchants();
/**
* 用户子系统
**/
// 用户登陆
ConsumerInfo* consumerLogin();
// 用户注册
void registerConsumer();
/* 个人信息管理 */
void showConsumerInfo(ConsumerInfo* info);
void updateConsumerInfo(ConsumerInfo* info);
void removeConsumerInfo(ConsumerInfo* info);
/* 餐馆查询 */
void merchantSearch();
/* 餐馆预定 */
void showConsumerBooking(ConsumerInfo* info);
void showConsumerBookingInMerchant(ConsumerInfo* info);
void merchantBooking(ConsumerInfo* info);
void consumerManage();
/**
* 商家子系统
**/
// 商家登陆
char* merchantLogin();
/* 餐馆信息管理 */
// 查询餐馆信息
void merchantInfoSearch(char* name);
// 修改餐馆信息
char* merchantInfoUpdate(char* name);
// 注销餐馆信息
void merchantInfoRemove(char* name);
/* 餐馆预定信息管理 */
// 查询所有预定
void showRestaurantReserve(char* name);
// 查询某用户预定
void showConsumerReserve(char* name);
// 处理预定
void dealingReserve(char* name);
void merchantManage();
int main(int argc,char *argv[ ]) {
int select;
initDataInfo();
while(1){
printf("* 1、用户子系统 *n");
printf("* 2、商家子系统 *n");
printf("* 3、用户注册 *n");
printf("* 0、退出系统 *n");
printf("请输入选择【0-3】:");
system("color 1A");
scanf("%d",&select);
switch(select){
case 0:
writeIndents();
writeMerchants();
writeConsumers();
HashDestroy();
system("color 1A");
return 0;
case 1:
consumerManage();
system("color 1A");
break;
case 2:
merchantManage();
system("color 1A");
break;
case 3:
registerConsumer();
system("color 1A");
break;
default:
printf("输入错误n");
}
}
}
void initDataInfo() {
readConsumers();
readIndents();
readDistances();
HashInit();
readMerchants();
}
void printShopInfo(MerchantInfo* merchant){
int index;
if(!merchant)return;
printf("shopType: %sn", merchant->type);
printf("shopId: %lldn", merchant->id);
printf("shopName: %sn", merchant->name);
printf("shopPassword: %lldn", merchant->secret);
printf("avgScore: %fn", merchant->score);
printf("avePrice: %fn", merchant->price);
printf("address: %sn", merchant->address);
printf("phone: %sn", merchant->phone);
for(index = 0; index<merchant->menu_size; index++)
printf("food_id: %s, food_name: %s, food_price: %fn", merchant->menus[index].id, merchant->menus[index].name, merchant->menus[index].price);
for(index = 0; index<merchant->remarks_size; index++)
printf("Comment%d: %s", index, merchant->remarks[index]);
}
void trim(char *str)
{
char* left = str;
char* right = str;
while(*right != '