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

感觉看到题目整个一年的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. Arch Linux 是个 针对 i686 优化的 Linux 发行版(通过可以轻松使用的二进制包系统 - pacman)

    Arch Linux 是个 针对 i686 优化的 Linux 发行版(通过可以轻松使用的二进制包系统 - pacman)Arch 同时也拥有一个类似 ports 的包构建系统(Arch Build ...

  2. 智能合约开发——以太坊 DApp 实现 购买通证token

    合约的buy()方法用于提供购买股票的接口.注意关键字payable,有了它买股票的人才可以付钱给你. 接收钱没有比这个再简单的了! function buy() payable public ret ...

  3. 国外优秀的UI设计资源库收集

    国外优秀的UI设计资源库 网站设计或者说UI设计对于Web上的运用是非常的关键,一个站做得好不好,能不能吸引人的眼球,设计占了不低的地位,但话又说回来,Web前端人员又有多少人是设计专业毕业,具有这方 ...

  4. HttpWebRequest 在出错时获取response内容

    HttpWebRequest 请求时,服务器会返回500  501这些错误 并包含错误信息,通过如下代码可以拿到错误信息 HttpWebResponse res; try { res = (HttpW ...

  5. DUI-Windows消息机制要点(34篇)

    [隐藏] 1窗口过程概念 2消息类型 2.1系统定义消息 2.1.1窗口消息 2.1.2命令消息 2.1.3控件通知消息 2.1.4程序定义消息 3消息队列 3.1系统消息队列 3.2线程消息队列 4 ...

  6. 使用Nodejs实现实时推送MySQL数据库最新信息到客户端

    下面我们要做的就是把MySQL这边一张表数据的更新实时的推送到客户端,比如MySQL这边表的数据abc变成123了,那使用程序就会把最新的123推送到每一个连接到服务器的客户端.如果服务器的连接的客户 ...

  7. php PAC 安装

    LIUNX wget http://pecl.php.net/get/APC-3.1.8.tgz tar -zxvf APC-3.1.8.tgz cd APC-3.1.8 /usr/local/php ...

  8. OSGEarth环境搭建

    1.下载OsgEaarth2.8源码 https://codeload.github.com/gwaldron/osgearth/legacy.zip/osgearth-2.8 2.下载perl 编译 ...

  9. hgoi#20190514

    T1-Curriculum Vitae 给你一个长度为n的01序列a,删去其中的几个数,使得序列中左边是连续的0,右边是连续的1,可以没有0或1,求最多剩下几个数 解法 对于每个点看它左边几个0,右边 ...

  10. DNS之主服务器正向区域部署流程

    正向区域:将域名解析为IP 搭建步骤 1)定义区域 2)编写区域解析库文件 3)添加记录 环境介绍 [root@dns ~]# cat /etc/centos-releaseCentOS releas ...