基于C/Linux的课程项目设计一

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值