C课程设计报告Word文件下载.docx

上传人:b****5 文档编号:19483139 上传时间:2023-01-06 格式:DOCX 页数:31 大小:303.98KB
下载 相关 举报
C课程设计报告Word文件下载.docx_第1页
第1页 / 共31页
C课程设计报告Word文件下载.docx_第2页
第2页 / 共31页
C课程设计报告Word文件下载.docx_第3页
第3页 / 共31页
C课程设计报告Word文件下载.docx_第4页
第4页 / 共31页
C课程设计报告Word文件下载.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

C课程设计报告Word文件下载.docx

《C课程设计报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《C课程设计报告Word文件下载.docx(31页珍藏版)》请在冰豆网上搜索。

C课程设计报告Word文件下载.docx

普通电视机、DVD、带DVD的电视机。

②带DVD的电视机的售价为普通电视机和DVD单价之和的80%。

③要求对所有的库存设备都能按照品名进行显示、查找、增加和删除、保存的功能。

(4)学生选修课系统

①系统以菜单方式工作

②课程信息录入功能(课程信息用文件保存)--输入

③课程信息浏览功能--输出

④查询功能:

(至少一种查询方式)--算法按学分查询按课程性质查询

⑤学生选修课程(可选项)

(5)成绩记录簿

①创建信息链表并以磁盘文件保存;

②读取磁盘文件并显示输出所有学生的成绩;

③按学号或姓名查询成绩;

④添加成绩记录;

⑤修改指定姓名或学号的学生的成绩并可存盘;

⑥显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息。

2、课程设计具体实现

1、仓库管理

(1)总体设计

用例图:

总体设计方案:

首先输入仓库信息接着输入仓库里的物品信息,直接进行合并,并输出合并后的信息,之后选择添加信息或者查询信息。

主要设计原理:

定义两个类,仓库类和物品类,在仓库类里采用动态数组储存物品的方式,在物品类里面重载插入提取运算符,方便输入和输出。

利用重载[]下标运算符来来获得所要查询的物品信息,如果下标越界则抛出异常,下面接受异常。

(2)详细设计

数据录入模块

主要完成功能为:

输入仓库信息,物品信息,合并仓库并输出。

主要使用技术:

重载插入,提取运算符,给指针分配空间。

关键代码如下:

ints;

cout<

<

"

********************************************\n"

;

请输入仓库名字:

cin>

>

Name;

请输入物品种类:

n;

s=cin.rdstate();

//判断输入n的返回流的状态

while(s)

{

cin.clear();

cin.getline(t,80);

cout<

种类非法输入,请重新输入:

cin>

s=cin.rdstate();

}

sum=n;

g=newCGoods[n];

//动态分配空间

for(inti=0;

i<

i++)

g[i];

//重载了插入运算符

for(i=0;

s2.sum;

i++)//两重for循环

flag=1;

for(j=0;

j<

s.sum;

j++)

if(s.g[j].getName()==s2.g[i].getName())//判断两个对象的物品名是否相同

{

flag=0;

s.g[j].setGood(s2.g[i]);

//若相同,让两个数量相加

break;

}

if(flag)

s.g[s.sum++]=s2.g[i];

//若不相同,让物品累加在前面对象的清单里

添加物品信息模块

动态添加到动态数组。

需要再定义一个动态指针数组,并把以前的值付给指针数组之后再添加。

CGoods*gg;

//新定义一个物品类指针

gg=newCGoods[sum+1];

//分配原有物品个数+1大的空间

sum;

gg[i]=g[i];

//把原来的物品类赋值给新开辟的空间

gg[sum++]=gd;

//添加新的物品

delete[]g;

//释放掉原有的空间

g=gg;

//让g指针指向gg

s1.getSum();

i++)

if(go.getName()==s[i+1].getName())//判断物品是否相同

a=0;

s[i+1].setGood(go);

//添加时若物品相同数量相加

break;

if(a)

s.addGood(go);

数据查询模块

主要完成功能:

用for循环来控制查找相同的变量输出,或者直接输出。

名称"

'

\t'

数量"

