写这个的大体思路很简单,就是结构体,然后排序等等,由于是帮非计科类的同学写的,不让用stl库,于是就只能手动实现排序,如果可以用结构体排序代码量会少很多,也就几十行就可以。总之,比较基础,在期末考试周中写写代码找找感觉。

C++管理系统实现

商品管理系统

题干信息

1.功能描述
编写一个简单的商品信息管理程序,主要完成商品的一些信息的计算,商品的排序、查询及显示功能。
问题详细描述
某商场的电器区有多种商品,每种商品包括以下信息:代码(整型),名称(字符串),总量(整型),单价(双精度),销售量(整型),库存量(=总量-销售量,整型),销售额(销售量*单价,双精度),例如目前有五种商品的基本信息,如表1所示。

要求在主函数中对各类商品的信息进行初始化,编写多个函数分别实现下列功能,而后在main函数中进行调用。
各个函数的功能描述为:
计算函数cal:计算各类商品的库存量及销售额。
排序函数sort1:按库存量升序排序,若库存量相同则按销售量升序排序,要求使用冒泡法排序。
排序函数sort2:按商品名称降序排序,要求使用选择法排序。
查询函数search:根据商品代码查找指定商品。若找到则返回该商品的下标,否则返回-1。
汇总函数total:计算并返回销售总额(所有商品的销售额的和)。
显示函数output:输出商品的信息。
显示菜单函数showMenu:显示菜单。

全部代码

//
//  main.cpp
//  LCS
//
//  Created by 陈冉飞 on 2019/6/21.
//  Copyright © 2019 陈冉飞. All rights reserved.
////#include <bits/stdc++.h>
#include<iostream>
#include<iomanip>
using namespace std;
#define name_max_length 100
//宏定义最多的商品数
#define type_total_max 50struct goods{int code;char name[name_max_length];int num;   //总量double price;int sold_num;int remain_num;double total;
};//计算函数cal
void cal(goods g[],int type_total){for (int i = 0; i<type_total; i++) {g[i].remain_num = g[i].num - g[i].sold_num;g[i].total = g[i].sold_num*g[i].price;}
}//排序函数1
void sort1(goods g[],int type_total){int i,j,pos;goods temgoods;for(i = 0; i < type_total-1; i++){pos = i;for(j = i; j < type_total; j++){if(g[pos].remain_num > g[j].remain_num){pos = j;}else if(g[pos].remain_num == g[j].remain_num){if(g[pos].sold_num > g[i].sold_num){pos = j;}}}if(pos != i){temgoods = g[i];g[i] = g[pos];g[pos] = temgoods;}}
}//排序函数2
void sort2(goods g[],int type_total){int i,j,pos;goods temgoods;for(i = 0; i < type_total-1; i++){pos = i;for(j = i; j < type_total; j++){if(strcmp(g[pos].name,g[j].name) < 0)pos = j;}if(pos != i){temgoods = g[i];g[i] = g[pos];g[pos] = temgoods;}}
}//查询函数
int search(goods g[],int type_total,char temname[]){for (int i = 0; i<type_total; i++) {if (strcmp(g[i].name, temname) == 0) {return i+1;}}return -1;
}//汇总函数
int total(goods g[],int type_total){int sum = 0;for (int i = 0; i<type_total; i++) {sum+=g[i].total;}return sum;
}//显示函数
void output(goods g[],int type_total){cout<<"      代码               名称         单价       总量       销售量    库存量    销售额"<<endl;for (int i = 0; i<type_total; i++) {cout<<setw(10)<<g[i].code;printf("%20s",g[i].name);cout<<setw(10)<<g[i].price<<setw(10)<<g[i].num<<setw(10)<<g[i].sold_num<<setw(10)<<g[i].remain_num<<setw(10)<<g[i].total<<endl;}
}//显示菜单函数
void showMenu()
{cout<<"******************************"<<endl;cout<<"请输入1—6内的数字"<<endl;cout<<"1  按照库存量升序排序"<<endl;cout<<"2  按照商品名称降序排序"<<endl;cout<<"3  查找指定代码的商品信息"<<endl;cout<<"4  计算销售总额"<<endl;cout<<"5  输出商品的信息"<<endl;cout<<"6  结束"<<endl;cout<<"******************************"<<endl;
}int main(int argc, const char * argv[]) {goods g[type_total_max] = {0};int type_total;cout<<"请输入商品种类总数"<<endl;cin>>type_total;//输入信息和计算库存量、销售额的部分for (int i = 0; i<type_total; i++) {//提示输入cout<<"请依次输入商品代码、名称、总量、单价、销售量"<<endl;cin>>g[i].code;scanf("%s",g[i].name);  //暂时还不能输入有空格的字符串cin>>g[i].price>>g[i].num>>g[i].sold_num;}//调用cal来计算出库存量 销售额cal(g, type_total);//成绩管理系统开始int target_num;while (true) {showMenu();cout<<"请输入选项:"<<endl;cin>>target_num;if (target_num<=6&&target_num>=1) {switch (target_num) {case 4:cout<<total(g, type_total)<<endl;break;case 5:output(g, type_total);break;case 6:return 0;case 1:sort1(g, type_total);output(g, type_total);break;case 2:sort2(g, type_total);output(g, type_total);break;case 3:char target_name[name_max_length];cout<<"请输入你想查找的名称"<<endl;scanf("%s",target_name);int target =search(g,type_total,target_name);cout<<"      代码               名称         单价       总量       销售量    库存量    销售额"<<endl;cout<<setw(10)<<g[target].code;printf("%20s",g[target].name);cout<<setw(10)<<g[target].price<<setw(10)<<g[target].num<<setw(10);cout<<g[target].sold_num<<setw(10)<<g[target].remain_num<<setw(10)<<g[target].total<<endl;break;}}else{cout<<"输入错误,请输入1-6范围内的数字"<<endl;}}return 0;
}//
//5
//10120 HaierCon 2998 155 55
//10564 IPodMP3 1250 245 32
//11254 SegaHDisk 655 120 20
//15826 IBMLapgtop 8188 80 15
//18257 SontDigtC 3588 150 29

