返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言实现电话订餐管理系统
  • 574
分享到

C语言实现电话订餐管理系统

2024-04-02 19:04:59 574人浏览 八月长安
摘要

本文实例为大家分享了C语言实现电话订餐管理系统的具体代码,供大家参考,具体内容如下 这是我C语言课程设计的题目。非常奇怪啊,下面的代码能在C-Free中跑起来,却没办法在vc++6.

本文实例为大家分享了C语言实现电话订餐管理系统的具体代码,供大家参考,具体内容如下

这是我C语言课程设计的题目。非常奇怪啊,下面的代码能在C-Free中跑起来,却没办法在vc++6.0中跑起来。可能是编译器支持的标准不一样。不管他,反正老师不会把我的代码打一遍,然后放到vc中去运行。

实现了4个功能:添加、查找、修改、删除,同时会把信息写入到同一目录下的customer.dat文件中。(这个文件需要手动建立,没有建立的话程序会不运行。)。
能力有限,错误在所难免,欢迎指出。

代码:

 

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<time.h>

void PrintMenu(); // 声明主界面函数 
void AddCustomerInfo(); // 声明添加顾客订餐信息的函数 
void ModifyCustmoerInfo(); // 声明修改顾客订餐信息的函数,记得加参数 
void DeleteCustomerInfo(); // 声明删除顾客订餐信息的函数,记得加参数
int searchdata();// 查找顾客订餐信息并返回值 
void SearchCustomerInfo();// 声明查询顾客订餐信息的函数,记得加参数
void ViewAllInfo(); // 声明预览全部订餐信息的函数,记得加参数 
void ColorChange(int); // 声明修改背景&字体颜色的函数 
void Cutline(); // 声明分界线函数 
int Unix2Time();// 声明时间戳转换为普通时间的函数
void Time2Unix(time_t,char,char []);// 声明普通时间转换为时间戳的函数  
void GetAllInfo();//获取所有顾客的全部信息 
void SetConsolSize(int x,int y);//定义修改缓冲区大小的函数 
static int n=0;// 定义一个全局变量n用来获取总共有多少顾客信息 


// 声明一个顾客的结构体变量 
struct Customer
{
    char no[15]; 
    char name[20];
    char phoneNumber[20];
    char booktime[40];
    int num;
    char other[200];
    char ordertime[40];
}customer[100],custmp;

int main()
{
    int choice;
    SetConsoleTitle("电话订餐系统");
    GetAllInfo();
    system("mode con cols=150 lines=40");// 调用cmd命令修改窗口大小 
    SetConsolSize(150,999);//修改缓冲区的大小 
    printf("欢迎使用电话订餐系统!\n");
    printf("请输入菜单前标号以执行操作\n");
    PrintMenu:
    PrintMenu();
    //ColorChange(5);
    GetChoice:
    fflush(stdin); 
    choice=-1;//重置choice的值 
    printf("\n请输入你的选项 >");
    scanf("%d",&choice); 
    fflush(stdin); // 清空缓冲区,防止scanf接受多余的回车导致死循环 
    switch(choice)
    {
        case 1:AddCustomerInfo();break;
        case 2:ModifyCustmoerInfo();break;
        case 3:DeleteCustomerInfo();break;
        case 4:SearchCustomerInfo();break;
        case 5:ViewAllInfo();break;
        case 6:Goto PrintMenu;break;
        case 0:exit(0);
        default:{
            Cutline();
            ColorChange(4);
            printf("输入错误!请重新输入!\n"); 
            ColorChange(-1);
            Cutline();
        }
            
    }
    goto GetChoice;
}

void PrintMenu()//打印菜单函数 
{
    printf("┏━━━━━━━━━━━━━━━━┓\n"); 
    printf("┃ 0. 退出本系统  ┃\n");
    printf("┃ 1. 录入订餐信息┃\n");
    printf("┃ 2. 修改订餐信息┃\n");
    printf("┃ 3. 删除订餐信息┃\n");
    printf("┃ 4. 查询订餐信息┃\n");
    printf("┃ 5. 预览订餐信息┃\n");
    printf("┃ 6. 显示菜单    ┃\n");
    printf("┗━━━━━━━━━━━━━━━━┛\n"); 
}

