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.个人责模块或任务说明 负责模块/任务:主函数(调用其他的功能函数),添 ...
随机推荐
- Unity推荐设置(HoloLens开发系列)
本文翻译自:Recommended settings for Unity Unity提供了一系列默认选项,这些选项能够适用于所有平台的一般情况.但是,Unity同样为HoloLens提供了一些特殊行为 ...
- JAVA SHA1加密
public static String getSha1(String str){ if(str==null||str.length()==0){ return null; } char hexDig ...
- 【MyEclipse常见错误】-java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory的解决
ApacheJavaTomcatMyeclipse 自己前一段时间出现了这个问题,通过在网上搜索,大概知道了原因,整理下一,以供大家参考. 将项目部署好后,启动tomcat后报错,java.lang ...
- linux oracle 启动全过程
一:启动oracle [root@ccoracle ~]# su -l oracle [oracle@ccoracle ~]$ sqlplus /nolog SQL*Plus: Release 10. ...
- python中的基本数据类型之字典
一.字典的简单介绍 字典是(dict)是python中惟一的一个映射类型,他是以{}括起来的键值对组成,在字典中key是唯一的,在保存的时候,根据key来计算出一个内存地址,然后将key-value保 ...
- What?Tomcat-竟然也算中间件?
关于 MyCat 的铺垫文章已经写了两篇了: MySQL 只能做小项目?松哥要说几句公道话! 北冥有 Data,其名为鲲,鲲之大,一个 MySQL 放不下! 今天是最后一次铺垫,后面就可以迎接大 Bo ...
- spring boot 2.x 系列 —— spring boot 整合 RabbitMQ
文章目录 一. 项目结构说明 二.关键依赖 三.公共模块(rabbitmq-common) 四.服务消费者(rabbitmq-consumer) 4.1 消息消费者配置 4.2 使用注解@Rabbit ...
- 【设计模式】行为型09访问者模式(Visitor Pattern)
学习地址:https://blog.csdn.net/u012124438/article/details/70537203(参考了很多博客,只有这个讲明白了核心点) 访问者模式(Visitor P ...
- idea初见问题整理_错误: -source 1.5 中不支持 diamond 运算符
最近在移动工程到idea下,顺便改目录结构,遇到的问题不一定全部记录,有些答案摘抄自别人博客,已注明来源,由于不是摘抄自同一作者,且有自己的一些内容,所以标注为原创. 1.(错误: -source 1 ...
- Java学习笔记——设计模式之六.原型模式(浅克隆和深克隆)
That there's some good in this world, Mr. Frodo. And it's worth fighting for. 原型模式(prototype),用原型实例指 ...