㈠ 我想用Java語言寫一個小型的Web進銷存程序,第一次接觸Java想請教如何架構
1、首先建表,商品表(主鍵,商品編號,名稱,價格,數量),如果需要查看每次進貨或銷售的記錄可以建立一個記錄表,定義一個狀態來區分是進貨還是銷售的,如果不需要記錄可以不建。
2、新增商品:在頁面上點擊新增商品時需彈出頁面或彈窗需要輸入商品編號(商品編號可根據一定規則後台自動生成,也可手動輸入),商品名稱,價格,數量。點擊保存將數據傳到後台,再向資料庫商品表中增加一條數據。
3、進貨:點擊頁面上增加進貨的按鈕,彈出彈框,需要輸入商品編號和數量,保存時先商品編號和數量傳到後台,現在後台根據商品編號查詢商品表是否有存在,如果存在根據商品編號將商品數量查出轉為int,與新增加的商品數量相加,然後根據商品編號去修改商品表的數量,成功向前台返回true。商品不存在返回false.前台可根據後台返回的變數來提示是進貨成功還是失敗。
4、銷售:點擊頁面銷售按鈕,彈出彈框,填寫商品編號及數量,然後和進貨的就差不多,根據商品編號查詢數量,用銷售的數量和資料庫中的數量作比較,如果滿足條件在數據中減去相應數量,返回true,不滿足就不要修改資料庫,直接返回false,然後前台判斷後台返回值去提示銷售是否成功。
5、參看庫存:因為進貨和銷售都是直接在商品表中增加或減少的,所以直接查詢商品表的數量就是庫存了,查完在前台展示出來。
6、點擊退出的時候直接返回到登錄頁面就可以。
㈡ 請問各位,我想學習編程,做進銷存軟體,管理系統等,我該學習哪種語言
如果說3-5年後不想過時的話,那就學Java吧,用1個月的功夫熟悉語法,剩下的幾年就可以在搞應用開發中鍛煉自己了。鍛煉個兩年,只要你用心,肯定能學得會。Java並不比VB更難。並且Java可以應用到除了Windows之外的絕大多數操作系統上。
如果說想盡快見到效果,但以後並不謀求更高的發展,建議學VB.net,這個掌握起來非常迅速,有個一兩個月就能搞開發了。但做好的軟體只能運行在Windows上。
如果說想盡快見到效果,但以後還想有所發展,建議學c#,這個大概得半年之後才能真正理解透。用它做好的軟體也只能運行在windows上。
其實大型伺服器,很多都是用BSD、Linux或者Unix之類的系統,而不是Windows。Windows個人用的比較多,伺服器用的不是太多。
上面說的語言學習時間,是針對一點基礎都沒有、什麼都不會的人的,如果你有一定的計算機編程基礎,那肯定學的就更快了。
㈢ c語言糧油進銷存系統源代碼
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
//日期結構體
typedef struct
{
int year;
int month;
int day;
}DATE;
//商品結構體
//定義鏈表
typedef struct Node
{
long num;
char name[20];
char kind[20];
DATE pro_date;
int save_day;
int shuliang;
float jinjia;
float shoujia;
DATE sale_date;
struct Node *next;
}Node,*LinkList;
//申請函數
void apply()
{
int i,flag=1;
FILE *fp;
char name[20],key[20];
flushall();
printf("用戶名(不能為空):");
scanf("%s",name);
flushall();
printf("密碼(不能為空):");
for(i=0;i<=20;i++)
{
key[i]=getch();
if(key[i]==13)
{
key[i]='\0';
break;
}
printf("*");
}
fp=fopen("key.txt","w");
if(fp==NULL)
{
printf("the file can not open!");
flag=0;
exit(1);
}
fprintf(fp,"%s %s",name,key);
fclose(fp);
if(flag==1)
printf("\n申請成功,請登錄!\n");
else
printf("\n申請失敗,請重新申請!\n");
}
//登錄函數
int load()
{
FILE *fp;
int i;
char name[20],key[20];
char name1[20],key1[20];
fp=fopen("key.txt","r");
fscanf(fp,"%s %s",name,key);
fclose(fp);
printf("用戶名(不能為空):");
scanf("%s",name1);
flushall();
printf("密碼(不能為空):");
for(i=0;i<=20;i++)
{
key1[i]=getch();
if(key1[i]==13)
{
key1[i]='\0';
break;
}
printf("*");
}
printf("\n");
if(strcmp(name1,name)==0&&strcmp(key1,key)==0)
{ printf("登陸成功!\n\n");return 1; }
else
{ printf("用戶名或密碼錯誤;請重新登錄!"); return 0;}
}
//密碼保護系統
void key()
{
int choice,c;
do
{ printf("\n****************************申請登錄系統********************************\n\n");
printf(" 1: 新用戶注冊; \n\n");
printf(" 2: 新用戶登錄; \n\n");
printf("請選擇:");
scanf("%d",&choice);
switch(choice)
{
case 1: apply(); break;
case 2: c=load();break;
}
}while(c!=1);
}
LinkList goods_input()
{
LinkList L;
Node *p1,*p2;
int i=1;
void file_write(Node *p);
int flag=1;
L=p2=(Node*)malloc(sizeof(Node));//為頭節點分配存儲空間
while(flag)
{
p1=(Node*)malloc(sizeof(Node));
printf("請輸入第%d種商品的信息(商品號為0時,結束商品輸入):\n\n",i++);
flushall();
printf("商品號:");
scanf("%ld",&p1->num);
if(p1->num!=0)
{
flushall();
printf("名稱:");
scanf("%s",&p1->name);
flushall();
printf("類別:");
scanf("%s",&p1->kind);
flushall();
printf("生產日期(年月日用空格隔開):");
scanf("%d%d%d",&p1->pro_date.year,&p1->pro_date.month,&p1->pro_date.day);
flushall();
printf("保質期:");
scanf("%d",&p1->save_day);
flushall();
printf("商品數量:");
scanf("%d",&p1->shuliang);
flushall();
printf("進價:");
scanf("%f",&p1->jinjia);
flushall();
printf("售價:");
scanf("%f",&p1->shoujia);
flushall();
printf("銷售日期(年月日用空格隔開):");
scanf("%d%d%d",&p1->sale_date.year,&p1->sale_date.month,&p1->sale_date.day);
p2->next=p1;
p2=p1;
}
else
{
flag=0;
break;
}
}
p2->next=NULL;
file_write(L);
free(p1);
return(L);
}
//將商品信息寫入文件
void file_write(Node *p)
{
FILE *fp;
char filename[50];int c;
printf("是否保存?(保存按1;不保存按0):");
scanf("%d",&c);
if(c==1)
{ flushall();
printf("\n為了將你操作的信息保存下來,請輸入要寫入的文件的路經或文件:");
gets(filename);
fp=fopen(filename,"w");
if(fp==NULL)
{
printf("\n this file can not be open!");
exit(1);
}
p=p->next;
while(p!=NULL)
{
fprintf(fp,"%ld %s %s %d %d %d %d %d %f %f %d %d %d\n",p->num,p->name,p->kind,p->pro_date.year,p->pro_date.month,p->pro_date.day,p->save_day,p->shuliang,p->jinjia,p->shoujia,p->sale_date.year,p->sale_date.month,p->sale_date.day);
p=p->next;
}
fclose(fp);
printf("文件保存成功!");
}
}
//將文件中的信息讀出的函數
LinkList file_read()
{
FILE *fp;
LinkList L;
Node *p1,*p2;
char filename[50];
int i,k=0,t=-2;
flushall();
printf("請輸入要讀取的文件的路徑或文件名:");
gets(filename);
flushall();
printf("請輸入商品的種類數:");
scanf("%d",&i);
fp=fopen(filename,"r");
L=p2=(Node*)malloc(sizeof(Node));//為頭節點分配存儲空間
while(t!=EOF&&k<i)
{
p1=(Node*)malloc(sizeof(Node));
t=fscanf(fp,"%ld %s %s %d %d %d %d %d %f %f %d %d %d",&p1->num,p1->name,p1->kind,&p1->pro_date.year,&p1->pro_date.month,&p1->pro_date.day,&p1->save_day,&p1->shuliang,&p1->jinjia,&p1->shoujia,&p1->sale_date.year,&p1->sale_date.month,&p1->sale_date.day);
p2->next=p1;
p2=p1;
k++;
}
p2->next=NULL;
fclose(fp);
return L;
}
//查找商品信息
void goods_find()
{
long snum;
int flag=0,t;
Node *p0,*p1;
p1=p0=file_read();
while(1)
{
flag=0;
printf("請輸入你要查找的商品信息的商品號:");
scanf("%ld",&snum);
while( p0->next!=NULL)
{
p0=p0->next;
if(p0->num==snum)
{
flag=1;
break;
}
}
if(flag==1)
{ printf("該商品的信息如下:\n\n");
printf("商品號\t名稱\t類別\t生產日期\t保質期\t數量\t進價\t售價\t銷售日期\n");
printf("%ld\t%s\t%s\t%02d-%02d-%02d\t%d\t%d\t%0.2f\t%0.2f\t%02d-%02d-%02d",p0->num,p0->name,p0->kind,p0->pro_date.year,p0->pro_date.month,p0->pro_date.day,p0->save_day,p0->shuliang,p0->jinjia,p0->shoujia,p0->sale_date.year,p0->sale_date.month,p0->sale_date.day);
}
else
printf("此商品號不存在,查找失敗!\n");
p0=p1;
printf("結束查找按0,繼續查找按1:");
scanf("%d",&t);
if(t==0)
break;
}
}
//修改商品信息
void goods_change()
{
Node *p1,*p0,*p2;
int c,flag=0,t;
long snum;
p2=p0=file_read();
while(1)
{
flag=0;
p1=p0->next;
if(p1==NULL) flag=0;
printf("請輸入你要修改的商品信息的商品號:");
scanf("%ld",&snum);
while(p1!=NULL)
{
if(p1->num==snum)
{
flag=1;
break;
}
p1=p1->next;
}
if(flag==1)
{ printf(" 1:商品號;\n");
printf(" 2:商品名稱;\n");
printf(" 3:商品類別;\n");
printf(" 4:商品生產日期;\n");
printf(" 5:商品保質期;\n");
printf(" 6:商品數量\n");
printf(" 7:商品進價\n");
printf(" 8:商品售價\n");
printf(" 9:商品銷售日期\n");
printf(" 請選擇修改的內容(0~9):");
scanf("%d",&c);
while(1)
{
if(c==1||c==2||c==3||c==4||c==5||c==6||c==7||c==8||c==9)break;
else
{
printf("\n輸入有誤,請重新輸入!\n清選擇(0~9):");
scanf("%d",&c);
if(c==1||c==2||c==3||c==4||c==5||c==6||c==7||c==8||c==9) break;
}
}
switch(c)
{
case 1:
{
printf("\n輸入修改後的商品號:");
scanf("%ld",&p1->num);break;
}
case 2:
{
printf("輸入修改後的商品名:");
scanf("%s",&p1->name);break;
}
case 3:
{
printf("輸入修改後的商品類別:");
scanf("%s",&p1->kind);break;
}
case 4:
{
printf("輸入修改後的商品生產日期(年月日之間用空格隔開):");
scanf("%d%d%d",&p1->pro_date.year,&p1->pro_date.month,&p1->pro_date.day);break;
}
case 5:
{
printf("輸入修改後的商品保質期:");
scanf("%d",&p1->save_day);break;
}
case 6:
{
printf("輸入修改後的商品數量:");
scanf("%d",&p1->shuliang);break;
}
case 7:
{
printf("輸入修改後的商品進價:");
scanf("%f",&p1->jinjia);break;
}
case 8:
{
printf("輸入修改後的商品售價:");
scanf("%f",&p1->shoujia);break;
}
case 9:
{
printf("輸入修改後的商品銷售日期(年月日之間用空格隔開):");
scanf("%d%d%d",&p1->sale_date.year,&p1->sale_date.month,&p1->sale_date.day);break;
}
}
printf("修改後的商品信息如下:\n\n");
printf("商品號\t名稱\t類別\t生產日期\t保質期\t數量\t進價\t售價\t銷售日期\n");
printf("%ld\t%s\t%s\t%02d-%02d-%02d\t%d\t%d\t%0.2f\t%0.2f\t%02d-%02d-%02d",p1->num,p1->name,p1->kind,p1->pro_date.year,p1->pro_date.month,p1->pro_date.day,p1->save_day,p1->shuliang,p1->jinjia,p1->shoujia,p1->sale_date.year,p1->sale_date.month,p1->sale_date.day);
}
else
printf("此商品號不存在,修改失敗!\n");
p0=p2;
printf("結束修改按0,繼續修改按1:");
scanf("%d",&t);
if(t==0)
break;
}
file_write(p0);
}
//插入商品
void goods_insert()
{
Node *p0,*p1,*p2,*p3;
int k,i,flag,t;
p0=file_read();
while(1)
{
p3=p2=p0;
k=0;
printf("請輸入插入位置i的值(i的值小於商品的種類數):");
scanf("%d",&i);
while(p2!=NULL&&k<i-1)
{
p2=p2->next;
k=k+1;
}
if(k!=i-1) flag=0;
p1=(Node*)malloc(sizeof(Node));
printf("請輸入要插入的商品號 名稱 類別 生產日期 保質期 數量 進價 售價 銷售日期:\n");
scanf("%ld%s%s%d%d%d%d%d%f%f%d%d%d",&p1->num,p1->name,p1->kind,&p1->pro_date.year,&p1->pro_date.month,&p1->pro_date.day,&p1->save_day,&p1->shuliang,&p1->jinjia,&p1->shoujia,&p1->sale_date.year,&p1->sale_date.month,&p1->sale_date.day);
p1->next=p2->next;
p2->next=p1;
flag=1;
if(flag==1)
printf("插入位置合理!\n");
else
printf("插入位置不合理!\n");
printf("結束插入按0,繼續插入按1:");
scanf("%d",&t);
if(t==0)
break;
}
p0=p0->next;
printf("商品號\t名稱\t類別\t生產日期\t保質期\t數量\t進價\t售價\t銷售日期\n");
while(p0!=NULL)
{
printf("--------------------------------------------------------------------------------\n");
printf("%ld\t%s\t%s\t%02d-%02d-%02d\t%d\t%d\t%0.2f\t%0.2f\t%02d-%02d-%02d",p0->num,p0->name,p0->kind,p0->pro_date.year,p0->pro_date.month,p0->pro_date.day,p0->save_day,p0->shuliang,p0->jinjia,p0->shoujia,p0->sale_date.year,p0->sale_date.month,p0->sale_date.day);
p0=p0->next;
}
file_write(p3);
}
//刪除商品信息
void goods_delete()
{
long num;
Node *p,*p0,*p1,*p2;
int flag=0,t;
p0=file_read();
while(1)
{
flag=0;
p1=p2=p0;
p=p1->next;
if(p==NULL) flag=0;
printf("請輸入你要刪除的商品的商品號:");
scanf("%ld",&num);
while(p!=NULL)
{
if(p->num==num)
{
p1->next=p->next;
free(p);
flag=1;
break;
}
p1=p;
p=p->next;
flag=0;
}
if(flag==1)
printf("你已正確刪除!\n");
else
printf("你輸入的商品號不存在!\n");
printf("結束刪除按0,繼續刪除按1:");
scanf("%d",&t);
if(t==0)
break;
}
p0=p0->next;
printf("商品號\t名稱\t類別\t生產日期\t保質期\t數量\t進價\t售價\t銷售日期\n");
while(p0!=NULL)
{
printf("--------------------------------------------------------------------------------\n");
printf("%ld\t%s\t%s\t%02d-%02d-%02d\t%d\t%d\t%0.2f\t%0.2f\t%02d-%02d-%02d",p0->num,p0->name,p0->kind,p0->pro_date.year,p0->pro_date.month,p0->pro_date.day,p0->save_day,p0->shuliang,p0->jinjia,p0->shoujia,p0->sale_date.year,p0->sale_date.month,p0->sale_date.day);
p0=p0->next;
}
file_write(p2);
}
//商品信息排序
void goods_rank()
{
Node *p,*q,*k,*L,t;
Node *p0;
int flag=0;
L=file_read();
p=L->next;
while(p->next)
{
k=p;
q=p->next;
while(q)
{
if((k->shuliang)>(q->shuliang))
k=q;
q=q->next;
}
if(p!=k)
{
t=*p;
*p=*k;
*k=t;
t.next=p->next;
p->next=k->next;
k->next=t.next;
flag=1;
}
p=p->next;
}
if(flag=1)
printf("按商品數量從小到大排序成功!\n");
else
printf("按商品數量從小到大排序失敗!\n");
p0=L;
p0=p0->next;
printf("商品號\t名稱\t類別\t生產日期\t保質期\t數量\t進價\t售價\t銷售日期\n");
while(p0!=NULL)
{
printf("--------------------------------------------------------------------------------\n");
printf("%ld\t%s\t%s\t%02d-%02d-%02d\t%d\t%d\t%0.2f\t%0.2f\t%02d-%02d-%02d",p0->num,p0->name,p0->kind,p0->pro_date.year,p0->pro_date.month,p0->pro_date.day,p0->save_day,p0->shuliang,p0->jinjia,p0->shoujia,p0->sale_date.year,p0->sale_date.month,p0->sale_date.day);
p0=p0->next;
}
file_write(L);
}
//商品信息統計
void goods_tongji()
{
Node *p0,*p1;
int liang_sum=0;
float lirun_sum=0;
p0=p1=file_read();
p0=p0->next;
printf(" 商品信息統計表 \n\n");
printf("商品號\t名稱\t類別\t生產日期\t保質期\t數量\t進價\t售價\t銷售日期\n");
while(p0!=NULL)
{
printf("--------------------------------------------------------------------------------\n");
printf("%ld\t%s\t%s\t%02d-%02d-%02d\t%d\t%d\t%0.2f\t%0.2f\t%02d-%02d-%02d",p0->num,p0->name,p0->kind,p0->pro_date.year,p0->pro_date.month,p0->pro_date.day,p0->save_day,p0->shuliang,p0->jinjia,p0->shoujia,p0->sale_date.year,p0->sale_date.month,p0->sale_date.day);
p0=p0->next;
}
printf("\n");
p1=p1->next;
while(p1!=NULL)
{
liang_sum+=p1->shuliang;
// printf("商品數量:%d\n",p1->shuliang);
lirun_sum+=((p1->shoujia)-(p1->jinjia))*(p1->shuliang);
p1=p1->next;
}
printf("迄今,商店裡還有%d件商品;\n總利潤為%0.2f元;\n",liang_sum,lirun_sum);
if(liang_sum<=200)
printf("注意:商店裡的商品偏少,請適當進貨!\n");
else if(liang_sum>1100)
printf("注意:商店裡積壓的貨物太多,請及時清倉!\n");
else
printf("\n商品總件數大於200件,小於1100件,無需進貨,清倉!\n");
}
main()
{
int c;
key();
do
{
printf("請按任意鍵返回主菜單!");
getch();
system("cls");
printf("\n****************************歡迎進入商場店面管理系統****************************\n\n");
printf(" 1,錄入商品信息;\n");
printf(" 2,查找商品信息;\n");
printf(" 3,修改商品信息;\n");
printf(" 4,插入商品信息;\n");
printf(" 5,刪除商品信息;\n");
printf(" 6,商品信息排序;\n");
printf(" 7,統計商品信息;\n");
printf(" 0,退出系統;\n");
printf(" 請選擇(0~7):");
scanf("%d",&c);
while(1)
{
if(c==1||c==2||c==3||c==4||c==5||c==6||c==7||c==0)break;
else
{
printf("\n輸入有誤,請重新輸入!\n清選擇(0~7):");
scanf("%d",&c);
if(c==1||c==2||c==3||c==4||c==5||c==6||c==7||c==0) break;
}
}
switch(c)
{
case 1:goods_input();break;
case 2:goods_find();break;
case 3:goods_change();break;
case 4:goods_insert();break;
case 5:goods_delete();break;
case 6:goods_rank();break;
case 7:goods_tongji();break;
case 0 :break;
}
}while(c!=0);
}
㈣ 易語言 怎麼編 進銷存 軟體,將代碼和具體步驟告訴我
要看你要用什麼資料庫,是要用ACCESS還是易語言的資料庫edb
ACCESS的話是用對象創建 可以網路搜索模塊或源碼
如果是易語言的edb 使用易語言的核心支持庫
打開(資料庫文件名,,假,#禁止讀寫,資料庫密碼)
.版本 2
.計次循環首 (取記錄數 (), N)
讀 ()
寫()
跳到()
.計次循環尾 ()
這幾個命令