编号:44995847
类型:共享资源
大小:371.50KB
格式:DOC
上传时间:2020-01-19
上传人:ms****95
认证信息
个人认证
肖**(实名认证)
河南
IP属地:河南
20
积分
- 关 键 词:
-
基于
C++
学生
籍贯
信息
记录簿
设计
- 资源描述:
-
基于C++的学生籍贯信息记录簿设计
学生姓名: 指导老师:
摘 要 随着现代化校园的发展,学生的学籍管理需要更快捷方便的信息化管理模式。设计一个基于c++的学生档案管理系统,可以方便对学生信息的管理。本设计实现了全校学生信息查询,新来的学生信息进行信息录入,由于学生上课情况复杂,还实现了信息修改,及时调整学生的基本情况的功能。本设计的学校学生档案管理系统,使用了面向对象的方法,运用Microsoft Visual C++ 6.0实现具有添加新学生、显示全部、删除、删除全部、修改、退出等功能的学生籍贯管理系统。
关键词 程序设计;C++;学籍管理
1 引 言
学生档案管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
计算机已经成为我们学习和工作的得力助手:
今天,计算机的价格已经十分低廉,性能却有了长足的进步。它已经被应用于许多领域,计算机之所以如此流行的原因主要有以下几个方面:
首先,计算机可以代替人工进行许多繁杂的劳动;
其次,计算机可以节省许多资源;
第三,计算机可以大大的提高人们的工作效率等等。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对学生档案信息进行管理,具有手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生档案管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。
学生档案管理系统是典型的信息管理系统(MIS),其开发主要包括保密和前台应用程序的开发两个方面。
本次课程设计目的:通过一个企业人事管理系统,使学校档案管理工作系统化、规范化、自动化,从而达到提高学校管理效率。使学生掌握一门高级程序设计语言,了解面向对象程序设计的基本概念与方法,进而学会利用C++语言学会解决一般应用问题,并为后续的专业课程奠定程序设计基础。
系统的基本模块:根据系统功能的要求,学生档案系统可以分为新学生档案的输入,学生档案的修改、查询和删除等模块。
2 系统需求分析
2.1问题定义
项目:学生管理应用软件。
目的:让院校有效的管理体制学生信息,帮助学校老师掌握学生的情况。
背景:根据当前某高校的学生管理出现异常问题,它浪费人力和其它资源。因此,这种缺陷而制定开发这个学生管理系统软件。
2.2 可行性研究
从技术方面,是通过C++来做系统的前台,来实现整系统的功能;从操作方面,基本的录入、查询、修改等都能满足用户的需求;此次设计没有考虑经济可行性。经过这一阶段确定了该系统的粗略系统流程图。
可行研究阶段的目标是:使工作人员从繁琐的填表,查表工作中解放出来;提高工作质量,使供需双方都获得满意的结果;促进报表,提高工作效率。
2.3 需求分析
应该确定系统必须在Microsoft Visual C++ 6.0的环境下实现具有添加新学生、显示全部、删除、删除全部、修改、退出等功能的学生档案管理系统。
通过以上可以知道该软件主要有以下功能模块:
学生学籍异动管理
奖惩情况管理
档案管理
成绩管理
考勤管理
其中本次课程设计实现的档案模块又分为如下子模块:
登陆界面:主要是对用户权限的判断,.判断是否为合法用户,是合法用户的就可以对数据进行。
新生录入:主要是将新生信息录入到数据库中;
管理项目:对学生信息进行添加、删除、修改、查询等。
3设计流程及算法
3.1总体设计:1.设置输入输出流及将程序由磁盘文件保存,构件类stu,其主要包括:学号,姓名,籍贯.
2.构建无返回值main函数,输出由与程序相关操作构成的信息链表
3.根据链表设置利用switch函数和循环函数将链表中的内容一一实现.
3.2详细设计:设计流程图:
目前程序已达到的功能
档案管理
添加
修改
查询
删除
系统
图3.1 系统设计流程图
一. 信息链表内容如下:
请选择您需要的操作
操作:
(0) 数据录入
(1) 增加人员
(2) 删除人员
(3) 修改数据
查询:
(4) 按姓名查询
(5) 按学号查询
(6) 输出所有学生的籍贯信息
(7) 按籍贯查询
二.选择相关操作请输入相对应的括号里的阿拉伯数字。
三.设置do-while函数使输入序号与符号所需要求相对应。
四.在do函数中设立switch语句,实现多分支选择结构,并实现序号与相应内容的对应关系.
Switch
Case 0
数据录入
case 1
增加人员
case 2
删除人员
case 3
修改数据
case 4
按姓名查询
case 5
输出所有学生的籍贯信息
case 6
按籍贯查询
图3.2
3.3算法的实现与运行:
在程序开始运行是既会出现一信息链表,按链表要求输入序号,若输入的数字不是在0-7这个范围之内则要求重新输入。而实现该过程需要利用到boor语句和if循环。
① case 0 数据录入:以cin和cout形式输入学号,籍贯,姓名,以file[j]形式存入到数组s[i]中,并将信息存 入到磁盘中.
file[j]=new ofstream("d:\\document.txt",ios::ate);其作用是将输入的数据存入到已有的文件,文件指针指向文件末尾。既是将录入的内容添加到文件的末尾。并在输入完成后将*file[j]和s[i]中的i和j都自加1,既是自动使文件指针指向文件末尾。
char c;
char name[20],bornplace[50];int number;
do
{
cout<<"请输入姓名"<>name;
cout<<"请输入学号:"<>number;
cout<<"请输入籍贯:"<>bornplace;
file[j]=new ofstream("d:\\document.txt",ios::ate);
*file[j]<<"姓名"<>name;
cout<<"请输入学号:"<>number;
cout<<"请输入籍贯:"<>bornplace;
file[j]=new ofstream("d:\\document",ios::ate);
*file[j]<<"姓名"<name中找到与输入name相同的数据后,使其在输出时是不显示的。
char name[20];bool flag3=0;char c;
do
{
cout<<"请输入您要删除的学生姓名:"<>name;
for(int h=0;hname)==0)
{
flag3=1;
i--;
do
{
s[h]=s[h+1];
h++;
}
while(h<=i);
}
}
if(flag3==0)
cout<<"您要求删除的对象本来就不存在!请检查输入的正确性!";
③ case 3 修改数据:定义字符型变量姓名,籍贯,整型变量学号和布尔型变量,在利用do-while函数进行控制,在函数内输入学生的姓名,并利用程序中的strcmp 函数改变原数据库中对应学生姓名下的各个信息。其原理即是寻找到需要修改的学生后用重新输入的数据信息将原信息覆盖,从而实现文件的修改。
char name[20],born[50];int num;;flag2=0;
char c;
do
{
cout<<"请输入您要修改的学生的姓名:"<>name;
for(int h=0;hname)==0)
{
flag2=1;
cout<<"请输入新的学号:"<>num;
cout<<"请输入新的籍贯:"<>born;
s[h]->number=num;
strcpy(s[h]->bornplace,born);
cout<<"数据修改成功!";
⑤case 4 按姓名查询:定义一字符型数组,输入要查询学生的姓名,利用指针和strcmp函数及for循环在数据库中寻找相应的数据,在找到后输出。
其寻找的格式为(*s[q]).name。在找到后依次输出同一个类中的其他的内容。
char t[20];
char c;
do
{
int flag1=0;
cout<<"请输入你要查询学生的姓名"<>t;
for(int q=0;qname<<" "<<
"学号:"<<" "<
number<<" "<<"籍贯:"<<" "<bornplace < //输入输出流
#include //类的运算
#include //用来支持对磁盘文件的输出
#include
class stu //构造一个类,类名为stu
{
char name[20]; //名字
int number; //学号
char bornplace[50]; //出生地
public:
stu()
{
}
stu(char n[20],int num,char born[50])
//将n,num,born的内容复制给name,number,bornplace
{
strcpy(name,n);
number=num;
strcpy(bornplace,born);
}
friend void main(); //友元函数
};
void main()
{
cout<<"请选择您需要的操作!"<>p; //命题为真时
if((p>=0&&p<=7))
flag2=1;
else //命题为假时令重新输入
cout<<"指令错误!请重新输入:"<>name;
cout<<"请输入学号:"<>number;
cout<<"请输入籍贯:"<>bornplace;
file[j]=new ofstream("d:\\document.txt",ios::ate);
//将录入的内容存入磁盘中
*file[j]<<"姓名"<>c;
flag2=0;
do //控制输入内容为y或n
{
if(c!=y&&c!=n) //if语句为控制条件
{
cout<<"指令错误!请重新输入!"<>c;
}
else
flag2=1;
}
while(flag2==0);
}
while(c==y);
break;
}
case 1: //增加人员
{
char name[20],bornplace[50];int number; //定义变量
char c;
do
{
//输入要增加的学生的相关内容
cout<<"请输入您要增加的学生的姓名:"<>name;
cout<<"请输入学号:"<>number;
cout<<"请输入籍贯:"<>bornplace;
file[j]=new ofstream("d:\\document",ios::ate);
//将输入的内容存入磁盘空间
*file[j]<<"姓名"<>c;
if(c!=y&&c!=n)
{
cout<<"指令错误!请重新输入!"<>c;
}
}while(c==y);
break;
}
case 2: //删除人员
{
char name[20];bool flag3=0;char c;
do
{
cout<<"请输入您要删除的学生姓名:"<>name;
for(int h=0;hname)==0)
//通过指针使要删除的学生信息被跳过,次删除方式为间接删除
{
flag3=1;
//命题为真是学生总人数减1,并使指针跳过需要删除的人员
i--;
do
{
s[h]=s[h+1]; //指针跳过需要删除的人员
h++;
}
while(h<=i);
}
}
if(flag3==0) //若输入的学生不存在则执行以下内容
cout<<"您要求删除的对象本来就不存在!请检查输入的正确性!";
cout<<"要继续删除吗?(y/n)"<>c;
if(c!=y&&c!=n)
{
cout<<"指令错误!请重新输入!"<>c;
}
}
while(c==y);
break;
}
case 3: //修改数据
{
char name[20],born[50];int num;;flag2=0;
char c;
do
{
cout<<"请输入您要修改的学生的姓名:"<>name;
for(int h=0;hname)==0)
{
flag2=1;
cout<<"请输入新的学号:"<>num;
cout<<"请输入新的籍贯:"<>born;
s[h]->number=num;
strcpy(s[h]->bornplace,born);
cout<<"数据修改成功!";
}
}
if(flag2==0) //确定输入的正确性
{
cout<<"您要修改的学生本来就不存在!请检查重新输入!"<>c;
if(c!=y&&c!=n)
{
cout<<"指令错误!请重新输入!"<>c;
}
}
while(c==y);
break;
}
case 4: //按姓名查询
{
char t[20];
char c;
do
{
int flag1=0;
cout<<"请输入你要查询学生的姓名"<>t;
for(int q=0;q>c;
if(c!=y&&c!=n)
{
cout<<"指令错误!请重新输入!"<>c;
}
}
while(c==y);
break;
}
case 5: //按学号查询
{
int n ;int j=0;char c;
do
{
int flag=0;
cout<<"请输入你要查询的学生学号:"<>n;
for(int j=0;j>c;
if(c!=y&&c!=n)
{
cout<<"指令错误!请重新输入!"<>c;
}
}
while(c==y);
break;
}
case 6: //输出所有学生的籍贯信息
{
cout<<"本系统所有学生的籍贯信息如下:"<name<<" "<<
"学号:"<<" "<number<<" "<<"籍贯:"<<" "<bornplace <>m;
for(int w=0;w>c;
if(c!=y&&c!=n)
{
cout<<"指令错误!请重新输入!"<>c;
}
}
while(c==y);
break;
}
}
cout<<"您想继续进行其他操作吗?(y/n)"<>w;
if(w!=y&&w!=n)
cout<<"指令错误!请重新输入!"<>p;
}
while(w==y);
for(int x=0;x
- 内容简介:
-
-
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。