void ColorChange(int color)//改变字体颜色函数 
{
    HANDLE SELF = GetStdHandle(STD_OUTPUT_HANDLE);
    
    if(color==-1)
        SetConsoleTextAttribute(SELF,7);
    SetConsoleTextAttribute(SELF,color);
}

void Cutline()//显示一条分割线 
{
    printf("————————————\n");
}

void AddCustomerInfo()//追加一条顾客的信息 
{
    FILE *fp;
    Cutline();
    
    //尝试打开顾客数据文件 customer.dat 
    if((fp=fopen(".\\customer.dat","rb"))==NULL)
    { 
        ColorChange(4);
        printf("打开顾客数据文件失败!\n");
        //printf("写入顾客信息失败!");
        ColorChange(7);
        Cutline();
        return;
    }
    
    //输入顾客的订餐信息 
    printf("请输入顾客姓名 >");
    scanf("%[^\n]s",custmp.name);
    fflush(stdin); //清空缓冲区 
    printf("请输入顾客电话 >");
    scanf("%s",custmp.phoneNumber);
    fflush(stdin); 
    printf("请输入顾客的预定时间 >");
    scanf("%[^\n]s",custmp.booktime);
    fflush(stdin); 
    printf("请输入用餐的人数 >");
    scanf("%d",&custmp.num);
    fflush(stdin); 
    printf("请输入顾客的备注 >");
    scanf("%[^\n]s",custmp.other);
    fflush(stdin); 
     
    // 生成以时间为编号的顾客编号 
    time_t rawtime;
    time(&rawtime); 
    Time2Unix(rawtime,'t',custmp.ordertime);
    Time2Unix(rawtime,'n',custmp.no);
        
    fclose(fp);
    
    //将顾客的数据文件写入到 customer.dat中去 
    fp=fopen(".\\customer.dat","ab");
    fwrite(&custmp,sizeof(struct Customer),1,fp);
    fclose(fp);
    Cutline();
}

void ModifyCustmoerInfo()//修改顾客订餐信息 
{
    char target[40];
    int no,choice;
    long int movesize;
    no=searchdata();
    printmenu:
    printf("\n查询到下列顾客信息:\n");
    printf("\n编号\t\t姓名\t\t电话\t\t用餐人数   预定日期\t\t\t下单日期\t\t\t备注\n");
    ColorChange(240);
    printf("%-16s",customer[no].no);
    printf("%-16s",customer[no].name);
    printf("%-16s",customer[no].phoneNumber);
    printf("%-11d",customer[no].num);
    printf("%-30s",customer[no].booktime);
    printf("%-31s",customer[no].ordertime);
    printf("%-39s\n",customer[no].other);
    ColorChange(-1);
    printf("┏━━━━━━━━━━━━━━┓\n");
    printf("┃0.结束修改    ┃\n"); 
    printf("┃1.姓名        ┃\n");
    printf("┃2.电话        ┃\n");
    printf("┃3.用餐人数    ┃\n");
    printf("┃4.预定日期    ┃\n");
    printf("┃5.备注        ┃\n");
    printf("┃6.重新选择顾客┃\n");
    printf("┗━━━━━━━━━━━━━━┛\n");
    GetModifiedInfo:
    Cutline();
    printf("\n请选择你要修改的项目 >");
    scanf("%d",&choice);
    //菜单分支 
    switch(choice)
    {
        
        case 1:{
            printf("请输入更正后的内容 >");
            scanf("%s",customer[no].name);
            goto WriteCustData; 
        }break;
        
        case 2:{
            printf("请输入更正后的内容 >");
            scanf("%s",customer[no].phoneNumber); 
            goto WriteCustData;
        }break;
        
        case 3:{
            printf("请输入更正后的内容 >");
            scanf("%d",&customer[no].num); 
            goto WriteCustData;
        }break;
        
        case 4:{
            printf("请输入更正后的内容 >");
            scanf("%s",customer[no].booktime); 
            goto WriteCustData;
        }break;
        
        case 5:{
            printf("请输入更正后的内容 >");
            scanf("%s",customer[no].other); 
            goto WriteCustData;
        }break;
        
        case 6:{ 
            no=searchdata();
            goto printmenu;
        }
        
        case 0:return;
        
        default:{
            ColorChange(4);
            printf("输入错误!");
            ColorChange(-1);
            goto GetModifiedInfo;
        }break;
    } 
    
    //将要修改的顾客信息定点在customer.dat文件中覆盖修改 
    WriteCustData:
    movesize=no*sizeof(struct Customer);
    printf("movesize is %d\n",movesize);
    FILE *fp;
    fp=fopen(".\\customer.dat","r+");
    rewind(fp);
    fseek(fp,1L*(movesize),0);
    fwrite(&customer[no],sizeof(struct Customer),1,fp);
    fclose(fp);
    goto GetModifiedInfo;
}