运行结果要求

下面给出程序运行的部分界面:
程序首先计算库存量与销售额,而后显示菜单,提示用户输入数字1~6以进行对应操作,运行界面如图1所示。
若用户输入的菜单选项不满足要求(未在1~6范围内),则给出提示信息,提示用户重新输入,直到用户输入正确选项,运行界面如图2所示。

根据问题的描述,为实现程序的功能,可按照下述过程完成程序(仅供参考,可自行设计实现过程及方法):
在主函数中定义结构体数组存储五种商品的信息,并使用给出的数据对该数组进行初始化,而后调用cal函数进行计算。
为方便用户选择,应提供良好的操作界面供用户使用,根据不同的要求进入到对应的功能模块。执行完某个功能后,应重新显示菜单,因此可定义显示菜单函数showMenu,并将该函数的调用置于循环结构中。
为实现根据用户的不同输入(共6个)调用对应函数,应采用多分支结构,可使用switch语句或else if语句实现。为实现多次输入,应将将菜单的显示、用户对菜单选项的输入及各个功能模块的调用置于一个循环结构,当输入为6时,结束该循环。
输入待查找商品的代码,再调用查找函数search进行查找,若找到,调用output函数输出该商品的信息,否则输出未找到的提示信息。
四、主要技术问题的描述
根据三的分析与描述,主要问题在于:
结构体类型的构造(struct PRO)
为表示商品的完整信息,该类型应包括以下成员:代码(int code)、名称(char name[20]) ,总量(int amount) ,单价(double price),销售量(int sale1),商品的库存量(int stock),销售额(double sale2)。
函数的参数传递问题
由于该程序是对结构体数组的操作,因此使用传递地址的方法,并传递数组长度。以查找函数为例,该函数的原型说明语句为:int search(PRO s[],int n ,int x); ,即在长度为n的s数组中查找代码为x的商品,若找到,则返回该商品的下标,否则返回-1。形参分别表示结构体数组,数组长度及待查商品的代码。
查询后如何调用output函数只输出一种商品的信息
已知output函数的原型说明语句为: void output(PRO s[],int n); ,因此若要输出下标为k的一个商品的信息, 调用形式应为:output(s+k, 1); ,其中,s为结构体数组名,k为调用查询函数search后返回的商品下标,1表示输出商品的个数。

测试样例

5
10120 HaierCon 2998 155 55
10564 IPodMP3 1250 245 32
11254 SegaHDisk 655 120 20
15826 IBMLapgtop 8188 80 15
18257 SontDigtC 3588 150 29

运行结果


这个课设还有一点不足,就是在每个商品的名字的处理,无法处理空格,更改的话可以通过循环、getchar改一下。

职工工资信息管理系统

题干信息

代码

