我的程序员之路

高考后的我在选择专业时感到了迷茫,经再三的筛选,我选择了软件工程专业,这时网上对于计算机专业的风评的确不好,但我感觉我就是那么一个人,只要认定了一件事情,就会持续做下去。

明知山有虎,偏向虎山行。

从那时的那个决定开始,人生的齿轮开始发生了转动。

对于编程这条路我可能会一路走到底,这可能与我的性格也有一些关系,所以这代表着我要在这个卷到飞起的方向更加脱颖而出。

我的目标是成为一位合格的程序员,就像翁恺说的那样,我要把那些现在还不能理解的原理全部搞清楚。

今天是我的第一篇博客,我们是从C语言开始学习的,现在的话,对于简单的C语言也有大概的了解,通过网上的资料和书中的参考,我写出了自己的第一个课设《仓库管理系统》

它能通过定义一个结构体数组

通过对结构体数组中数据的增删改查和结构体数组与文件间的反复调用来进行最简单的仓库管理。

以下是源码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct changku{
    int bianhao;
    char name[10];
    double jiage;
    double shuliang;
};
struct changku chang[50];
#define len sizeof(struct changku)
void xianshi();
void luru();
void chaxun();
void xiugai();
void sanchu();

int main()
{
    int n;
    printf("请输入选择\n");
    printf("显示仓库内容 1\n");
    printf("输入内容 2\n");
    printf("查询内容 3\n");
    printf("修改内容 4\n");
    printf("删除内容 5\n");
    printf("返回 0\n"); 
    scanf("%d",&n);
    while(n){
    switch(n)
    {
        case 1:xianshi();break;//显示所有记录 
        case 2:luru();break;//录入一条记录 
        case 3:chaxun();break;//查询一条记录 
        case 4:xiugai();break;//修改一条记录 
        case 5:sanchu();break;//删除一条记录 
        default :break;
    } 
    printf("请输入选择\n");
    printf("显示仓库内容 1\n");
    printf("输入内容 2\n");
    printf("查询内容 3\n");
    printf("修改内容 4\n");
    printf("删除内容 5\n");
    printf("返回 0\n"); 
    scanf("%d",&n);
       }
    return 0; 
 } 
 
 
 void xianshi()
 {
     system("cls");//清屏幕 
     int m=0;
     FILE* fp=fopen("C:\\Users\\wang\\Desktop\\wang.txt","ab+");
     if(fp==NULL)
     {
         printf("打开文件失败");
         return ;
     }
     while(!feof(fp))
     {
         if((fread(&chang[m],len,1,fp))==1)
         {
             ++m;
         }
     }
     
     printf("编号\t名称\t价格\t数量\n");
     for(int i=0;i<m;i++)
     {
         printf("%d\t%s\t%3.1lf\t%3.1lf\n",
         chang[i].bianhao,chang[i].name,chang[i].jiage,chang[i].shuliang);
     }
     fclose(fp);
     return ;
 }
 
 