void DeleteCustomerInfo()
{
    int i,no;
    no=searchdata();
    char choice;
    FILE *fp;
    
    printf("\n查询到下列顾客信息:\n");
    printf("\n编号\t\t姓名\t\t电话\t\t用餐人数   预定日期\t\t\t下单日期\t\t\t备注\n");
    ColorChange(240);
    printf("%-16s",customer[no].no);
    printf("%-16s",customer[no].name);
    printf("%-16s",customer[no].phoneNumber);
    printf("%-11d",customer[no].num);
    printf("%-30s",customer[no].booktime);
    printf("%-31s",customer[no].ordertime);
    printf("%-39s\n",customer[no].other);
    ColorChange(-1);
    ColorChange(4);
    
    printf("\n是否删除这个用户的数据?(y/n) >");
    fflush(stdin);
    scanf("%c",&choice); 
    ColorChange(7);
    if(choice=='n'||choice=='N')
    {
        printf("\n返回主菜单...\n");
        return;
    }
    
    if(choice=='y'||choice=='Y')
    {
        GetAllInfo();
        fp=fopen(".\\customer.dat","wb");
        fclose(fp);
        fp=fopen(".\\customer.dat","ab");
        printf("%d,%d",n,no);
        for(i=0;i<=(n-1);i++)
        {
            if(i==no)
                continue;
                
            fwrite(&customer[i],sizeof(struct Customer),1,fp);
            
        }
        fclose(fp);
    }
    
}

int searchdata()//根据所给的条件寻找对应的顾客i 
{
    GetAllInfo();
    char target[100];
    printf("\n请输入用户任意单项信息 >");
    scanf("%s",target);
    int i,res1,res2,res3;
    for(i=0;i<=(n-1);i++)
    {
        res1=memcmp(target,customer[i].no,strlen(customer[i].no));
        res2=memcmp(target,customer[i].name,strlen(customer[i].name));
        res3=memcmp(target,customer[i].phoneNumber,strlen(customer[i].phoneNumber));
        if(!(res1&&res2&&res3))
            return i; 
    }
    return -1;
}

void SearchCustomerInfo()
{
    int no=searchdata();
    printf("\n查询到下列顾客信息:\n");
    printf("\n编号\t\t姓名\t\t电话\t\t用餐人数   预定日期\t\t\t下单日期\t\t\t备注\n");
    ColorChange(240);
    printf("%-16s",customer[no].no);
    printf("%-16s",customer[no].name);
    printf("%-16s",customer[no].phoneNumber);
    printf("%-11d",customer[no].num);
    printf("%-30s",customer[no].booktime);
    printf("%-31s",customer[no].ordertime);
    printf("%-100s\n",customer[no].other);
    ColorChange(-1);
}

void GetAllInfo()//获取所有顾客的全部信息函数 
{
    n=0;
    FILE *fp;
    fp=fopen(".\\customer.dat","rb");
    do
    {
        fread(&customer[n],sizeof(struct Customer),1,fp);
        //if(customer[n].no[0]=='\0')
        //    break;
        n++;
    }while(feof(fp)==0);
    n=n-1;
    fclose(fp);
}

