QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

新鱼友

Rank: 1

积分
39
查看: 1177|回复: 95

[学习笔记] 消费管理系统,大一课设,拿走不谢

[复制链接]
最佳答案
0 
累计签到:7 天
连续签到:2 天
helloxiaoc 发表于 2018-5-21 17:19:22 117795 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
c-free5.0 ,vs2017编译通过


                               
登录/注册后可看大图



//#define _CRT_SECURE_NO_WARNINGS

#include <ctime>
#include <string>
#include <iostream>
#include <windows.h>
#include <stdio.h>

using namespace std;

#define SETBUFTONULL while(getchar() != '\n'); // 消除多余的回车键

struct purchaseHistory // 一条包含 卡编号,持卡人姓名,消费类型,金额,时间 的记录
{
        string id;
        string name;
        string type;
        float money;
        string time;
        purchaseHistory *next;
};


purchaseHistory *myStudentInfo = NULL;// 第一条记录,初始化为空

void setcolor(unsigned short); // 设置颜色,(为了使界面更加的友好)
void getoxy(int, int); // 使光标调到指定的地方
void newRecord(); // 新增一条记录
void fidRecord(); // 查询记录
string  Get_Current_Date(); // 返回一个 "M-D-Y"格式的当前时间
BOOL hangUpTable(purchaseHistory); // 录入一条记录
void printRecordOne(purchaseHistory, POINT); // 一条记录
void queryID(); // 查找(ID)
void queryName(); // 查找(姓名)
void queryType(); // 查找(消费类型)
void printAll(); // 打印所有记录
void help(); // 帮助
void read();
void storage();

int main()
{
        void read();

        system("title Information recording system ..");

        while (TRUE)
        {
                system("cls");

                setcolor(8);
                cout << "请按照对应的序号进行选择\n\n";
                setcolor(12);
                cout << "1  >增 加 记 录<\n" // 选项菜单
                        << "2  >查 询 记 录<\n"
                        << "3  >帮 助 信 息<\n"
                        << "4  >退 出 程 序<\n\n"
                        << ":: 请选择 ";
                setcolor(10);
                switch (getchar())
                {
                case '1': newRecord(); break;
                case '2': fidRecord(); break;
                case '3': help(); break;
                case '4': storage(); return 0;
                default:setcolor(8); cout << "\n 请重新输入..."; Sleep(500); // 这个是延时函数,参数是毫秒
                }

                SETBUFTONULL
        }

        return 0;
}

void setcolor(unsigned short color)
{
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color); // 系统的API函数,设置控制台字体颜色
}

void gotoxy(int x, int y)
{
        COORD f = { y,x };
        SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), f);
}

void newRecord()
{
        SETBUFTONULL

        system("cls");

        purchaseHistory mydata;
        setcolor(8);
        cout << "请按照次格式进行记录的录入 : 卡编号 持卡人姓名 消费类型 消费金额\n";
        setcolor(12);
        cout << "> 在此处输入数据 :";
        setcolor(10);
        cin >> mydata.id >> mydata.name >> mydata.type >> mydata.money; // 数据录入

        mydata.time = Get_Current_Date().c_str();

        if (hangUpTable(mydata) == TRUE) // 将录入的数据添加到记录链
        {
                setcolor(8);
                cout << "::成功录入一条数据";
                Sleep(500);
        }
}

void fidRecord()
{
        system("title Query record"); // 设置标题为

        while (TRUE)
        {
                SETBUFTONULL

                system("cls");

                setcolor(12);
                cout << "1  >查询 (卡ID)<\n"
                         << "2  >查询 (持卡人姓名)<\n"
                         << "3  >查询 (消费类型)<\n\n"
                         << "4  >打印全部记录\n"
                         << "5  >返回助菜单<\n\n"
                         << ":: 请选择 ";
                setcolor(10);
                switch (getchar())
                {
                case '1': queryID(); break;
                case '2': queryName(); break;
                case '3': queryType(); break;
                case '4': printAll(); break;
                case '5': ; return;
                default:setcolor(8); cout << "\n 请重新输入..."; Sleep(500);
                }
        }
}

string  Get_Current_Date()
{
        time_t nowtime;
        nowtime = time(NULL); //获取日历时间   
        char tmp[64];
        strftime(tmp, sizeof(tmp), "%Y-%m-%d", localtime(&nowtime));
        return tmp;
}

BOOL hangUpTable(purchaseHistory mydata)
{
        purchaseHistory *p = new purchaseHistory; // 链表节点的添加
        p->next = myStudentInfo;
        myStudentInfo = p;
        p->id = mydata.id;
        p->name = mydata.name;
        p->type = mydata.type;
        p->money = mydata.money;
        p->time = mydata.time;

        return TRUE;
}

