1、C 课程设计报告C+课程设计报告 姓名:学号:04 班级:软件152班 指导老师: 2016 年 6 月 25日课程设计报告一、课程设计目的及要求1.设计目的1提高和加强学生的计算机应用与软件开发能力,使学生由初学者向专业的程序员过渡。2培养学生独立分析问题、解决问题、查阅资料以及自学能力,以适应计算机产业日新月异发展的形势。3学习和掌握C+程序设计方法以及上机调试技巧,为今后学习其它专业课程打好基础。仓库管理系统目的:理清头绪,开始入手。交通工具选择系统目的:考察我们的抛出异常解决问题能力。公司库存管理系统目的:考察继承,基类和子类的关系。学生选修课系统目的:主要是文件的读写。成绩记录簿目的
2、:练习链表功能,和文件与链表的关系。2.设计要求(1)仓库管理私有成员为,仓库名称,仓库中物品(名称,数量,单价),采用指针存储动态数组方式存储学生信息。重载“+”操作,表示两个仓库合并,仓库名称由两个仓库名称连接到一起,其中新仓库为为两个仓库的所有物品,且同一种物品能够合并。重载操作直接获得第i个同学记录。 该类的对象不能拷贝构造及赋值(2)交通工具选择 设计抽象类:交通工具类。 派生类:汽车类、火车类、飞机类。 设计函数:获得交通类型名称函数,函数可以根据不同交通工具类型输出不同的运输方式获得交通类型名称。设计运输函数,参数为运输人数,在不同派生类实现该函数,要求:汽车40;飞机200;火
3、车2000;在不同类中如果参数超出范围则抛出字符串异常。(3)公司库存管理系统某公司现有以下设备:普通电视机、DVD、带DVD的电视机。带DVD的电视机的售价为普通电视机和DVD单价之和的80%。要求对所有的库存设备都能按照品名进行显示、查找、增加和删除、保存的功能。(4)学生选修课系统系统以菜单方式工作课程信息录入功能(课程信息用文件保存)输入课程信息浏览功能输出查询功能:(至少一种查询方式)算法按学分查询按课程性质查询学生选修课程(可选项)(5)成绩记录簿创建信息链表并以磁盘文件保存;读取磁盘文件并显示输出所有学生的成绩;按学号或姓名查询成绩;添加成绩记录;修改指定姓名或学号的学生的成绩并
4、可存盘;显示输出60分以下、6079、8089、90分以上各分数段的学生信息。2、课程设计具体实现1、仓库管理(1)总体设计用例图:总体设计方案:首先输入仓库信息接着输入仓库里的物品信息,直接进行合并,并输出合并后的信息,之后选择添加信息或者查询信息。主要设计原理:定义两个类,仓库类和物品类,在仓库类里采用动态数组储存物品的方式,在物品类里面重载插入提取运算符,方便输入和输出。利用重载下标运算符来来获得所要查询的物品信息,如果下标越界则抛出异常,下面接受异常。(2)详细设计数据录入模块主要完成功能为:输入仓库信息,物品信息,合并仓库并输出。主要使用技术:重载插入,提取运算符,给指针分配空间。关
5、键代码如下: int s; cout*n; coutName; coutn; s=cin.rdstate(); /判断输入n的返回流的状态 while(s) cin.clear(); cin.getline(t,80); coutn; s=cin.rdstate(); sum=n; g=new CGoodsn; /动态分配空间 for(int i=0;igi; /重载了插入运算符 for(i=0;is2.sum;i+) /两重for循环 flag=1; for(j=0;js.sum;j+) if(s.gj.getName()=s2.gi.getName() /判断两个对象的物品名是否相同 fl
6、ag=0; s.gj.setGood(s2.gi); /若相同,让两个数量相加 break; if(flag) s.gs.sum+=s2.gi; /若不相同,让物品累加在前面对象的清单里添加物品信息模块主要完成功能为:动态添加到动态数组。主要使用技术:需要再定义一个动态指针数组,并把以前的值付给指针数组之后再添加。关键代码如下: CGoods *gg; /新定义一个物品类指针 gg=new CGoodssum+1; /分配原有物品个数+1大的空间 for(i=0;isum;i+) ggi=gi; /把原来的物品类赋值给新开辟的空间 ggsum+=gd; /添加新的物品 delete g; /释
7、放掉原有的空间 g=gg; /让g指针指向gg for(int i=0;is1.getSum();i+) if(go.getName()=si+1.getName() /判断物品是否相同 a=0; si+1.setGood(go); /添加时若物品相同数量相加 break; if(a) s.addGood(go);数据查询模块主要完成功能:用for循环来控制查找相同的变量输出,或者直接输出。关键代码如下: cout名称t数量t单价endl; for(int i=0;isum;i+) cout选择交通工具-输出交通类型,根据顾客人数判断抛出异常。之后再重新选择直至三个交通方式都不是,或者只要有一
8、个可以乘坐结束。主要设计原理:先定义一个抽象类,再定义汽车类,火车类,飞机类继承抽象类,分别实现里面的虚函数,判断是否抛出异常,接受异常并输出。(2)详细设计数据录入模块主要完成功能为:输入顾客人数,来判断乘坐哪种交通工具数据输出模块主要完成功能为:判断顾客人数是否否和范围,不符合范围抛出异常,接受异常并输出异常。其中有三个静态变量来控制标记已选过的交通工具。三个都选过,或者没有异常结束。主要使用技术:使用throw,try,catch三个函数,用基类指针调用子类。关键代码如下: try couta; int sss; char tt20; sss=cin.rdstate(); /用于控制输入
9、选项的状态 while(sss) cin.clear(); cin.getline(tt,80); couta; sss=cin.rdstate(); while(a3) /判断选项是否越界 couta; sss=cin.rdstate(); while(sss) cin.clear(); cin.getline(tt,80); couta; sss=cin.rdstate(); if(a=1) v=&c; v-printf(); v-transport(n); /抛出异常语句 else if(a=2) v=&t; v-printf(); v-transport(n); /抛出异常语句 els
10、e if(a=3) v=&p; v-printf(); v-transport(n); /抛出异常语句 catch(char *message) /接受异常 coutendlendlendl; coutmessageendl; system(pause); if(t.e2=2&c.e1=1&p.e3=3) /用来判断是否全选过一边 system(cls); /清屏 coutendlendlendlendl; cout三种交通工具都超载!请另想办法吧!菜单-显示包括录入和输出。由于有三个物品类型所以要分别输入,之后的查询,删除等方式都要分情况选择。实行完这些模块后会选择返回主页面和结束程序。注意
11、:输入时第三种物品是前两种的价钱80%,所以要加以判断。主要设计原理:注意对应文件对应的对象,查询要从文件读数据,删除还要再写进去。注意继承,由于函数相同所以要判断,其中还有静态变量来控制每个类型的物品数,用来之后的删除。(2)详细设计登陆模块主要完成功能为:当用户开始使用本系统,进入登陆模块。屏幕显示提示,用户可根据需要选择相应功能。具体如下:1、进入菜单2、结束程序。用户可根据需要选择相应功能。进入菜单之后又会出现登录模块,1、存入物品2、显示库存3、查找物品4、增加物品5、删除物品6、返回主页面,根据自己的意愿选择相应的功能。主要使用技术:清屏实现页面的转换,控制选项的越界和状态。关键代
12、码如下:system(cls); /清屏 coutendlendlendl; cout *欢迎进入公司库存管理系统!*endl; cout * *endl; cout * 1.存入物品 *endl; cout * *endl; cout * 2.显示库存 *endl; cout * *endl; cout * 3.查找物品 *endl; cout * *endl; cout * 4.增加物品 *endl; cout * *endl; cout * 5.删除物品 *endl; cout * *endl; cout * 6.返回主页面 *endl; cout * *endl; cout *n;n=
13、pand(n); /自己定义的判断选项状态的函数数据录入模块主要完成功能为:刚进入就分四个选项,三个是要输入的种类,还有一个是返回主页面。把信息分别录入不同种类的不同文件中,其中物品品名已经规定直接输入选项。主要使用技术:文件的写入,还有一些数据控制同上。关键代码如下: rrrface(); /物品品名显示菜单 cout请按照品名(16以外结束) 单价输入,例:(TV,DVD)1 216 555 ,(TVDVD)1 222endl; while(1) /用选项来代替课程性质,但最后写入文件类型是string类 couttype; type=pand(type); if(type6) break
14、; if(type=1) out先科; else if(type=2) out先锋; else if(type=3) out谷天; else if(type=4) out索尼; else if(type=5) out飞利浦; else outpricenum;查询、删除、添加模块主要完成功能为:查询,删除,添加对应信息的物品,物品品名可用选项代替,删除后要把删除后的代码重新读入文件中。主要使用技术:文件的读和写。关键代码如下:查询:while(intpn) if(t1=t&p=p1) /查询必须品名和单价相等 cout所查询的TV有:品名:t单价:p数量:ntpn) if(t!=t1|p!=p
15、1) couteeeendl; tti=t; ppi=p; nni=n; i+; in.close(); sum1-; ofstream out(TVGoods.txt); if(!out) judge(); for(int j=0;ji;j+) /最后重新写入文件 outttj ppj nnjendl; 添加:while(1) couttype; type=pand(type); if(type6) break; if(type=1) out先科; else if(type=2) out先锋; else if(type=3) out谷天; else if(type=4) out索尼; els
16、e if(type=5) out飞利浦; else outprice;(3)调试及问题解决删除时会系统会崩,原因是下表越界,由于程序太长,所以采用断点调试的方法查找错误。还有就是控制输入格式。4、学生选修课系统(1)总体设计用例图:总体设计方案:主页面-菜单-录入,输出,查询,学生选修,分别实现各个模块。学生选修课程要先分学生登陆,注册。登陆之后再进行选课或者查询选课纪录,之后再有两个选项返回主页面,和结束程序。主要设计原理:注意对应文件对应的对象,查询要从文件读数据。学生选修课记录课程需要学生登录,注册。注册密码需要把密码学生信息写到一个文件里,登录时需要从中读出相应学生密码并比较。之后进入
17、后可以选课或者已经选过课直接查看选课记录。(2)详细设计登陆模块主要完成功能为:当用户开始使用本系统,进入登陆模块。屏幕显示提示,用户可根据需要选择相应功能。具体如下:1、进入菜单2、结束程序。用户可根据需要选择相应功能。进入菜单之后又会出现登录模块,1、录入课程信息2、输出课程信息3、按学分查询4、按课程性质查询5、学生选修课程。根据用户的身份选则不同的选项。进入学生选修课程后会有1、登陆2、注册3、返回页面。关键代码如下:system(cls); coutendlendlendl; cout *欢迎进入学生选修课程系统!*endl; cout * *endl; cout * 1.录入课程信
18、息 *endl; cout * *endl; cout * 2.输出课程信息 *endl; cout * *endl; cout * 3.查询课程信息-学分 *endl; cout * *endl; cout * 4.查询课程信息-课程性质 *endl; cout * *endl; cout * 5.学生选修课程 *endl; cout * *endl; cout * 6.返回主页面 *endl; cout * *endl; cout *endl;数据录入和输出模块:主要完成功能为:把输入的数据写入文件里面,把从文件里面的数据读出来。注意:课程性质用选项来代替。主要使用技术:文件的读和写。关键
19、代码如下: 录入:coutid; if(id=xxx) break; cintitlenatureperiodteachperiod0creditterm; teachperiod1=period-teachperiod0; while(nature5|nature1) cout课程性质不存在,请重新输入!endl; coutidtitlenatureperiodteachperiod0creditterm; teachperiod1=period-teachperiod0; while(credit4|credit1) cout课程学分越界,请重新输入!endl; coutidtitlena
20、tureperiodteachperiod0creditterm; teachperiod1=period-teachperiod0; outid title ; if(nature=1) out社会; else if(nature=2) out技术; else if(nature=3) out跨科; else if(nature=4) out数学; else if(nature=5) out文明; out period teachperiod0 teachperiod1 credit termch; coutch; if(ch= ) coutt; in.close(); 学生选修课模块主要完
21、成功能为:注册,登录,选课和查询选课记录。主要使用技术:隐藏密码,文件读写。关键代码如下: 注册:coutendlendlendlendl; cout *欢迎注册!*endl; coutnum; coutname; cout 请输入密码:; for(int i=0;ipassagei; passage6=0; cout *注册成功!*endl; ofstream out1(student.txt,ios:app); out1num name passageendl; out1.close(); 登录: for(int i=0;in3na3) inni1tn1p1t1t2c1te; if(n3=num&na3=name) couti1tttn1tp1tt1tt2tc1tteendl; inn.close();查询模块主要完成功能为:查找相应的物品信息关键代码如下:system(cls); cout *学分类型*endlendl; cout 1.1分 2.2分 3.3分 4.4分 endlendl; cout *endl; couta;if(a=1) cout*课程信息(学分为1)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1