第一阶段的学习已经完成,老师布置了一个阶段验收项目,我以为是电子相册,谁知道,是这个,售货机,来说一下自己的心得体会吧
1 大二下学期的时候,有一个一周的简易项目需要完成,学生信息管理系统,不涉及到UI,数据库,网络,就是一个简简单单的vc6环境下的学生信息管理系统,功能?增删改查即可,老师说完要求,所有人,一半的人开始抱怨,难,另一半的人开始敲了,少数人开始思考怎么写,过了一会老师才说,你们是不是没做过项目呀,“是!”,“我去”,教你们,先画流程图,框架图,功能模块图,先写报告,编程是小事,第一次听老师提及项目这个词
2培训班老师说完,就开始想我应该怎么写,老师给我支招,先画流程图,再在主函数中写自己要做的东西的备注,先做什么再做什么
3画完流程图,写完备注后,思路果然清晰了许多,知道自己应该怎么做,做完后哪里可以优化升级一下了,编程?一天完成的差不多了,编程确实是小事
好了,给大家带来代码吧
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <unistd.h>
#include <linux/input.h>
#include <sys/mman.h>
#include <stdlib.h>
#include <stdbool.h>
#include "fp.h"
extern int *lcd_memory;
extern int lcd_fd ;
extern char n_16x32[][64] ;
extern char n_buf[][16];
int main()
{
int x , y ;
int pet_number = 0 ;//代表pet的标号,范围为 1~8,
int page_current = 1 ;//代表当前页数
int pet_select = 0 ;
struct input_event events ;
int touch_fd = open_lcd() ;
// 2 打开触摸屏
// 3 初始化链表
listnode head = init_list() ;
// 4 信息录入(从文件夹下的data.txt录入)如果没有自己插入
int struNumber = info_entering(head,"./petData.txt") ;//信息录入
show_all(head);
printf(" struNumber : mainfile : %d\n",struNumber);
listnode newOne = head->next ;
if(struNumber == 0)// if no member in txt , aumotically add pets information
{
add_node(head,1,"Pikachu",1,100,"./pica.bmp");
add_node(head,2,"cabi",0,150,"./cabi.bmp");
add_node(head,3,"jng",0,130,"./jng.bmp");
add_node(head,4,"littleGray",1,170,"./littleGray.bmp");
add_node(head,5,"mwzz",1,200,"./mwzz.bmp");
add_node(head,6,"spike",1,300,"./spike.bmp");
add_node(head,7,"pinkball",1,200,"./pinkBall.bmp");
add_node(head,8,"xhl",1,300,"./xhl.bmp");
}
//电脑端显示所有的信息
show_all(head);
// 5 进入欢迎界面 3秒后进入售卖界面
show_bmp( "./bg.bmp");
pageshow( head , 1);//刚开始显示第一页
// 6 如果点击上一页或者下一页,便刷新
int pos[3] = {-1,-1,-1};
while(1)
{
kick_pos(pos);
printf("x = %d y = %d pressure = %d\n", pos[0], pos[1], pos[2]);
x = pos[0];
y = pos[1];
if(CANCEL_SIGN)
{
//cancel(head);
pet_select = 0 ;
if(page_current == 1)
{
pageshow(head,1) ;
}
else
{
pageshow(head,2) ;
}
}
if(PREV)
{
Next_And_Prev( &page_current , head , pet_select );
}
if(NEXT)
{
Next_And_Prev( &page_current , head , pet_select );
}
if(PET_1)
{
kick_pet( page_current , &pet_select , head , 1 ) ;
show_all(head);
}
if(PET_2)
{
kick_pet( page_current , &pet_select , head , 2 ) ;
show_all(head);
}
if(PET_3)
{
kick_pet( page_current , &pet_select , head , 3 ) ;
show_all(head);
}
if(PET_4)
{
kick_pet( page_current , &pet_select , head , 4 ) ;
show_all(head);
}
if(CHECK)
{
if(pet_select >= 1 && pet_select <= 8 )
{
show_bmp( "./bg.bmp");
//show_pay1( "./pay.bmp" , head, pet_select, "./paysign.bmp");
confirm_mode("./payConfirm.bmp" , head , &pet_select);
//confirm_mode(char *confirmPic , listnode head , int petNumber , int *pet_select)
pet_select = 0 ;
if(page_current == 1)
{
pageshow(head,1) ;
}
else
{
pageshow(head,2) ;
}
}
show_all(head);
}
if(ZONE_EXIT)
{
info_save( head );
clear_lcd();
break;
}
}
return 0;
}
#ifndef _FP_H_
#define _FP_H_
typedef struct node{
int petNumber;
char petName[20] ;
int petSurplus;
double petPrice;
char petPic[50] ;
struct node *next; //next指向后一个节点指针(后继指针),
}*listnode;
extern char n_buf[][16];
extern char n_16x32[][64];
extern int *lcd_memory;
extern int lcd_fd ;
#define PAY_1 x >= 124 && y >= 24 && x < 230 && y < 120
#define PAY_2 x >= 276 && y >= 24 && x < 380 && y < 120
#define PAY_3 x >= 426 && y >= 24 && x < 530 && y < 120
#define PAY_4 x >= 576 && y >= 24 && x < 680 && y < 120
#define PET_1 x >= 40 && y >= 60 && x < 190 && y < 360
#define PET_2 x >= 230 && y >= 60 && x < 380 && y < 360
#define PET_3 x >= 420 && y >= 60 && x < 570 && y < 360
#define PET_4 x >= 610 && y >= 60 && x < 760 && y < 360
#define CANCEL_SIGN x >= 40 && y >= 370 && x < 190 && y < 470
#define PREV x >= 230 && y >= 370 && x < 380 && y < 470
#define NEXT x >= 420 && y >= 370 && x < 570 && y < 470
#define CHECK x >= 610 && y >= 370 && x < 760 && y < 470
#define ZONE_CONFIRM x >= 0 && y >= 380 && x < 360 && y < 480
#define ZONE_CANCEL x >= 440 && y >= 380 && x < 800 && y < 480
#define ZONE_EXIT x >= 770 && y >= 0 && x < 800 && y < 30
int lcd_draw_bmp( int x0 , int y0 , char* bmpAddress );
int open_lcd();
void show_all(listnode head);
listnode init_list();
int info_entering( listnode head , char* fileAddress );
int show_bmp( char* bmpAddress);
int add_node(listnode head,int petNumber,char* petName,int petSurplus,double petPrice ,char* petPic);
int pageshow(listnode head , int page);
void kick_pos(int *pos);
void show_num16x32(int x,int y, int num, int color);
void show_money(int x, int y, int money);
int show_pay( char* payAddress , listnode head, int petNumber ,char* paySignAddress);
void kick_pet( int page_current , int* pet_select , listnode head , int zoneNumber );
void Next_And_Prev( int* page_current , listnode head , int pet_select );
void confirm_mode(char *confirmPic , listnode head , int *pet_select);
int soldout_draw_bmp( int picNumber, char *bmpname);
bool soldout_judge( listnode head , int petNumber);
int pay_way(listnode tmp, int petNumber);
void draw_bar(int x0, int y0, int width, int height, int speed, int color);
int info_save( struct node *head );
void close_lcd();
void clear_lcd();
#endif
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <unistd.h>
#include <linux/input.h>
#include <sys/mman.h>
#include <stdlib.h>
#include <stdbool.h>
#include "fp.h"
int *l