真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯網站制作重慶分公司

出庫函數c語言 C語言中庫函數

C語言高手幫忙編一個倉庫物資管理系統(tǒng)

#include stdafx.h

創(chuàng)新互聯公司憑借在網站建設、網站推廣領域領先的技術能力和多年的行業(yè)經驗,為客戶提供超值的營銷型網站建設服務,我們始終認為:好的營銷型網站就是好的業(yè)務員。我們已成功為企業(yè)單位、個人等客戶提供了網站建設、成都做網站服務,以良好的商業(yè)信譽,完善的服務及深厚的技術力量處于同行領先地位。

#includestdio.h

#includestring.h

#define SIZE 2//SIZE為倉庫電器種類

struct goods

{

char name[10];

char brand[10];

char style[10];

int num;

float money;

}stu[SIZE];//庫存結構

struct date

{

int year;

int month;

int day;

};//日期結構

struct entrance

{

char name[10];

char brand[10];

char style[10];

int num;

float money;

struct date time;

char stuf[10];

}stu_2[SIZE];//入庫結構

struct exit

{

char name[10];

char brand[10];

char style[10];

int num;

struct date time;

char stuf[10];

}stu_3[SIZE];//出庫結構

void main()

{

void save_1();

void save_2();

void save_3();

void change_1();

void change_2();

void found_1();

void found_2();

int i;

printf("please input the information:\n");

for(i=0;iSIZE;i++)

{

scanf("%s%s%s%d%d",stu[i].name,stu[i].brand,stu[i].style,stu[i].num,stu[i].money);

} //輸入庫存

save_1(); //利用函數將庫存保存

FILE *fp;

fp=fopen("stu_list.txt","rb");

for(i=0;iSIZE;i++)

{

fread(stu[i],sizeof(struct goods),1,fp);

printf("%s %s %s %d %d",stu[i].name,stu[i].brand,stu[i].style,stu[i].num,stu[i].money);

printf("\n");

} //讀出信息

fclose(fp);

printf("請輸入物資入庫信息:\n");//輸入入庫信息

for(i=0;iSIZE;i++)

scanf("%s%s%s%d%f%d%d%d%s",stu_2[i].name,stu_2[i].brand,stu_2[i].style,stu_2[i].num,stu_2[i].money,stu_2[i].time.year,stu_2[i].time.month,stu_2[i].time.day,stu_2[i].stuf);

save_2(); //創(chuàng)建入庫文件

change_1();

printf("請輸入出庫信息\n");

scanf("%s%s%s%d%d%d%d%s",stu_3[i].name,stu_3[i].brand,stu_3[i].style,stu_3[i].num,stu_3[i].time.year,stu_3[i].time.month,stu_3[i].time.day,stu_3[i].stuf);

for(i=0;iSIZE;i++)

{

if(stu_3[i].numstu[i].num)

{

printf("the error number!please input again!\n");

break;

}

else

{

save_3();

change_2();

}

}

found_1();

found_2();

}

void save_1()

{

FILE *fp;

int i;

if((fp=fopen("stu_list.txt","wb"))==NULL)

{

printf("connot open the file\n");

return;

}

for(i=0;iSIZE;i++)

{

if(fwrite(stu[i],sizeof(struct goods),1,fp)!=1)

printf("file write error\n");

}

fclose(fp);

}

void save_2()

{

FILE *fp;

int i;

if((fp=fopen("stu_list_2.txt","wb"))==NULL)

{

printf("connot open the file\n");

return;

}

for(i=0;iSIZE;i++)

{

if(fwrite(stu_2[i],sizeof(struct entrance),1,fp)!=1)

printf("file write error\n");

}

fclose(fp);

}

void change_1()

{

int i;

for(i=0;iSIZE;i++)

{

if(strcmp(stu[i].name,stu_2[i].name)==0strcmp(stu[i].brand,stu_2[i].brand)==0strcmp(stu[i].style,stu_2[i].style)==0)

{

stu[i].num=stu[i].num+stu_2[i].num;

}

}

save_1();

}

void save_3()

{

FILE *fp;

int i;

if((fp=fopen("stu_list_3.txt","wb"))==NULL)

{

printf("connot open the file\n");

return;

}

for(i=0;iSIZE;i++)

{

if(fwrite(stu_3[i],sizeof(struct exit),1,fp)!=1)

printf("file write error\n");

}

fclose(fp);

}