单价"

endl;

(3)调试及问题解决

主要是动态数组分配空间,刚开始我直接开辟了一个256大的空间,因为不知道物品有多少件所以会形成越界的情况,所以再写一个函数,再定义一个动态指针数组,每次调用开辟新空间,再让以前的数据赋给这个指针数组。

用变量来控制并调试。

2、交通工具选择

顾客人数------>

选择交通工具------>

输出交通类型,根据顾客人数判断抛出异常。

之后再重新选择直至三个交通方式都不是,或者只要有一个可以乘坐结束。

先定义一个抽象类,再定义汽车类,火车类,飞机类继承抽象类,分别实现里面的虚函数,判断是否抛出异常,接受异常并输出。

输入顾客人数,来判断乘坐哪种交通工具

数据输出模块

判断顾客人数是否否和范围,不符合范围抛出异常,接受异常并输出异常。

其中有三个静态变量来控制标记已选过的交通工具。

三个都选过,或者没有异常结束。

使用throw,try,catch三个函数,用基类指针调用子类。

try

请输入你的选项:

a;

intsss;

chartt[20];

sss=cin.rdstate();

//用于控制输入选项的状态

while(sss)

{

cin.clear();

cin.getline(tt,80);

cout<

请重新输入你的选项:

cin>

sss=cin.rdstate();

}

while(a<

1||a>

3)//判断选项是否越界

while(sss)

cin.clear();

cin.getline(tt,80);

cout<

cin>

sss=cin.rdstate();

if(a==1)

v=&

c;

v->

printf();

transport(n);

//抛出异常语句

elseif(a==2)

t;

elseif(a==3)

p;

catch(char*message)//接受异常