void luru()
{
//    char ch;
    int m=0;
    memset(chang,0,50*len);//清空结构体中内存 
    system("cls");
     FILE* fp=fopen("C:\\Users\\wang\\Desktop\\wang.txt","ab+");
     if(fp==NULL)
     {
         printf("打开文件失败");
         return ;
     }
     while(!feof(fp))
     {
         if((fread(&chang[m],len,1,fp))==1)
         {
             m++;
         }
     }
     if(m==0)
     {
         printf("没有记录\n");
         xianshi();
     }
     printf("请输入编号\n");
     scanf("%d",&chang[m].bianhao);
     printf("请输入名称\n");
     scanf("%s",&chang[m].name);
     printf("请输入价格\n");
     scanf("%lf",&chang[m].jiage);
     printf("请输入数量\n");
     scanf("%lf",&chang[m].shuliang);
     if((fwrite(&chang[m],len,1,fp))!=1)  //把结构体中数据插入文件并判断是否写入成功 
     {
         printf("写入失败");
     }
     ++m;
     fclose(fp);
     xianshi();
     return ; 
}
void chaxun()
{
    system("cls");
    int i;
    int m=0;
    int k;
    printf("请输入查找的编号");
    scanf("%d",&k); 
     FILE* fp=fopen("C:\\Users\\wang\\Desktop\\wang.txt","ab+");
     if(fp==NULL)
     {
         printf("打开文件失败");
         return ;
     }
     while(!feof(fp))
     {
         if((fread(&chang[m],len,1,fp))==1)//找到文件存有多少组结构体,用m表示 
         {
             ++m;
         }
     }
     for(i=0;i<m;i++)
     {
         if(k==chang[i].bianhao)
         {
             printf("查找成功\n");
             printf("编号\t名称\t价格\t数量\n");
             printf("%d\t%s\t%3.1lf\t%3.1lf\n",
         chang[i].bianhao,chang[i].name,chang[i].jiage,chang[i].shuliang);
         return ;
         }
     }
     if(i==m)printf("查找失败"); 
      fclose(fp);
      return ;
}


void xiugai()
{
    system("cls");
    memset(chang,0,50*len); //清零 
    int k,i,m=0;
     FILE* fp=fopen("C:\\Users\\wang\\Desktop\\wang.txt","ab+");
     if(fp==NULL)
     {
         printf("打开文件失败");
         return ;
     }
     while(!feof(fp))
     {
         if((fread(&chang[m],len,1,fp))==1)// fread函数返回值为读取元素的数量 
         {
             ++m;
         }
     }
     fclose(fp);
     xianshi();
     printf("请输入编号");
     scanf("%d",&k);
     for(i=0;i<m;i++)
     {
         if(k==chang[i].bianhao)
         {
             fopen("C:\\Users\\wang\\Desktop\\wang.txt","wb");//把文件清空 
             printf("%d\t%s\t%3.1lf\t%3.1lf\n",
             chang[i].bianhao,chang[i].name,chang[i].jiage,chang[i].shuliang);
              printf("请输新入编号");
             scanf("%d",&chang[i].bianhao);
             printf("请输入新名称\n");
             scanf("%s",&chang[i].name);
             printf("请输入新价格\n");
             scanf("%lf",&chang[i].jiage);
             printf("请输入新数量\n");
             scanf("%lf",&chang[i].shuliang);
             printf("%d\t%s\t%3.1lf\t%3.1lf\n",
             chang[i].bianhao,chang[i].name,chang[i].jiage,chang[i].shuliang);
              for(int a=0;a<m;a++)
              {fwrite(&chang[a],len,1,fp);}
              fclose(fp);
              return;
              //把新的数组输入文件 

             }
             } 
             if(i==m){
             printf("编号输入错误");
             return ;}
     
     return ;
     }
void sanchu()
{
    system("cls");
    int m=0;
    int a,k,i;
    memset(chang,0,50*len);
    FILE *fp=fopen("C:\\Users\\wang\\Desktop\\wang.txt","ab+");
     if(fp==NULL)
     {
         printf("打开文件失败");
         return ;
     }
     while(!feof(fp))
     {
         if((fread(&chang[m],len,1,fp))==1)// fread函数返回值为读取元素的数量 
         {
             ++m;
         }
         }
         fclose(fp);
         xianshi(); 
         printf("请输入需要删除的编号");
         scanf("%d",&k);
         for(i=0;i<m;i++)
         {
             if(k==chang[i].bianhao)
             {
                 for(int q=i;q<m;q++)
                 {
                     chang[q]=chang[q+1];
                 }
                 m--;
                 fopen("C:\\Users\\wang\\Desktop\\wang.txt","wb");
         if(fp==NULL)
     {
         printf("打开文件失败");
         return ; }
     for(a=0;a<m;a++)
     {fwrite(&chang[a],len,1,fp);}
         fclose(fp);
          xianshi();
         printf("删除成功");
         return;
             }
             }
             if(a==m)printf("没找到");
         return ;}     

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值