//
//  main.cpp
//  ZSR
//
//  Created by 陈冉飞 on 2019/6/21.
//  Copyright © 2019 陈冉飞. All rights reserved.
////#include <bits/stdc++.h>
#include<iostream>
#include<iomanip>
using namespace std;
#define name_max_length 100
//宏定义最多的商品数
#define type_total_max 50
#define gender_max_length 10struct goods{int code;char name[name_max_length];char gender[gender_max_length];float salary;
};//排序函数1
int sort1(goods g[],int type_total){int pos = 0,max_salary = -0xffffff;for (int i = 0; i<type_total; i++) {if (g[i].salary > max_salary) {pos = i;max_salary = g[i].salary;}}return pos+1;
}//排序函数2
int sort2(goods g[],int type_total){int pos = 0,min_salary = 0xffffff;for (int i = 0; i<type_total; i++) {if (g[i].salary < min_salary) {pos = i;min_salary = g[i].salary;}}return pos+1;
}//查询函数
int search(goods g[],int type_total,char temname[]){for (int i = 0; i<type_total; i++) {if (strcmp(g[i].name, temname) == 0) {return i+1;}}return -1;
}//汇总函数
int total(goods g[],int type_total){int sum = 0;for (int i = 0; i<type_total; i++) {sum+=g[i].salary;}return sum;
}//显示函数
void output(goods g[],int type_total){cout<<"      工号               姓名         性别       月工资  "<<endl;for (int i = 0; i<type_total; i++) {cout<<setw(10)<<g[i].code;printf("%20s",g[i].name);printf("%10s",g[i].gender);cout<<setw(10)<<g[i].salary<<endl;}
}//显示菜单函数
void showMenu()
{cout<<"******************************"<<endl;cout<<"请输入1—6内的数字"<<endl;cout<<"1  显示所有职工的信息"<<endl;cout<<"2  查找并输出月工资最高值"<<endl;cout<<"3  查找并输出月工资最低值"<<endl;cout<<"4  计算并输出所有职工月工资平均值"<<endl;cout<<"5  查找并输出姓名为制定"<<endl;cout<<"6  结束"<<endl;cout<<"******************************"<<endl;
}int main(int argc, const char * argv[]) {//文件输入
//    freopen("测试文档名字.txt", "r", stdin);goods g[type_total_max] = {0};int type_total;cout<<"请输入工人总数"<<endl;cin>>type_total;//输入信息和计算库存量、销售额的部分for (int i = 0; i<type_total; i++) {//提示输入cout<<"请依次输入工人工号、姓名、性别、月工资"<<endl;cin>>g[i].code;scanf("%s",g[i].name);  //暂时还不能输入有空格的字符串scanf("%s",g[i].gender);cin>>g[i].salary;}//成绩管理系统开始int target_num;while (true) {showMenu();cout<<"请输入选项:"<<endl;cin>>target_num;if (target_num<=6&&target_num>=1) {switch (target_num) {case 6:return 0;case 1:output(g, type_total);break;case 2:cout<<"第"<<sort1(g, type_total)<<"个月工资最高"<<endl;break;case 3:cout<<"第"<<sort2(g, type_total)<<"个月工资最低"<<endl;break;case 4:cout<<total(g, type_total)/type_total<<endl;break;case 5:char target_name[name_max_length];cout<<"请输入你想查找的名称"<<endl;scanf("%s",target_name);int target = search(g,type_total,target_name);cout<<"      工号               姓名         性别       月工资  "<<endl;cout<<setw(10)<<g[target].code;printf("%20s",g[target].name);printf("%10s",g[target].gender);cout<<setw(10)<<g[target].salary<<endl;break;}}else{cout<<"输入错误,请输入1-6范围内的数字"<<endl;}}return 0;
}

测试样例

6
2635 acb man 7862
2351 asiacjtg women 10923
7812 opaw women 3252
1234 saoiugr women 6880
2365 alsjdgaew men 9023
8971 oierr men 4772

运行结果

总结

这两个管理系统大同小异,都是结合结构体再写个排序,其他的都是一些基础语法的运用。

