大一的课程设计基本上除了计算器,就是各种管理系统。(大概吧)

感觉看到题目整个一年的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++课程设计:行政区划管理系统的更多相关文章

  1. C语言课程设计(成绩管理系统)

    C语言课程设计(成绩管理系统) 翻到了大学写的C语言课程设计,缅怀一下 内容: 增加学生成绩 查询学生成绩 删除 按照学生成绩进行排序 等 #include <stdio.h> #incl ...

  2. C++课程设计 通讯录管理系统 原码及解析

    设计题目:通信录管理系统 用C++设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理. (一)功能要求 查看功能:选择此功能时,列出下列三类选择. A 办公类B 个人类C 商务类,当选中某类时 ...

  3. C语言课程设计—图书管理系统

    这是本人大一第二学期初C语言课程设计的作品,嘿嘿,本来以为已经找不到原稿了,今天无意中居然在QQ网络硬盘中找到了当初的teta版,公布于此,以作纪念. C源码例如以下: #include<std ...

  4. java课程设计 学生管理系统

    学生成绩管理系统 可实现功能 学生管理系统 查询学生信息:姓名.学号.性别.出生年月日.(学号自动生成且唯一) 查询学生成绩:每个人都有数学.Java与体育与选修课 查询学生课程 进行公选课选课 教师 ...

  5. Java课程设计——人事管理系统

    主界面代码: package PersonSystem; import java.awt.*; import java.awt.event.*; import javax.swing.*; impor ...

  6. 学生管理系统-火车订票系统 c语言课程设计

    概要: C 语言课程设计一---学生管理系统 使使用 C 语言实现学生管理系统.系统实现对学生的基本信息和考试成绩的 管理.采用终端命令界面,作为系统的输入输出界面.采用文件作为信息存储介质. 功能描 ...

  7. Java课程设计—学生成绩管理系统(201521123005 杨雪莹)

    一.团队课程设计博客链接 学生成绩管理系统 二.个人负责模块或任务说明 学生成绩录入 显示所有学生信息 显示各科平均成绩 显示学生成绩(按降序排序) 三.自己的代码提交记录截图 四.自己负责模块或任务 ...

  8. JAVA课程设计---学生基本信息管理系统(201521123039 王兴)

    1.团队课程设计博客链接 http://www.cnblogs.com/zyjjj/p/7061880.html 2.个人负责模块或任务说明 函数 功能说明 Search 查找学生信息,分为两种查找方 ...

  9. Java课程设计—学生成绩管理系统(54号童欢)

    1. 团队课程设计博客链接 http://www.cnblogs.com/wufuckshuo/p/7063183.html 2.个人责模块或任务说明 负责模块/任务:主函数(调用其他的功能函数),添 ...

随机推荐

  1. 修改Maven的本地仓库地址

    已经配置好的设定文件: 1.创建一个本地仓库的地址 2.修改Maven中conf目录下的settings.xml文件 在此处添加修改后的本地仓库的地址   3.打开cmd 输入mvn help:sys ...

  2. Android开发环境搭建(原创)

    1,我的环境: win8 64位 2,软件安装: 1) jdk-7u40-windows-i586.exe 下载合适的版本,我下载的是 jdk7u40 32位 for windows 安装JDK,配置 ...

  3. xmanager小技巧

    使用manager时候,左键选中之后,直接右键粘贴,能带来效率的提升.虽然是小技巧,但有人还是不知道,这里简单写一下,供需要的同学参考. 简单二步设置: 1.工具-选项

  4. Java集合框架Collection(1)ArrayList的三种遍历方法

    ArrayList是java最重要的数据结构之一,日常工作中经常用到的就是ArrayList的遍历,经过总结,发现大致有三种,上代码: package com.company; import java ...

  5. SpringBoot整合日志框架LogBack

    日志可以记录我们应用程序的运行情况,我们可以通过日志信息去获取应用程序更多的信息.常用处理java日志的组件有:slf4j.log4j.logback.common-logging等.其中log4j是 ...

  6. vue-resource.js的get和post的正确用法

    在网上看到人家写的vue-resource.js的get方法例子, new Vue({ el:'body', data:{ }, methods:{ get:function(){ this.$htt ...

  7. Markdown教程<3> 数学公式(1)

    # Markdown教程<3> 数学公式(1) 1.如何在markdown中使用公式 公式分为行内公式与行间公式,其中: 行内公式使用$ 数学公式 $ 行间公式使用$$ 数学公式 $$ 2 ...

  8. thinkphp5ajax分頁&&搜索後分頁

    //控制器層 //分頁 public function list_january_table(){ //設置當前頁 $page = input("post.page") ? inp ...

  9. Linux下Flume的安装部署

    一.前置条件 Flume需要依赖JDK 1.8+,JDK安装方式见本仓库: Linux环境下JDK安装 二 .安装步骤 2.1 下载并解压 下载所需版本的Flume,这里我下载的是CDH版本的Flum ...

  10. C#常用设计模式--单例模式

    为什么要使用单例模式 在我们的整个游戏生命周期当中,有很多对象从始至终有且只有一个.这个唯一的实例只需要生成一次,并且直到游戏结束才需要销毁.  单例模式一般应用于管理器类,或者是一些需要持久化存在的 ...