小的库存系统
inventory.c文件/****************************************************************************
*Namc:goods inventory management systerm *
*Purpose:Maitains a parts database --array version /using struct *
*Author:Bennett *
*Date written:2/1/2012 *
****************************************************************************/
#include<stdio.h>
#include "read_line.h"
#define NAME_LEN 25
#define MAX_PARTS 100
struct part{
int number;
char name[NAME_LEN+1];
int on_hand;
}inventory[MAX_PARTS];
int num_parts=0; /*number of parts currently stored*/
int find_part(int number);
/*four fuction in the program*/
void insert(void);
void search(void);
void update(void);
void print(void);
/*****************************************************************************/
int main(void){
char code;
for(;;){
printf("Enter operation code: ");
scanf(" %c",&code);
while(getchar()!='\n') /*skips to the end of line*/
;
switch(code){
case 'i':insert();
break;
case 's':search();
break;
case 'u':update();
break;
case 'p':print();
break;
case 'q':return 0;
default:printf("Illegal code\n");
}
printf("\n");
printf("Enter 'i': insert,'s':search,'u':update,'p':print,'q':exit \n");
}
}
/********************************************************************************
*find_part:Looks up a part number in the inventory array.Returns the array index*
* if the part number is found;otherwise ,returns -1; *
********************************************************************************/
int find_part(int number){
int i;
for(i=0;i<num_parts;i++){
if(inventory[i].number==number)
return i;
}
return -1;
}
/********************************************************************************
*insert:prompts the user for information about a new part and then inserts the *
* part into the database.prints an error message and returns prematurely *
* if the part already exists or the database is full *
********************************************************************************/
void insert(void){
int part_number;
if(num_parts==MAX_PARTS){
printf("Database is full ;can`t add more parts.\n");
return;
}
printf("Enter the part number: ");
scanf("%d",&part_number);
if(find_part(part_number)>=0){
printf("Part already exists.\n");
return;
}
inventory[num_parts].number=part_number;
printf("Enter part name: ");
read_line(inventory[num_parts].name,NAME_LEN);
printf("Enter quantity on hand: ");
scanf("%d",&inventory[num_parts].on_hand);
num_parts++;
}
/*******************************************************************************
*search:prompts the user to enter a part number ,then looks up the part in the*
* database.if the part exists ,prints the name and quantity on hand; *
* if not ,prints an error message; *
*******************************************************************************/
void search(void){
int i,number;
printf("Enter the part number: ");
scanf("%d",&number);
i=find_part(number);
if(i>=0){
printf("Part name: %s\n",inventory[i].name);
printf("Quantity on hand: %d\n",inventory[i].on_hand);
}else
printf("Part not found.\n");
}
/********************************************************************************
*update:prompts the user to enter a part number .prints and error message if the*
* part number doesn`t exist;otherwise , prompts the user to enter change *
* in quantity on hand and updates the database; *
********************************************************************************/
void update(void){
int i,number,change;
printf("Enter the part number: ");
scanf("%d",&number);
i=find_part(number);
if(i>=0){
printf("Enter the change in quantity on hand: ");
scanf("%d",&change);
inventory[i].on_hand+=change;
}else
printf("part not exist.\n");
}
/*******************************************************************************
*print:print a listing of all parts in the database,showing the information *
*******************************************************************************/
void print(void){
int i;
printf("Part Number Part Name "
"Quantity On Hand\n");
for(i=0;i<num_parts;i++)
printf("%7d %-25s%11d\n",inventory[i].number,inventory[i].name,inventory[i].on_hand);
}
/****************************************************************************
*NAMC:read_line.c *
*purpose:define the read_line function *
*Author:Bennett *
*Date written:2/1/2012 *
****************************************************************************/
#include<ctype.h>
#include<stdio.h>
#include "read_line.h"
read_line.c文件:
int read_line(char str[],int n)
{
int ch,i=0;
while(isspace(ch=getchar())) /*judge the getchar if is a void char */
;
while(ch!='\n'&&ch!=EOF){
if(i<n)
str[i++]=ch;
ch=getchar();
}
str[i]='\0';
return i;
}
read_line.h文件:
#ifndef READ_LINE_H
#define READ_LINE_H
int read_line(char str[],int n);
#endif