C语言课程设计——实现简单的管理系统相关推荐

  1. c语言声明第一个学生的成绩,C语言课程设计报告--学生成绩管理系统

    <C语言课程设计报告--学生成绩管理系统>由会员分享,可在线阅读,更多相关<C语言课程设计报告--学生成绩管理系统(30页珍藏版)>请在人人文库网上搜索. 1.学生成绩管理系统 ...

  2. c语言 输入职工工资资料,通过结构体的数组来进行操作 报告,c语言课程设计报告-职工工资管理系统...

    <c语言课程设计报告-职工工资管理系统>由会员分享,可在线阅读,更多相关<c语言课程设计报告-职工工资管理系统(33页珍藏版)>请在人人文库网上搜索. 1.c 语言课程设计报告 ...

  3. 用C语言编程网上购物系统,华中科技大学C语言课程设计报告 -- 网上购物管理系统.pdf...

    华中科技大学自动化学院 C 语言课程设计报告 网上购物管理系统 专 业:自 动 化 班 级:自动化1306 班 组 员: 指导教师:周纯杰 何顶新 彭刚 周凯波 完成时间:2014 年11 月7 日星 ...

  4. c语言课程设计-商场商品信息管理,C语言课程设计商场商品信息管理系统

    C语言课程设计商场商品信息管理系统 1目 录1 系统分析 21.1 课程设计内容 21.2 系统功能需求分析 21.3 数据结构设计 32 系统设计 32.1 总体设计 32.2 详细设计 42.2. ...

  5. c语言销售管理系统设计,原创:终稿C语言课程设计_服装销售管理系统.docOK版

    <C语言课程设计_服装销售管理系统.doc>由会员分享,可免费在线阅读全文,更多与<(终稿)C语言课程设计_服装销售管理系统.doc(OK版)>相关文档资源请在帮帮文库(www ...

  6. 施工管理系统C语言,《C语言课程设计报告-建筑工地信息管理系统》.doc

    <C语言课程设计报告-建筑工地信息管理系统> C语言课程设计报告 班级:中国地质大学计算机学院192091班 姓名: 序号:192091-28(20091003872) 指导老师:时间:2 ...

  7. c语言商品订购系统总结报告,c语言课程设计报告-商业销售管理系统

    c语言课程设计报告-商业销售管理系统 (14页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 C语言课程设计商业销售管理系统学号姓名班级软 ...

  8. 简易计算机课程设计总结,C语言课程设计报告简单计算器程序

    C语言课程设计报告简单计算器程序 (26页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 24.9 积分 .课程设计名称:C语言课程设计课程设计题目:简单 ...

  9. c语言课程设计2018,C语言课程设计报告(2018)——学生管理系统(17页)-原创力文档...

    兰州交通大学博文学院 <C语言程序设计> 课 程 设 计 报 告 系 别: 交通运输系 班 级: 16交通运输(3)班 姓 名: 学 号: 指导老师: 2018年1月5日 兰州交通大学博文 ...

最新文章

  1. mysql之修改表引擎
  2. MySQL中的锁(表锁、行锁)
  3. snoopy(强大的PHP采集类) 实例应用
  4. 网页中竖的目录怎么改成横的_一点基础也没有,想快速练漂亮硬笔字,先练什么?怎么练进步明显?...
  5. cmd查看所有数据库 db2_民生银行数据库自动化部署的探索与实践
  6. tensorflow numpy版本匹配_在Matlab中使用tensorflow (1)
  7. String, StringBuffer,StringBuilder
  8. 情人节,请带走我给您的祝福
  9. 错过了粽子不要紧,只是不要错过Ta!
  10. 【翻译】New Lane Model and Distance Transform for Lane Detection and Tracking
  11. 深入.NET 青鸟影院系统
  12. 电脑word文档页眉的横线怎么去掉
  13. mysql数据丢失原因_分析mysql数据丢失的问题
  14. 【破解三网】iphone5 国行 A1429
  15. 加速ubuntu开机速度
  16. 干货:学编程适合用什么配置的电脑?
  17. PRCS-1007 : Server pool egapdb already exists
  18. 腾达无线打印服务器,(原创)腾达PA + PA3电力猫扩展无线信号 路由器LAN口智能扩展...
  19. 在到达胜利之前无法回头
  20. tan-python-day02

热门文章

  1. 《学习如何学习》Week1 3.4 名人采访3: 如何写作?
  2. Echarts实现男女比例图表
  3. 百问网7天物联网智能家居 学习心得
  4. IT后端技术学习路线图(初阶)
  5. USB转JTAG小板 (一)
  6. Qt编译报错:usr/include/c++/4.9/bits/stl_relops.:67: Parse error at “std“的解决办法
  7. 2017 VQA Challenge 第一名技术报告
  8. 最大公约数-最小公倍数
  9. Matlab在电路原理中的应用
  10. oracle打开缓慢,Oracle SQL执行缓慢的原因以及解决方案