void printRecordOne(purchaseHistory data,POINT pos) // 格式化输出,让输出变得更整齐
{
        gotoxy(pos.x, pos.y);
        cout << "ID: ";
        cout << data.id;

        gotoxy(pos.x, pos.y + 12);
        cout << "姓名: ";
        cout << data.name;

        gotoxy(pos.x, pos.y + 26);
        cout << "类型: ";
        cout << data.type;

        gotoxy(pos.x, pos.y + 40);
        cout << "金额: ";
        cout << data.money;

        gotoxy(pos.x, pos.y + 52);
        cout << "时间: ";
        cout << data.time;
}

void queryID()
{
        system("cls");

        SETBUFTONULL

        string fid;
        setcolor(12);
        cout << "> 输入ID:";
        setcolor(10);
        cin >> fid;

        setcolor(12);
        cout << "\n::找到如下记录 :\n";
        setcolor(15);

        purchaseHistory *p = myStudentInfo;
        int pos = 0;
        while (p != NULL) // 遍历链表,满足条件就输出该记录
        {
                if (p->id.compare(fid) == 0)
                {
                        POINT a = { 4 + pos++,2 };
                        printRecordOne(*p,a);
                }
                p = p->next;
        }
        setcolor(8);
        cout << "\n按回车键继续..\n";
        Sleep(1000);
        SETBUFTONULL
}

void queryName()
{
        system("cls");

        SETBUFTONULL

        string fid;
        setcolor(12);
        cout << "> 输入持卡人姓名:";
        setcolor(10);
        cin >> fid;

        setcolor(12);
        cout << "\n::找到如下记录 :\n";
        setcolor(15);

        purchaseHistory *p = myStudentInfo;
        int pos = 0;
        while (p != NULL) // 遍历链表,满足条件就输出该记录
        {
                if (p->name.compare(fid) == 0)
                {
                        POINT a = { 4 + pos++,2 };
                        printRecordOne(*p, a);
                }
                p = p->next;
        }
        setcolor(8);
        cout << "\n按回车键继续..\n";
        Sleep(1000);
        SETBUFTONULL
}

void queryType()
{
        system("cls");

        SETBUFTONULL

        string fid;
        setcolor(12);
        cout << "> 输入消费类型:";
        setcolor(10);
        cin >> fid;

        setcolor(12);
        cout << "\n::找到如下记录 :\n";
        setcolor(15);

        purchaseHistory *p = myStudentInfo;
        int pos = 0;
        while (p != NULL) // 遍历链表,满足条件就输出该记录
        {
                if (p->type.compare(fid) == 0)
                {
                        POINT a = { 4 + pos++,2 };
                        printRecordOne(*p, a);
                }
                p = p->next;
        }
        setcolor(8);
        cout << "\n按回车键继续..\n";
        Sleep(1000);
        SETBUFTONULL
}

void printAll()
{
        system("cls");

        setcolor(12);
        cout << "\n::找到如下记录 :\n";
        setcolor(15);

        purchaseHistory *p = myStudentInfo;
        int pos = 0;
        while (p != NULL)  // 遍历链表,打印所有记录
        {
                POINT a = { 4 + pos++,2 };
                printRecordOne(*p, a);
                p = p->next;
        }

        setcolor(8);
        cout << "\n按回车键继续..\n";
        Sleep(1000);
        SETBUFTONULL
}

void help()
{
        system("cls"); // 介绍怎么用

        setcolor(11);
        cout << "如何新增一条消费记录:\n\n";
        setcolor(8);
        cout << "    增加消费记录的时候,请按照此格式 :卡编号 持卡人姓名 消费类型 消费金额   进行录入,消费的时间系统会自动录入,每项记录之间用空格分开,如果发现打印有错误,则用回车分隔每项记录\n";

        setcolor(11);
        cout << "如何查询消费记录:\n\n";
        setcolor(8);
        cout << "    查询消费记录有以下几个模式\n";
        setcolor(7);
        cout << "        按照 ID 进行查询,该查询会查找出所有符合添加的记录\n";
        cout << "        按照 姓名 进行查询,该查询会查找出所有符合添加的记录\n";
        cout << "        按照 消费类型 进行查询,该查询会查找出所有符合添加的记录\n";

        setcolor(11);
        cout << "关于本程序:\n\n";
        setcolor(8);
        cout << "    \n 0.0 没有介绍喔!";

        setcolor(12);
        cout << "\n\n 按回车继续.....";
        Sleep(1000);
        SETBUFTONULL
}

