Linux课程设计——超市计价系统软件
整理以前的笔记,翻出了学生时代写的一个小软件,今天共享出来,给各位同学参考一下,里面用到的东西基本都涵盖了C语言的知识内容。
下面来看看程序运行的界面:
这一部分的代码很好实现,这里已经用到了C语言的标准输入输出:
#include "main.h"
int main()
{
while(1)
{
int input;
int login_ret;
printf(" 解忧杂货店\n");
printf("=================================================================\n");
printf("1:注册 2:登陆\n");
printf("=================================================================\n");
scanf("%d",&input);
if ( input == 1 )
{
Add();
}
if ( input == 2 )
{
if((login_ret = login_sys()) != 0)
continue;
Menu();
break;
}
}
return 0;
}
如果代码文件夹中没有“user_info.txt”,那么我们需要输入1注册账号密码
#include "Add.h"
#include "main.h"
/*
*功 能:注册函数
*参 数:无
*返回值:无
*/
void Add()
{
int fd;
struct user_info
{
char name[12]; //用户名
char passwd[12]; //第一次输入密码
char pass_wd[12]; //确认密码
}info;
/*先打开文件*/
fd = open("./user_info.txt", O_RDWR | O_CREAT, 0777);
if (-1 == fd)
{
perror("error");
}
while(1)
{
while(getchar() != '\n');
printf("输入用户名\n");
fgets(info.name,5,stdin);
printf("输入密码\n");
fgets(info.passwd,5,stdin);
printf("确认密码\n");
fgets(info.pass_wd,5,stdin);
if ((strcmp(info.passwd,info.pass_wd) == 0))
{
strcpy(u_info.userName,info.name);
strcpy(u_info.userPWD,info.passwd);
printf("==========================注册成功========================\n");
printf("\n\n\n");
}
else{
continue;
}
lseek(fd,0,SEEK_END);
write(fd, &u_info, sizeof(u_info));
break;
}
}
当时写的不够完善,用户名和密码长度只能为3位。
后续有兴趣的同学可以在我的github上拉分支下来自行优化
当我们登录进去的时候,可以看到有一下的选项选择:
功能包括购买登记,查看已购商品,取消购买,价格计算,系统设置等。
当时为了偷懒,直接将这些商品数据放在一个结构体了,真是一大败笔呀!!!!
合理的设计应该是将商品信息放在一个文件里面,通过open函数打开该文件获取信息,后面得空再修改~~
购买的商品,我用了链表来记录
void buy()
{
int num;
int flag = 0;
char buf[16];
D_Node *sign;
if (d_list == NULL)
{
d_list = Create_List();//建立链表头节点
}
Output();
while(1)
{
bzero(buf,sizeof(buf));
while(getchar() != '\n');
printf("输入想要商品的编号:");
fgets(buf,13,stdin);
while(getchar() != '\n');
printf("输入购买数量:");
scanf("%d",&num);
p = B_list->next;
while(p != NULL)
{
if (strncmp(buf,p->goods.code,12) == 0)
{
if (num > p->num)
{
printf("库存不足,只能给你100件\n");
num = p->num;
}
sign = Create_Node(p->goods,num);
Insert_Node(d_list,sign);
Num++;
p->num = p->num - num;
}
p = p->next;
}
printf("是否继续购物?1.是 2.否\n");
scanf("%d",&flag);
if (flag == 2)
{
break;
}
}
}
该份代码中,几乎对链表的增删改查都有涉及到,可以课后结合这份代码查看。
Github链接:https://github.com/Irving-LJP/Supermarket_pricing_system