void ViewAllInfo()
{
    GetAllInfo(); 
    printf("n is %d",n);
    int i=0,flag=1;
    printf("\n编号\t\t姓名\t\t电话\t\t用餐人数   预定日期\t\t\t下单日期\t\t\t备注\n"); 
    while(i<=(n-1))
    {
        if(flag)
        {
            ColorChange(240);
            flag=0;
        }else{
            ColorChange(7);
            flag=1;
        }
        printf("%-16s",customer[i].no);
        printf("%-16s",customer[i].name);
        printf("%-16s",customer[i].phoneNumber);
        printf("%-11d",customer[i].num);
        printf("%-30s",customer[i].booktime);
        printf("%-31s",customer[i].ordertime);
        printf("%-100s\n",customer[i].other);
        ++i;
    }
    ColorChange(-1);
    putchar('\n');
}

 
void Time2Unix(time_t Timestamp,char transfer_type,char Transfer_Time[])
{
    char Time1[40];//声明原时间
    struct tm* timeinfo;
    
    if(transfer_type=='t')//如果 transfer_type 为 x,则返回的时间格式为易阅读的 
    {
        timeinfo=localtime(&Timestamp);
        strftime(Time1,sizeof(Time1),"%Y年%m月%d日%H时%M分%S秒",timeinfo);
    }
    
    if(transfer_type=='n')// //如果 transfer_type 为 n,则返回的时间格式为纯数字 
    {
        timeinfo=localtime(&Timestamp);
        strftime(Time1,sizeof(Time1),"%Y%m%d%H%M%S",timeinfo);
    }
    strcpy(Transfer_Time,Time1);//将转换后的时间格式复制到传递过来的数组当中去 
}

void SetConsolSize(int x,int y)// 设置缓冲区的大小 
{
    SMALL_RECT winPon={0,0,25,10};
    HANDLE con=GetStdHandle(STD_OUTPUT_HANDLE);
    COORD buf={x,y};// 缓冲区长10000,高25 
    SetConsoleScreenBufferSize(con,buf);
}

每个功能的测试

1、录入选项

2、删除选项

3、查询选项

4、修改选项

5、 预览全部信息

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: C语言实现电话订餐管理系统