void read()
{
/*
        FILE *fp = fopen("data.json","r");
       
        if(fp == NULL) return ;
       
        while(!feof(fp))
        {
                purchaseHistory *p = new purchaseHistory;
                p->next = myStudentInfo;
                myStudentInfo = p;
       
                fscanf(fp,"%s %s %f %s\n",p->id,p->name,p->money,p->time);
        }
        fclose(fp);*/
       
}

void storage()
{
        /*
FILE *fp = fopen("data.json","w+");
       
        purchaseHistory *p = myStudentInfo;
       
        while(p != NULL)
        {
                fprintf(fp,"%s %s %f %s\n",p->id,p->name,p->money,p->time);
                p = p->next;
        //        delete(myStudentInfo);
        /        myStudentInfo = p;
        }
        fclose(fp);*/
}

评分

参与人数 2荣誉 +2 鱼币 +1 收起 理由
理想小青年 + 1 + 1 支持楼主!
xenli + 1 热爱鱼C^_^

查看全部评分

本帖被以下淘专辑推荐:

  • · 好贴|主题: 5, 订阅: 0
楼层
跳转到指定楼层
最佳答案
0 
累计签到:42 天
连续签到:1 天
Mr.HO 发表于 2018-5-21 18:37:12 | 显示全部楼层
1
最佳答案
29 
累计签到:175 天
连续签到:1 天
像番茄加两个蛋 发表于 2018-5-21 19:07:07 | 显示全部楼层
来看一下!
最佳答案
0 
累计签到:147 天
连续签到:1 天
大月饼 发表于 2018-5-21 19:44:04 | 显示全部楼层
我就来看看
最佳答案
0 

尚未签到

run7 发表于 2018-5-22 10:34:40 | 显示全部楼层
拿来看看效果如何
最佳答案
0 
累计签到:179 天
连续签到:3 天
最坑小学生 发表于 2018-5-22 13:23:49 | 显示全部楼层
s'f'd's'd'f's
最佳答案
0 
累计签到:72 天
连续签到:2 天
柴FU木木 发表于 2018-5-22 13:44:57 | 显示全部楼层
11
最佳答案
0 
累计签到:1 天
连续签到:1 天
L-Tommorow 发表于 2018-5-22 16:55:48 | 显示全部楼层
哈哈 666
最佳答案
6 
累计签到:146 天
连续签到:1 天
U201010009 发表于 2018-5-22 18:00:49 | 显示全部楼层
本帖最后由 U201010009 于 2018-5-22 18:04 编辑

初学者可以学习学习
最佳答案
1 
累计签到:27 天
连续签到:2 天
sangfan 发表于 2018-5-22 18:53:17 | 显示全部楼层
学习  
最佳答案
0 
累计签到:35 天
连续签到:12 天
zhengsc 发表于 2018-5-22 20:19:01 | 显示全部楼层
?????????????
最佳答案
0 
累计签到:16 天
连续签到:1 天
船到桥头自然沉 发表于 2018-5-22 20:42:25 | 显示全部楼层
看看
最佳答案
0 
累计签到:17 天
连续签到:1 天
lijialijialijia 发表于 2018-5-22 21:05:16 From FishC Mobile | 显示全部楼层
谢谢
最佳答案
0 
累计签到:67 天
连续签到:1 天
lee_studying 发表于 2018-5-22 22:53:31 | 显示全部楼层
123
最佳答案
6 
累计签到:141 天
连续签到:66 天
helloTOM 发表于 2018-5-22 23:09:06 | 显示全部楼层
学习看看
最佳答案
0 
累计签到:102 天
连续签到:1 天
拖延症。 发表于 2018-5-23 02:54:05 | 显示全部楼层
11
最佳答案
0 
累计签到:1 天
连续签到:1 天
kingsxiu3 发表于 2018-5-23 11:29:02 | 显示全部楼层
...
最佳答案
0 
累计签到:118 天
连续签到:1 天
qqqqyyyy12 发表于 2018-5-23 11:55:41 | 显示全部楼层
我就来看看
最佳答案
0 
累计签到:6 天
连续签到:1 天
月下人静 发表于 2018-5-23 12:24:42 | 显示全部楼层
123
最佳答案
0 
累计签到:2 天
连续签到:1 天
tend 发表于 2018-5-23 12:34:54 | 显示全部楼层
看一下

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /1 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.3 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2018-6-21 23:54

快速回复 返回顶部 返回列表