




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
課程設(shè)計-報刊訂閱管理系統(tǒng)(優(yōu)質(zhì)文檔,可直接使用,可編輯,歡迎下載)
課程設(shè)計-報刊訂閱管理系統(tǒng)(優(yōu)質(zhì)文檔,可直接使用,可編輯,歡迎下載)軟件工程課程設(shè)計報告目錄TOC\o”1—3"\h\z\uHYPERLINK\l”_Toc170655022"1。開發(fā)環(huán)境和相關(guān)技術(shù)介紹HYPERLINK\l”_Toc170655023”1.1開發(fā)環(huán)境3HYPERLINK\l”_Toc170655024"1。2相關(guān)技術(shù)介紹3HYPERLINK\l”_Toc170655025"2。需求分析2.1系統(tǒng)需求和功能32.2數(shù)據(jù)字典4HYPERLINK\l”_Toc170655028”2。2.1數(shù)據(jù)結(jié)構(gòu)42。2。2數(shù)據(jù)項42.2。3數(shù)據(jù)流5_Toc170655034”2。5完整性要求53面向?qū)ο蠓治?.1面向?qū)ο蠓治鯤YPERLINK\l”_Toc170655034”53。2系統(tǒng)的結(jié)構(gòu)圖HYPERLINK\l”_Toc170655034"84。1數(shù)據(jù)庫創(chuàng)建8HYPERLINK\l”_Toc170655056”4。1.1各數(shù)據(jù)表說明8HYPERLINK\l”_Toc170655057"4。1。2數(shù)據(jù)庫創(chuàng)建9HYPERLINK\l”_Toc170655058”4。2數(shù)據(jù)庫備份和恢復(fù)方案104.2.1應(yīng)用輔助工具進行備份和恢復(fù)10HYPERLINK\l”_Toc170655060"4.2。2分離數(shù)據(jù)庫法10HYPERLINK\l”_Toc170655061"4.3用戶界面設(shè)計和應(yīng)用程序編碼10HYPERLINK\l”_Toc170655062”4.3。1用戶界面設(shè)計10HYPERLINK\l”_Toc170655063"4.3.2類文件功能描述11HYPERLINK\l”_Toc170655064"4。3.3主要代碼分析115.1測試方案16HYPERLINK\l”_Toc170655067”5。2測試過程16HYPERLINK\l”_Toc170655068"5.2.1登陸測試165.2。2目錄管理功能測試17HYPERLINK\l”_Toc170655070”5.2。3訂戶管理功能測試20_Toc170655081"6.1完成情況24HYPERLINK\l”_Toc170655082”6.2總結(jié)247.參考文獻1。開發(fā)環(huán)境和相關(guān)技術(shù)介紹1.1開發(fā)環(huán)境系統(tǒng)結(jié)構(gòu):C/S結(jié)構(gòu)數(shù)據(jù)庫系統(tǒng):MicrosoftSQLServer2000sp3宿主語言:JAVA數(shù)據(jù)庫連接方式:JDBC連接方式開發(fā)工具:Eclipse3。21。2相關(guān)技術(shù)介紹MicrosoftSQLServer2000數(shù)據(jù)庫管理系統(tǒng)是微軟公司研制開發(fā)的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。該系統(tǒng)支持并擴展了SQL語言標(biāo)準,可以運用標(biāo)準SQL語句對數(shù)據(jù)進行操作,也可以使用功能強大的GUI工具進行靈活的數(shù)據(jù)管理.同時,系統(tǒng)還提供功能完善的API,可以在應(yīng)用程序中調(diào)用這些API來實現(xiàn)與數(shù)據(jù)庫系統(tǒng)的連接以及相關(guān)數(shù)據(jù)的操作。sp3是該系統(tǒng)的一個版本號,只有sp3以上的SQL2000系統(tǒng)才能夠支持純JDBC連接方式。Eclipse:功能強大的應(yīng)用程序開發(fā)工具,主要支持基于Java語言的各種開發(fā)項目。靈活的Plun-in功能,可以根據(jù)具體需要安裝各種插件.JDBC連接方式:Java與數(shù)據(jù)庫系統(tǒng)的一種連接方式,Java程序使用JDBCAPI與數(shù)據(jù)庫進行通信,并用它操作數(shù)據(jù)庫中的數(shù)據(jù)。JDBCAPI使Java程序與具體數(shù)據(jù)庫系統(tǒng)獨立開來,保證了Java程序高度的可移植性。2。需求分析2.1系統(tǒng)需求和功能設(shè)計一個報刊訂閱應(yīng)用系統(tǒng),使系統(tǒng)滿足以下功能和需求:1)a一個訂戶可訂多種報刊;一種報刊可被多個用戶訂閱;訂單只能訂閱現(xiàn)有報刊目錄內(nèi)容;b投遞時,必須根據(jù)訂單的情況進行投遞,不得超出訂單的訂閱品種、數(shù)量;2)、系統(tǒng)功能包括:a訂戶管理:訂戶添加、修改、刪除;b
目錄管理:目錄添加、修改、刪除;c訂單管理:完成訂戶訂閱數(shù)據(jù)的管理(包括添加、修改、刪除);d
訂單查詢:按訂戶或者訂單號查詢訂單詳細情況;e統(tǒng)計查詢:按報刊目錄統(tǒng)計各類報刊的訂閱數(shù)量及金額;f表單生成:根HYPERLINK\l”_2.2數(shù)據(jù)字典”據(jù)統(tǒng)計查詢結(jié)果導(dǎo)出統(tǒng)計信息到文件(。xl2.2數(shù)據(jù)字典2.2.1數(shù)據(jù)結(jié)構(gòu)管理員用戶=管理員帳戶+管理員密碼訂戶=訂戶編號+訂戶名+聯(lián)系+目錄=目錄編號+目錄名+單價+批注信息訂單=訂單號+訂戶編號+下訂日期訂單細節(jié)=訂單號+目錄編號+訂閱數(shù)量+訂閱期數(shù)+單價+總價(注:為保證訂單確定后價格不隨目錄單價變動,訂單細節(jié)中應(yīng)該有獨立的單價來記錄下訂時目錄的單價)數(shù)據(jù)項表2.1數(shù)據(jù)項表編號標(biāo)識符類型長度所屬表名同義名UNameVarchar20Login管理員帳戶UPasswordVarchar20Login管理員密碼CidVarchar10Customer,Order訂戶編號CnameVarchar20Customer訂戶名PhoneVarchar15Customer聯(lián)系A(chǔ)ddressVarchar50CustomerDidVarchar10Diretory,OrderDetail目錄編號DnameVarchar20Diretory目錄名UnitPriceFloat8DiretoryOrderDetail目錄單價,下訂時目錄單價IfoVarchar50Diretory批注信息OnoVarchar10Order,OrderDetail訂單編號OdateDatetime8Order下訂日期Quantity,Int4OrderDetail訂閱數(shù)量QiShu,Int4OrderDetail訂閱期數(shù)TotalFloat8OrderDetail訂單項總價2.2.3數(shù)據(jù)流表2。2數(shù)據(jù)流表編號名稱來源去向組成1身份信息系統(tǒng)管理員應(yīng)用系統(tǒng)管理員帳戶+密碼2授權(quán)信息應(yīng)用系統(tǒng)系統(tǒng)管理員3錯誤身份信息應(yīng)用系統(tǒng)系統(tǒng)管理員4查詢請求系統(tǒng)管理員應(yīng)用系統(tǒng)待查詢對象識別符(如Cid,Ono)5查詢結(jié)果應(yīng)用系統(tǒng)系統(tǒng)管理員被查詢對象具體信息6管理請求系統(tǒng)管理員應(yīng)用系統(tǒng)識別符(Cid,Ono等)+管理類型7管理結(jié)果信息應(yīng)用系統(tǒng)系統(tǒng)管理員被管理對象處理結(jié)果8非法請求應(yīng)用系統(tǒng)系統(tǒng)管理員非法請求提示信息2。3安全性要求訪問數(shù)據(jù)庫時需要輸入登陸帳號和密碼。在數(shù)據(jù)庫內(nèi)設(shè)有管理員表,登陸系統(tǒng)時會要求輸入管理員帳號和密碼。登陸模塊根據(jù)輸入帳號和密碼查管理員表,查到匹配記錄則允許其登陸系統(tǒng).管理員帳號和密碼可以在系統(tǒng)中添加和修改。2.4一致性要求在管理系統(tǒng)相關(guān)的表之間,有較強的關(guān)聯(lián)性。為了實現(xiàn)一致性的需求,各個表之間均建立起了相應(yīng)的一致性約束。2.5完整性要求根據(jù)報刊訂閱管理系統(tǒng)的要求,為保持數(shù)據(jù)的完整性,采用了數(shù)據(jù)庫的事務(wù)機制,防止出現(xiàn)操作故障引起的數(shù)據(jù)不一致.3面向?qū)ο蠓治?.1面向?qū)ο蠓治鲈O(shè)計報刊訂閱系統(tǒng),主要的目的是使得用戶在訂閱是能跟回家的方便快捷同時也使得報刊提供商能更加有效的管理企業(yè)的銷售狀況。同時面向?qū)ο蠓治鍪沟萌藛T關(guān)注理解系統(tǒng)需要建立的內(nèi)容,從而產(chǎn)生一個準確的完整的一致的和可驗證的系統(tǒng)模型.管理員表(Administrator):用于存放管理員的數(shù)據(jù)記錄,包括數(shù)據(jù)項:管理員名、密碼.部門表(Department):用來存放部門的相關(guān)記錄,包括數(shù)據(jù)項:部門號,部門名。用戶表(Consumer):用于存放注冊用戶的記錄,包括數(shù)據(jù)項:用戶賬號、密碼、真實姓名、身份證號、聯(lián)系,,部門號(和部門表有關(guān))等。報刊信息表(magazine):用于存放報刊記錄,包括數(shù)據(jù)項:報刊代號、報刊名稱、出版報社、出版周期、季度報價、內(nèi)容介紹、分類編號(和報刊類別表有關(guān))等。訂單表(subscribe):用于存放用戶下達的訂閱報刊的基本信息,包括數(shù)據(jù)項:訂單編號用戶編號(用戶表的主碼)、報刊代號(報刊信息表的主碼)、訂閱份數(shù)、訂閱月數(shù)等。用例圖:由上面的分析需能夠確定系統(tǒng)用例圖:類圖:在根據(jù)已定義的對象類及其聯(lián)系,以及對象類的多重性、角色、導(dǎo)航等性質(zhì),可以畫出對象類圖,使用對象圖的目的是分析系統(tǒng)的瞬間狀態(tài),以便進一步了解系統(tǒng)的結(jié)構(gòu)和行為。分析對象模型:也同時可以確定所有實體之間的E—R圖:圖3.1報刊訂閱管理系統(tǒng)E-R圖3。2系統(tǒng)結(jié)構(gòu)圖圖4。1系統(tǒng)結(jié)構(gòu)圖4.數(shù)據(jù)庫實施4.1數(shù)據(jù)庫創(chuàng)建4.1.1各數(shù)據(jù)表說明表4。1數(shù)據(jù)表描述表編號數(shù)據(jù)表名稱類型內(nèi)容01Login輔助表記錄管理員帳號,密碼02Customer主表記錄訂戶信息03Diretory主表記錄目錄信息04Order主表記錄訂單基本信息05OrderDetail主表記錄詳細訂單項信息4.1.2數(shù)據(jù)庫創(chuàng)建在MicrosoftSQLServer2000的企業(yè)管理器中完成數(shù)據(jù)庫和數(shù)據(jù)表的創(chuàng)建CREATETABLE[dbo].[Customer]( [Cid][varchar](10)COLLATEChinese_PRC_CI_ASNOTNULL, [Cname][varchar](20)COLLATEChinese_PRC_CI_ASNULL, [Phone][varchar](15)COLLATEChinese_PRC_CI_ASNULL, [Address][varchar](50)COLLATEChinese_PRC_CI_ASNOTNULL)ON[PRIMARY]GOCREATETABLE[dbo].[Login]( [UName][varchar](20)COLLATEChinese_PRC_CI_ASNOTNULL, [UPassword][varchar](20)COLLATEChinese_PRC_CI_ASNOTNULL)ON[PRIMARY]GOCREATETABLE[dbo].[Diretory]( [Did][varchar](10)COLLATEChinese_PRC_CI_ASNOTNULL, [Dname][varchar](20)COLLATEChinese_PRC_CI_ASNULL, [UnitPrice][float]NOTNULL, [Ifo][varchar](50)COLLATEChinese_PRC_CI_ASNULL)ON[PRIMARY]GOCREATETABLE[dbo].[Order]( [Ono][varchar](10)COLLATEChinese_PRC_CI_ASNOTNULL, [Cid][varchar](10)COLLATEChinese_PRC_CI_ASNOTNULL, [Odate][datetime]NULL)ON[PRIMARY]GOCREATETABLE[dbo].[OrderDetail]( [Ono][varchar](10)COLLATEChinese_PRC_CI_ASNOTNULL, [Did][varchar](10)COLLATEChinese_PRC_CI_ASNOTNULL, [Quantity][int]NOTNULL, [QiShu][int]NOTNULL, [UnitPrice][float]NOTNULL, [Total][float]NULL)ON[PRIMARY]GO4。2數(shù)據(jù)庫備份和恢復(fù)方案4。2。1應(yīng)用輔助工具進行備份和恢復(fù)應(yīng)用數(shù)據(jù)庫輔助工具(如sqlbackuptools…)進行備份,選擇所需要備份的數(shù)據(jù)庫和目標(biāo)地址即可進行數(shù)據(jù)備份,恢復(fù)數(shù)據(jù)庫只需要指定備份文件和需要恢復(fù)的數(shù)據(jù)庫即可進行數(shù)據(jù)恢復(fù)。4。2.2分離數(shù)據(jù)庫法在企業(yè)管理器中右擊需要備份的數(shù)據(jù)庫,選擇“所有任務(wù)”,“分離數(shù)據(jù)庫",執(zhí)行分析操作,拷貝數(shù)據(jù)庫MDF文件和LDF文件?;謴?fù)方案:在企業(yè)管理器的控制臺樹中選擇“數(shù)據(jù)庫”節(jié)點,右擊,“所有任務(wù)”,“附加數(shù)據(jù)庫”,找到待恢復(fù)數(shù)據(jù)庫的MDF文件,確定。4。3用戶界面設(shè)計和應(yīng)用程序編碼4.3。1用戶界面設(shè)計本系統(tǒng)的用戶界面用JavaSwing編寫,主要由1個主界面Newspaper.java和10個輔助對話框組成。主界面集合系統(tǒng)主要基本功能按鍵,輔助對話框負責(zé)采集用戶輸入信息和做基本的信息處理.用戶界面4.3。2類文件功能描述NO。類名類型功能01NewspaperFrame主窗口類,提供系統(tǒng)主要功能的調(diào)用接口02Utilities輔助類封裝系統(tǒng)主要數(shù)據(jù)和方法,為其它類提供信息處理功能03AdminCreateDlgDialog管理員創(chuàng)建對話框,提供管理員創(chuàng)建功能04AdminModifyDlgDialog管理員信息修改對話框,修改管理員密碼,刪除管理員05UserCreateDlgDialog訂戶新建對話框,采集訂戶信息,創(chuàng)建新訂戶06UserModifyDlgDialog訂戶修改對話框,提供訂戶修改、刪除操作07DirCreateDlgDialog目錄新建對話框,采集目錄信息,創(chuàng)建新目錄08DirModifyDlgDialog目錄修改對話框,提供目錄修改、刪除操作09BookingDlgDialog添加訂單對話框,提供新訂單添加功能10OrderSearchDlgDialog訂單查找對話框,提供按Ono或Cid查找訂單操作11OrderDetailDlgDialog訂單細節(jié)對話框,顯示訂單細節(jié),提供訂單和訂單項刪除操作,并能通過調(diào)用DetailModifyDlg對話框完成訂單項修改。12DetailModifyDialog訂單項修改對話框,提供訂單項修改操作13LoginDlgDialog管理員登陸對話框,提供登陸界面,檢查登陸信息表4類文件描述表4.3。3主要代碼分析//——--———--——-—-———-——--——————--—-——--——-———--—-————-——----——-—————-——--——---—-//所屬類:Utilities//功能:取得應(yīng)用程序與數(shù)據(jù)庫系統(tǒng)的連接publicstaticvoidgetConnection()throwsException{ Class。forName("com。microsoft。jdbc.sqlserver.SQLServerDriver") 。newInstance();//加載驅(qū)動程序 Stringurl=”jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Newspaper”; Stringuser=”sa";Stringpassword="";conn=DriverManager.getConnection(url,user,password);//取得連接stmt=conn.createStatement(ResultSet。TYPE_SCROLL_SENSITIVE, ResultSet。CONCUR_UPDATABLE);//創(chuàng)建語句conn2=DriverManager.getConnection(url,user,password);stmt2=conn2。createStatement(ResultSet。TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);}//-—————-—----—-————-————-———————-——--——-------—-----—-———--—---——--—---—--—--—//所屬類:Utilities//功能:完成查詢結(jié)果的表格顯示publicstaticvoiddisplayResultSet(JTabletable,ResultSetrs)throwsSQLException{ rs.beforeFirst();//指針移到結(jié)果集第一條記錄前面booleanmoreRecords=rs.next();if(!moreRecords){//如果沒有記錄,則提示一條消息 JOptionPane。showMessageDialog(table,"無相關(guān)記錄",”Checkyourinput!”, JOptionPane。ERROR_MESSAGE);return; } VectorcolumnHeads=newVector();//用于存儲表格字段 Vectorrows=newVector();//用于存儲記錄行try{//獲取字段的名稱 ResultSetMetaDatarsmd=rs。getMetaData();for(inti=1;i〈=rsmd。getColumnCount();++i) columnHeads。addElement(rsmd。getColumnName(i));do{//獲取記錄集 rows。addElement(getNextRow(rs,rsmd)); }while(rs。next());//建立相應(yīng)的TableModel,并將TableModel應(yīng)用到table中顯示出來 DefaultTableModelmodel=newDefaultTableModel(rows,columnHeads); table.setModel(model);return; }catch(SQLExceptionsqlex){ sqlex.printStackTrace(); } }//-————--——-----——---—-———--—-———--——--———-——------——————--—-—--—-——-———-—--——-//所屬類:Utilities//功能:被displayResultSet(JTabletable,ResultSetrs)調(diào)用,返回一個記錄行privatestaticVectorgetNextRow(ResultSetrs,ResultSetMetaDatarsmd)throwsSQLException{ Vector<String〉currentRow=newVector<String〉();for(inti=1;i<=rsmd。getColumnCount();++i) currentRow.addElement(rs.getString(i));returncurrentRow;//返回一條記錄}//—----—----—-—-----———-—-—-——-———-—----———-————-——-——-——————————-—————--——----//所屬類:Utilities//功能:創(chuàng)建空白EXCEL文件,并將統(tǒng)計查詢結(jié)果導(dǎo)出到該EXCEL文件//說明:使用到org。apache的POI包,表示感謝publicstaticbooleanoutPut(ResultSetrs,F(xiàn)ilefile){if(rs==null)returnfalse;try{ HSSFWorkbookwb=newHSSFWorkbook(); HSSFSheetsheet=wb。createSheet("firstsheet”); sheet.setDefaultColumnWidth((short)20); ResultSetMetaDatametadata=rs。getMetaData();intcolumnCount=metadata.getColumnCount();//獲取屬性列數(shù) HSSFRowrow=sheet.createRow((short)0);for(inti=1;i<=columnCount;i++){//填寫表格列名 row。createCell((short)(i—1)).setCellValue( metadata。getColumnName(i)); }//按行填寫記錄 rs.beforeFirst();shortcounter=1;while(rs。next()){ row=sheet。createRow(counter++);for(inti=1;i〈=columnCount;i++){ row.createCell((short)(i—1))。setCellValue( String。valueOf(rs.getObject(i))); } } FileOutputStreamfileOut=newFileOutputStream(file); wb。write(fileOut);//結(jié)果輸出到文件 fileOut.close();//關(guān)閉輸出流 }catch(Exceptionexc){ exc。printStackTrace(); }returntrue; }}//————————---————-——--—--—---——-----——------————-———----——-—————--—————--——-——-//所屬類:Newspaper//功能:統(tǒng)計查詢finalJMenuItemmenuItem_9=newJMenuItem(); menuItem_9。addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){ Stringsql="SELECTDiretory。DidAS刊物編號,DnameAS刊物名稱,” +"SUM(Quantity*QiShu)AS總訂閱數(shù),SUM(Total)AS總金額" +”FROMDiretoryLEFTJOINOrderDetailON +”GROUPBYDiretory.Did,Diretory.Dname" +"ORDERBYSUM(Total)DESC”;try{ Utilities。rs=Utilities。stmt。executeQuery(sql);//執(zhí)行統(tǒng)計查詢 Utilities。displayResultSet(table,Utilities。rs);//顯示查詢結(jié)果 }catch(SQLExceptionexc){ exc。printStackTrace(); } } });//-—-———---—-—————-———--————-——-————-——-—-—--—-——-—-——--—-—---———---—-———-——---//所屬類:UserCreateDlg//功能:創(chuàng)建新用戶finalJButtonbutton=newJButton(); button.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){if(textField_1。getText().trim()。length()!=0 &&textField_2.getText().trim().length()!=0 &&textField_3.getText()。trim()。length()!=0){ Stringsql=”INSERTINTOCustomer(Cid,Cname,Phone,Address)” +”VALUES(’" +textField。getText()。trim() +"','” +textField_1。getText().trim() +"',’" +textField_2。getText()。trim() +”’,’” +textField_3。getText()。trim()+"')”;try{ Utilities。stmt.executeUpdate(sql);//執(zhí)行數(shù)據(jù)行插入 JOptionPane.showMessageDialog(dialog,"用戶:” +textField_1。getText()+"添加成功\nID:" +textField。getText(),”Success!”, JOptionPane。INFORMATION_MESSAGE); dispose(); }catch(SQLExceptionexc){ exc。printStackTrace(); } }else{ JOptionPane.showMessageDialog(dialog,”信息不全,無法添加”,"Checkyourinput!”,JOptionPane。ERROR_MESSAGE); } } });//-—-—--——-—--———-—-—————----——---—----—-----———--——-----—---————----————-——-—-//所屬類:UserModifyDlg//功能:用戶信息更新修改button_2=newJButton();button_2。setEnabled(false);button_2.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){if(textField_1。getText()。trim().length()!=0 &&textField_2。getText()。trim().length()!=0 &&textField_3。getText()。trim().length()!=0){try{ Utilities。rs。updateString("Cname",textField_1 .getText().trim()); Utilities。rs。updateString(”Phone",textField_2 。getText().trim()); Utilities。rs.updateString(”Address”,textField_3 。getText().trim()); Utilities.rs.updateRow();//更新數(shù)據(jù)行 JOptionPane。showMessageDialog(dialog,"更新成功!",”Success!”,JOptionPane。INFORMATION_MESSAGE); dispose(); }catch(SQLExceptionexc){ } }else{ JOptionPane.showMessageDialog(dialog,”信息不全,無法修改”,”Checkyourinput!",JOptionPane.ERROR_MESSAGE); } } });//-———-—---—--————--——----——-----——--—--—-——————-—————---—-—--—-——--—--—————-——//所屬類:BookingDlg//功能:讀取訂單數(shù)據(jù),向系統(tǒng)添加訂單button_1=newJButton();button_1。addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){try{ Stringsql="SELECTUnitPriceFROMDiretoryWHEREDid='" +comboBox。getSelectedItem()+”'”; Utilities.rs=Utilities.stmt。executeQuery(sql);//查詢當(dāng)前選擇目錄刊物的單價if(Utilities。rs.next()){unitPrice=Utilities。rs.getFloat("UnitPrice”);quantity=Integer.parseInt(textField_1.getText());qishu=Integer。parseInt(textField_2。getText());total=unitPrice*quantity*qishu;sum+=total; sql="INSERTINTOOrderDetail(ONo,Did,Quantity,QiShu,UnitPrice,total)” +”VALUES('" +label_2。getText() +"',’" +comboBox。getSelectedItem() +”’," +quantity +"," +qishu +",” +unitPrice +”," +total +")";sqls。add(sql);//寄存訂單細節(jié)插入語句comboBox。removeItem(comboBox。getSelectedItem());//將已選擇目錄從下拉選擇框中移除(一個訂單不能有兩個目錄相同的訂單項) } }catch(SQLExceptionexc){ exc.printStackTrace(); }catch(NumberFormatExceptionexc){ JOptionPane。showMessageDialog(dialog,”錯誤數(shù)字輸入”,”Checkagain!",JOptionPane。ERROR_MESSAGE); } } });button_1。setEnabled(false);button_1。setText("添加訂單項”); panel_1。add(button_1);button_2=newJButton();button_2。addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){if(sqls。size()>1){//容器第一個空間放插入Order的sql語句,其它空間放插入OrderDetail的sql語句//sqls.size()==1表示只有一張空訂單,不予插入intans=JOptionPane.showConfirmDialog(dialog,"一共需要支付訂金:” +sum+"元\nContinue?”,”Weneedyourmoney”, JOptionPane.YES_NO_CANCEL_OPTION);if(ans==JOptionPane.YES_OPTION){try{for(inti=0;i<sqls.size();i++){//順序取出sql語句,完成訂單添加插入 Utilities.stmt。executeUpdate(sqls.get(i));//執(zhí)行插入更新語句 } dispose(); JOptionPane 。showMessageDialog(dialog,"訂單添加成功!",”Success!”, JOptionPane。INFORMATION_MESSAGE); }catch(SQLExceptionexc){ exc.printStackTrace(); } }elseif(ans==JOptionPane。NO_OPTION){ dispose(); } }else{ JOptionPane.showMessageDialog(dialog,”訂單為空,不能提交,請選擇需要訂閱的期刊","Checkagain!”, JOptionPane。ERROR_MESSAGE); } } });button_2.setEnabled(false);button_2。setText(”提交訂單"); panel_1.add(button_2);5.系統(tǒng)測試方案和測試報告5.1測試方案由于系統(tǒng)規(guī)模較小,所以沒有安排單獨的白盒測試,而是相應(yīng)地將這部分測試歸并到系統(tǒng)編碼過程中.整個測試過程基于自頂向下測試的組裝模塊的方法,先對主模塊進行基本測試,然后在按深度優(yōu)先策略逐一將子模塊組裝到主模塊上進行測試,最后再對系統(tǒng)進行全面的整體測試.5。2測試過程(白盒測試過程略(參考代碼),以下是系統(tǒng)黑盒測試過程:)5.2。1登陸測試雙擊可執(zhí)行文件Newspaper。jar打開應(yīng)用系統(tǒng),可見登陸界面:系統(tǒng)界面輸入錯誤用戶名和密碼,用戶無法登陸:登陸錯誤提示信息輸入正確用戶名和密碼,用戶正常登陸。(系統(tǒng)自帶用戶名和密碼有(admin,admin),(santino,santino),(ddt,ddt)…)5.2。2目錄管理功能測試添加目錄:選擇“添加目錄”,填寫目錄信息,“確定”添加目錄結(jié)果修改目錄:“目錄管理”,“修改目錄",輸入待修改目錄ID,鎖定目錄,修改目錄,“更新"。修改目錄結(jié)果刪除目錄:“目錄管理”,“修改目錄”,輸入待修改目錄ID,鎖定目錄,“刪除”刪除目錄結(jié)果5。2。3訂戶管理功能測試添加訂戶添加訂戶結(jié)果修改訂戶:刪除訂戶:(參考“目錄管理”,操作基本類似,略)5.2.4訂單管理功能測試添加訂單:點擊“添加訂單”按鈕,填入有效用戶ID,檢測用戶,輸入目錄ID和訂閱數(shù)量、期數(shù),點擊“添加訂單項"為訂單添加訂單項,點擊“提交訂單”可以向系統(tǒng)提交訂單.添加訂單訂單管理:“訂單管理”,“訂單查詢",輸入用戶ID查詢訂單查詢結(jié)果選中訂單項,“訂單管理”,“打開訂單"訂單詳細內(nèi)容選擇具體訂單項可進行相應(yīng)修改操作:訂單項修改5。2.5統(tǒng)計查詢測試統(tǒng)計查詢:“數(shù)據(jù)統(tǒng)計”統(tǒng)計查詢導(dǎo)出查詢數(shù)據(jù)選擇“數(shù)據(jù)統(tǒng)計”“結(jié)果導(dǎo)出”選擇路徑“保存”圖26結(jié)果導(dǎo)出結(jié)果演示6。完成情況和總結(jié)6。1完成情況本系統(tǒng)完成了任務(wù)書中要求的所有內(nèi)容,包括:a訂戶管理:訂戶添加、修改、刪除;b
目錄管理:目錄添加、修改、刪除;c訂單管理:完成訂戶訂閱數(shù)據(jù)的管理(包括添加、修改、刪除);d
訂單查詢:按訂戶或者訂單號查詢訂單詳細情況;e統(tǒng)計查詢:按報刊目錄統(tǒng)計各類報刊的訂閱數(shù)量及金額;另外,系統(tǒng)還具有表單生成功能,能將統(tǒng)計查詢結(jié)果導(dǎo)出到Excel文件中實現(xiàn)持久保存。6。2總結(jié)通過完成本次課程設(shè)計,我對數(shù)據(jù)庫這門課程有了更加深刻的理解.在對系統(tǒng)數(shù)據(jù)庫的分析、設(shè)計中,碰到很多概念上很模糊的問題,通過查閱相關(guān)資料,問題得到了解決,設(shè)計工作也順利進行。另外,通過運用JDBC數(shù)據(jù)庫連接技術(shù),我對java數(shù)據(jù)庫編程技術(shù)也有了一定的了解和認識,希望通過以后的學(xué)習(xí)繼續(xù)加深這方面知識的掌握.同時對基本的軟件設(shè)計流程有了一定的了解.7.參考文獻[1]馬皓.JAVA語言程序設(shè)計。北京:清華大學(xué)出版社,2006[2]孫家廣。軟件工程:高等教育出版社,2005[3]王國輝.JAVA全能速查寶典:人民郵電出版社,2021[4]薩師煊等編。數(shù)據(jù)庫系統(tǒng)概論:高等教育出版社,2006C語言程序設(shè)計超市管理系統(tǒng)目錄課程設(shè)計目的要求1.1設(shè)計目的。.。。.。.。。.。。.。...。。.。..。。。.。。..。..。。.。。。..。。。31.2設(shè)計要求。.....。。。。。。。。。..。。。。...。。。.。。。。..。。。。.。。..。.。31。3設(shè)計思路。.。。.。.。。。.。..。。。。。。。。.。。。。。.。。。。。.。。....。.。.3課程設(shè)計任務(wù)內(nèi)容2.1課程設(shè)計題目。。.。.。.。。..。.........。。。..。。....。。.。。。.。..32.2課程設(shè)計任務(wù)..。。...。。。..。。。..。。.。..。.。。.。。.。..。..。.。。.42。2.1設(shè)計內(nèi)容。。。。。。。。......。。。......。。.。.。。。...。。......42。2。2各組員任務(wù)。..。。...。。。.。.。。。.。....。..。。。.。.。。..。.。。.。4詳細設(shè)計說明3。1系統(tǒng)模塊圖。。..。.。..。。.。。。..。.。。.。。。。..。.。..。。。。..。.。。..。...43.1。1。。....。..。.。。.。......。.。.。。。。.。........。。.。。。。。.。...。.。4.。。.。.。..。.。.。...。。。。。.。。。。。。....。..。...。。。。..。。...。..。53.2主要函數(shù)定義.....。.。。。.。。.。。.。。。。。...。。..。。.。...。..。.。。.。。53.2.1主函數(shù).。.。。。。。。.。。..。.....。..。.。.。.。。。.。。。。.。..。。....53。2。2其他函數(shù)。.。..。。..。..。.。。。.。。。...。。....。..。.。.。。..。.。。。。73.3結(jié)構(gòu)體的建立和文件的使用。.....。。。。..。。。.。..。.。.。.。。。。.。。。。.83。3。1結(jié)構(gòu)體的建立.。。..。。..。..。..。..。。.。.。。。.。.。。。...。..。。。。83。3.2文件的使用。..。。.。。...。。.。....。。..。。.。。..。.。..。。。。...。。.9第四章課程設(shè)計心得與體會。...。。..。..。。.。..。..。..。..。.。..。。......10附錄·程序源代碼參考文獻課程設(shè)計目的要求設(shè)計“超市管理系統(tǒng)”的主要目的是鍛煉學(xué)生綜合運用所學(xué)的C語言程序設(shè)計知識的能力,獨自利用C語言知識編寫承訓(xùn)解決實際問題的能力,培養(yǎng)同學(xué)嚴謹?shù)墓ぷ鲬B(tài)度和良好的程序設(shè)計習(xí)慣,讓同學(xué)們認識到必須重視實踐環(huán)節(jié),多讀程序,多編寫程序,多上機實踐。進一步培養(yǎng)結(jié)構(gòu)化程序設(shè)計的思想,加深對高級語言要素和控制結(jié)構(gòu)的理解.通過課程設(shè)計的訓(xùn)練,學(xué)生能夠了解程序設(shè)計的基本開發(fā)過程,掌握編寫、調(diào)試和測試C語言程序的基本過程,掌握程序設(shè)計的技巧的大體流程.本次程序設(shè)計主要側(cè)重于知識的運用,把平時學(xué)到的運用到實踐中去.1。1設(shè)計目標(biāo):熟悉c語言的編譯連接和運行過程。掌握c語言的數(shù)據(jù)類型,熟悉整型、實型、字符型變量的定義方式及如何給它們賦值。掌握if語句及switch語句的運用方法及嵌套應(yīng)用方法。掌握實現(xiàn)循環(huán)結(jié)構(gòu)的三種語句while、do-while.、for的使用.掌握函數(shù)的定義方法和調(diào)用方法。能夠采用模塊化思想調(diào)試程序.指針和文件的使用,結(jié)構(gòu)體的使用1.2設(shè)計要求:1.源程序要有適當(dāng)?shù)淖⑨專钩绦蛉菀组喿x。2.必須用結(jié)構(gòu)體和文件等數(shù)據(jù)結(jié)構(gòu)。3。程序的運行結(jié)果要求使用文件作備份。4.至少輸出一份報表,鼓勵自行增加新功能。課程設(shè)計任務(wù)內(nèi)容2.1課程設(shè)計題目超市管理系統(tǒng)2。2課程設(shè)計任務(wù)系統(tǒng)為超市管理系統(tǒng),在此系統(tǒng)當(dāng)中需要用到許多函數(shù),包括系統(tǒng)函數(shù)以及自定義的函數(shù),在這個系統(tǒng)當(dāng)中,總共分為五個模塊:管理員登陸、客戶信息管理、商品管理、購物結(jié)算、銷售結(jié)算。2。2。1設(shè)計內(nèi)容本次實習(xí)中,主要用到的C語言知識有結(jié)構(gòu)體、指針、文件、數(shù)組.層層鑲嵌的思路將各個模塊要實現(xiàn)的功能環(huán)環(huán)相扣。其中,在管理員登陸后,進入的是主菜單,在這個環(huán)節(jié)當(dāng)中,我們將菜單設(shè)計為函數(shù),并將菜單函數(shù)放入一個單獨的C文件中管理,實現(xiàn)層層進入功能。主菜單函數(shù)又分為商品管理、客戶管理、購物結(jié)算、銷售結(jié)算等函數(shù)的管理,在此當(dāng)中,主要采用結(jié)構(gòu)體定義客戶信息,文件訪問等。2。2.2各組員任務(wù)為保證設(shè)計在規(guī)定時間內(nèi)完成,我們將各模塊分工到個人.確保任務(wù)有質(zhì)量有效率的同時鍛煉團隊的團結(jié)協(xié)作能力。第三章詳細設(shè)計說明3。1系統(tǒng)模塊圖(未完)添加用戶添加用戶修改用戶刪除用戶查詢用戶進入超市管理系統(tǒng)主界面銷售結(jié)算商品管理購物結(jié)算客戶管理3。2主要函數(shù)定義3。2.1主函數(shù)主函數(shù)主要包含的是登陸界面并且設(shè)置登陸界面其中包含:1.登錄2.關(guān)于我們3.退出系統(tǒng)實現(xiàn)其功能主要用到如下知識:一.其中使用了多種系統(tǒng)自定義的頭文件以及用戶自定義的頭文件如下:#include<stdio。h>#include<string。h>#include〈conio。h〉#include<stdlib.h〉#include〈math.h>#include“MyParams.h”#include“Mymenu。h"#include“common.h”#include“CustMan.h”#include“Goodsman.h”二.使用了main()函數(shù)、aboutUs()函數(shù),login()函數(shù)和pcontinue()函數(shù)①voidmain(){charchoice='3';//存儲判斷的選項do{system(”cls”);//清屏命令printf("\n\n************歡迎進入檸檬·5超市管理系統(tǒng)**********\n\n");printf("\n請您選擇操作選項:\n\n");printf(”\t\t\t1.登錄\n”);printf(”\t\t\t2。關(guān)于我們\n”);printf("\t\t\t3.退出系統(tǒng)\n");printf("\n\n*******************************************\n\n”);printf("\n請輸入您的選項(1,2,3):");choice=getch();}②voidaboutUs(){system("cls");BreakLine;printf("\t\t版權(quán)所有@湖南工學(xué)院網(wǎng)絡(luò)1101班檸檬·5\n\n");printf("\t\t\t檸檬·5專屬,翻版必究\n\n");printf(””);BreakLine;pcontinue();}③intlogin(){charupwd[8];inti;system("cls");for(i=1;i〈4;i++){ BreakLine; printf("請輸入您的8位數(shù)密碼”);scanf("%s",upwd);if(strcmp(upwd,realpassword)==0)return1; printf("您好,您的密碼錯誤,請確認后重新輸入\n”); printf(”您還有%d次輸入機會”,(3-i));} printf("\n系統(tǒng)鄭重提示,您不是合法用戶,強制退出\n");exit(0);}④在common.c定義voidpcontinue()函數(shù)實現(xiàn)按任意鍵繼續(xù)功能voidpcontinue(){printf(”\t按任意鍵繼續(xù)\n”);getch();}三.清屏語句,Dowhile,宏定義等的使用⑴清屏語句:system(”cls");⑵使用了DoWhile循環(huán)實現(xiàn)了在進入關(guān)于我們部分時可以再次返回登陸界面。⑶使用了宏定義。在頭文件MyParam.h中定義BreakLine#defineBreakLineprintf(”\n\n***************************************************\n\n")⑷使用了switch語句進行了選擇并且在語句中使用了多種函數(shù)嵌套使功能完整.switch(choice){case'1':if(login()==1){showMainMenu(); }break;case'2’:aboutUs();break; case'0':printf("\n\n系統(tǒng)安全退出\n\n”);exit(0);break;⑸在輸入密碼部分使用了For循環(huán),實現(xiàn)了在登陸三次密碼不正確的情況下強制退出系統(tǒng):for(i=1;i<4;i++){ BreakLine; printf("請輸入您的8位密碼:"); scanf(”%s”,upwd);//數(shù)組名代表數(shù)組的首地址,所以不要&if(strcmp(upwd,realpassword)==0){ return(1);//1表示登錄成功 } printf("\n您好,您的密碼錯誤,請確認后重新輸入··\n"); printf(”\n您還有第%d次輸入機會",(3-i));}printf(”\n系統(tǒng)鄭重提示,您不是合法用戶,強制退出···\n");pcontinue();exit(0);3.2。2其他函數(shù)部分voidshowMainMenu();再在voidshowMainMenu();其中嵌套voidshowGoodsMenu();voidshowCustMenu();voidshowShopMenu();voidshowSaleMenu();在這些函數(shù)中也就是商品管理,客戶信息管理,購物結(jié)算,和銷售結(jié)算四大功能模塊.依照前面的嵌套方法一一實現(xiàn)他的功能。在四大模塊菜單中有voidaddGoods();voidfindGoodsAll();voidupdateGoods();voiddelGoods();voidaddcust();voiddelcust();voidupdatecust();voidfindall();voidsaveAll();voidsaveall();實現(xiàn)了客戶管理中:添加客戶、查詢客戶、刪除客戶、修改客戶、返回上一級商品管理中:添加商品、查詢商品、刪除商品、修改商品、返回上一級等部分的功能。在四大模塊菜單中有voidshowVIP();voidGoodseffect();voidGoodssave();voidBirthdayperson();voidshowMymenue();voidshopping();實現(xiàn)了購物結(jié)算中:商品交易信息、返回上一級銷售預(yù)算中:顯示最具有貢獻精神VIP客戶排行榜顯示最具有影響力的商品排行榜顯示庫存商品量排行榜當(dāng)月生日的客戶以及返回上一級等功能3.3結(jié)構(gòu)體的建立和文件的使用在實現(xiàn)添加功能時使用了結(jié)構(gòu)體、指針等對現(xiàn)階段我們來說較難理解的內(nèi)容。3.3.1結(jié)構(gòu)體語句的使用我們會在程序中用到如下結(jié)構(gòu)體語句:Structdate/日期intyear/年intmonth/月intday/日Structcust/客戶信息intno/編號charname[20]姓名charsex/性別intage/年齡structdatebirthday/生日doubleexpenditure/花費chartel/號碼Structgoods/商品信息ntnum/商品代碼charname[50]/商品名字intsale/商品數(shù)量floatprice/商品單價intlacation/商品位置在整個程序中我們會如下用到結(jié)構(gòu)體語句,不同的結(jié)構(gòu)體類型:structcust{intno;charname[20];charsex;intage;structdatebirthday;doubleexpendituer;chartel[20];}cust[1000];3.3.2文件的使用客戶信息管理和商品管理都有用到文件,它于我們是重點也是難點定義文件FILE*fp;inti;if((fp=fopen(”cust.dat”,”wb”))==NULL){ printf("\n無法打開文件\n”);return; }for(i=0;i〈total;i++){fwrite(&cust[i],sizeof(structcust),1,fp); }fclose(fp);⑵定義函數(shù)read_message()打開文件intread_message(){FILE*fp;inti=0;//記數(shù)//打開文件if((fp=fopen("cust.dat”,"rb"))==NULL){printf("\n*****暫無任何可讀消息,按任意鍵繼續(xù)**********\n”);getch();return0;}//循環(huán)讀取文件中的每一條記錄(3)結(jié)合循環(huán)語句,關(guān)閉文件while(!feof(fp)){fread(&cust[i],sizeof(structcust),1,fp);if(cust[i]。no=0){break;}else{i++; }}fclose(fp);returni;}第四章程序設(shè)計心得與體會通過為期兩周的課程設(shè)計,我們不僅復(fù)習(xí)了課本上所學(xué)知識,還通過查閱資料、詢問老師同學(xué)學(xué)到了很多課本上沒有的只是,從而啟發(fā)我們:要想寫好程序,在學(xué)好課本只是的同時還需要多閱讀和專業(yè)有關(guān)的書記,同時還需要多動腦子,要有縝密的邏輯思維能力和綜合應(yīng)用能力。簡而言之,我們要做到三心:編寫代碼要細心;檢查錯誤要耐心;完成任務(wù)要恒心。除此,在學(xué)到知識的同時鍛煉了我們的團結(jié)合作精神,也使得我們小組成員之間有更深的交流.所以,很感謝學(xué)校和老師給我們提供這樣一個機會。在鍛煉自己的同時讓自己養(yǎng)成了良好的學(xué)習(xí)習(xí)慣.我希望自己能一直帶著這份心態(tài)和習(xí)慣大步向前。參考文獻[1]武愛平卜耀華孫東衛(wèi)。C語言程序設(shè)計[M]。長春:吉林大學(xué)出版社。附錄檸檬·5supermarket管理系統(tǒng)源代碼SourceFilescommon。cvoidpcontinue();voidpcontinue(){printf(”\t按任意鍵繼續(xù)\n");getch();}Main。c#include〈stdio。h〉#include〈string.h>//字符串〈先到系統(tǒng)的庫找,再到用戶庫#include〈conio.h〉#include〈stdlib。h〉#include"MyParams。h”#include"common。h"#include"mymenu。h"voidaboutUs();intlogin();charrealpassword[8]=”ningmeng";//系統(tǒng)的真實登錄密碼voidmain(){charchoice='3';//存儲判斷的選項do{system(”cls");//清屏命令//打印出程序歡迎界面 printf("\n\n******歡迎進入檸檬·5超市管理系統(tǒng)***\n\n”); printf("\n請您選擇操作選項:\n\n”); printf("\t\t\t1。登錄\n"); printf("\t\t\t2。關(guān)于我們\n"); printf("\t\t\t3.退出系統(tǒng)\n”);printf(”\n\n*****************\n\n");//完成輸入操作 printf(”\n請輸入您的選項(1,2,3):");choice=getch();//getch()從鍵盤輸入一個字符//判斷switch(變量){case值1:xxx;break;defaultxxx;};switch(choice){case’1’:if(login()==1){showMymenue();}break;case'2’:aboutUs();break; case’3’:printf("\n\n系統(tǒng)安全退出\n\n");exit(0);break;}}while(1);}voidaboutUs(){system(”cls”);BreakLine;printf(”\t\t版權(quán)所有@湖南工學(xué)院網(wǎng)絡(luò)1101班檸檬·5\n\n”);printf(”\t\t\t檸檬·5專屬,翻版必究\n\n");printf(””);BreakLine;pcontinue();}intlogin(){charupwd[8];inti;system(”cls");for(i=1;i〈4;i++){ BreakLine; printf("請輸入您的8位數(shù)密碼:");scanf(”%s”,upwd);if(strcmp(upwd,realpassword)==0)return1; printf(”您好,您的密碼錯誤,請確認后重新輸入\n”); printf("您還有%d次輸入機會",(3-i));}printf(”\n系統(tǒng)鄭重提示,您不是合法用戶,為系統(tǒng)安全,強制退出\n”);exit(0);}mymenu。c#include<stdio.h〉#include<string.h〉#include<conio。h〉#include<stdlib。h>#include”mymenu.h”#include”common。h”#include"MyParams.h”#include”CustMan.h”#include”Goodsman。h”voidshowGoodsmenue();voidshowCustmenue();voidshowSales();voidshowSell();voidshowMymenue(){charchoice='5’;while(1){system(”cls”);BreakLine; printf(”\t\t1.商品管理\n”); printf(”\t\t2.客戶管理\n");printf("\t\t3.購物預(yù)算\n”);printf(”\t\t4.銷售預(yù)算\n");printf(”\t\t5.退出系統(tǒng)\n"); BreakLine; printf("\n\n請輸入您的選擇(1,2,3,4,5):");choice=getch();switch(choice){case’1’:showGoodsmenue(); break;case'2’:showCustmenue();break;case'3':showSell();break;case’4':showSales();break;case'5':printf(”\n\n系統(tǒng)安全退出\n\n");exit(0);break; default:printf(”\n您的輸入有誤,請檢查后重新輸入\n”);pcontinue();}}}voidshowGoodsmenue(){charchoice='5';while(1){system(”cls”); BreakLine; printf(”\t\t1.添加商品\n”); printf("\t\t2。查詢商品\n”);printf("\t\t3。更新商品\n”);printf(”\t\t4.刪除商品\n”);printf("\t\t5.返回上一級\n”); BreakLine; printf(”\n\n請輸入您的選擇(1,2,3,4,5):");choice=getch();switch(choice){case’1’:addgoods();break;case'2’:findgoods();break;case’3':updategoods();break;case'4':delgoods();break;case’5’:showMymenue();break;default:printf("\n您的輸入有誤,請檢查后重新輸入\n");pcontinue();}}}voidshowCustmenue(){charchoice=’5';while(1){system("cls");BreakLine;printf(”\t\t1。添加客戶\n");printf(”\t\t2.查找客戶\n");printf("\t\t3.修改客戶\n”);printf("\t\t4。刪除客戶\n");printf(”\t\t5.返回上一級\n"); BreakLine; printf("\n\n請輸入您的選擇(1,2,3,4,5):");choice=getch();switch(choice){case'1':addcust();break;case’2’:findall();break;case'3':updatecust();break;case'4’:delcust();break;case’5':showMymenue();break;default:printf("\n您的輸入有誤,請檢查后重新輸入\n”);pcontinue();}}}voidshowSales(){charchoice=’5’;while(1){system(”cls");BreakLine;printf("\t\t1。顯示最具有貢獻精神VIP客戶排行榜\n"); printf("\t\t2.顯示最具有影響力的商品排行榜\n"); printf("\t\t3.顯示庫存商品量排行榜\n”); printf("\t\t4。當(dāng)月生日的客戶\n"); printf("\t\t5.返回上一級\n"); BreakLine; printf(”\n\t\t請輸入您的選擇(1,2,3,4,5):");choice=getch();switch(choice){case’1’:showVIP();break;case’2’:Goodseffect();break;case'3':Goodssave();break;case’4':Birthdayperson();break;case’5’:showMymenue();break;default:printf("\n\t\t您的輸入有誤,請確認重新輸入。\n"); pcontinue();}//調(diào)用按任意鍵繼續(xù)}}voidshowSell(){charchoice='2’;while(1){system("cls”);BreakLine;printf("\t\t1.商品交易信息\n"); printf("\t\t2。返回上一級\n"); BreakLine; printf(”\n\t\t請輸入您的選擇(1,2,):”);choice=getch();switch(choice){case'1’:shopping();break;case’2’:showMymenue();break;default:printf("\n\t\t您的輸入有誤,請確認重新輸入.\n"); pcontinue();}//調(diào)用按任意鍵繼續(xù)}}Custman.c#include〈stdio.h〉#include〈string.h〉#include〈conio。h〉#include<stdlib.h>#include"MyParams.h"#include”common.h"#include”mymenu.h"#include"CustMan。h"read_message();structdata{intyear;intmonth;intday;};structcust{intno;//編號charname[20];//名字doubleexpenditure;//總花費chartel[20];//號碼structdatabirthday;//生日}cust[1000];//最多存1000個客戶信息inttotal;//現(xiàn)在cust。dat文件中總的紀錄條數(shù)voidsaveAll(){FILE*fp;inti;if((fp=fopen("cust.dat”,”wb"))==NULL){ printf(”\n無法打開文件\n”);return; }for(i=0;i〈total;i++){fwrite(&cust[i],sizeof(structcust),1,fp); }fclose(fp);}//獲取現(xiàn)有文件中客戶的總?cè)藬?shù)intread_message(){ FILE*fp; inti=0;//記數(shù)//打開文件if((fp=fopen(”cust。dat”,"rb"))==NULL){printf(”\n******暫無任何可讀消息,按任意鍵繼續(xù)*****\n");getch();return0;}while(!feof(fp)){fread(&cust[i],sizeof(structcust),1,fp);if(cust[i].no==0){break;}else{i++; } }//循環(huán)讀取文件中的每一條記錄fclose(fp); returni;//存到cust結(jié)構(gòu)中}voidaddcust(){//定義增加的structcustnewcust;charchoice='y'; FILE*fp;inti=0;do{system("cls”); BreakLine; printf(”請輸入客戶的編號:”);scanf("%d”,&newcust。no);printf(”\n");printf(”請輸入客戶的名字:”);scanf(”%s",);printf("\n");printf("請輸入客戶消費:”);scanf("%lf",&newcust。expenditure);printf("\n");printf("請輸入客戶的號碼:”);scanf(”%s”,newcust.tel);printf(”\n");printf(”請輸入客戶的生日:(格式:1999-9—9)”);scanf(”%d—%d-%d",&newcust。birthday。year,&newcust。birthday。month,&newcust。birthday.day);printf(”\n”); BreakLine;if((fp=fopen("cust.dat”,”ab”))==NULL){ printf("\n對不起,不能打開指定的文件\n");return; }fwrite(&newcust,sizeof(structcust)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 養(yǎng)老顧聘用合同范本
- 先付款后供貨合同范本
- 保險投資合同范本
- 加工生產(chǎn)勞務(wù)合同范本
- 京東物流折扣合同范本
- 上門電纜轉(zhuǎn)讓合同范例
- epc裝飾工程合同范本
- 代人取藥兼職合同范本
- 不賒銷合同范本模板
- 化肥銷售協(xié)議合同范本
- 數(shù)字電子技術(shù)(武漢科技大學(xué))知到智慧樹章節(jié)測試課后答案2024年秋武漢科技大學(xué)
- 綜合應(yīng)用能力事業(yè)單位考試(綜合管理類A類)試題及解答參考
- 阿爾茲海默病的家庭護理
- bim技術(shù)課件教學(xué)課件
- 腹水形成的原因及治療
- 單晶爐車間安全培訓(xùn)
- 高中地理必修第一冊期末試卷及答案-中圖版-2024-2025學(xué)年
- 護理核心制度測試題+參考答案
- 機械制造技術(shù)基礎(chǔ)(課程課件完整版)
- 《2023版CSCO卵巢癌診療指南》解讀課件
- 【醫(yī)院藥品管理系統(tǒng)探析與設(shè)計(論文)10000字】
評論
0/150
提交評論