本文链接: https://lsjlt.com/news/161544.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C语言实现电话订餐管理系统
    本文实例为大家分享了C语言实现电话订餐管理系统的具体代码,供大家参考,具体内容如下 这是我C语言课程设计的题目。非常奇怪啊,下面的代码能在C-Free中跑起来,却没办法在vc++6....
    99+
    2024-04-02
  • C语言实现简易订餐系统
    本文实例为大家分享了C语言实现简易订餐系统的具体代码,供大家参考,具体内容如下 主要功能: (1)菜单维护(餐厅管理人员使用)采用顺序表实现 1、添加新菜 2、删除菜品 3、修改菜品...
    99+
    2024-04-02
  • C语言实现餐饮管理系统
    本文实例为大家分享了C语言实现餐饮管理系统的具体代码,供大家参考,具体内容如下 #include <stdio.h> #include <stdlib.h> ...
    99+
    2024-04-02
  • C语言实现餐厅管理系统
    本文实例为大家分享了C语言实现餐厅管理系统的具体代码,供大家参考,具体内容如下 在学习完C语言之后,写了一个小程序,涉及到单链表,文件,排序,等内容。 这个对新手指针,函数等方面的掌...
    99+
    2024-04-02
  • C语言实现手机电话簿管理系统
    本文实例为大家分享了C语言实现手机电话簿管理系统的具体代码,供大家参考,具体内容如下 一、任务概述(文章仅供参考) 用c设计出模拟手机通讯录管理系统,实现对手机中的通讯录进行管理 二...
    99+
    2024-04-02
  • C语言怎样实现电话簿管理系统
    小编给大家分享一下C语言怎样实现电话簿管理系统,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体内容如下文件目录:初始界面现在显示一部分代码://添加联系人voi...
    99+
    2023-06-25
  • C语言实现电话簿管理系统课程设计
    本文实例为大家分享了C语言课程设计:电话簿管理系统,供大家参考,具体内容如下 文件目录: 初始界面 现在显示一部分代码: //添加联系人 void add() { i...
    99+
    2024-04-02
  • C语言如何实现手机电话簿管理系统
    本篇内容介绍了“C语言如何实现手机电话簿管理系统”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、任务概述用c设计出模拟手机通讯录管理系统,...
    99+
    2023-06-30
  • C语言实现简单餐饮管理与点餐系统
    本文实例为大家分享了C语言实现餐饮管理与点餐系统的具体代码,供大家参考,具体内容如下     //当注册用户名为:root,密码为:root的账号时,系统默认为初始管理员...
    99+
    2024-04-02
  • C语言实现酒店预订管理系统
    本文实例为大家分享了C语言实现酒店预订管理系统的具体代码,供大家参考,具体内容如下 课设要求: 客房信息管理。 客人预订及入住信息管理。 各种查询和统计功能。 本系统要有通用性、界面...
    99+
    2024-04-02
  • C语言实现餐厅点餐系统
    本文实例为大家分享了C语言实现餐厅点餐系统的具体代码,供大家参考,具体内容如下 这应该是比较简单的c语言程序了,因为学校c语言结课结的早,我当时才学到结构体指针,所以我就把我当时能运...
    99+
    2024-04-02
  • C语言实现电话簿项目管理
    本文实例为大家分享了C语言实现电话簿项目管理的具体代码,供大家参考,具体内容如下 1.前言 在C语言的学习,经常有一个需要完成的项目就是电话簿的管理,在刚学习玩C语言基本内容后,面对...
    99+
    2024-04-02
  • C语言如何实现酒店预订管理系统
    这篇“C语言如何实现酒店预订管理系统”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言如何实现酒店预订管理系统”文章吧。课...
    99+
    2023-06-30
  • C语言实现电器销售管理系统
    本文实例为大家分享了C语言实现电器销售管理系统的具体代码,供大家参考,具体内容如下 系统功能设计 管理信息系统具有多种功能,各种功能之间又有多种联系,构成了一个有机结合的整体。信息处...
    99+
    2024-04-02
  • Go语言开发点餐系统中的预订管理功能实现方法
    Go语言开发点餐系统中的预订管理功能实现方法,需要具体代码示例...
    99+
    2023-11-01
    开发 预订 预订管理 功能实现方法。
  • MySQL 实现点餐系统的订单管理功能
    MySQL 实现点餐系统的订单管理功能在餐饮行业,点餐系统已经成为了不可或缺的一部分。它提供了方便快捷的点餐方式,大大提升了顾客用餐的便利性。而订单管理,作为点餐系统的关键功能之一,具备了查询、新增、修改和删除等基本操作的必要性。本文将介绍...
    99+
    2023-11-01
    MySQL 订单管理 点餐系统
  • C语言实现火车订票系统
    本文实例为大家分享了C语言实现火车订票系统的具体代码,供大家参考,具体内容如下 程序介绍 1.运行程序时,首先进入到菜单部分,菜单部分提供了菜单显示和输入功能部分。其运行效果如图所示...
    99+
    2022-11-13
    C语言火车订票系统 C语言火车订票 C语言订票系统
  • C语言实现学籍管理系统
    本文实例为大家分享了C语言实现学籍管理系统的具体代码,供大家参考,具体内容如下 设计一个学籍管理系统,基本功能包括: 1.输入学生基本信息2.查询学生信息(1.按学号2.按姓名)3....
    99+
    2024-04-02
  • C语言实现销售管理系统
    本文实例为大家分享了C语言实现销售管理系统的具体代码,供大家参考,具体内容如下 这是题目,没用到文件相关的函数,所以不能保存在本地,每次读入都得重新输入。 #include<...
    99+
    2024-04-02
  • C语言实现考勤管理系统
    这些天因为补修c语言课设,在花费了一段时间后写完了这个课设,课设的要求如下: 考勤信息记录了学生的缺课情况,它包括:缺课日期、第几节课、课程名称、学生姓名、缺课类型(迟到、早退、请假...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作