void change_2()

{

int i;

for(i=0;iSIZE;i++)

{

if(strcmp(stu[i].name,stu_3[i].name)==0strcmp(stu[i].brand,stu_3[i].brand)==0strcmp(stu[i].style,stu_3[i].style)==0)

{

stu[i].num=stu[i].num-stu_3[i].num;

}

}

save_1();

}

void found_1()

{

FILE *fp;

int i;

int sum=0;

char name[10];

char brand[10];

printf("please input the name and brand:\n");//4.1 4.2 5.1

scanf("%s%s",name,brand);

if((fp=fopen("stu.list.txt","rb"))==NULL)

{

printf("connot open the file!\n");

return;

}

for(i=0;iSIZE;i++)

{

if(fread(stu[i],sizeof(struct goods),1,fp)!=1)

{

if(strcmp(name[10],stu[i].name[10])==0)

{

printf("the information of the good:\n");

printf("%s %s %s %d %d",stu[i].name,stu[i].brand,stu[i].style,stu[i].num,stu[i].money);

sum=sum+stu[i].num;

}

if(strcmp(brand[10],stu[i].brand[10])==0)

{

printf("the information of the good:\n");

printf("%s %s %s %d %d",stu[i].name,stu[i].brand,stu[i].style,stu[i].num,stu[i].money);

}

}

}

printf("the number of this %s is %d.\n",name[10],sum);

}

void found_2()

{

FILE *fp;

int i;

int j;

int sum=0;

int year_1,year_2,month_1,month_2,day_1;

char name_1[10],name_2[10],style_1[10];

if((fp=fopen("stu_list_2.txt","rb"))==NULL)

{

printf("connot open the file!\n");

return;

}

if((fp=fopen("stu_list_3.txt","rb"))==NULL)

{

printf("connot open the file!\n");

return;

}

printf("please input year_1,month_1,day_1,then find the exit and entrance:\n");

scanf("%d%d%d",year_1,month_1,day_1);

printf("please input the name and style,then find the good's entrance and exit");

scanf("%s%s",name_1,style_1);

printf("please input the name of the good,then output the number or its entrance:\n");

scanf("%s",name_2);

printf("please input year_2 and month_2,then output the number of exit in this month:\n");

scanf("%d%d",year_2,month_2);

printf("please input the red number,then output all the informations of the goods:\n");

scanf("%d",j);

for(i=0;iSIZE;i++)

{

if((fread(stu_2[i],sizeof(struct entrance),1,fp)!=1)(fread(stu_3[i],sizeof(struct exit),1,fp)!=1))//讀出入庫和出庫信息

{

if((stu_2[i].time.year==year_1)(stu_2[i].time.month==month_1)(stu_2[i].time.day==day_1))//入庫信息4.3

{

printf("%s%s%s%d%f%d%d%d%s",stu_2[i].name,stu_2[i].brand,stu_2[i].style,stu_2[i].num,stu_2[i].money,stu_2[i].time.year,stu_2[i].time.month,stu_2[i].time.day,stu_2[i].stuf);

}

if((stu_3[i].time.year==year_1)(stu_3[i].time.month==month_1)(stu_3[i].time.day==day_1))//出庫信息4.3

{

printf("%s%s%s%d%d%d%d%s",stu_3[i].name,stu_3[i].brand,stu_3[i].style,stu_3[i].num,stu_3[i].time.year,stu_3[i].time.month,stu_3[i].time.day,stu_3[i].stuf);

}

}

}

for(i=0;iSIZE;i++)//4.4

{

if((fread(stu_2[i],sizeof(struct entrance),1,fp)!=1)(fread(stu_3[i],sizeof(struct exit),1,fp)!=1))//讀出入庫和出庫信息

{

if((strcmp(stu_2[i].name,name_1))==0(strcmp(stu_2[i].style,style_1))==0)

{

printf("%s%s%s%d%f%d%d%d%s",stu_2[i].name,stu_2[i].brand,stu_2[i].style,stu_2[i].num,stu_2[i].money,stu_2[i].time.year,stu_2[i].time.month,stu_2[i].time.day,stu_2[i].stuf);

}

if((strcmp(stu_3[i].name,name_1))==0(strcmp(stu_3[i].style,style_1))==0)

{

printf("%s%s%s%d%d%d%d%s",stu_3[i].name,stu_3[i].brand,stu_3[i].style,stu_3[i].num,stu_3[i].time.year,stu_3[i].time.month,stu_3[i].time.day,stu_3[i].stuf);

}

}

}

for(i=0;iSIZE;i++)//5.3

{

if((fread(stu_3[i],sizeof(struct exit),1,fp)!=1))

if(stu_3[i].time.year==year_2stu_3[i].time.month==month_2)

{

sum=sum+stu_3[i].num;

}

}

printf("the time of exit is %d.\n",sum);

for(i=0;iSIZE;i++)

{

if((fread(stu[i],sizeof(struct goods),1,fp)!=1))

{

if(stu[i].numj)

{

printf("th information of the good are:\n");

printf("%s%s%s%d%f",stu[i].name,stu[i].brand,stu[i].style,stu[i].num,stu[i].money);

}

}

}

}

