c语言课程设计-药店管理系统

这个东东第一次才开始写的时候,脑子都是懵的,把我的方法和解决办法写出来,希望可以对你有一点帮助。

逻辑方面

可以先想想,我需要这个系统实现什么功能,就药店管理系统来讲,这个我觉得增删改查是必须的,再加一个补货提醒,剩下的就是什么几家药店一起搞,这样用户知道库存和药店位置可以做出最优选择。然后搞了两个端口进行,一个用户端,一个工作人员端口,这样的话显示菜单不同,功能也可以分开实现。(这里可以写三个文本,一个存药店信息,一个存药品信息,一个存所有的用户和工作人员的ID和密码)。

代码实现

按照运行显示顺序排列代码
1.结构体建立(一共三个,药品,药店,用户信息)

typedef struct medicine    //药品信息结构体
{
   
 char name[10];    //药品名 
 int  num;         //药品编号 
 int  drugstore_num;  //药店编号 
 float price;     //药品价格 
 int stock;        //药品库存数量 
 int sell;         //药品销量 
 char effect[10];  //药品功效 
 struct medicine *next; 
 } medicine;
typedef struct place   //药店信息结构体
{
   
 int num;    //药店编号
 char address[20];   //药店地址
 struct place *next;
}place;
typedef struct user       //用户信息结构体
{
   
 char name[10];    //用户名
 int flag1;        //标记是客户还是员工 
 char password[10];    //用户密码
 struct user *next; 
}user;

2.链接三个文件
三个文件分别用三个链表链起来,功能实现方面就简单很多,这里为了方便我就放一个就好了(将三个药店链起来)
文件里面一定要有内容 emmmm 要是出现文件不存在可以试试把r换成w运行一遍后再换回来,换回来后记得回去吧文件里的内容补上(要是有大佬知道更好的解决办法,能否教一下,我也想知道怎么更好解决)

void place_txt()        //将店铺连接起来 
{
   
 FILE *fp;
 fp=fopen("place.txt","r+");
 if(NULL == fp)
    {
   
        printf("文件不存在\n");
  exit(1);
    } 
    place *p,*q;
    place_head=(place *)malloc(sizeof(place));
    place_head->next=NULL;
    p=(place *)malloc(sizeof(place));
    p->next=NULL;
    while(fscanf(fp,"%s %d",p->address,&p->num)!=EOF)
    {
   
     if(place_head->next==NULL)
     place_head->next=p;
     else
     q->next=p;
     q=p;
     p=(place *)malloc(sizeof(place));
     p->next=NULL;
 }
 fclose(fp); 
} 

3.主菜单
这个主要是登录,注册和退出系统
介于本人喜欢的颜色和不想看太繁琐的就加了清屏和改了颜色 这个看个人喜欢

system("cls");    //清屏函数
system("pause");   //点击一下进行下一功能
system("color 0F")  //改背景和字体颜色

前面数字改背景颜色 0=黑 1=蓝 2=绿 3=湖蓝 4=红 5=紫 6=黄 7=白 8=灰 9=淡蓝 后面是字体颜色A=淡绿 B=浅淡绿 C=淡红 D=淡紫 E=淡黄 F=亮白
下面是主菜单代码

void main_menu()          //主菜单栏 
{
   
 system("cls\n");
 int n; 
 printf("\n\t\t-----欢迎来到药店管理系统-----\n\n");
 system("color 0B");
 printf("\t\t***** 1 登录          *****\n");
 printf("\t\t***** 2 注册          *****\n");
 printf("\t\t***** 3 退出系统      *****\n");
 printf("\n\t\t输入您所要进行的功能序号:");
 do{
   
  scanf("%d",&n);
  switch(n)
   {
   
    case 1:{
   log_on(); break;}
    case 2:{
    post();  break; }
    case 3:{
    sign_out();  break;}
    default:
     printf("输入指令不存在请重新输入:\n");
   }
 }while(n<1||n>3);
}

while里面内个控制,看自己的系统功能多少进行改变即可

4.登录系统
终于到登录系统了,嘿嘿嘿,本人在此和注册系统加了一个加密和控制条件,就是现在普遍见到的输入密码出现的是*。

int log_on()             //登录系统
{
   
 system("cls");
 system("color 0E");
 user *p=user_head->next;
 int flag=1,i=0,j=0;
 char a[10],b[11];
 char c=0;
 printf("\n\t\t---------欢迎您使用---------\n\t\t");
 fflush(stdin);
 do{
   
  printf("您有%d次机会输入\n\t\t",3-j);
  printf("请输入您的用户名:\n\t\t"); 
  scanf("%s",a);
  printf("\t\t请输入您的账户密码:\n\t\t");
  i=0;
  p=user_head->next;
  while(i<10&&c!=13)   //13  回车
  {
   
   c=getch();
   if((c>47&&c<58)||(c>96&&c<123))
   {
   
    b[i++]=c;
    putchar('*');
    
   }
   b[10]='\0';
   } 
   while(p!=NULL)
   {
   
    if(strcmp(a,p->name)==0&&strcmp(b,p-
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值