{

endl<

message<

system("

pause"

);

if(t.e2==2&

&

c.e1==1&

p.e3==3)//用来判断是否全选过一边

system("

cls"

//清屏

三种交通工具都超载!

请另想办法吧!

return;

by(n);

//调用重新选则交通工具函数

主要问题就是判断选项的输入是否越界等。

后来查书发现可以控制的语句。

控制不了若三种都不行怎么办,最后设置了三个静态变量来控制。

3、公司库存管理系统

主页面------>

菜单------>

显示包括录入和输出。

由于有三个物品类型所以要分别输入,之后的查询,删除等方式都要分情况选择。

实行完这些模块后会选择返回主页面和结束程序。

注意:

输入时第三种物品是前两种的价钱80%,所以要加以判断。

注意对应文件对应的对象,查询要从文件读数据,删除还要再写进去。

注意继承,由于函数相同所以要判断,其中还有静态变量来控制每个类型的物品数,用来之后的删除。

登陆模块

当用户开始使用本系统,进入登陆模块。

屏幕显示提示,用户可根据需要选择相应功能。

具体如下:

1、进入菜单2、结束程序。

用户可根据需要选择相应功能。

进入菜单之后又会出现登录模块,1、存入物品2、显示库存3、查找物品4、增加物品5、删除物品6、返回主页面,根据自己的意愿选择相应的功能。

清屏实现页面的转换,控制选项的越界和状态。

system("

***********************欢迎进入公司库存管理系统!

***********************"

**"

*1.存入物品*"

*2.显示库存*"

*3.查找物品*"

*4.增加物品*"

*5.删除物品*"

*6.返回主页面*"

************************************************************************"

cin>

n=pand(n);

//自己定义的判断选项状态的函数

刚进入就分四个选项,三个是要输入的种类,还有一个是返回主页面。

把信息分别录入不同种类的不同文件中,其中物品品名已经规定直接输入选项。

文件的写入,还有一些数据控制同上。

rrrface();

//物品品名显示菜单

请按照品名(1~6以外结束)单价输入,例:

(TV,DVD)1216555,(TVDVD)1222"

while

(1)//用选项来代替课程性质,但最后写入文件类型是string类

请输入物品:

type;

type=pand(type);

if(type<

1||type>

6)

if(type==1)

out<

先科"

elseif(type==2)

先锋"

elseif(type==3)

谷天"

elseif(type==4)

索尼"

elseif(type==5)

飞利浦"

else

万利达"

price>

num;

查询、删除、添加模块

查询,删除,添加对应信息的物品,物品品名可用选项代替,删除后要把删除后的代码重新读入文件中。

文件的读和写。

查询:

while(in>

t>

p>

n)

if(t1==t&

p==p1)//查询必须品名和单价相等

所查询的TV有:

品名:

t<

单价:

p<

数量:

n<

in.close();

删除:

while(in>

{

if(t!

=t1||p!

=p1)

eee"

tt[i]=t;

pp[i]=p;

nn[i]=n;

i++;

sum1--;

ofstreamout("

TVGoods.txt"

if(!

out)

judge();

for(intj=0;

i;

j++)//最后重新写入文件

out<

tt[j]<

'

pp[j]<

nn[j]<

添加:

while

(1)

请添加输入物品:

type=pand(type);

if(type<

0||type>

break;

if(type==1)

out<

elseif(type==2)

elseif(type==3)

elseif(type==4)

elseif(type==5)

else

price;

删除时会系统会崩,原因是下表越界,由于程序太长,所以采用断点调试的方法查找错误。

还有就是控制输入格式。

4、学生选修课系统

录入,输出,查询,学生选修,分别实现各个模块。

学生选修课程要先分学生登陆,注册。

登陆之后再进行选课或者查询选课纪录,之后再有两个选项返回主页面,和结束程序。

注意对应文件对应的对象,查询要从文件读数据。

学生选修课记录课程需要学生登录,注册。

注册密码需要把密码学生信息写到一个文件里,登录时需要从中读出相应学生密码并比较。

之后进入后可以选课或者已经选过课直接查看选课记录。

进入菜单之后又会出现登录模块,1、录入课程信息2、输出课程信息3、按学分查询4、按课程性质查询5、学生选修课程。

根据用户的身份选则不同的选项。

进入学生选修课程后会有1、登陆2、注册3、返回页面。

*********************欢迎进入学生选修课程系统!

*************************"

*1.录入课程信息*"

*2.输出课程信息*"

*3.查询课程信息--学分*"

*4.查询课程信息--课程性质*"

*5.学生选修课程*"

数据录入和输出模块:

把输入的数据写入文件里面,把从文件里面的数据读出来。

课程性质用选项来代替。

录入:

cout<

课程(编号以xxx结束):

id;

if(id=="

xxx"

title>

nature>

period>

teachperiod[0]>

credit>

term;

teachperiod[1]=period-teachperiod[0];

while(nature>

5||nature<

1)

课程性质不存在,请重新输入!

id>

teachperiod[1]=period-teachperiod[0];

while(credit>

4||credit<

课程学分越界,请重新输入!

id<

title<

if(nature==1)

社会"

elseif(nature==2)

技术"

elseif(nature==3)

跨科"

elseif(nature==4)

数学"

elseif(nature==5)

文明"

period<

teachperiod[0]<

teachperiod[1]<

credit<

term<

输出:

in.unsetf(ios:

:

skipws);

while(!

in.eof())//用字符一个一个读出来

in>

ch;

if(ch=='

学生选修课模块

注册,登录,选课和查询选课记录。

隐藏密码,文件读写。

注册:

***********************欢迎注册!

************************"

请输入学号:

请输入姓名:

name;

请输入密码:

6;

passage[i];

passage[6]='

\0'

***********************注册成功!

ofstreamout1("

student.txt"

ios:

app);

out1<

num<

name<

passage<

out1.close();

登录:

passage[i]=getch();

//隐藏密码

putchar('

*'

//用*代替输入

while(inn>

n3>

na3)

inn>

i1>

n1>

p1>

t1>

t2>

c1>

te;

if(n3==num&

na3==name)

cout<

i1<

\t"

n1<

p1<

t1<

t2<

c1<

te<

inn.close();

查询模块

查找相应的物品信息

***************学分类型*****************"

1.1分2.2分3.3分4.4分"

****************************************"

请输入选项:

if(a==1)

***********************课程信息(学分为1)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1