![课程设计-报刊订阅管理系统完整_第1页](http://file4.renrendoc.com/view/fb8da7416eff7c526ebac3a71697efc6/fb8da7416eff7c526ebac3a71697efc61.gif)
![课程设计-报刊订阅管理系统完整_第2页](http://file4.renrendoc.com/view/fb8da7416eff7c526ebac3a71697efc6/fb8da7416eff7c526ebac3a71697efc62.gif)
![课程设计-报刊订阅管理系统完整_第3页](http://file4.renrendoc.com/view/fb8da7416eff7c526ebac3a71697efc6/fb8da7416eff7c526ebac3a71697efc63.gif)
![课程设计-报刊订阅管理系统完整_第4页](http://file4.renrendoc.com/view/fb8da7416eff7c526ebac3a71697efc6/fb8da7416eff7c526ebac3a71697efc64.gif)
![课程设计-报刊订阅管理系统完整_第5页](http://file4.renrendoc.com/view/fb8da7416eff7c526ebac3a71697efc6/fb8da7416eff7c526ebac3a71697efc65.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计-报刊订阅管理系统(优质文档,可直接使用,可编辑,欢迎下载)
课程设计-报刊订阅管理系统(优质文档,可直接使用,可编辑,欢迎下载)软件工程课程设计报告目录TOC\o”1—3"\h\z\uHYPERLINK\l”_Toc170655022"1。开发环境和相关技术介绍HYPERLINK\l”_Toc170655023”1.1开发环境3HYPERLINK\l”_Toc170655024"1。2相关技术介绍3HYPERLINK\l”_Toc170655025"2。需求分析2.1系统需求和功能32.2数据字典4HYPERLINK\l”_Toc170655028”2。2.1数据结构42。2。2数据项42.2。3数据流5_Toc170655034”2。5完整性要求53面向对象分析3.1面向对象分析HYPERLINK\l”_Toc170655034”53。2系统的结构图HYPERLINK\l”_Toc170655034"84。1数据库创建8HYPERLINK\l”_Toc170655056”4。1.1各数据表说明8HYPERLINK\l”_Toc170655057"4。1。2数据库创建9HYPERLINK\l”_Toc170655058”4。2数据库备份和恢复方案104.2.1应用辅助工具进行备份和恢复10HYPERLINK\l”_Toc170655060"4.2。2分离数据库法10HYPERLINK\l”_Toc170655061"4.3用户界面设计和应用程序编码10HYPERLINK\l”_Toc170655062”4.3。1用户界面设计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总结247.参考文献1。开发环境和相关技术介绍1.1开发环境系统结构:C/S结构数据库系统:MicrosoftSQLServer2000sp3宿主语言:JAVA数据库连接方式:JDBC连接方式开发工具:Eclipse3。21。2相关技术介绍MicrosoftSQLServer2000数据库管理系统是微软公司研制开发的关系型数据库管理系统。该系统支持并扩展了SQL语言标准,可以运用标准SQL语句对数据进行操作,也可以使用功能强大的GUI工具进行灵活的数据管理.同时,系统还提供功能完善的API,可以在应用程序中调用这些API来实现与数据库系统的连接以及相关数据的操作。sp3是该系统的一个版本号,只有sp3以上的SQL2000系统才能够支持纯JDBC连接方式。Eclipse:功能强大的应用程序开发工具,主要支持基于Java语言的各种开发项目。灵活的Plun-in功能,可以根据具体需要安装各种插件.JDBC连接方式:Java与数据库系统的一种连接方式,Java程序使用JDBCAPI与数据库进行通信,并用它操作数据库中的数据。JDBCAPI使Java程序与具体数据库系统独立开来,保证了Java程序高度的可移植性。2。需求分析2.1系统需求和功能设计一个报刊订阅应用系统,使系统满足以下功能和需求:1)a一个订户可订多种报刊;一种报刊可被多个用户订阅;订单只能订阅现有报刊目录内容;b投递时,必须根据订单的情况进行投递,不得超出订单的订阅品种、数量;2)、系统功能包括:a订户管理:订户添加、修改、删除;b
目录管理:目录添加、修改、删除;c订单管理:完成订户订阅数据的管理(包括添加、修改、删除);d
订单查询:按订户或者订单号查询订单详细情况;e统计查询:按报刊目录统计各类报刊的订阅数量及金额;f表单生成:根HYPERLINK\l”_2.2数据字典”据统计查询结果导出统计信息到文件(。xl2.2数据字典2.2.1数据结构管理员用户=管理员帐户+管理员密码订户=订户编号+订户名+联系+目录=目录编号+目录名+单价+批注信息订单=订单号+订户编号+下订日期订单细节=订单号+目录编号+订阅数量+订阅期数+单价+总价(注:为保证订单确定后价格不随目录单价变动,订单细节中应该有独立的单价来记录下订时目录的单价)数据项表2.1数据项表编号标识符类型长度所属表名同义名UNameVarchar20Login管理员帐户UPasswordVarchar20Login管理员密码CidVarchar10Customer,Order订户编号CnameVarchar20Customer订户名PhoneVarchar15Customer联系AddressVarchar50CustomerDidVarchar10Diretory,OrderDetail目录编号DnameVarchar20Diretory目录名UnitPriceFloat8DiretoryOrderDetail目录单价,下订时目录单价IfoVarchar50Diretory批注信息OnoVarchar10Order,OrderDetail订单编号OdateDatetime8Order下订日期Quantity,Int4OrderDetail订阅数量QiShu,Int4OrderDetail订阅期数TotalFloat8OrderDetail订单项总价2.2.3数据流表2。2数据流表编号名称来源去向组成1身份信息系统管理员应用系统管理员帐户+密码2授权信息应用系统系统管理员3错误身份信息应用系统系统管理员4查询请求系统管理员应用系统待查询对象识别符(如Cid,Ono)5查询结果应用系统系统管理员被查询对象具体信息6管理请求系统管理员应用系统识别符(Cid,Ono等)+管理类型7管理结果信息应用系统系统管理员被管理对象处理结果8非法请求应用系统系统管理员非法请求提示信息2。3安全性要求访问数据库时需要输入登陆帐号和密码。在数据库内设有管理员表,登陆系统时会要求输入管理员帐号和密码。登陆模块根据输入帐号和密码查管理员表,查到匹配记录则允许其登陆系统.管理员帐号和密码可以在系统中添加和修改。2.4一致性要求在管理系统相关的表之间,有较强的关联性。为了实现一致性的需求,各个表之间均建立起了相应的一致性约束。2.5完整性要求根据报刊订阅管理系统的要求,为保持数据的完整性,采用了数据库的事务机制,防止出现操作故障引起的数据不一致.3面向对象分析3.1面向对象分析设计报刊订阅系统,主要的目的是使得用户在订阅是能跟回家的方便快捷同时也使得报刊提供商能更加有效的管理企业的销售状况。同时面向对象分析使得人员关注理解系统需要建立的内容,从而产生一个准确的完整的一致的和可验证的系统模型.管理员表(Administrator):用于存放管理员的数据记录,包括数据项:管理员名、密码.部门表(Department):用来存放部门的相关记录,包括数据项:部门号,部门名。用户表(Consumer):用于存放注册用户的记录,包括数据项:用户账号、密码、真实姓名、身份证号、联系,,部门号(和部门表有关)等。报刊信息表(magazine):用于存放报刊记录,包括数据项:报刊代号、报刊名称、出版报社、出版周期、季度报价、内容介绍、分类编号(和报刊类别表有关)等。订单表(subscribe):用于存放用户下达的订阅报刊的基本信息,包括数据项:订单编号用户编号(用户表的主码)、报刊代号(报刊信息表的主码)、订阅份数、订阅月数等。用例图:由上面的分析需能够确定系统用例图:类图:在根据已定义的对象类及其联系,以及对象类的多重性、角色、导航等性质,可以画出对象类图,使用对象图的目的是分析系统的瞬间状态,以便进一步了解系统的结构和行为。分析对象模型:也同时可以确定所有实体之间的E—R图:图3.1报刊订阅管理系统E-R图3。2系统结构图图4。1系统结构图4.数据库实施4.1数据库创建4.1.1各数据表说明表4。1数据表描述表编号数据表名称类型内容01Login辅助表记录管理员帐号,密码02Customer主表记录订户信息03Diretory主表记录目录信息04Order主表记录订单基本信息05OrderDetail主表记录详细订单项信息4.1.2数据库创建在MicrosoftSQLServer2000的企业管理器中完成数据库和数据表的创建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数据库备份和恢复方案4。2。1应用辅助工具进行备份和恢复应用数据库辅助工具(如sqlbackuptools…)进行备份,选择所需要备份的数据库和目标地址即可进行数据备份,恢复数据库只需要指定备份文件和需要恢复的数据库即可进行数据恢复。4。2.2分离数据库法在企业管理器中右击需要备份的数据库,选择“所有任务”,“分离数据库",执行分析操作,拷贝数据库MDF文件和LDF文件。恢复方案:在企业管理器的控制台树中选择“数据库”节点,右击,“所有任务”,“附加数据库”,找到待恢复数据库的MDF文件,确定。4。3用户界面设计和应用程序编码4.3。1用户界面设计本系统的用户界面用JavaSwing编写,主要由1个主界面Newspaper.java和10个辅助对话框组成。主界面集合系统主要基本功能按键,辅助对话框负责采集用户输入信息和做基本的信息处理.用户界面4.3。2类文件功能描述NO。类名类型功能01NewspaperFrame主窗口类,提供系统主要功能的调用接口02Utilities辅助类封装系统主要数据和方法,为其它类提供信息处理功能03AdminCreateDlgDialog管理员创建对话框,提供管理员创建功能04AdminModifyDlgDialog管理员信息修改对话框,修改管理员密码,删除管理员05UserCreateDlgDialog订户新建对话框,采集订户信息,创建新订户06UserModifyDlgDialog订户修改对话框,提供订户修改、删除操作07DirCreateDlgDialog目录新建对话框,采集目录信息,创建新目录08DirModifyDlgDialog目录修改对话框,提供目录修改、删除操作09BookingDlgDialog添加订单对话框,提供新订单添加功能10OrderSearchDlgDialog订单查找对话框,提供按Ono或Cid查找订单操作11OrderDetailDlgDialog订单细节对话框,显示订单细节,提供订单和订单项删除操作,并能通过调用DetailModifyDlg对话框完成订单项修改。12DetailModifyDialog订单项修改对话框,提供订单项修改操作13LoginDlgDialog管理员登陆对话框,提供登陆界面,检查登陆信息表4类文件描述表4.3。3主要代码分析//——--———--——-—-———-——--——————--—-——--——-———--—-————-——----——-—————-——--——---—-//所属类:Utilities//功能:取得应用程序与数据库系统的连接publicstaticvoidgetConnection()throwsException{ Class。forName("com。microsoft。jdbc.sqlserver.SQLServerDriver") 。newInstance();//加载驱动程序 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);//创建语句conn2=DriverManager.getConnection(url,user,password);stmt2=conn2。createStatement(ResultSet。TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);}//-—————-—----—-————-————-———————-——--——-------—-----—-———--—---——--—---—--—--—//所属类:Utilities//功能:完成查询结果的表格显示publicstaticvoiddisplayResultSet(JTabletable,ResultSetrs)throwsSQLException{ rs.beforeFirst();//指针移到结果集第一条记录前面booleanmoreRecords=rs.next();if(!moreRecords){//如果没有记录,则提示一条消息 JOptionPane。showMessageDialog(table,"无相关记录",”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());//建立相应的TableModel,并将TableModel应用到table中显示出来 DefaultTableModelmodel=newDefaultTableModel(rows,columnHeads); table.setModel(model);return; }catch(SQLExceptionsqlex){ sqlex.printStackTrace(); } }//-————--——-----——---—-———--—-———--——--———-——------——————--—-—--—-——-———-—--——-//所属类:Utilities//功能:被displayResultSet(JTabletable,ResultSetrs)调用,返回一个记录行privatestaticVectorgetNextRow(ResultSetrs,ResultSetMetaDatarsmd)throwsSQLException{ Vector<String〉currentRow=newVector<String〉();for(inti=1;i<=rsmd。getColumnCount();++i) currentRow.addElement(rs.getString(i));returncurrentRow;//返回一条记录}//—----—----—-—-----———-—-—-——-———-—----———-————-——-——-——————————-—————--——----//所属类:Utilities//功能:创建空白EXCEL文件,并将统计查询结果导出到该EXCEL文件//说明:使用到org。apache的POI包,表示感谢publicstaticbooleanoutPut(ResultSetrs,Filefile){if(rs==null)returnfalse;try{ HSSFWorkbookwb=newHSSFWorkbook(); HSSFSheetsheet=wb。createSheet("firstsheet”); sheet.setDefaultColumnWidth((short)20); ResultSetMetaDatametadata=rs。getMetaData();intcolumnCount=metadata.getColumnCount();//获取属性列数 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);//结果输出到文件 fileOut.close();//关闭输出流 }catch(Exceptionexc){ exc。printStackTrace(); }returntrue; }}//————————---————-——--—--—---——-----——------————-———----——-—————--—————--——-——-//所属类:Newspaper//功能:统计查询finalJMenuItemmenuItem_9=newJMenuItem(); menuItem_9。addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){ Stringsql="SELECTDiretory。DidAS刊物编号,DnameAS刊物名称,” +"SUM(Quantity*QiShu)AS总订阅数,SUM(Total)AS总金额" +”FROMDiretoryLEFTJOINOrderDetailON +”GROUPBYDiretory.Did,Diretory.Dname" +"ORDERBYSUM(Total)DESC”;try{ Utilities。rs=Utilities。stmt。executeQuery(sql);//执行统计查询 Utilities。displayResultSet(table,Utilities。rs);//显示查询结果 }catch(SQLExceptionexc){ exc。printStackTrace(); } } });//-—-———---—-—————-———--————-——-————-——-—-—--—-——-—-——--—-—---———---—-———-——---//所属类:UserCreateDlg//功能:创建新用户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);//执行数据行插入 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();//更新数据行 JOptionPane。showMessageDialog(dialog,"更新成功!",”Success!”,JOptionPane。INFORMATION_MESSAGE); dispose(); }catch(SQLExceptionexc){ } }else{ JOptionPane.showMessageDialog(dialog,”信息不全,无法修改”,”Checkyourinput!",JOptionPane.ERROR_MESSAGE); } } });//-———-—---—--————--——----——-----——--—--—-——————-—————---—-—--—-——--—--—————-——//所属类:BookingDlg//功能:读取订单数据,向系统添加订单button_1=newJButton();button_1。addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){try{ Stringsql="SELECTUnitPriceFROMDiretoryWHEREDid='" +comboBox。getSelectedItem()+”'”; Utilities.rs=Utilities.stmt。executeQuery(sql);//查询当前选择目录刊物的单价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);//寄存订单细节插入语句comboBox。removeItem(comboBox。getSelectedItem());//将已选择目录从下拉选择框中移除(一个订单不能有两个目录相同的订单项) } }catch(SQLExceptionexc){ exc.printStackTrace(); }catch(NumberFormatExceptionexc){ JOptionPane。showMessageDialog(dialog,”错误数字输入”,”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));//执行插入更新语句 } 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.系统测试方案和测试报告5.1测试方案由于系统规模较小,所以没有安排单独的白盒测试,而是相应地将这部分测试归并到系统编码过程中.整个测试过程基于自顶向下测试的组装模块的方法,先对主模块进行基本测试,然后在按深度优先策略逐一将子模块组装到主模块上进行测试,最后再对系统进行全面的整体测试.5。2测试过程(白盒测试过程略(参考代码),以下是系统黑盒测试过程:)5.2。1登陆测试双击可执行文件Newspaper。jar打开应用系统,可见登陆界面:系统界面输入错误用户名和密码,用户无法登陆:登陆错误提示信息输入正确用户名和密码,用户正常登陆。(系统自带用户名和密码有(admin,admin),(santino,santino),(ddt,ddt)…)5.2。2目录管理功能测试添加目录:选择“添加目录”,填写目录信息,“确定”添加目录结果修改目录:“目录管理”,“修改目录",输入待修改目录ID,锁定目录,修改目录,“更新"。修改目录结果删除目录:“目录管理”,“修改目录”,输入待修改目录ID,锁定目录,“删除”删除目录结果5。2。3订户管理功能测试添加订户添加订户结果修改订户:删除订户:(参考“目录管理”,操作基本类似,略)5.2.4订单管理功能测试添加订单:点击“添加订单”按钮,填入有效用户ID,检测用户,输入目录ID和订阅数量、期数,点击“添加订单项"为订单添加订单项,点击“提交订单”可以向系统提交订单.添加订单订单管理:“订单管理”,“订单查询",输入用户ID查询订单查询结果选中订单项,“订单管理”,“打开订单"订单详细内容选择具体订单项可进行相应修改操作:订单项修改5。2.5统计查询测试统计查询:“数据统计”统计查询导出查询数据选择“数据统计”“结果导出”选择路径“保存”图26结果导出结果演示6。完成情况和总结6。1完成情况本系统完成了任务书中要求的所有内容,包括:a订户管理:订户添加、修改、删除;b
目录管理:目录添加、修改、删除;c订单管理:完成订户订阅数据的管理(包括添加、修改、删除);d
订单查询:按订户或者订单号查询订单详细情况;e统计查询:按报刊目录统计各类报刊的订阅数量及金额;另外,系统还具有表单生成功能,能将统计查询结果导出到Excel文件中实现持久保存。6。2总结通过完成本次课程设计,我对数据库这门课程有了更加深刻的理解.在对系统数据库的分析、设计中,碰到很多概念上很模糊的问题,通过查阅相关资料,问题得到了解决,设计工作也顺利进行。另外,通过运用JDBC数据库连接技术,我对java数据库编程技术也有了一定的了解和认识,希望通过以后的学习继续加深这方面知识的掌握.同时对基本的软件设计流程有了一定的了解.7.参考文献[1]马皓.JAVA语言程序设计。北京:清华大学出版社,2006[2]孙家广。软件工程:高等教育出版社,2005[3]王国辉.JAVA全能速查宝典:人民邮电出版社,2021[4]萨师煊等编。数据库系统概论:高等教育出版社,2006C语言程序设计超市管理系统目录课程设计目的要求1.1设计目的。.。。.。.。。.。。.。...。。.。..。。。.。。..。..。。.。。。..。。。31.2设计要求。.....。。。。。。。。。..。。。。...。。。.。。。。..。。。。.。。..。.。31。3设计思路。.。。.。.。。。.。..。。。。。。。。.。。。。。.。。。。。.。。....。.。.3课程设计任务内容2.1课程设计题目。。.。.。.。。..。.........。。。..。。....。。.。。。.。..32.2课程设计任务..。。...。。。..。。。..。。.。..。.。。.。。.。..。..。.。。.42。2.1设计内容。。。。。。。。......。。。......。。.。.。。。...。。......42。2。2各组员任务。..。。...。。。.。.。。。.。....。..。。。.。.。。..。.。。.。4详细设计说明3。1系统模块图。。..。.。..。。.。。。..。.。。.。。。。..。.。..。。。。..。.。。..。...43.1。1。。....。..。.。。.。......。.。.。。。。.。........。。.。。。。。.。...。.。4.。。.。.。..。.。.。...。。。。。.。。。。。。....。..。...。。。。..。。...。..。53.2主要函数定义.....。.。。。.。。.。。.。。。。。...。。..。。.。...。..。.。。.。。53.2.1主函数.。.。。。。。。.。。..。.....。..。.。.。.。。。.。。。。.。..。。....53。2。2其他函数。.。..。。..。..。.。。。.。。。...。。....。..。.。.。。..。.。。。。73.3结构体的建立和文件的使用。.....。。。。..。。。.。..。.。.。.。。。。.。。。。.83。3。1结构体的建立.。。..。。..。..。..。..。。.。.。。。.。.。。。...。..。。。。83。3.2文件的使用。..。。.。。...。。.。....。。..。。.。。..。.。..。。。。...。。.9第四章课程设计心得与体会。...。。..。..。。.。..。..。..。..。.。..。。......10附录·程序源代码参考文献课程设计目的要求设计“超市管理系统”的主要目的是锻炼学生综合运用所学的C语言程序设计知识的能力,独自利用C语言知识编写承训解决实际问题的能力,培养同学严谨的工作态度和良好的程序设计习惯,让同学们认识到必须重视实践环节,多读程序,多编写程序,多上机实践。进一步培养结构化程序设计的思想,加深对高级语言要素和控制结构的理解.通过课程设计的训练,学生能够了解程序设计的基本开发过程,掌握编写、调试和测试C语言程序的基本过程,掌握程序设计的技巧的大体流程.本次程序设计主要侧重于知识的运用,把平时学到的运用到实践中去.1。1设计目标:熟悉c语言的编译连接和运行过程。掌握c语言的数据类型,熟悉整型、实型、字符型变量的定义方式及如何给它们赋值。掌握if语句及switch语句的运用方法及嵌套应用方法。掌握实现循环结构的三种语句while、do-while.、for的使用.掌握函数的定义方法和调用方法。能够采用模块化思想调试程序.指针和文件的使用,结构体的使用1.2设计要求:1.源程序要有适当的注释,使程序容易阅读。2.必须用结构体和文件等数据结构。3。程序的运行结果要求使用文件作备份。4.至少输出一份报表,鼓励自行增加新功能。课程设计任务内容2.1课程设计题目超市管理系统2。2课程设计任务系统为超市管理系统,在此系统当中需要用到许多函数,包括系统函数以及自定义的函数,在这个系统当中,总共分为五个模块:管理员登陆、客户信息管理、商品管理、购物结算、销售结算。2。2。1设计内容本次实习中,主要用到的C语言知识有结构体、指针、文件、数组.层层镶嵌的思路将各个模块要实现的功能环环相扣。其中,在管理员登陆后,进入的是主菜单,在这个环节当中,我们将菜单设计为函数,并将菜单函数放入一个单独的C文件中管理,实现层层进入功能。主菜单函数又分为商品管理、客户管理、购物结算、销售结算等函数的管理,在此当中,主要采用结构体定义客户信息,文件访问等。2。2.2各组员任务为保证设计在规定时间内完成,我们将各模块分工到个人.确保任务有质量有效率的同时锻炼团队的团结协作能力。第三章详细设计说明3。1系统模块图(未完)添加用户添加用户修改用户删除用户查询用户进入超市管理系统主界面销售结算商品管理购物结算客户管理3。2主要函数定义3。2.1主函数主函数主要包含的是登陆界面并且设置登陆界面其中包含:1.登录2.关于我们3.退出系统实现其功能主要用到如下知识:一.其中使用了多种系统自定义的头文件以及用户自定义的头文件如下:#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()函数、aboutUs()函数,login()函数和pcontinue()函数①voidmain(){charchoice='3';//存储判断的选项do{system(”cls”);//清屏命令printf("\n\n************欢迎进入柠檬·5超市管理系统**********\n\n");printf("\n请您选择操作选项:\n\n");printf(”\t\t\t1.登录\n”);printf(”\t\t\t2。关于我们\n”);printf("\t\t\t3.退出系统\n");printf("\n\n*******************************************\n\n”);printf("\n请输入您的选项(1,2,3):");choice=getch();}②voidaboutUs(){system("cls");BreakLine;printf("\t\t版权所有@湖南工学院网络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位数密码”);scanf("%s",upwd);if(strcmp(upwd,realpassword)==0)return1; printf("您好,您的密码错误,请确认后重新输入\n”); printf(”您还有%d次输入机会”,(3-i));} printf("\n系统郑重提示,您不是合法用户,强制退出\n");exit(0);}④在common.c定义voidpcontinue()函数实现按任意键继续功能voidpcontinue(){printf(”\t按任意键继续\n”);getch();}三.清屏语句,Dowhile,宏定义等的使用⑴清屏语句:system(”cls");⑵使用了DoWhile循环实现了在进入关于我们部分时可以再次返回登陆界面。⑶使用了宏定义。在头文件MyParam.h中定义BreakLine#defineBreakLineprintf(”\n\n***************************************************\n\n")⑷使用了switch语句进行了选择并且在语句中使用了多种函数嵌套使功能完整.switch(choice){case'1':if(login()==1){showMainMenu(); }break;case'2’:aboutUs();break; case'0':printf("\n\n系统安全退出\n\n”);exit(0);break;⑸在输入密码部分使用了For循环,实现了在登陆三次密码不正确的情况下强制退出系统:for(i=1;i<4;i++){ BreakLine; printf("请输入您的8位密码:"); scanf(”%s”,upwd);//数组名代表数组的首地址,所以不要&if(strcmp(upwd,realpassword)==0){ return(1);//1表示登录成功 } printf("\n您好,您的密码错误,请确认后重新输入··\n"); printf(”\n您还有第%d次输入机会",(3-i));}printf(”\n系统郑重提示,您不是合法用户,强制退出···\n");pcontinue();exit(0);3.2。2其他函数部分voidshowMainMenu();再在voidshowMainMenu();其中嵌套voidshowGoodsMenu();voidshowCustMenu();voidshowShopMenu();voidshowSaleMenu();在这些函数中也就是商品管理,客户信息管理,购物结算,和销售结算四大功能模块.依照前面的嵌套方法一一实现他的功能。在四大模块菜单中有voidaddGoods();voidfindGoodsAll();voidupdateGoods();voiddelGoods();voidaddcust();voiddelcust();voidupdatecust();voidfindall();voidsaveAll();voidsaveall();实现了客户管理中:添加客户、查询客户、删除客户、修改客户、返回上一级商品管理中:添加商品、查询商品、删除商品、修改商品、返回上一级等部分的功能。在四大模块菜单中有voidshowVIP();voidGoodseffect();voidGoodssave();voidBirthdayperson();voidshowMymenue();voidshopping();实现了购物结算中:商品交易信息、返回上一级销售预算中:显示最具有贡献精神VIP客户排行榜显示最具有影响力的商品排行榜显示库存商品量排行榜当月生日的客户以及返回上一级等功能3.3结构体的建立和文件的使用在实现添加功能时使用了结构体、指针等对现阶段我们来说较难理解的内容。3.3.1结构体语句的使用我们会在程序中用到如下结构体语句:Structdate/日期intyear/年intmonth/月intday/日Structcust/客户信息intno/编号charname[20]姓名charsex/性别intage/年龄structdatebirthday/生日doubleexpenditure/花费chartel/号码Structgoods/商品信息ntnum/商品代码charname[50]/商品名字intsale/商品数量floatprice/商品单价intlacation/商品位置在整个程序中我们会如下用到结构体语句,不同的结构体类型: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);⑵定义函数read_message()打开文件intread_message(){FILE*fp;inti=0;//记数//打开文件if((fp=fopen("cust.dat”,"rb"))==NULL){printf("\n*****暂无任何可读消息,按任意键继续**********\n”);getch();return0;}//循环读取文件中的每一条记录(3)结合循环语句,关闭文件while(!feof(fp)){fread(&cust[i],sizeof(structcust),1,fp);if(cust[i]。no=0){break;}else{i++; }}fclose(fp);returni;}第四章程序设计心得与体会通过为期两周的课程设计,我们不仅复习了课本上所学知识,还通过查阅资料、询问老师同学学到了很多课本上没有的只是,从而启发我们:要想写好程序,在学好课本只是的同时还需要多阅读和专业有关的书记,同时还需要多动脑子,要有缜密的逻辑思维能力和综合应用能力。简而言之,我们要做到三心:编写代码要细心;检查错误要耐心;完成任务要恒心。除此,在学到知识的同时锻炼了我们的团结合作精神,也使得我们小组成员之间有更深的交流.所以,很感谢学校和老师给我们提供这样一个机会。在锻炼自己的同时让自己养成了良好的学习习惯.我希望自己能一直带着这份心态和习惯大步向前。参考文献[1]武爱平卜耀华孙东卫。C语言程序设计[M]。长春:吉林大学出版社。附录柠檬·5supermarket管理系统源代码SourceFilescommon。cvoidpcontinue();voidpcontinue(){printf(”\t按任意键继续\n");getch();}Main。c#include〈stdio。h〉#include〈string.h>//字符串〈先到系统的库找,再到用户库#include〈conio.h〉#include〈stdlib。h〉#include"MyParams。h”#include"common。h"#include"mymenu。h"voidaboutUs();intlogin();charrealpassword[8]=”ningmeng";//系统的真实登录密码voidmain(){charchoice='3';//存储判断的选项do{system(”cls");//清屏命令//打印出程序欢迎界面 printf("\n\n******欢迎进入柠檬·5超市管理系统***\n\n”); printf("\n请您选择操作选项:\n\n”); printf("\t\t\t1。登录\n"); printf("\t\t\t2。关于我们\n"); printf("\t\t\t3.退出系统\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系统安全退出\n\n");exit(0);break;}}while(1);}voidaboutUs(){system(”cls”);BreakLine;printf(”\t\t版权所有@湖南工学院网络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位数密码:");scanf(”%s”,upwd);if(strcmp(upwd,realpassword)==0)return1; printf(”您好,您的密码错误,请确认后重新输入\n”); printf("您还有%d次输入机会",(3-i));}printf(”\n系统郑重提示,您不是合法用户,为系统安全,强制退出\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.购物预算\n”);printf(”\t\t4.销售预算\n");printf(”\t\t5.退出系统\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系统安全退出\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。当月生日的客户\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();}//调用按任意键继续}}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();}//调用按任意键继续}}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;//现在cust。dat文件中总的纪录条数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);}//获取现有文件中客户的总人数intread_message(){ FILE*fp; inti=0;//记数//打开文件if((fp=fopen(”cust。dat”,"rb"))==NULL){printf(”\n******暂无任何可读消息,按任意键继续*****\n");getch();return0;}while(!feof(fp)){fread(&cust[i],sizeof(structcust),1,fp);if(cust[i].no==0){break;}else{i++; } }//循环读取文件中的每一条记录fclose(fp); returni;//存到cust结构中}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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030全球FinFET 3D晶体管行业调研及趋势分析报告
- 2025-2030全球手机支付安全行业调研及趋势分析报告
- 2025区域代理合同模板范本
- 供水工程承包合同
- 音响设备购销合同范本
- 2025搅拌站委托经营合同书修改版
- 建筑物清洁合同
- 2025产权合同 翻译合同
- 国际贸易合同的商定和履行
- 企业管理咨询战略合作合同
- 输变电工程监督检查标准化清单-质监站检查
- 2024-2025学年北京海淀区高二(上)期末生物试卷(含答案)
- 【超星学习通】马克思主义基本原理(南开大学)尔雅章节测试网课答案
- 2024年中国工业涂料行业发展现状、市场前景、投资方向分析报告(智研咨询发布)
- 化工企业重大事故隐患判定标准培训考试卷(后附答案)
- 工伤赔偿授权委托书范例
- 食堂餐具炊具供货服务方案
- 员工安全健康手册
- 2024化工园区危险品运输车辆停车场建设规范
- 自然科学基础(小学教育专业)全套教学课件
- 华为客服制度
评论
0/150
提交评论