给你一个参考,我以前做的管理系统的源程序,希望有帮助
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "conio.h"
#include "ctype.h"
#include "malloc.h"
#define N 50
struct date{int year; int month; int day;};
struct product
{
char num[7];
char name[20];
char size[8];
int max_s;
int min_s;
int real_s;
}pro[N];
void no_input(int i,int n);
void put(int i);
void save(int n);
int load(void);
void printf_face();
void printf_one(int i);
void browse(void);
void printf_back();
void input();
void search();
void lend();
void menu();
void main()
{
menu();
}
void no_input(int i,int n)
{
int j,k,wl;
do
{
wl=0;
printf("物资编号:");
scanf("%s",pro[i].num );
for(j=0;pro[i].num [j]!=0;j++)
if(pro[i].num [j]<'0'||pro[i].num [j]>'9')
{
puts("输入错误,请重新输入!\n");
wl=1;break;
}
if(wl!=1)
for(k=0;k
{
puts("这条记录已存在!");
wl=1;break;
}
}while(wl==1);
}
void put(int i)
{
no_input(i,i);
printf("请输入物资名称:");
scanf("%s",pro[i].name);
printf("请输入物资规格:");
scanf("%s",pro[i].size);
printf("请输入最大库存量:");
scanf("%d",&pro[i].max_s);
printf("请输入最小库存量:");
scanf("%d",&pro[i].min_s);
printf("请输入实际库存量:");
scanf("%d",&pro[i].real_s);
}
void save(int n)
{
FILE *fp;
int i;
if((fp=fopen("pro.txt","ab+"))==NULL)
{
puts("\n不能打开文件\n");
}
for(i=0;i
if(fwrite(&pro[i],sizeof(struct product),1,fp)!=1)
printf("文件输入错误!\n");
fclose(fp);
}
int load(void)
{
FILE *fp;
int i;
if((fp=fopen("pro.txt","ab+"))==NULL)
{
puts("\n不能打开文件!\n");
}
for(i=0;!feof(fp);i++)
fread(&pro[i],sizeof(struct product),1,fp);
fclose(fp);
return(i-1);
}
void printf_face()
{
puts("\n\t物资编号 物资名称 物资规格 最大库存量 最小库存量 实际库存量");
}
void printf_one(int i)
{
printf("%14s%10s%10s%10d%10d%10d",pro[i].num ,pro[i].name ,pro[i].size ,pro[i].max_s ,pro[i].min_s ,pro[i].real_s );
}
void printf_back()
{
int w;
printf("\n\n\t输入成功!\n\n");
printf("\n\n\t1).浏览所有记录\t2).返回");
scanf("%d",&w);
if(w==1) browse();
else menu();
}
void input()
{
int i,n;
printf("请输入要输入数据的个数:");
scanf("%d",&n);
printf("请输入数据:\n");
for(i=0;i
printf("输入第%d个物资信息\n",i+1);
put(i);
}
if(i!=0) save(n);
printf_back();
}
void browse(void)
{
int i,n;
n=load();
printf_face();
for(i=0;i
printf_one(i);
puts("\n");
}
printf("\t共有%d条记录\n",n);
getch();
menu();
}
void search()
{
int i,n,k,wl=1,w2;
struct product p;
n=load();
do
{
k=-1;
printf("\n\n请输入你要查询的物资名称:") ;
scanf("%s",p.name );
printf_face();
for(i=0;i
if(strcmp(p.name ,pro[i].name )==0)
{
k=i;
printf_one(k);
printf("\n\n查找到记录!");
printf("\n\n是否查找其它?\n\t1)继续 2)返回目录 [ ]\b\b");
scanf("%d",&wl);
if(wl==2)
menu();
}
}
if(k==-1)
{
printf("\n\n不存在该物资记录!");
printf("\n\n是否继续查找?\n\t1)继续 2)返回目录 [ ]\b\b");
scanf("%d",&w2);
if(wl==2)
menu();
}
}while(wl==1||w2==1);
}
void lend()
{
int i,n,k,wl=1;
int num;
struct product p;
FILE *fp;
n=load();
printf_face();
for(i=0;i
printf_one(i);
puts("\n");
}
printf("\t共有%d条记录\n",n);
do
{
k=-1;
printf("请输入你要查询的物资名称:") ;
scanf("%s",p.name );
printf_face();
for(i=0;i
if(strcmp(p.name ,pro[i].name )==0)
{
k=i;
printf_one(k);
printf("\n\n找到记录!\n");
wl=2;
break;
}
}
if(k==-1)
{
printf("\n\n不存在该物资记录!");
printf("\n\n是否继续查找?\n\t1)继续 2)返回目录 [ ]\b\b");
scanf("%d",&wl);
if(wl==2)
menu();
}
}while(wl==1);
do
{
printf("请输入领料数量:");
scanf("%d",&num);
if(num
{
pro[i].real_s =pro[i].real_s -num;
fp=fopen("pro.txt","wb");
for(i=0;i
if(pro[i].max_s !=0)
fwrite(&pro[i],sizeof(struct product),1,fp);
}
fclose(fp);
puts("领料成功!");
for(i=0;i
printf_one(i);
puts("\n");
}
printf("\t共有%d条记录\n",n);
break;
}
else
{
printf("超过实际库存量,请重新输入!");
}
}while(1);
printf("\n\n是否继续领料\n\t1)继续 2)返回目录 [ ]\b\b");
scanf("%d",&num);
if(num==1)
lend();
else
menu();
}
void menu()
{
int n ,wl;
do
{
puts("\t\t***************欢迎使用物资管理系统****************");
puts("\t\t\t\t1.添加新物资记录");
puts("\t\t\t\t2.物资记录查找");
puts("\t\t\t\t3.领取物资");
puts("\t\t\t\t4.浏览物资记录");
puts("\t\t\t\t5.打印");
puts("\t\t\t\t6.结束");
printf("请按键选择:");
scanf("%d",&n);
if(n<1||n>9)
{wl=1;getchar();}
else wl=0;
}while(wl==1);
switch(n)
{
case 1:input();break;
case 2:search();break;
case 3:lend();break;
case 4:browse();break;
case 6:exit(0);
}
}
都没有注释的...
学习中
你贴这么一堆代码想要干什么?