一個表里一個入庫兩個出庫怎么用函數

1.先在同一工作簿中作: 庫存匯總、入庫、出庫 三個表格。 2.在庫存匯總表中輸入數據 然后選中型號列,將型號列設置為型號輸入唯一性(避免重復統(tǒng)計): 1)數據有效性——設置:自定義——公式:=COUNTIF(B:B,B1)=1。 2)出錯警告——停止。 3.在庫存匯總表中設置公式 A3單元格中輸入此公式: =IF(B3="","",1) A4單元格中輸入此公式:=IF(B4="","",A3+1) E3單元格中輸入此公式: =IF(B3="","",SUM(D3+F3-G3)) F3單元格中輸入此公式: =IF(B3="","",SUMIF(入庫! C:C,B3,入庫! E:E)) G3單元格中輸入此公式: =IF(B3="","",SUMIF(出庫! C:C,B3,出庫! E:E)) 然后將上行的公式復制到下面的行。 4.在入庫表中輸入數據,設置公式 A3單元格中輸入此公式: =IF(B3="","",1) A4單元格中輸入此公式:=IF(B4="","",A3+1) D3單元格中輸入此公式:=IF(C3="","",

=SUMIF(出庫記錄!C:C,A51,出庫記錄!G:G)是什么意思? 其各自代表的含義是?

從出庫記錄工作表的C列找出與當前工作表A51匹配的行,將這些行對應的出庫記錄工作表中G列的值進行求和。SUMIF表示條件求和,是一個函數;第一個參數出庫記錄!C:C是要進行比較的區(qū)域,第二個參數A51是與第一個參數進行比較的值,第三人參數出庫記錄!G:G是要求和的區(qū)域,如果沒有第三個參數,就對第一個參數進行求和。

產品出庫管理系統(tǒng)C語言編程

系統(tǒng)結構

圖1 RFID倉儲管理系統(tǒng)結構圖

RFID倉儲管理系統(tǒng)由業(yè)務管理軟件、RFID標簽發(fā)行系統(tǒng)和RFID標簽識別采集系統(tǒng)組成,這幾個系統(tǒng)互相聯系,共同完成物品管理的各個流程。后臺數據庫管理系統(tǒng)是整個系統(tǒng)的核心,RFID識別采集是實現管理功能的基礎和手段。

后臺管理軟件由中心數據服務器和管理終端組成,是系統(tǒng)的數據中心。負責與手持機通訊,將手持機上傳的數據轉換并插入到后臺業(yè)務倉儲管理系統(tǒng)的數據庫中,對標簽管理信息、發(fā)行標簽和采集的標簽信息集中進行儲存和處理。

RFID標簽發(fā)行系統(tǒng)由電子標簽專用打印機和標簽制作管理軟件組成,負責完成庫位標簽、物品標簽、箱標簽的信息寫入和標簽表面信息打印工作。

電子標簽專用打印機采用內嵌非接觸讀寫器的工業(yè)級熱轉印打印機,能夠在標簽芯片寫入信息的同時在標簽表面打印預先設定的內容信息。標簽制作管理軟件的核心是標簽制作函數動態(tài)連接庫,它嵌入在后臺系統(tǒng)內,為后臺倉儲管理系統(tǒng)提供操作打印機制作標簽的開發(fā)接口函數?;谠搫討B(tài)庫還提供了一個獨立的標簽制作軟件,可以手工輸入標簽數據,便于臨時制作標簽。

RFID標簽識別采集系統(tǒng)可通過手持機或固定位置終端采集標簽信息,完成標簽數據的存儲,并通過RFID中間件與管理中心進行數據的交換。

系統(tǒng)功能

本系統(tǒng)利用電子標簽對每一個需要管理的對象在其管理周期內進行標記管理。管理人員利用本系統(tǒng)可以實時了解掌控每個被管理對象(物品)的性質、狀態(tài)、位置、歷史變化等信息,并根據這些信息采取相應的管理對策和措施,達到提高使用單位的運營水平和管理質量的目的??梢詮V泛用于軍隊、鐵路、醫(yī)療衛(wèi)生、煙草、電信等行業(yè)企事業(yè)單位的倉儲管理。

根據需求,系統(tǒng)包含了若干模塊:系統(tǒng)管理、標簽制作、入庫管理、出庫管理、盤點管理、調撥管理、退換管理、報表分析、終端數據采集程序。

系統(tǒng)管理:系統(tǒng)設置以及系統(tǒng)用戶信息和權限。

標簽制作:依據入庫單及標簽制作申請單錄入的貨物信息生成每個物品的電子標簽,在標簽表面上打印標簽序號及產品名稱、型號規(guī)格,在芯片內記錄產品的詳細信息。

入庫管理:入庫時,倉庫管理員根據訂貨清單清點檢查每一件貨品,檢查合格后交給倉庫保管員送入庫房。倉庫保管員持手持機掃描貨架庫位標簽和入庫物品上的標簽并輸入物品數量進行入庫登記,數據記入手持機內的入庫操作數據表,然后將物品放置到指定庫位上。

如果需要將物品裝入包裝箱內存放,還需要掃描箱標簽以更新手持機內箱明細表。

全部物品入庫完畢后,將手持機交給管理員,由管理員將入庫數據導入后臺管理數據庫內,完成入庫操作。

經過這一流程后,倉庫中每一種物品的位置、數量、規(guī)格型號等都可以在倉儲管理軟件中一目了然的查找出來,實現了倉儲狀態(tài)的可視化。

出庫管理:出庫時,倉庫管理員根據根據領料申請查詢倉儲狀態(tài),然后做出預出庫單;保管員根據預出庫單將指定庫位的物品取出,使用手持機掃描庫位標簽和物品標簽將出庫信息進行登記,數據記入手持機出庫數據表;全部出庫物品取出后將出庫信息上傳到主機,與預出庫單作比較,并根據實出數量進行登帳。

盤點管理:使用手持數據采集終端進行數據的采集,如物品標簽、擺放貨架、物品數量等。系統(tǒng)可根據事先設定的產品分類,自動產生或人工選擇產生盤點任務表,進行盤點作業(yè),盤點作業(yè)主要掃描產品標簽和相應的庫位信息。數據上傳后,系統(tǒng)會自動列出已盤產品與未盤產品,并根據需求進行盤盈、盤虧等操作。

調撥管理:出現調撥情況時,根據調撥情況選擇不同的調撥流程。

退換貨管理:客戶退貨的時候,通過讀取產品標簽可以查詢的該產品是否是屬于此客戶,銷售時間等信息,并且方便查詢當時的銷售信息,進行有效的監(jiān)督和管理。對于確認需要退貨的產品,手持機在讀取標簽時會將當前時間寫入標簽中的退貨時間字段。

報表分析:對系統(tǒng)的數據進行統(tǒng)計分析,生成相關報表。

 

linux c動態(tài)庫調用,進入庫函數后,打印出庫函數中的一句話,然后中止掉了Absorted

第一步,我先從簡單的調用出發(fā),定義了一個簡單的函數,該函數僅僅實現一個整數加法求和:

LIBEXPORT_API int mySum(int a,int b){ return a+b;}

C# 導入定義:

public class RefComm

{

[DllImport("LibEncrypt.dll",

EntryPoint=" mySum ",

CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]

public static extern int mySum (int a,int b);

}

在C#中調用測試:

int iSum = RefComm.mySum(,);

運行查看結果iSum為5,調用正確。第一步試驗完成,說明在C#中能夠調用自定義的動態(tài)鏈接庫函數。

第二步,我定義了字符串操作的函數(簡單起見,還是采用前面的函數名),返回結果為字符串:

LIBEXPORT_API char *mySum(char *a,char *b){sprintf(b,"%s",a); return a;}

C# 導入定義:

public class RefComm

{

[DllImport("LibEncrypt.dll",

EntryPoint=" mySum ",

CharSet=CharSet.Auto,

CallingConvention=CallingConvention.StdCall)]

public static extern string mySum (string a, string b);

}

在C#中調用測試:

string strDest="";

string strTmp= RefComm.mySum("45", strDest);

運行查看結果 strTmp 為"45",但是strDest為空。我修改動態(tài)鏈接庫實現,返回結果為串b:

LIBEXPORT_API char *mySum(char *a,char *b){sprintf(b,"%s",a) return b;}

修改 C# 導入定義,將串b修改為ref方式:

public class RefComm

{

[DllImport("LibEncrypt.dll",

EntryPoint=" mySum ",

CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]

public static extern string mySum (string a, ref string b);

}

在C#中再調用測試:

string strDest="";

string strTmp= RefComm.mySum("45", ref strDest);

運行查看結果 strTmp 和 strDest 均不對,含不可見字符。再修改 C# 導入定義,將CharSet從Auto修改為Ansi:

public class RefComm

{

[DllImport("LibEncrypt.dll",

EntryPoint=" mySum ",

CharSet=CharSet.Ansi,CallingConvention=CallingConvention.StdCall)]

public static extern string mySum (string a, string b);

}

在C#中再調用測試:

string strDest="";

string strTmp= RefComm. mySum("45", ref strDest);

運行查看結果 strTmp 為"45",但是串 strDest 沒有賦值。第二步實現函數返回串,但是在函數出口參數中沒能進行輸出。再次修改 C# 導入定義,將串b修改為引用(ref):

public class RefComm

{

[DllImport("LibEncrypt.dll",

EntryPoint=" mySum ",

CharSet=CharSet.Ansi,CallingConvention=CallingConvention.StdCall)]

public static extern string mySum (string a, ref string b);

}

運行時調用失敗,不能繼續(xù)執(zhí)行。

第三步,修改動態(tài)鏈接庫實現,將b修改為雙重指針:

LIBEXPORT_API char *mySum(char *a,char **b){sprintf((*b),"%s",a); return *b;}

C#導入定義:

public class RefComm

{

[DllImport("LibEncrypt.dll",

EntryPoint=" mySum ",

CharSet=CharSet.Ansi,CallingConvention=CallingConvention.StdCall)]

public static extern string mySum (string a, ref string b);

}

在C#中調用測試:

string strDest="";

string strTmp= RefComm. mySum("45", ref strDest);

運行查看結果 strTmp 和 strDest 均為"45",調用正確。第三步實現了函數出口參數正確輸出結果。

第四步,修改動態(tài)鏈接庫實現,實現整數參數的輸出:

LIBEXPORT_API int mySum(int a,int b,int *c){ *c=a+b; return *c;}

C#導入的定義:

public class RefComm

{

[DllImport("LibEncrypt.dll",

EntryPoint=" mySum ",

CharSet=CharSet.Ansi,CallingConvention=CallingConvention.StdCall)]

public static extern int mySum (int a, int b,ref int c);

}

在C#中調用測試:

int c=0;

int iSum= RefComm. mySum(,, ref c);

運行查看結果iSum 和c均為5,調用正確。

經過以上幾個步驟的試驗,基本掌握了如何定義動態(tài)庫函數以及如何在 C# 定義導入,有此基礎,很快我實現了變長加密函數在 C# 中的調用,至此目標實現。

三、結論

在 C# 中調用 C++ 編寫的動態(tài)鏈接庫函數,如果需要出口參數輸出,則需要使用指針,對于字符串,則需要使用雙重指針,對于 C# 的導入定義,則需要使用引用(ref)定義。

對于函數返回值,C# 導入定義和 C++ 動態(tài)庫函數聲明定義需要保持一致,否則會出現函數調用失敗。定義導入時,一定注意 CharSet 和 CallingConvention 參數,否則導致調用失敗或結果異常。運行時,動態(tài)鏈接庫放在 C# 程序的目錄下即可,我這里是一個 C# 的動態(tài)鏈接庫,兩個動態(tài)鏈接庫就在同一個目錄下運行。

C語言寫一個倉庫管理系統(tǒng)

#includestdio.h#includestdlib.h#includestring.h#includemalloc.h#define max 32int ifempty=0;//標志,判斷鏈表是無否為空typedef struct dnode /* 定義雙向鏈表結構體 */ {int number; /* 貨物編號 */char name[max]; /* 貨物名稱 */ int counter; /* 貨物數量 */struct dnode *prior, *next;/* 定義兩指針,分別指向其前驅和后繼 */}dlnode; dlnode *create(dlnode *L);dlnode *input(dlnode *L);dlnode *output(dlnode *L);dlnode * outnum(dlnode *L);dlnode * outname(dlnode *L);dlnode *current(dlnode *L);void search(dlnode *L);void print(dlnode *L);void searchnum(dlnode *L);void searchname(dlnode *L);void display(dlnode *L) ;void main(){int x;dlnode *L;if(!(L=(dlnode *)malloc(sizeof(dlnode)))) //分配空間{printf("\n");exit(1);}create(L);///調用函數,創(chuàng)建頭節(jié)點while(1){////////////////////////主菜單///////////////////////////printf(" ============================\n");printf(" 1. 貨物出庫和入庫\n");printf(" 2. 查找貨物表\n"); printf(" 3. 顯示倉庫貨物表\n");printf(" 4. 輸出到文件\n");printf(" 0. 退出\n");printf(" =============================\n");printf(" 選擇0--3:");scanf("%d",x);switch(x){case 2:search(L);break;//調用查找函數case 1:current(L);break;//調用入庫出庫函數case 3:display(L);break;//調用顯示輸出函數case 4:print(L);break;//調用打印函數case 0:printf("\n bye!see you!\n");getchar();getchar();exit(0);//退出程序default:printf("\n Enter erreor!please input 0--4!"); getchar();getchar();}}}dlnode *create(dlnode *L)//創(chuàng)建鏈表頭節(jié)點{printf(" 歡迎使用我的倉庫管理系統(tǒng)");getchar(); ifempty=0;///////初始化頭節(jié)點的值////////L-next=NULL;L-prior=NULL;L-number=L-counter=0;strcpy(L-name," "); return L;}void search(dlnode *L) ///查找的主要菜單{int y;if(ifempty==0){printf("沒有輸入貨物!\n");getchar();getchar();return;}else{while(1){printf("=====================\n");printf("1.按編號查詢\n");printf("2.按貨物名稱查詢\n");printf("0.返回上一層\n");printf("====================\n");printf("選擇0--2:");scanf("%d",y);switch(y){case 1:searchnum(L);break;//調用按編號查找的函數case 2:searchname(L);break;//調用按名稱查找的函數case 0:return;//返回default:printf("enter error!Please input 0--2!\n\n");getchar();getchar();printf("\n\n");}}}}void searchnum(dlnode *L)///按編號查找的函數{int num,flag=0;//flag為是否找到的標志dlnode *head=L;if(ifempty==0){printf("沒有貨物被輸入\n");getchar();getchar();return;}printf("輸入你要查找的貨物編號:\n");scanf("%d",num);while((L=L-next)!=head){if(L-number==num){ flag=1;//flag為1時表示找到printf("找到指定編號貨物 \n"); printf("\n編號:%d\n",L-number);printf("名稱:%s\n",L-name) ;printf("數量:%d\n\n",L-counter); } }if(flag==0)//flag為0時表示沒有找到printf("沒有找到指定編號貨物,請查看是否還有貨物。\n");getchar();getchar();}void searchname(dlnode *L)//按名稱查找的函數{int flag=0;//flag為是否找到的標志char na[32];dlnode *head=L;if(ifempty==0){printf("沒有貨物被輸入\n");getchar();getchar();return;}printf("輸入你要查找的貨物名稱\n");scanf("%s",na);while((L=L-next)!=head){if(strcmp(L-name,na)==0){ flag=1;//flag為1時表示找到printf("找到指定名稱貨物 \n"); printf("\n編號:%d\n",L-number);printf("名稱:%s\n",L-name) ;printf("數量:%d\n\n",L-counter); } }if(flag==0)//flag為0時表示沒有找到printf("沒有找到指定編號貨物,請查看是否還有貨物。\n\n");getchar();getchar();}dlnode *current(dlnode *L)//貨物出庫入庫函數{int y;while(1){printf("========================\n");printf(" 1.貨物入庫\n");printf(" 2.貨物出庫\n");printf(" 0.返回上一層\n");printf("========================\n");printf(" 選擇0--2:");scanf("%d",y);switch(y){case 1:input(L);break;//調用入庫函數case 2:output(L);break;//調用出庫函數case 0:return(L);//返回上一層default:printf("enter error!Please input 0--2!");getchar();getchar();printf("\n\n");}}}dlnode *input(dlnode *L)//定義入庫函數{dlnode *in,*head;head=in=(dlnode *)malloc(sizeof(dlnode));//分配空間head=L;printf("\n請輸入貨物數據:\n");printf("編號:");scanf("%d",in-number);printf("名稱:");scanf("%s",in-name);printf("數量:");scanf("%d",in-counter);if(L-next==NULL) //如果只有頭節(jié)點,{ //把剛輸入的in節(jié)點L-next=in; //跟在頭節(jié)點后面L-prior=in; //in-next=L; //in-prior=L; //ifempty++; //ifempty加1}else{//如果當前L的下一個節(jié)點不是頭節(jié)點while((L=L-next)!=head){//如果輸入的數大于L-number,則插到L的前面if(L-numberin-number){in-next=L;in-prior=L-prior; L-prior-next=in;L-prior=in;ifempty++; //ifempty加1return(head);} }//輸入的編號比其它編號都小,則插到最后個節(jié)點,并首尾相連head-prior-next=in;in-prior=head-prior;head-prior=in;in-next=head;ifempty++; //ifempty加1} return head;}dlnode *output(dlnode *L)//出庫的函數{int y;dlnode *head=L;if(ifempty==0)//檢測是否有貨物輸入{printf("沒有貨物輸入系統(tǒng)\n");getchar();getchar();return(head);} while(1){printf("=============\n");printf("1.按編號出庫\n");printf("2.按名稱出庫\n");printf("0.返回上一層\n");printf("==============\n");printf("選擇0--2:");scanf("%d",y);switch(y){case 1:outnum(L);break;//調用按編號出庫函數case 2:outname(L);break;//調用按名稱出庫函數case 0:return(L);default:printf("enter error!Please input 0--2!");getchar();getchar();printf("\n\n");}}} dlnode *outnum(dlnode *L)//按編號出庫函數{ int num;dlnode *head=L;printf("請輸入出庫貨物的編號:");scanf("%d",num);while((L=L-next)!=head){//如果找到就刪除節(jié)點if(L-number==num){L-prior-next=L-next;L-next-prior=L-prior;ifempty--; //ifempty減1 printf("編號為%d的貨物成功出庫",num); getchar();getchar();return head; } }printf("沒有此編號的貨物,請查看是否還有貨物。\n\n");getchar();getchar();return (head);}dlnode *outname(dlnode *L)//按名稱出庫函數{char na[32];dlnode *head=L;printf("請輸入出庫貨物的名稱:");scanf("%s",na);while((L=L-next)!=head){//如果找到就刪除節(jié)點if(strcmp(L-name,na)==0){L-prior-next=L-next;L-next-prior=L-prior;ifempty--; //ifempty減1 printf("名稱為%s的貨物成功出庫",na);getchar();getchar();return (head);}}printf("沒有此名稱的貨物,請查看是否還有貨物。\n\n");getchar();getchar();return(head);} void display(dlnode *L)//顯示貨物清單{dlnode *head=L;if(ifempty==0){printf("沒有貨物可顯示\n");getchar();getchar();return;}L=L-next;do{ printf("\n編號:%d\n",L-number);printf("名稱:%s\n",L-name) ;printf("數量:%d\n\n",L-counter);}while((L=L-next)!=head);getchar();getchar(); }void print(dlnode *L){dlnode *head=L;L=L-next;char filename[max];FILE *out;if(ifempty==0){printf("沒有貨物可輸出\n");getchar();getchar();return;}printf("請輸入文件名稱:");scanf("%s",filename);if((out=fopen(filename,"w"))==NULL){printf("打開文件失敗!\n");getchar();getchar();return;}do{ fprintf(out,"編號:%d\n名稱:%s\n數量:%d\n\n",L-number,L-name,L-counter);}while((L=L-next)!=head);printf("輸出成功\n");getchar();getchar();fclose(out);}


網站名稱:出庫函數c語言 C語言中庫函數
文章分享:http://weahome.cn/article/hgocgi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部