應(yīng)用軟件程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第1頁
應(yīng)用軟件程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第2頁
應(yīng)用軟件程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第3頁
應(yīng)用軟件程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第4頁
應(yīng)用軟件程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩74頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

福建工程學(xué)院計(jì)算機(jī)與信息科學(xué)系實(shí)驗(yàn)報(bào)告2023–2023學(xué)年第2學(xué)期任課老師:課程名稱應(yīng)用軟件開發(fā)班級(jí)網(wǎng)工座號(hào)姓名實(shí)驗(yàn)題目人員檔案的管理、物料檔案管理、簡(jiǎn)單物料進(jìn)倉(cāng)/出倉(cāng)信息管理、多物料進(jìn)出倉(cāng)信息管理、用戶登錄與權(quán)限設(shè)計(jì)、統(tǒng)計(jì)程序設(shè)計(jì)與報(bào)表打印實(shí)驗(yàn)時(shí)間2023-02至2023-06實(shí)驗(yàn)?zāi)康?、要求?shí)驗(yàn)課題一、人員檔案的管理、物料檔案管理設(shè)計(jì)實(shí)現(xiàn)對(duì)企業(yè)人員根本情況的檔案的輸入、刪除與修改,企業(yè)人員根本情況主要包括:人員代碼、姓名、性別、出生日期、身份證號(hào)、籍貫、家庭住址、聯(lián)系、其它情況等。程序須包括主界面程序,程序名用“班級(jí)名+座號(hào)+main〞,主界面可以通過菜單調(diào)用到其它所有子程序。人員檔案的增加、修改、刪除的程序,其中人員檔案表在數(shù)據(jù)庫中必須以“班級(jí)+座號(hào)+〔表示人員的中英文信息〕〞來命名,人員檔案的信息管理程序也必須以“班級(jí)+座號(hào)+〔表示程序名的中英文信息〕〞來命名。其中人員代碼不能為空,性別必須用“男〞、“女〞選擇方式,出生日期必須用日期控件來控制。修改、刪除程序在執(zhí)行修改刪除操作前,都必須進(jìn)行記錄定位操作,所以必須有相應(yīng)的查詢程序,可以借用查詢程序來完成記錄定位。人員檔案的增加、修改、刪除程序也可以用三個(gè)程序名,分別編程。人員檔案查詢程序,程序名以“班級(jí)+座號(hào)+〔表示程序名的中英文信息〕〞來命名,可以在查詢框中輸入人員姓名中的任何一個(gè)單字,查詢出含該字的所有人員。物料檔案包括物料代碼、物料名稱、規(guī)格型號(hào)、計(jì)量單位、庫存數(shù)量、備注等字段。物料檔案的增加、修改、刪除程序,程序名以“班級(jí)+座號(hào)+〔表示程序名的中英文信息〕〞來命名,具體內(nèi)容參考人員檔案管理程序。物料表在數(shù)據(jù)庫中以“班級(jí)+座號(hào)+〔表示程序名的中英文信息〕〞來命名表,客戶端輸入時(shí)要求物料代碼不為空,計(jì)量單位可以選擇“件、套、公斤、噸、升、米、毫米、個(gè)〞等,計(jì)量單位并可以輸入其它單位名,庫存數(shù)量默認(rèn)為0。物料查詢程序可以在通過輸入框的文字進(jìn)行模糊查詢〔物料代碼、名稱、規(guī)格中是否含有輸入框的文字〕,程序名用“班級(jí)+座號(hào)+〔表示程序名的中英文信息〕〞來命名。實(shí)驗(yàn)課題二、簡(jiǎn)單物料進(jìn)倉(cāng)/出倉(cāng)信息管理企業(yè)物料進(jìn)出倉(cāng)的信息管理,物料進(jìn)出倉(cāng)的信息主要包括進(jìn)出倉(cāng)單號(hào)、進(jìn)出倉(cāng)日期、操作人員代碼、備注、物料代碼、進(jìn)倉(cāng)數(shù)量、出倉(cāng)數(shù)量等企業(yè)倉(cāng)庫進(jìn)出倉(cāng)信息表以“班級(jí)+座號(hào)+〔表示程序名的中英文信息〕〞來命名,可以用一個(gè)表,也可以用二個(gè)表〔一對(duì)多關(guān)系〕,具體表設(shè)計(jì)的思路須在報(bào)告中描述。進(jìn)倉(cāng)程序與出倉(cāng)程序可以合并,也可以分開做,名稱以“班級(jí)+座號(hào)+〔表示程序名的中英文信息〕〞來命名。其中操作人員必須用下拉框來選擇;單號(hào)要自己編規(guī)那么自動(dòng)生成,單號(hào)產(chǎn)生規(guī)那么在報(bào)告中說明;進(jìn)出倉(cāng)日期用日期控件;物料代碼必須下拉框做選擇;當(dāng)物料出倉(cāng)時(shí)必須判斷出倉(cāng)數(shù)量時(shí)候超過物料的庫存數(shù)量,物料的庫存數(shù)量在物料表中可以獲得該物料的庫存數(shù)量。進(jìn)行進(jìn)倉(cāng)或出倉(cāng)操作時(shí)必須通過調(diào)用存儲(chǔ)過程來實(shí)現(xiàn),存儲(chǔ)過程將操作結(jié)果返回調(diào)用者,顯示成功或失敗的信息。進(jìn)倉(cāng)、出倉(cāng)的存儲(chǔ)過程可以合并或分開做,存儲(chǔ)過程名稱以“班級(jí)+座號(hào)+〔表示程序名的中英文信息〕〞來命名,存儲(chǔ)過程要判斷物料是否存在,操作后物料庫存數(shù)量是否不為負(fù)數(shù);如果不滿足條件顯示,失敗提示;如果滿足條件,增加進(jìn)出倉(cāng)表記錄一條,并根據(jù)進(jìn)出倉(cāng)物料的數(shù)量對(duì)物料表中庫存數(shù)量進(jìn)行修改,提交數(shù)據(jù)庫操作,否那么回滾。進(jìn)出倉(cāng)單查詢程序,以“班級(jí)+座號(hào)+〔表示程序名的中英文信息〕〞來命名,可以用進(jìn)出倉(cāng)日期起止條件,物料代碼、操作人員、備注〔用子串查詢〕來完成。實(shí)驗(yàn)課題三、多物料進(jìn)出倉(cāng)信息管理一般企業(yè)進(jìn)行物料進(jìn)出倉(cāng)時(shí),多在一個(gè)進(jìn)出倉(cāng)單號(hào)上同時(shí)對(duì)多種物料做同進(jìn)或同出操作,通過程序?qū)崿F(xiàn)多個(gè)物料在一個(gè)界面一個(gè)單號(hào)上同時(shí)實(shí)現(xiàn)進(jìn)倉(cāng)或出倉(cāng)操作,如果不成功,必須全部回滾。多物料進(jìn)倉(cāng)出倉(cāng),可以在一個(gè)程序中完成,也可以分開編程,程序名以“班級(jí)+座號(hào)+〔表示程序名的中英文信息〕〞來命名,同一單號(hào)中進(jìn)出倉(cāng)單號(hào)、進(jìn)出倉(cāng)日期、操作人員必須完全相同,同一單號(hào)中不能進(jìn)倉(cāng)與出倉(cāng)同時(shí)存在,通過調(diào)用存儲(chǔ)過程完成進(jìn)出倉(cāng)操作。多物料進(jìn)出倉(cāng)存儲(chǔ)過程,過程名以“班級(jí)+座號(hào)+〔表示程序名的中英文信息〕〞來命名,多物料進(jìn)出倉(cāng)單增加到表中,并修改多個(gè)物料的庫存數(shù)量,失敗就顯示提示內(nèi)容。實(shí)驗(yàn)課題四、用戶登錄與權(quán)限設(shè)計(jì)用戶在這里就指操作人員,已經(jīng)在人員檔案中進(jìn)行管理,通過設(shè)計(jì)用戶登錄和用戶權(quán)限的管理,實(shí)現(xiàn)用戶按權(quán)限訪問資源,管理員按要求授予用戶權(quán)限,登錄程序平安穩(wěn)定,設(shè)計(jì)用戶菜單及程序調(diào)用。人員表中需要新增字段口令、用戶權(quán)限。系統(tǒng)中每個(gè)操作人員都可以作為用戶,當(dāng)一個(gè)用戶權(quán)限修改時(shí),不會(huì)影響其他用戶;可以對(duì)每個(gè)用戶單獨(dú)授予某個(gè)程序的執(zhí)行權(quán),也可以收回其執(zhí)行權(quán),而不影響其他用戶的權(quán)限;用戶登錄程序,名稱用以“班級(jí)+座號(hào)+〔表示程序名的中英文信息〕〞來命名,輸入用戶名和口令,判斷正確后,按用戶的權(quán)限,顯示有權(quán)的菜單項(xiàng),無權(quán)菜單項(xiàng)必須不可見或不可操作。用戶授權(quán)程序,名稱用以“班級(jí)+座號(hào)+〔表示程序名的中英文信息〕〞來命名。有授權(quán)權(quán)限的用戶,可以指定某個(gè)用戶獲取某個(gè)程序執(zhí)行權(quán),或被禁止某個(gè)程序的執(zhí)行權(quán)。實(shí)驗(yàn)課題五、統(tǒng)計(jì)程序設(shè)計(jì)與報(bào)表打印按物料統(tǒng)計(jì)進(jìn)出倉(cāng)流量,計(jì)算分析流動(dòng)量最小的物料。按月份打印進(jìn)出倉(cāng)單表,打印進(jìn)出倉(cāng)單,按物料打印倉(cāng)庫賬本。物料統(tǒng)計(jì)程序,統(tǒng)計(jì)各物料在指定時(shí)間內(nèi)的進(jìn)出倉(cāng)數(shù)量總數(shù),用圖形顯示,程序名以“班級(jí)+座號(hào)+〔表示程序名的中英文信息〕〞來命名。打印進(jìn)出倉(cāng)單程序,給定月份,將該月進(jìn)出倉(cāng)單全部按單號(hào)順序打印出來,程序名以“班級(jí)+座號(hào)+〔表示程序名的中英文信息〕〞來命名。打印倉(cāng)庫賬本程序,給定年份和物料,打印物料代碼、名稱、規(guī)格、計(jì)量單位、各日期的進(jìn)倉(cāng)、出倉(cāng)和庫存量;程序名以“班級(jí)+座號(hào)+〔表示程序名的中英文信息〕〞來命名。實(shí)驗(yàn)設(shè)計(jì)內(nèi)容MSSQLServer數(shù)據(jù)庫、表及存儲(chǔ)過程VS2023界面效果:登錄界面:主菜單界面:人員檔案查詢界面:添加界面:修改界面:點(diǎn)擊是按鈕后刪除界面:點(diǎn)擊是按鈕后:物料檔案查詢界面:添加界面:修改界面:點(diǎn)擊是按鈕后:刪除界面:點(diǎn)擊是按鈕后:庫存量查詢:簡(jiǎn)單物料進(jìn)出倉(cāng)進(jìn)倉(cāng):出倉(cāng):進(jìn)倉(cāng)記錄查詢:出倉(cāng)記錄查詢:多物料進(jìn)出倉(cāng):出倉(cāng):進(jìn)倉(cāng)記錄查詢:出倉(cāng)記錄查詢:用戶權(quán)限管理:查詢權(quán)限收回權(quán)限:授予權(quán)限:打印報(bào)表:物料統(tǒng)計(jì)報(bào)表打印進(jìn)出倉(cāng)單打印倉(cāng)庫賬本打印調(diào)試過程記錄出現(xiàn)的主要問題及如何解決一、登錄LoginForm判斷用戶是否存在〔與人員表有關(guān)〕思路:將輸入的用戶名作與密碼為條件在數(shù)據(jù)庫用戶表中查找是否存在匹配項(xiàng)【2】與Main窗體傳參問題〔Main顯示相應(yīng)用戶的權(quán)限結(jié)果;登錄用戶在主界面顯示歡送信息〕思路:在Login中定義一個(gè)屬性并在呼出Main時(shí)將其傳到Main中〔構(gòu)造方法〕,在Main中訪問數(shù)據(jù)庫得到該用戶權(quán)限字段,并將其顯示在Main中〔有權(quán)限顯示高亮即可用,無權(quán)限顯示灰色即不可用〕二、主菜單MainForm【1】權(quán)限的顯示〔與權(quán)限管理有關(guān)〕思路:取出權(quán)限字段并將相應(yīng)的子菜單狀態(tài)處理【2】子菜單都是灰色,父菜單不顯示高亮思路:判斷所有的子菜單是否可用,至少有一個(gè)可用父菜單高亮顯示,都不可用那么Enable屬性為false。三、人員管理StaffManagementForm【1】增刪改查操作用戶在執(zhí)行其中一個(gè)可能會(huì)使用另一個(gè),為防止重返主菜單再呼出相應(yīng)的窗體的麻煩和多窗體的冗余,添加tabControl控件實(shí)現(xiàn)在同一Form之間的切換。異常處理〔1〕判斷空輸入〔2〕查詢不到顯示異常提示信息〔3〕添加已有的人員代碼〔primarykey〕〔4〕修改刪除操作定位查找失敗思路:增加if判斷語句處理捕獲的異常并顯示相應(yīng)提示信息四、物料管理GoodsManagement與人員管理類似五、物料庫存量查詢GoodsCountSearch〔與物料表有關(guān)〕【1】解決實(shí)現(xiàn)單物料查詢與多物料庫存量的查詢思路:添加dataGridView控件并將物料代碼,物料名稱及庫存量顯示出來,其余不相干信息不顯示六、單物料進(jìn)出倉(cāng)SimpleInout【1】單號(hào)的生成生成規(guī)那么:進(jìn)出倉(cāng)日期+序號(hào)〔某天第幾單,遞增〕+進(jìn)出倉(cāng)狀態(tài)標(biāo)記+操作人員代碼【2】進(jìn)出倉(cāng)的切換思路:為防止類似操作帶來窗體及控件的冗余,使用radioButton實(shí)現(xiàn)進(jìn)出倉(cāng)的切換操作人員代碼與物料代碼與數(shù)據(jù)庫的同步綁定〔與人員表和物料表有關(guān)〕從數(shù)據(jù)庫emp、goods表中的相應(yīng)字段內(nèi)容填充到comboBox控件items屬性七、多物料進(jìn)出倉(cāng)MultiInout【1】同一單號(hào)的日期及人員代碼相同實(shí)現(xiàn)思路:在確定進(jìn)出倉(cāng)并將第一條記錄添加完成后將日期和人員的輸入顯示隱藏,防止用戶更改以確保相同【2】操作失敗的信息提示〔1〕進(jìn)出倉(cāng)時(shí)物料不存在〔2〕出倉(cāng)時(shí)庫存量缺乏思路:增加if判斷【3】單條數(shù)據(jù)的存放思路:在VS前端創(chuàng)立DataTable對(duì)象作為臨時(shí)表存放,在點(diǎn)擊確定按鈕后將多條記錄作為事物提交到數(shù)據(jù)庫。八、權(quán)限管理AuthorizeManagement[與人員表有關(guān)〔默認(rèn)密碼:000000默認(rèn)權(quán)限:所有查詢,權(quán)限管理及打印報(bào)表〕]【1】選或反選、子項(xiàng)展開與隱藏實(shí)現(xiàn)功能如下:1.父節(jié)點(diǎn)勾選,那么子節(jié)點(diǎn)全部勾選;2.父節(jié)點(diǎn)不勾選,那么子節(jié)點(diǎn)全部不勾選;3.子節(jié)點(diǎn)局部勾選,那么父節(jié)點(diǎn)不勾選;4.子節(jié)點(diǎn)全部勾選,那么父節(jié)點(diǎn)被勾選。思路:以treeView控件代替checkBox控件〔樹狀遍歷樹節(jié)點(diǎn),子節(jié)點(diǎn)與父節(jié)點(diǎn)的關(guān)系〕【2】查詢權(quán)限思路:取出該用戶的權(quán)限字段并復(fù)原對(duì)應(yīng)結(jié)果【3】授予權(quán)限思路:以不同字母標(biāo)識(shí)各個(gè)節(jié)點(diǎn),選中那么添加相應(yīng)字母,更新emp表的permission〔權(quán)限〕字段【4】收回權(quán)限思路:將欲收回權(quán)限選中并作記錄,然后將其逐一截取一個(gè)(Substring方法),在數(shù)據(jù)庫取回的權(quán)限字段的字符串中查找〔IndexOf方法〕,假設(shè)找到將其移除〔Remove方法〕,假設(shè)找不到提示該用戶無此權(quán)限,無法收回。最后將其更新到數(shù)據(jù)庫九、報(bào)表打印【1】鏈接數(shù)據(jù)庫時(shí)正在被使用思路:連接時(shí)不選SQLServer數(shù)據(jù)庫文件而選SQLServer數(shù)據(jù)庫【2】將進(jìn)出倉(cāng)總數(shù)合并在一個(gè)條形統(tǒng)計(jì)圖中只有進(jìn)出倉(cāng)同時(shí)存在的物料才會(huì)顯示思路:修改sql語句使得在某一時(shí)間段只有進(jìn)倉(cāng)或者出倉(cāng)的物料也顯示實(shí)驗(yàn)結(jié)果記錄以及與預(yù)期結(jié)果比擬以及分析一、實(shí)驗(yàn)到達(dá)了預(yù)期的效果。二、比擬與分析:1、日期的內(nèi)容用Substring將其組合與Value屬性使用Value屬性使得程序更加簡(jiǎn)潔,可讀性更好2、單號(hào)的遞增查找當(dāng)天最大并遞增訪問數(shù)據(jù)庫查找單號(hào)的最大(max關(guān)鍵字),截取〔Substring方法〕得到count〔序號(hào)〕的局部并在其根底上加一,防止單號(hào)的重復(fù)導(dǎo)致主鍵的沖突3、物料進(jìn)出倉(cāng)進(jìn)出倉(cāng)記錄在同一張表,以狀態(tài)〔進(jìn)倉(cāng)或出倉(cāng)〕字段區(qū)別,存儲(chǔ)過程也是同一個(gè)。是程序更加精簡(jiǎn),不過可能會(huì)降低程序的可讀性,帶來維護(hù)的麻煩??偨Y(jié)以及心得體會(huì)起初每個(gè)實(shí)驗(yàn)我都當(dāng)成小實(shí)驗(yàn)來做,也根本實(shí)現(xiàn)了題目所要求的功能,但是沒有集成而導(dǎo)致沒有關(guān)聯(lián)。后期把所有的實(shí)驗(yàn)整合后并修復(fù)了局部BUG,感覺比擬像在做一個(gè)小工程。實(shí)驗(yàn)一剛開始對(duì)于增刪改查使用四個(gè)Form實(shí)現(xiàn),后來覺得這些操作可以放在一起,改用一個(gè)Form和tabControl來實(shí)現(xiàn);在做實(shí)驗(yàn)三多物料進(jìn)出倉(cāng)時(shí)用dataGridView與數(shù)據(jù)庫表的數(shù)據(jù)綁定,但是沒有使用存儲(chǔ)過程,后來改用臨時(shí)表的思路,實(shí)驗(yàn)四權(quán)限管理起初只是簡(jiǎn)單地使用checkBox實(shí)現(xiàn),后來覺得不能全選反選,擴(kuò)展隱藏改用treeView,但是treeView的點(diǎn)擊事件實(shí)現(xiàn)全選反選功能時(shí)碰了壁,最后在網(wǎng)上查找相關(guān)資料才解決,但是還沒有解決子節(jié)點(diǎn)局部選中父節(jié)點(diǎn)為灰色的功能。實(shí)驗(yàn)五做報(bào)表時(shí)按照老師給的教學(xué)視頻連接數(shù)據(jù)庫出現(xiàn)正在使用報(bào)錯(cuò)提示,通過自己的摸索不使用老師給出的連接SQlServer數(shù)據(jù)庫文件的方法而改用連接SQLServer數(shù)據(jù)庫最終成功連接到數(shù)據(jù)庫;在做第一題條形統(tǒng)計(jì)圖時(shí)發(fā)現(xiàn)無法顯示某段時(shí)期只有進(jìn)出或出倉(cāng)的物料統(tǒng)計(jì)信息,修改sql查詢語句終于實(shí)現(xiàn)了預(yù)期的結(jié)果??傊?,這次的應(yīng)用軟件設(shè)計(jì)不但自學(xué)了C#語言,還自行開發(fā)了一個(gè)小工程,感覺挺有成就感的。當(dāng)然,還有很多的設(shè)計(jì)思想和控件的使用沒有嘗試過,希望再接再厲!指導(dǎo)老師評(píng)閱意見指導(dǎo)老師:年月日填寫內(nèi)容時(shí),可把表格擴(kuò)大。實(shí)驗(yàn)的源程序代碼〔要有注釋〕附在表后。附源代碼:MSSQLServercreatedatabasesamon(name=samdata,filename='e:\database\sam.mdf',size=50MB,MAXSIZE=200MB,filegrowth=15%)logon(name='samlog',filename='e:\database\sam.ldf',size=20mb,filegrowth=1mb)usesam;dropdatabasesam;--實(shí)驗(yàn)一--人員表createtablewg212_emp(enovarchar(15)primarykey,enamevarchar(15),sexvarchar(6)check(sexin('男','女')),birthdaydatetime,idvarchar(20),nationvarchar(20),addrvarchar(30),telint,othersvarchar(30),)insertintowg212_emp(eno,ename,sex,birthday,id,nation,addr,tel,others)values(01,'張飛','男','1995-06-01',001,'河南','beijing',111,'nothing');insertintowg212_emp(eno,ename,sex,birthday,id,nation,addr,tel,others)values(02,'黃月英','女','1993-05-01',002,'江西','fuzhou',222,null);insertintowg212_emp(eno,ename,sex,birthday,id,nation,addr,tel,others)values(03,'賈寶玉','男','1992-02-01',003,'福建','shanghai',333,'nothing');/*truncatetablewg212_emp;droptablewg212_emp;deletefromwg212_emp;select*fromwg212_emp;*/--物料表createtablewg212_goods(goodsNovarchar(15)primarykey,goodsNamevarchar(15),specsvarchar(15),unitsvarchar(10),saveCountfloatdefault0,remarksvarchar(30),)insertintowg212_goodsvalues(01,'大米','包','斤',100,null);insertintowg212_goodsvalues(02,'小麥','袋','噸',100,null);insertintowg212_goodsvalues(03,'加多寶','箱','噸',100,null);insertintowg212_goods(goodsNo)values(04);select*fromwg212_goods;droptablewg212_goods;truncatetablewg212_goods;--實(shí)驗(yàn)二--簡(jiǎn)單物料進(jìn)出倉(cāng)記錄表createtablewg212_simple(orderIDvarchar(50)primarykey,inoutDatedatetime,enovarchar(20),remarksvarchar(20),goodsNovarchar(15),inoutCountfloat,operateStatevarchar(10))truncatetablewg212_simple;droptablewg212_simple;--存儲(chǔ)過程if(exists(select*fromsys.objectswherename='wg212_simplePro'))dropprocwg212_simpleProgocreateprocwg212_simplePro(@orderIDvarchar(50),@inoutDatedatetime,@enovarchar(15),@remarksvarchar(20),@goodsNovarchar(15),@inoutCountfloat,@operateStatevarchar(10))asbeginbegintransactionif(notexists(select*fromwg212_goodswheregoodsNo=@goodsNo))beginraiserror('不存在該物料',16,1)endelsebeginif(@operateState='進(jìn)倉(cāng)')begininsertintowg212_simplevalues(@orderID,@inoutDate,@eno,@remarks,@goodsNo,@inoutCount,@operateState)updatewg212_goodssetsaveCount+=@inoutCountwheregoodsNo=@goodsNoendif(@operateState='出倉(cāng)')if((selectsaveCountfromwg212_goodswheregoodsNo=@goodsNo)>=@inoutCount)beginupdatewg212_goodssetsaveCount-=@inoutCountwheregoodsNo=@goodsNoinsertintowg212_simplevalues(@orderID,@inoutDate,@eno,@remarks,@goodsNo,@inoutCount,@operateState)endelsebeginraiserror('庫存量缺乏',16,1)endendcommitendgoexecwg212_simplePro's1','2023-05-12','01','ok','1',100,'進(jìn)倉(cāng)'select*fromwg212_goods;select*fromwg212_simple;truncatetablewg212_simple;selectmax(orderID)fromwg212_simplewhereorderIDlike'20230614%';deletefromwg212_simplewhereinoutDatebetween'2023-06-13'and'2023-06-15'orderID=--實(shí)驗(yàn)三createtablewg212_multiSame(orderIDvarchar(50)primarykey,inoutDatedatetime,enovarchar(15))createtablewg212_multi(orderIDvarchar(50),remarksvarchar(20),goodsNovarchar(15)notnull,inoutCountfloat,operateStatevarchar(10),--foreignkey(orderID)referenceswg212_multiSame(orderID),)select*fromwg212_multi;select*fromwg212_multiSame;selectwg212_multiSame.orderID,inoutDate,eno,remarks,goodsNo,inoutCount,operateStatefromwg212_multiSamerightouterjoinwg212_multionwg212_multi.orderID=wg212_multiSame.orderIDwheregoodsNo='2';truncatetablewg212_multiSame;truncatetablewg212_multi;droptablewg212_multi;droptablewg212_multiSame;--存儲(chǔ)過程if(exists(select*fromsys.objectswherename='wg212_multiPro'))dropprocwg212_multiProgocreateprocwg212_multiPro(@orderIDvarchar(50),@inoutDatedatetime,@enovarchar(15),@remarksvarchar(20),@goodsNovarchar(15),@inoutCountfloat,@operateStatevarchar(10))asbeginbegintransactionif(exists(select*fromwg212_goodswheregoodsNo=@goodsNo))beginif(@operateState='進(jìn)倉(cāng)')beginupdatewg212_goodssetsaveCount+=@inoutCountwheregoodsNo=@goodsNoinsertintowg212_multivalues(@orderID,@remarks,@goodsNo,@inoutCount,@operateState)if(@orderIDnotin(selectorderIDfromwg212_multiSame))begininsertintowg212_multiSamevalues(@orderID,@inoutDate,@eno)endendif(@operateState='出倉(cāng)')beginif(@inoutCount>(selectsaveCountfromwg212_goodswheregoodsNo=@goodsNo))beginraiserror('庫存量缺乏',16,1)endif(@inoutCount<=(selectsaveCountfromwg212_goodswheregoodsNo=@goodsNo))beginupdatewg212_goodssetsaveCount-=@inoutCountwheregoodsNo=@goodsNoinsertintowg212_multivalues(@orderID,@remarks,@goodsNo,@inoutCount,@operateState)if(@orderIDnotin(selectorderIDfromwg212_multiSame))begininsertintowg212_multiSamevalues(@orderID,@inoutDate,@eno)endendendendif(notexists(select*fromwg212_goodswheregoodsNo=@goodsNo))beginRAISERROR('庫中不存在該物料',16,1)endcommitend;goexecwg212_multiPro'shw1','2023-02-12','02','hh','2',100,'出倉(cāng)'truncatetablewg212_multi;truncatetablewg212_multiSame;select*fromwg212_goods;select*fromwg212_multi;select*fromwg212_multiSame;--實(shí)驗(yàn)四altertablewg212_empaddpwdvarchar(20)default'000000';altertablewg212_empaddpermissionvarchar(52)default'aeijknoptuv';insertintowg212_emp(eno,ename,sex,birthday,id,nation,addr,tel,others,pwd,permission)values(01,'張三','男','1995-06-01',001,'河南','beijing',111,'nothing','000','s');insertintowg212_empvalues(02,'李四','女','1993-05-01',002,'江西','fuzhou',222,'ok','123','aeijknopstuv');updatewg212_empsetpermission='abefhjst'whereeno=01;updatewg212_empsetpermission='adegsu'whereeno=02;select*fromwg212_emp;select*fromwg212_goods;truncatetablewg212_emp;droptablewg212_emp;--實(shí)驗(yàn)五select*fromwg212_multi;select*fromwg212_multiSame;select*fromwg212_simple;updatewg212_simplesetinoutDate='2023-2-25'whereorderID='黃月英'deletefromwg212_simplewheregoodsNo='5';--1bugselecta.goodsNo,inSum,outSumfrom(selectgoodsNo,sum(inoutCount)asinSumfromwg212_simplewhereoperateState='進(jìn)倉(cāng)'andinoutDatebetween'2023-06-01'and'2023-06-9'groupbygoodsNo)asafulljoin(selectgoodsNo,sum(inoutCount)asoutSumfromwg212_simplewhereoperateState='出倉(cāng)'andinoutDatebetween'2023-06-01'and'2023-06-9'groupbygoodsNo)asbona.goodsNo=b.goodsNo/*selectgoodsNo,sum(inoutCount)asinSumfromwg212_simplewhereoperateState='進(jìn)倉(cāng)'andinoutDatebetween'2023-06-06'and'2023-06-9'groupbygoodsNo;selectgoodsNo,sum(inoutCount)asinSumfromwg212_simplewhereoperateState='出倉(cāng)'andinoutDatebetween'2023-06-06'and'2023-06-9'groupbygoodsNo;selectdistinct(goodsNo),sum(inoutCount)asslfromwg212_simplewhereinoutDatebetween'2023-6-1'and'2023-7-1'groupbyoperateState,goodsNo*/--2select*fromwg212_simplewhereinoutDatebetween'2023-6-1'and'2023-7-1'orderbyorderIDdesc;--3/*select*fromwg212_goods;selecta.goodsNo,goodsName,specs,units,saveCount,orderID,inoutDate,inoutCount,operateStatefromwg212_goodsasafulljoinwg212_simpleasbona.goodsNo=b.goodsNoorderbya.goodsNo;*/selecta.goodsNo,goodsName,specs,units,saveCount,orderID,inoutDate,inoutCount,operateStatefromwg212_goodsasafulljoinwg212_simpleasbona.goodsNo=b.goodsNowhereinoutDatebetween'2023-1-1'and'2023-1-1'anda.goodsNo=2orderbya.goodsNo;selecta.goodsNo,goodsName,specs,units,saveCount,orderID,inoutDate,inoutCount,operateStatefromwg212_goodsasa,wg212_simpleasbwherea.goodsNo=b.goodsNoandinoutDatebetween'2023-1-1'and'2023-1-1'orderbya.goodsNo;VS2023usingSystem;;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Data.SqlClient;namespaceDBManagment{classSqlOperation{publicSqlConnectionconn() //定義連接方法,返回的是連接對(duì)象{//數(shù)據(jù)庫連字符串//stringcon=@"datasource=.\sqlexpress;initialcatalog=sam;integratedsecurity=sspi;";stringcon=@"DataSource=.\MYSQL;InitialCatalog=sam;IntegratedSecurity=True";SqlConnectionconn=newSqlConnection(con); //創(chuàng)立連接對(duì)象returnconn; //返回連接對(duì)象}publicboolOPSQL(stringSQLcmd) //定義返回值類型為bool的OPSQL類//SQL數(shù)據(jù)庫單條記錄的增刪改操作{SqlConnectioncon=conn(); //SQL數(shù)據(jù)庫單條記錄的增刪改操作con.Open(); //翻開連接SqlCommandcmd=newSqlCommand(SQLcmd,con); //獲得傳來的SQL命令boolsucc=true; //操作是否成功的標(biāo)志try{cmd.ExecuteNonQuery(); //執(zhí)行傳入的命令}catch(Exceptione) //拋出異常{MessageBox.Show("操作有誤!"+e); //操作失敗信息succ=false; //把標(biāo)志設(shè)為失敗操作}returnsucc; //返回操作結(jié)果}publicstringFiledValue(stringsqlcmd) //查詢單條記錄{stringcount="";SqlConnectioncon=conn(); //創(chuàng)立連接con.Open(); //翻開連接SqlCommandcmd=newSqlCommand(sqlcmd,con);try{SqlDataReaderrs=cmd.ExecuteReader(); //執(zhí)行命令if(rs.Read()) //讀取數(shù)據(jù){count=rs[0].ToString(); //讀取查詢結(jié)果的第一列的值,一般為id列}}catch(Exceptione) //拋出異常{MessageBox.Show("操作有誤!"+e); //操作失敗提示}returncount; //返回?cái)?shù)據(jù)集單條記錄第一列的值}publicDataTableGetDataTable(Stringstr,StringTableName) //自定義GetDataTable返回一個(gè)Table的數(shù)據(jù)集{DataSetds=newDataSet(); //定義數(shù)據(jù)集dsSqlDataAdapterda=newSqlDataAdapter(str,conn()); //定義SqlDataAdapter對(duì)象,try{da.Fill(ds,TableName); //填充dsreturnds.Tables[0]; //返回表集}catch{returnnewDataTable(); //返回一個(gè)空的DataTable對(duì)象}}}}usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingDBManagment;{publicpartialclasswg212_Login:Form{privatestringname;publicwg212_Login(){InitializeComponent();}privatevoidbutton1_Click(objectsender,EventArgse){Application.Exit();}privatevoidbutton2_Click(objectsender,EventArgse){textBox1.Clear();textBox2.Clear();}privatevoidbutton3_Click(objectsender,EventArgse){SqlOperationso=newSqlOperation();stringsql="select*fromwg212_empwhereename='";sql+=textBox1.Text+"'andpwd='"+textBox2.Text+"'";if(textBox1.Text==string.Empty||textBox2.Text==string.Empty){MessageBox.Show("請(qǐng)輸入用戶名和密碼");textBox1.Clear();textBox2.Clear();textBox1.Focus();}elseif(so.FiledValue(sql)!=""){ext;wg212_Mainf=newwg212_Main(name);//=textBox1.Text;f.Show();this.Hide();}else{MessageBox.Show("用戶或密碼錯(cuò)誤,請(qǐng)重輸");textBox1.Clear();textBox2.Clear();textBox1.Focus();}}}}usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingDBManagment;{publicpartialclasswg212_Main:Form{privatestringname;inti;intsimpleInoutSearch1=0,simpleInoutSearch2=0;intsimpleInout1=0,simpleInout2=0;intmultiInoutSearch1=0,multiInoutSearch2=0;intmultiInout1=0,multiInout2=0;publicwg212_Main(stringname){InitializeComponent();=name;}privatevoid查詢ToolStripMenuItem_Click(objectsender,EventArgse){i=1;wg212_StaffManagementf=newwg212_StaffManagement(i,name);f.Show();this.Hide();}privatevoid添加ToolStripMenuItem_Click(objectsender,EventArgse){i=2;wg212_StaffManagementf=newwg212_StaffManagement(i,name);f.Show();this.Hide();}privatevoid修改ToolStripMenuItem_Click(objectsender,EventArgse){i=3;wg212_StaffManagementf=newwg212_StaffManagement(i,name);f.Show();this.Hide();}privatevoid刪除ToolStripMenuItem_Click(objectsender,EventArgse){i=4;wg212_StaffManagementf=newwg212_StaffManagement(i,name);f.Show();this.Hide();}privatevoid注銷當(dāng)前用戶ToolStripMenuItem_Click(objectsender,EventArgse){wg212_Loginf=newwg212_Login();f.Show();this.Close();}privatevoid查詢ToolStripMenuItem1_Click(objectsender,EventArgse){i=5;wg212_GoodsManagementf=newwg212_GoodsManagement(i,name);f.Show();this.Hide();}privatevoid添加ToolStripMenuItem1_Click(objectsender,EventArgse){i=6;wg212_GoodsManagementf=newwg212_GoodsManagement(i,name);f.Show();this.Hide();}privatevoid修改ToolStripMenuItem1_Click(objectsender,EventArgse){i=7;wg212_GoodsManagementf=newwg212_GoodsManagement(i,name);f.Show();this.Hide();}privatevoid刪除ToolStripMenuItem1_Click(objectsender,EventArgse){i=8;wg212_GoodsManagementf=newwg212_GoodsManagement(i,name);f.Show();this.Hide();}privatevoid進(jìn)倉(cāng)ToolStripMenuItem_Click(objectsender,EventArgse){i=9;wg212_SimpleInoutf=newwg212_SimpleInout(i,simpleInout1,simpleInout2,name);f.Show();this.Hide();}privatevoid出倉(cāng)ToolStripMenuItem_Click(objectsender,EventArgse){i=10;wg212_SimpleInoutf=newwg212_SimpleInout(i,simpleInout1,simpleInout2,name);f.Show();this.Hide();}privatevoid庫存量查詢ToolStripMenuItem1_Click(objectsender,EventArgse){wg212_GoodsCountSearchf=newwg212_GoodsCountSearch(name);f.Show();this.Hide();}privatevoid進(jìn)倉(cāng)記錄查詢ToolStripMenuItem_Click(objectsender,EventArgse){i=11;wg212_SimpleInoutRecordSearchf=newwg212_SimpleInoutRecordSearch(i,simpleInoutSearch1,simpleInoutSearch2,name);f.Show();this.Hide();}privatevoid出倉(cāng)記錄查詢ToolStripMenuItem_Click(objectsender,EventArgse){i=12;wg212_SimpleInoutRecordSearchf=newwg212_SimpleInoutRecordSearch(i,simpleInoutSearch1,simpleInoutSearch2,name);f.Show();this.Hide();}privatevoid現(xiàn)有庫存量查詢ToolStripMenuItem_Click(objectsender,EventArgse){wg212_GoodsCountSearchf=newwg212_GoodsCountSearch(name);f.Show();this.Hide();}privatevoid進(jìn)倉(cāng)ToolStripMenuItem1_Click(objectsender,EventArgse){i=13;wg212_MultiInoutf=newwg212_MultiInout(i,multiInout1,multiInout2,name);f.Show();this.Hide();}privatevoid出倉(cāng)ToolStripMenuItem1_Click(objectsender,EventArgse){i=14;wg212_MultiInoutf=newwg212_MultiInout(i,multiInout1,multiInout2,name);f.Show();this.Hide();}privatevoidwg212_Main_Load(objectsender,EventArgse){查詢ToolStripMenuItem.Enabled=false;添加ToolStripMenuItem.Enabled=false;修改ToolStripMenuItem.Enabled=false;刪除ToolStripMenuItem.Enabled=false;查詢ToolStripMenuItem1.Enabled=false;添加ToolStripMenuItem1.Enabled=false;修改ToolStripMenuItem1.Enabled=false;刪除ToolStripMenuItem1.Enabled=false;庫存量查詢ToolStripMenuItem1.Enabled=false;進(jìn)倉(cāng)記錄查詢ToolStripMenuItem.Enabled=false;出倉(cāng)記錄查詢ToolStripMenuItem.Enabled=false;進(jìn)倉(cāng)ToolStripMenuItem.Enabled=false;出倉(cāng)ToolStripMenuItem.Enabled=false;現(xiàn)有庫存量查詢ToolStripMenuItem.Enabled=false;進(jìn)倉(cāng)記錄查詢ToolStripMenuItem1.Enabled=false;出倉(cāng)記錄查詢ToolStripMenuItem1.Enabled=false;進(jìn)倉(cāng)ToolStripMenuItem1.Enabled=false;出倉(cāng)ToolStripMenuItem1.Enabled=false;權(quán)限授予與查詢ToolStripMenuItem.Enabled=false;按月份打印進(jìn)出倉(cāng)單表ToolStripMenuItem.Enabled=false;按月份打印進(jìn)出倉(cāng)單ToolStripMenuItem.Enabled=false;按物料打印倉(cāng)庫賬本ToolStripMenuItem.Enabled=false;SqlOperationso=newSqlOperation();//wg212_Loginf=newwg212_Login();label1.Text=name+",歡送您!";stringstr="selectpermissionfromwg212_empwhereename='"+name+"'";//stringstr="selectpermissionfromwg212_empwhereename='張飛'";stringright,cutStr;intj;right=so.FiledValue(str);for(j=0;j<right.Length;j++){cutStr=right.Substring(j,1);if(cutStr=="a"){查詢ToolStripMenuItem.Enabled=true;}if(cutStr=="b"){添加ToolStripMenuItem.Enabled=true;}if(cutStr=="c"){修改ToolStripMenuItem.Enabled=true;}if(cutStr=="d"){刪除ToolStripMenuItem.Enabled=true;}if(cutStr=="e"){查詢ToolStripMenuItem1.Enabled=true;}if(cutStr=="f"){添加ToolStripMenuItem1.Enabled=true;}if(cutStr=="g"){修改ToolStripMenuItem1.Enabled=true;}if(cutStr=="h"){刪除ToolStripMenuItem1.Enabled=true;}if(cutStr=="i"){庫存量查詢ToolStripMenuItem1.Enabled=true;}if(cutStr=="j"){進(jìn)倉(cāng)記錄查詢ToolStripMenuItem.Enabled=true;simpleInoutSearch1++;}if(cutStr=="k"){出倉(cāng)記錄查詢ToolStripMenuItem.Enabled=true;simpleInoutSearch2++;}if(cutStr=="l"){進(jìn)倉(cāng)ToolStripMenuItem.Enabled=true;simpleInout1++;}if(cutStr=="m"){出倉(cāng)ToolStripMenuItem.Enabled=true;simpleInout2++;}if(cutStr=="n"){現(xiàn)有庫存量查詢ToolStripMenuItem.Enabled=true;}if(cutStr=="o"){進(jìn)倉(cāng)記錄查詢ToolStripMenuItem1.Enabled=true;multiInoutSearch1++;}if(cutStr=="p"){出倉(cāng)記錄查詢ToolStripMenuItem1.Enabled=true;multiInoutSearch2++;}if(cutStr=="q"){進(jìn)倉(cāng)ToolStripMenuItem1.Enabled=true;multiInout1++;}if(cutStr=="r"){出倉(cāng)ToolStripMenuItem1.Enabled=true;multiInout2++;}if(cutStr=="s"){權(quán)限授予與查詢ToolStripMenuItem.Enabled=true;}if(cutStr=="t"){按月份打印進(jìn)出倉(cāng)單表ToolStripMenuItem.Enabled=true;}if(cutStr=="u"){按月份打印進(jìn)出倉(cāng)單ToolStripMenuItem.Enabled=true;}if(cutStr=="v"){按物料打印倉(cāng)庫賬本ToolStripMenuItem.Enabled=true;}/*查詢ToolStripMenuItem.Enabled=cutStr=="01"?true:false;添加ToolStripMenuItem.Enabled=cutStr=="02"?true:false;修改ToolStripMenuItem.Enabled=cutStr=="03"?true:false;刪除ToolStripMenuItem.Enabled=cutStr=="04"?true:false;查詢ToolStripMenuItem1.Enabled=cutStr=="05"?true:false;添加ToolStripMenuItem1.Enabled=cutStr=="06"?true:false;修改ToolStripMenuItem1.Enabled=cutStr=="07"?true:false;刪除ToolStripMenuItem1.Enabled=cutStr=="08"?true:false;庫存量查詢ToolStripMenuItem1.Enabled=cutStr=="09"?true:false;進(jìn)倉(cāng)記錄查詢ToolStripMenuItem.Enabled=cutStr=="10"?true:false;出倉(cāng)記錄查詢ToolStripMenuItem.Enabled=cutStr=="11"?true:false;進(jìn)倉(cāng)ToolStripMenuItem.Enabled=cutStr=="12"?true:false;出倉(cāng)ToolStripMenuItem.Enabled=cutStr=="13"?true:false;現(xiàn)有庫存量查詢ToolStripMenuItem.Enabled=cutStr=="14"?true:false;進(jìn)倉(cāng)記錄查詢ToolStripMenuItem1.Enabled=cutStr=="15"?true:false;出倉(cāng)記錄查詢ToolStripMenuItem1.Enabled=cutStr=="16"?true:false;進(jìn)倉(cāng)ToolStripMenuItem1.Enabled=cutStr=="17"?true:false;出倉(cāng)ToolStripMenuItem1.Enabled=cutStr=="18"?true:false;ed=cutStr=="19"?true:false;按月份打印進(jìn)出倉(cāng)單表ToolStripMenuItem.Enabled=cutStr=="20"?true:false;按月份打印進(jìn)出倉(cāng)單Too

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論