c++课程设计:行政区划管理系统
大一的课程设计基本上除了计算器,就是各种管理系统。(大概吧)
感觉看到题目整个一年的c++好像没学明白似的。基础知识掌握还算可以,真刀真枪的打代码,而且是实现这么些功能,做成一个管理系统,就真正感觉到了自己的弱小和菜。
学了一年的基础知识,突然上来要做一个管理系统,在期末考试和课设的双重重压下,我选择了期末考试,放弃了自主实现课设,选择借鉴上一级的代码,我不知道我这么做可耻不可耻,不过是挺窝囊的。能怎么办呢?唉。为什么要和期末考试安排到一起呢?真正自己做的人,反正你们都比我优秀,我就是个弟弟。唉。第二次叹气。
我拿到了学生管理系统的代码,把每一段都读懂了,然后稍作修改,改成了行政区划管理系统。(描述这一段的时候我的内心是羞愧的。)
暑假这段时间,我会继续学习Java。(上个寒假一直在学。)这个暑假也就是学习加复习,然后我争取利用Java来自己实现一些东西,当然这都是后话了。
我本来就是想把重点放在Java上的,不过学校的安排就是我们大一的课程就是c++,没有办法,有完整一大段的空闲时间只有在假期了。
下面就是我改过之后的代码。把它公开的原因也是因为它本就不属于我,我很羞愧。
分为三个cpp文件,两个头文件。
district.cpp
//录入信息
#include<iostream>
#include<string>
#include<fstream>
#include<iomanip>
#include"district.h"
using namespace std;
void district::input()
{
cout << "按提示输入:" << endl;
cout << "请输入行政区名: ";
cin >> name;
cout << "请输入人口(万人): ";
cin >> count;
cout << "请输入土地(平方千米): ";
cin >> area;
cout << "请输入邮编: ";
cin >> postcode;
return;
}
void district::input(ifstream & is)
{
is >> name >> count >> area >> postcode ;
is.get(); // get是什么函数
}
//显示信息
void district::output()
{
cout << "行政区基本信息如下:" << endl;
cout
<< " 行政区名:" << name
<< " 人口(万人):" << count
<< " 土地面积(平方千米):" << area
<< " 邮编:" << postcode
<< endl << endl;
}
void district::output(ofstream & os)
{
os
<< setw() << name
<< setw() << count
<< setw() << area
<< setw() <<postcode
<< endl;
}
districtmanage.cpp
#include<iostream>
#include<string>
#include<fstream>
#include<iomanip>
#include"district.h"
#include"districtmanage.h"
using namespace std; //录入函数
void districtmanage::input()
{
district *p, *p2 = NULL; //建立两个行政区类指针,并让p2指向null
p = head; //让p指向head节点
int n=; //定义一个整数赋值1
while (p->next) //当p的next节点不为空,p就等于下一个节点
p = p->next;
while (n)
{
p2 = new district; //将p2指向一个新的行政区类对象
p2->input(); //给p2的数据成员赋值
p->next = p2; //把p2给p的next节点
p2->next = NULL; //把p2的next节点赋值null以便下次调用input函数
p = p->next; //把p的next节点赋给p
districtmanage::setkey(); //让key=1
cout << "按1继续,按0返回 : ";
cin >> n; //按1继续循环,继续输入操作
}
} //子查找函数
int districtmanage::find(district *p1, int postcode1, char *pn)//在found里调用find
{
district *p;
p = head;
while (p->next) //这一步
{
(*p) = (*p1);
if ((p->next)->getpostcode() == postcode1 || !strcmp((p->next)->getname(), pn)) //如果你输入的邮编
return ; //或你输入的name和这个节点的相同,就返回1,然后继续对下一个节点操作
p = p->next; //和这一步一起对指针节点们进行了遍历
}
return ;
} //查找函数
void districtmanage::found()
{
district *p; //建立一个行政区类的指针
p = head; //将p指向head节点
int postcode = -, n = ;
char name[] = "^"; //默认name的初始值为^
do
{
cout << "1:按邮政编码查找,2:按行政区名查找: ";
cin >> n;
} while (n< || n>);
if (n == )
{
cout << "请输入邮编: ";
cin >> postcode;
}
if (n == )
{
cout << "请输入行政区名: ";
cin >> name;
}
if (!find(p, postcode, name))
{
cout << "SORRY!找不到你要查找的内容!" << endl;
return; //在if里return这里是程序结束的意思
}
(p->next)->output(); //如果找到了相应的节点,就把它输出到屏幕上
} //删除函数
void districtmanage::del() //函数的缺点是只能删掉一个
{
district *p, *p2; //定义两个行政区类的指针
int postcode; //定义一个整数postcode
cout << "请输入邮编: "; //输入邮编
cin >> postcode;
p = head; //将p指向head节点
if (!find(p, postcode, "^")) //如果找不到邮编和p指针
{
cout << "SORRY!找不到你要删除的内容!" << endl; //就输出 SORRY!找不到你要删除的内容!
return;
}
(p->next)->output(); //调用p的next子对象(p的下一个节点)的输出
p2 = p->next; //将p的next节点给p2
p->next = p2->next; //然后让p的下一个节点等于p2的下一个节点
delete p2; //删除p2对象
districtmanage::setkey(); //给key赋值1
}
//显示函数
void districtmanage::show()
{
district *p;
p = head;
while (p->next)
{
(p->next)->output();
p = p->next;
}
}
//修改函数
void districtmanage::mend()
{
district *p; //定义一个行政区类的指针
int postcode = -, n; //定义两个整数
char name[] = "^"; //将name的默认值定义为^
do
{
cout << "1:按邮编修改,2:按行政区名修改: ";//
cin >> n;
} while (n< || n>);
if (n == )
{
cout << "请输入邮编: ";
cin >> postcode;
}
if (n == )
{
cout << "请输入行政区名: ";
cin >> name;
}
p = head;
if (!find(p, postcode, name))
{
cout << "SORRY!找不到你要修改的内容!" << endl;
return;
}
(p->next)->output(); //p的下一个指针输出
(p->next)->input(); //p的下一个节点调用input函数给数据成员赋值
districtmanage::setkey(); //给key赋值1
}
//保存函数
void districtmanage::save()
{
district *p;
p = head;
ofstream os("district.txt", ios::out);
if (districtmanage::getkey() == )
{
while (p->next)
{
(p->next)->output(os);
p = p->next;
}
}
cout << "文件已保存! " << endl;
districtmanage::setkey();
}
//初始化函数
void districtmanage::begin()
{
district *p, *p2; //p2只是用来给p以及p的next节点赋值的
p = head;
clear(); ifstream is("district.txt", ios::in);
if (!is)
{
ofstream os("district.txt", ios::out);
os.close();
return;
}
int num = -;
while ()
{
long t=;
num = -;
is.tellg(); //获取文件长度
is >> num; is.seekg(t); //找到这个文件的第t个字节
if (num<)
{
is.close();
return;
}
p2 = new district;
p2->input();
p->next = p2; //把p2给p的next节点
p2->next = NULL; //把p2的next节点赋值null以便下次调用input函数
p = p->next; //把p的next节点赋给p
}
}
//清空函数
void districtmanage::clear()
{
district *p, *p2;
p = head->next;
while (p)
{
p2 = p;
p = p->next;
delete p2;
}
} //主选菜单函数
char districtmanage::mainmenu()
{
char n[];
cout << "\n\n ☆☆☆☆欢迎进入吉林省行政区划管理系统☆☆☆☆" << endl << endl;
cout << " * * * * * * * * * * * * * * * * * * * * * * * * * *" << endl;
cout << " * * * * * * * * * * * * * * * * * * * * * * * * * *" << endl;
cout << " * * 1: 录入行政区信息 * *" << endl;
cout << " * * 2: 显示行政区信息 * *" << endl;
cout << " * * 3: 查找行政区信息 * *" << endl;
cout << " * * 4: 删除行政区信息 * *" << endl;
cout << " * * 5: 修改行政区信息 * *" << endl;
cout << " * * 6: 保存行政区信息 * *" << endl;
cout << " * * 0: 退出系统 * *" << endl;
cout << " * * * * * * * * * * * * * * * * * * * * * * * * * *" << endl;
cout << " * * * * * * * * * * * * * * * * * * * * * * * * * *" << endl;
cout << " 请选择:";
cin >> n;
return n[];
}
main.cpp
#include"district.h"
#include"districtmanage.h"
#include<iostream>
using namespace std;
void main()
{
districtmanage p;
int k = ;
char n;
p.begin(); //先调用begin函数
while (k == )
{
n = p.mainmenu(); // 将p.mainmenu的值赋给n
switch (n)
{
case '':p.input(); break;
case '':p.show(); break;
case '':p.found(); break;
case '':p.del(); break;
case '':p.mend(); break;
case '':p.save(); break;
case '':
if (p.getkey() == ) //如果p中key为1
{
cout << "\t\t\t是否保存? 1 : 保存 0:不保存 : ";
cin >> k;
if (k == )
p.save();
}
p.clear(); //k=0,执行clear函数,清除所有数据
k = ; //最后将k归零,防止输入了别的数最后k也能为0
break; //可以选择1或0后跳出while循环
}
}
}
district.h
#pragma once
#include<string>
#include<fstream>
#include<iomanip>
using namespace std;
class district
{
protected:
char name[]; // 行政区名
float count; // 人口
float area; // 土地面积
int postcode; //邮编 public:
district *next;
district(){ }
void output();
void input();
void input(ifstream & is);
void output(ofstream & os);
char* getname(){ return name; }
int getpostcode(){ return postcode; }
float getcount(){ return count; }
float getarea(){ return area; } };
districtmanage.h
#include<string>
#include<fstream>
#include<iomanip>
#include"district.h"
using namespace std;
class districtmanage
{
public:
districtmanage(){ head = new district ; head->next = NULL; key = ; }
~districtmanage(){ delete head; }
void input(); //录入函数
void mend(); //修改函数
void del(); //删除函数
int find(district *p, int postcode1, char *pn = "^"); //子查找函数
void found(); //查找函数
void show(); //显示函数
void save(); //保存函数
void begin(); //初始化函数
void clear(); //清空函数
char mainmenu(); //主菜单函数
int getkey(){ return key; }
void setkey(int k){ key = k; }
private:
district *head;
int key;
};
我们要求在VC6.0上运行,所以emmmm......
不喜勿喷。溜了溜了。
c++课程设计:行政区划管理系统的更多相关文章
- C语言课程设计(成绩管理系统)
C语言课程设计(成绩管理系统) 翻到了大学写的C语言课程设计,缅怀一下 内容: 增加学生成绩 查询学生成绩 删除 按照学生成绩进行排序 等 #include <stdio.h> #incl ...
- C++课程设计 通讯录管理系统 原码及解析
设计题目:通信录管理系统 用C++设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理. (一)功能要求 查看功能:选择此功能时,列出下列三类选择. A 办公类B 个人类C 商务类,当选中某类时 ...
- C语言课程设计—图书管理系统
这是本人大一第二学期初C语言课程设计的作品,嘿嘿,本来以为已经找不到原稿了,今天无意中居然在QQ网络硬盘中找到了当初的teta版,公布于此,以作纪念. C源码例如以下: #include<std ...
- java课程设计 学生管理系统
学生成绩管理系统 可实现功能 学生管理系统 查询学生信息:姓名.学号.性别.出生年月日.(学号自动生成且唯一) 查询学生成绩:每个人都有数学.Java与体育与选修课 查询学生课程 进行公选课选课 教师 ...
- Java课程设计——人事管理系统
主界面代码: package PersonSystem; import java.awt.*; import java.awt.event.*; import javax.swing.*; impor ...
- 学生管理系统-火车订票系统 c语言课程设计
概要: C 语言课程设计一---学生管理系统 使使用 C 语言实现学生管理系统.系统实现对学生的基本信息和考试成绩的 管理.采用终端命令界面,作为系统的输入输出界面.采用文件作为信息存储介质. 功能描 ...
- Java课程设计—学生成绩管理系统(201521123005 杨雪莹)
一.团队课程设计博客链接 学生成绩管理系统 二.个人负责模块或任务说明 学生成绩录入 显示所有学生信息 显示各科平均成绩 显示学生成绩(按降序排序) 三.自己的代码提交记录截图 四.自己负责模块或任务 ...
- JAVA课程设计---学生基本信息管理系统(201521123039 王兴)
1.团队课程设计博客链接 http://www.cnblogs.com/zyjjj/p/7061880.html 2.个人负责模块或任务说明 函数 功能说明 Search 查找学生信息,分为两种查找方 ...
- Java课程设计—学生成绩管理系统(54号童欢)
1. 团队课程设计博客链接 http://www.cnblogs.com/wufuckshuo/p/7063183.html 2.个人责模块或任务说明 负责模块/任务:主函数(调用其他的功能函数),添 ...
随机推荐
- 为何只能在其关联的线程内启动timer?(Qt会检查一致性,否则就不执行)
为何只能在其关联的线程内启动timer? 在QTimer源码分析(以Windows下实现为例) 一文中,我们谈到: QTimer的是通过QObject的timerEvent()实现的,开启和关闭定时器 ...
- springboot 2.x处理404、500等异常
404错误 404错误是不经过Controller的,所以使用@ControllerAdvice或@RestControllerAdvice无法获取到404错误 springboot2处理404错误的 ...
- VPS用来配置上网外,还可以做一个同步盘
我曾经在一个活动的博文里说过,男人必须要有一个VPS和一个树莓派,VPS这个东西,以后会是中国男人的一种必备技能,今天又有一个小伙伴请教我VPS的用法,我就简单说说我目前使用的情况.首先我希望你能有点 ...
- ASP.NET Core 通过 Microsoft.DotNet.Watcher.Tools 实现热部署
之前开发前端的时候,webpack 会有热更新工具,在修改了代码之后,自动将代码编译,实时展现到页面上,给开发带来了极大的方便. Java也可以通过第三方插件JRebel实现热部署,不用频繁的重启To ...
- HTML 关于colgroup的研究
<colgroup width="20%"></colgroup> <colgroup width="10%"></c ...
- vue+element——父级元素fixed,遮罩会在上方
前言 这种场景还是蛮场景的 一个共用的head组件,组件里面通常是当前系统登录账号名 退出登录 修改密码这样的弹框 但是现在我又想head不跟着main内容上下滑动.所以用了fixed 定位. 问题来 ...
- vue的checkbox或多选的select的代码例子
另外一种实现checkbox的vue绑定方法代码: 给v-model绑定一个相同的数组类型的属性: <div id="app"> <label>jack&l ...
- Confluence安装、汉化及jira整合
今天上午装了一下Confluence,刚开始装的时候成功了,成功后进入数据库配置阶段,本人想把jira和confluence整合一起用,刚开始提示数据库连接问题,后来一直问题提示Connection ...
- oracle 向数据库同时插入多条数据
oracle 与 mysql 不同. mysql 可以直接插入多条数据的操作: 采用 INSERT INTO 某表 VALUES(各个值),VALUES(各个值),.....; 或者 INSERT ...
- zabbix2.4汉化
zabbix的2.4版本安装完后,这里的语言界面选择没有中文,其实是这个版本把中文的屏蔽了. [root@zabbix-server opt]# vim /var/www/html/include/l ...