1、青岛理工大学C +面向对象课程设计报告院 ( 系 ): 计 算 机 工 程 学 院专 业 : 软 件 工 程学 生 姓 名 : * * *班 级 * * * *学 号 : 20 13 0 7 * * *题 目 : 高 校 水 电 费 管 理 系 统 设 计起 迄 日 期 : 2 0 1 5 . 6 . 2 9 2 0 1 5 . 7 . 10设 计 地 点 : 计 算 机 学 院 机 房指导教师 : 翟 正 利丁 凡完 成 日 期 :2 01 5 年 7 月1 0 日C+面向对象课程设计任务书题目 9“高校水电费管理系统设计”1、问题描述住 宿 学 生 信 息 包 括 : 学 号 、 姓 名
2、、 性 别 、 年 龄 、 班 级 、 用 电 量 、 用 水 量 等 信 息 。 教 工 信 息 包 括 职 工 号 、 姓 名 、 性 别 、 年 龄 、 工 作 部 门 、 用 电 量 、 用 水 量 等 信 息 。 能 计 算 出 学 生 和 教 工 每 月 所 要 交 的 电 费 和 水 费 。定 义 一 个 人 员 类 , 实 现 学 生 和 教 工 共 同 的 信 息 和 行 为 。2、功能要求( 1 ) 添 加 功 能 : 程 序 能 够 添 加 不 同 学 生 和 教 工 的 记 录 , 提 供 选 择 界 面 供 用 户 选 择 所 要 添 加 的 类 别 ,要 求 编 号
3、 号 要 唯 一 ,如 果 添 加 了 重 复 编 号 的 记 录 时 ,则 提 示 数 据 添 加 重 复 并 取 消 添 加 。( 2 ) 查 询 功 能 : 可 根 据 姓 名 、 用 水 量 、 用 电 量 信 息 对 已 添 加 的 学 生 或 教 工 记 录 进 行 查 询 , 如 果 未 找 到 , 给 出 相 应 的 提 示 信 息 , 如 果 找 到 , 则 显 示 相 应 的 记 录 信 息 。( 3 ) 显 示 功 能 : 可 显 示 当 前 系 统 中 所 有 学 生 和 教 工 的 记 录 , 每 条 记 录 占 据 一 行 。( 4 ) 编 辑 功 能 : 可 根
4、据 查 询 结 果 对 相 应 的 记 录 进 行 修 改 , 修 改 时 注 意 编 号 的 唯 一 性 。( 5 ) 删 除 功 能 : 主 要 实 现 对 已 添 加 的 学 生 或 教 工 记 录 进 行 删 除 。 如 果 当 前 系 统 中 没 有 相 应 的 记 录 , 则 提 示 “ 记 录 为 空 !” 并 返 回 操 作 。( 6 ) 统 计 功 能 : 能 根 据 多 种 参 数 进 行 统 计 。 能 统 计 学 生 和 教 工 的 用 水 用 电 量 、 所 要 交 纳 的 电 费 和 水 费 、 未 交 纳 水 电 费 的 人 员 信 息 等 。( 7 ) 保 存
5、功 能 : 可 将 当 前 系 统 中 各 类 记 录 存 入 文 件 中 , 存 入 方 式 任 意 。( 8 ) 读 取 功 能 : 可 将 保 存 在 文 件 中 的 信 息 读 入 到 当 前 系 统 中 , 供 用 户 进 行 使 用 。( 9 ) 计 算 电 费 和 水 费 。 学 生 每 月 都 有 一 定 额 度 的 水 电 是 免 费 使 用 的 , 超 过 的 部 分 需 要 交 费 。3、问题的解决方案根 据 系 统 功 能 要 求 , 可 以 将 问 题 解 决 分 为 以 下 步 骤 :( 1 ) 应 用 系 统 分 析 , 建 立 该 系 统 的 功 能 模 块 框
6、 图 以 及 界 面 的 组 织 和 设 计 ;( 2 ) 分 析 系 统 中 的 各 个 实 体 及 它 们 之 间 的 关 系 ;( 3 ) 根 据 问 题 描 述 , 设 计 系 统 的 类 层 次 ;( 4 ) 完 成 类 层 次 中 各 个 类 的 描 述 ;( 5 ) 完 成 类 中 各 个 成 员 函 数 的 定 义 ;( 6 ) 完 成 系 统 的 应 用 模 块 ;( 7 ) 功 能 调 试 ;( 8 ) 完 成 系 统 总 结 报 告 。目录一、 需求分析11. 1 选做此课题或项的目的11. 2 程序所实现功能1二、内容设计12. 1 模块图12. 2 流程图22. 3
7、关键代码9三、 调试分析173. 1 实际完成情况的说明173. 2 程序的性能分析173. 3 上机过程中出现的问题及其解决方案173. 4 程序中可以改进的地方说明183. 5 程序中可以扩充的功能及设计实现构想18四、 用户手册16五、 设计总结30六、 参考文献31七、 附录31课程设计报告内容一、需求分析 1.选做此课题或项的目的此 课 题 为 高 校 水 电 费 管 理 系 统 ,选 做 此 课 题 是 想 对 自 己 这 学 期 的 C +学 到 的 知 识 进 行 一次 全 面 的 练 习 ,一 方 面 用 实 践 巩 固 已 掌 握 的 知 识 点 ,另 一 方 面 也 能
8、从 中 发 现 自 己 的 不 足 。此 课 题 是 设 计 一 个 系 统 实 现 对 学 生 和 教 工 信 息 的 添 加 、查 询 、显 示 、编 辑 、删 除 、保 存 和 读 取 功 能 。 其 中 包 括 三 个 类 : Preson、 S tudet 和 Teacher 的 设 计 , 还 有 功 能 函 数 的 编 写 。 由 于 考 虑 到 数 组 的 溢 出 问 题 ,所 以 我 选 择 了 使 用 链 表 ,而 对 于 指 针 ,我 一 直 觉 得 自 己 掌 握 的 不 是 太 熟 练 ,所 以 通 过 此 次 课 程 设 计 ,也 让 我 更 加 熟 悉 了 指 针
9、 的 应 用 ,这 对 我 来 说 是 此 次 课 程 设 计 的 很 大 收 获 。2.程序所实现的功能( 1 ) 添 加 功 能 : 程 序 能 够 添 加 不 同 学 生 和 教 工 的 记 录 , 提 供 选 择 界 面 供 用 户 选 择 所 要 添 加 的 类 别 ,要 求 编 号 号 要 唯 一 ,如 果 添 加 了 重 复 编 号 的 记 录 时 ,则 提 示 数 据 添 加 重 复 并 取 消 添 加 。( 2 ) 查 询 功 能 : 可 根 据 姓 名 、 用 水 量 、 用 电 量 信 息 对 已 添 加 的 学 生 或 教 工 记 录 进 行 查 询 , 如 果 未 找
10、 到 , 给 出 相 应 的 提 示 信 息 , 如 果 找 到 , 则 显 示 相 应 的 记 录 信 息 。( 3 ) 显 示 功 能 : 可 显 示 当 前 系 统 中 所 有 学 生 和 教 工 的 记 录 , 每 条 记 录 占 据 一 行 。 ( 4 ) 编 辑 功 能 : 可 根 据 查 询 结 果 对 相 应 的 记 录 进 行 修 改 , 修 改 时 注 意 编 号 的 唯 一 性 。( 5 ) 删 除 功 能 : 主 要 实 现 对 已 添 加 的 学 生 或 教 工 记 录 进 行 删 除 。 如 果 当 前 系 统 中 没 有 相 应 的 记 录 , 则 提 示 “ 记
11、 录 为 空 !” 并 返 回 操 作 。( 6 ) 统 计 功 能 : 能 根 据 多 种 参 数 进 行 统 计 。 能 统 计 学 生 和 教 工 的 用 水 用 电 量 、 所 要 交 纳 的 电 费 和 水 费 、 未 交 纳 水 电 费 的 人 员 信 息 等 。( 7 ) 保 存 功 能 : 可 将 当 前 系 统 中 各 类 记 录 存 入 文 件 中 , 存 入 方 式 任 意 。( 8 ) 读 取 功 能 : 可 将 保 存 在 文 件 中 的 信 息 读 入 到 当 前 系 统 中 , 供 用 户 进 行 使 用 。( 9 ) 计 算 电 费 和 水 费 。 学 生 每
12、月 都 有 一 定 额 度 水 电 是 免 费 使 用 的 , 超 过 的 部 分 需 要 交 费 。功 能 模 块 图 :教 工 信 息 管 理添 加二、内容设计 1.根据所选题目,给出模块图高 校 水 电 费 管 理 系 统学 生 信 息 管 理退 出 系 统查显编删统保读退询示辑除计存取出图 2 .1 功 能 模 块12.画出主程序及其主要模块的流程图Person+no: int+name: string+ag e : int+w a ter: double+pow er: double+w a termoney : double+pow erm oney : double+realw
13、a termoney : double+realpow ermoney : double+Person(n=0 ,na=,s=,a=0 ,w =0 .0 ,p=0 .0 ,w m=0 .0 ,pm =0 . 0 )S tudent+C lass: string+ * nex t: S tudent+S tudent( n=0 ,C l=,na=,s=,a=0 ,w =0 .0 ,p=0 .0 ,w m=0 .0 ,pm=0 .0)+ disp()+append( S tudent* p,S tudent* q)+find( S tudent* p)+show ( S tudent* p)+vo
14、id edit( S tudent* p)+del( S tudent* p)+count( S tudent* p)+save( S tudent* p)+read( S tudent* q)Teacher+part: string+ * nex t: S tudent+Teacher( n=0 ,C l=,na=,s=,a=0 ,w =0 .0 ,p=0 .0 ,w m=0 .0 ,pm =0 .0)+ disp()+append( Teacher* p,Teacher* q)+find( Teacher* p)+show ( Teacher* p)+void edit( Teacher*
15、 p)+del( Teacher* p)+count( Teacher* p)+save( Teacher* p)+read(Teacher* q)图 2 .2 类 图2开 始break;w hile( choice)YNc inchoicechoice=1choice=2choice=0defaultstudent_ menu();break;teacher_ menu();break;break;欢 迎 下 次 使 用 !int choice=1结 束图 2 .3 主 函 数 main() 流 程 图3开 始int n=1de l ( ) ; bre a k ;c ount(); bre
16、a k ;Yw hile( n)Ycinnn=1n=2n=3n=4n=5n=6n=7n=8n=0a ppend();find();show ( ) ;edit();brea k ;brea k ;brea k ;brea k ;退出管理系统head1 -read( head1 )sa ve ( ) bre a k ;rea d(); brea k ;bre a k ;结束图 2 .4 S tudent_ menu() 函 数 流 程 图 ( (Teacher_m enu() 与 其 相 同 )4开始Np-nex tYYp-no=q-noNp=p-nex tp?YN添 加 重 复pre=p;p=
17、p-nex t;p-nonop=NU L LNpre=pp=pre-nex tpre-nex t=q; q-nex t=p;pre-nex t=q; q-nex t=p;结 束图 2 .5 添 加 功 能5开 始p=p-nex t;c inchoicechoice=1choice=2choice=3default按 用 水 量 查 找break;按 用 电 量 查 找break;按 姓 名 查 找 break;break;结 束图 2 .6 查 询 功 能! pNYpNY记 录 为 空 !p-disp();p=p-nex t;开 始p=p-nex t结 束图 2 .7 显 示 功 能6开 始编
18、 号 np=p-nex tYp=p-nex tNp& & p-no! =nN! pY输 入 修 改 后 的 信 息p-disp()结 束图 2 .8 编 辑 功 能开 始编 号 npre=p;p=p-nex t;YN! pNw hile( p)YY记 录 为 空p-no=nNpre-nex t=p-nex t;pre=p;p=p-nex t;结 束图 2 .9 删 除 功 能7开 始cinchoicechoice=1choice=2choice=3defaultp=p-nex t统 计 未 缴 纳 水 费 人 员 break;统 计 电 费 水 费break;break;统 计 用 水 用 电
19、 量break;结 束图 2 .10 统 计 功 能开 始NYout.close()! outNYP?保 存 失 败输 出 信 息 到 文 件结 束p=p-nex t;ofstream out(S tudent.tx t);p=p-nex t图 2 .11 保 存 功 能8Yin.close()q-nex t=p;p-nex t=NU L L ; q=p;! inN读 取 信 息 不 空YN文 件 读取 失 败i fstrea m in(S tudent.tx t) ;开 始结 束3.编写程序关键代码图 2 .12 读 取 功 能添 加 功 能 代 码 :void S tudent: appe
20、nd( S tudent * p,S tudent * q)/ 添 加 记 录S tudent* pre=p; w hile( p-nex t)p=p-nex t;i f( p-no=q-no)/ 判 断 所 添 加 记 录 是 否 重 复cout记 录 重 复 ,添 加 失 败 ! nex t; w hile( p)if( q-nono)/ 按 编 号 递 增 的 顺 序 添 加 记 录pre-nex t=q; q-nex t=p; break;pre=p;9p=p-nex t;i f( p=NU L L)pre-nex t=q; q-nex t=p;cout该 学 生 记 录 添 加 成
21、功 ! nex t; int choice; string s; double w ; double po;coutchoice;cout-endl;cout编 号 t班 级 t姓 名 t性 别 t年 龄 t 用 水 量 t交 水 费 t用 电 量 t交 电 费 endlendl;sw itch( choice)case 1 : couts;/ 按 姓 名 查 找 w hile( p! =NU L L)i f( p-name=s)p-disp();/ 将 所 有 符 合 的 记 录 输 出 flag =1 ;p=p-nex t;i f( ! flag )cout没 有 找 到 该 记 录 !
22、endl; return;cout-endl;break;case 2 : coutw ;/ 按 用 水 量 查 询 w hile( p! =NU L L )10i f( p-w a ter=w )p-disp();/ 将 所 有 符 合 的 记 录 输 出 flag =1 ;p=p-nex t;i f( ! flag )cout没 有 找 到 该 记 录 ! endl; return;cout-endl;break;case 3 : coutpo;/ 按 用 电 量 查 询 w hile( p! =NU L L)if( p-pow er=po)p-disp();/ 将 所 有 符 合 的 记
23、 录 输 出 flag =1 ;p=p-nex t;i f( ! flag )cout没 有 找 到 该 记 录 ! endl; return;cout-endl;break;default : cout无 此 项 , 输 入 错 误 ! nex t; i f( ! p)cout记 录 为 空 ! endl; return;cout-endl;cout编 号 t班 级 t姓 名 t性 别 t年 龄 t 用 水 量 t交 水 费 t用 电 量 t交 电 费 endldisp(); p=p-nex t;cout-endl;编 辑 功 能 代 码 :void S tudent: edit( S tu
24、dent* p)/ 编 辑 某 学 生 记 录string na; string s; int a ; string C l ;double w,p1 ;int c 1 ,c 2 ,c 3 ,c 4 ,c 5 ,c 6 ,c 7 ,c 8 ;coutn; p=p-nex t;w hile( p! =NU L L& & p-no! =n)p=p-nex t;i f( p=NU L L)cout不 存 在 该 学 生 记 录 ! no=n)coutc 1 ;i f( c 1 =1 )coutC l; p-C lass=C l;coutc 2 ;i f( c 2 =1 )coutna; p-nam
25、e=na;12coutc 3 ;i f( c 3 =1 )couts; p-sex=s;coutc 6 ;i f( c 6 =1 )couta; p-ag e=a;coutc 4 ;i f( c 4 =1 )coutw ; p-w a ter=w ;p-w a term oney =0 .5 * ( p-w a ter-10 ) ;coutc 5 ;i f( c 5 =1 )coutp1 ; p-pow er=p1 ;p-pow ermoney =0 .5 * ( p1 -10 ) ;coutc 7 ;i f( c 7 =1 )coutc 7 ;if( c 7 =1 )p-realw a te
26、rmoney =p-w a te rm oney ;elsep-realw a termoney =0 .0 ;coutc 8 ;13i f( c 8 =1 )coutc 8 ;if( c 8 =1 )p-realpow ermoney =p-pow ermoney ;elsep-realpow ermoney =0 .0 ;cout修 改 后 的 结 果 为 : endl;cout编 号 t班 级 t姓 名 t性 别 t年 龄 t 用 水 量 t交 水 费 t用 电 量 t交 电 费 endldisp();删 除 功 能 代 码 :void S tudent: del( S tudent *
27、 p)/ 删 除 某 学 生 记 录S tudent * pre=p; int n;p=p-nex t; i f( ! p)cout记 录 为 空 , 无 法 删 除 ! endl; return;coutn; w hile( p)if( p-no=n)pre-nex t=p-nex t;cout成 功 删 除 编 号 为 n的 教 工 记 录 ! nex t;cout所 要 删 除 的 学 生 记 录 不 存 在 ! nex t;double w =0 .0 ,p1 =0 .0 ,w m =0 .0 ,pm=0 .0 ,w m 1 =0 .0 ,pm 1 =0 .0 ; int choice
28、,count1 =0 ,count2 =0 ;coutchoice;sw itch( choice)case 1 : w hile( p! =NU L L)w +=p-w a ter; p1 +=p-pow er; p=p-nex t;cout学 生 总 用 水 量 为 : w endl; cout学 生 总 用 电 量 为 : p1 w a termoney ;w m 1 +=p-realw a termoney ; pm+=p-pow ermoney ; pm 1 +=p-realpow ermoney ; p=p-nex t;cout学 生 所 用 总 水 费 为 :w mendl; c
29、out学 生 所 用 总 电 费 为 :pmendl; cout学 生 实 际 所 交 总 水 费 为 : w m 1 endl; cout学 生 实 际 所 交 总 电 费 为 : pm 1 endl; break;cout-w a ter10 & & p-realw a termoney =0 .0 )cout编 号 : not姓 名 : nam enex t;cout未 交 水 费 的 人 数 为 :count1 endl;cout-endlnex t;w hile( p)if( p-pow er10 & & p-realpow ermoney =0 .0 )cout编 号 : not姓
30、 名 : namenex t;cout未 交 电 费 的 人 数 为 :count2 endl;cout-endl;break;default: cout输 入 选 项 错 误 , 失 败 ! endl; break;保 存 功 能 代 码 :void S tudent: sa ve( S tudent * p)/ 将 信 息 保 存 到 文 件 中ofstream out(S tudent.tx t); i f( ! out)cout保 存 失 败 ! nex t; w hile( p)outno C la ss name sex ag e w a terrealw a termoney p
31、ow er realpow erm oney nex t;cout保 存 成 功 ! endl; out.close();读 取 功 能 代 码 :int S tudent: read( S tudent* q)/ 从 文 件 中 读 取 所 有 学 生 信 息S tudent* p; i fstrea m in;in.open(S tudent.tx t);16i f( ! in)cout读 取 失 败 ! noC la ssnam esex ag ew a terrealw a termoney pow errealpow erm oney )p=new S tudent( no,C la
32、 ss,name,sex ,ag e ,w a ter,pow er,realw a term oney,realpow ermoney ) ; q-nex t=p;p-nex t=NU L L; q=p;return 1 ; in.close();三、调试分析 1.实际完成的情况说明(完成的功能,支持的数据类型等)。( 1 ) 添 加 功 能 : 程 序 能 够 按 照 编 号 递 增 的 顺 序 添 加 不 同 学 生 和 教 工 的 记 录 , 如 果 添 加 了重 复 编 号 的 记 录 时 , 则 取 消 添 加 。( 2 ) 查 询 功 能 : 可 根 据 姓 名 、 用 水 量
33、、 用 电 量 信 息 对 已 添 加 的 学 生 或 教 工 记 录 进 行 查 询 。 ( 3 ) 显 示 功 能 : 可 显 示 当 前 系 统 中 所 有 学 生 和 教 工 的 记 录 , 每 条 记 录 占 据 一 行 。( 4 ) 编 辑 功 能 : 可 根 据 查 询 结 果 对 相 应 的 记 录 进 行 修 改 , 修 改 时 注 意 编 号 的 唯 一 性 。 ( 5 ) 删 除 功 能 : 对 已 添 加 的 学 生 或 教 工 记 录 进 行 删 除 。( 6 ) 统 计 功 能 : 能 统 计 学 生 和 教 工 的 用 水 用 电 量 、 所 要 交 纳 的 电
34、费 和 水 费 、 未 交 纳 水 电 费 的 人 员 信 息 。( 7 ) 保 存 功 能 : 可 将 当 前 系 统 中 各 类 记 录 存 入 文 件 中 。( 8 ) 读 取 功 能 : 可 将 保 存 在 文 件 中 的 信 息 读 入 到 当 前 系 统 中 , 供 用 户 进 行 使 用 。( 9 ) 计 算 电 费 和 水 费 。 学 生 每 月 都 有 一 定 额 度 的 水 电 是 免 费 使 用 的 , 超 过 的 部 分 需 要 交 费 按 照 公 式 w a termoney /pow ermoney =0 .5 * ( w a ter/pow er-10 ) 计 算 。支 持 的 数 据 类
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922