正文
一,编写目的:
完成题目所要求的全部功能,并加入自己的设计风格,在界面友好的基础上,增加一些附加功能,使得功能更为强大,最终得到一个可靠性高,易于操作的学生信息管理的系统。
二.系统功能分析
1. 添加学生信息
添加学生信息,提供学生信息的添加。还设置有返回主菜单的选项以方便用户。
2. 修改学生信息
修改学生信息设置了学生检查,如果学生人数NUM的值为0,则返回主菜单。如果学生人数NUM不为0,则进入删除学生信息的界面。修改学生信息板块功能强大,界面友好,用循环控制修改某学生属性,这样使得操作极为方便。
3. 删除学生信息
删除学生信息中设计了对学生人数的检查,如果学生人数NUM的值为0,则返回到主菜单。如果学生人数NUM不为0,则进入删除学生信息的界面。界面包括学生信息列表,和删除选项,方便用户的操作。
4. 学生信息查找
通过find()函数进行查找。该函数比较简单,通过循环一次比较Per[n].num是否与你输入的num是否相等,如果相等,则输入到屏幕上,如果未找到任何匹配的学生,则显示“未找该学生”。
5. 保存学生信息
保存学生的信息,即为将当前所有的学生的信息存入到workerlist.txt中。用C++的ofstream的写入文件的对象进行控制。
6.学生信息的显示
对学生信息进行显示,包括学生的学号,姓名,院系,班级,等信息。方便对学生了解。
三.数据结构
本系统中主要的数据结构就是学生的信息,包含学号、姓名、院系、班级等,在处理过程中各项可以作为一个学生的不同属性来进行处理。
四.程序流程图
系统的执行应从功能菜单选择开始,依据用户的选择来进行后续的处理,直到用户选择退出系统为止,其间应对用户的选择做出判断及异常处理。图略。
职工信息修改模块与保存模块
void WorkerList::modify()//学生信息修改函数实现
{
if(NUM<=0)
{
cout<<"没有学生信息存入,系统将返回主菜单"<<endl;
menu();
}
else
{ cout<<"学生信息如下:"<<endl;
cout<<"工号\t姓名\t院系\t班级"<<endl;
for(int i=0;i<count;i++)
cout<<w[i].num<<'\t'<<w[i].name<<'\t'<<w[il.dept<<'\t'<<w[il.Class<<endl;
}
cout<<"请输入需要修改信息学生的学号:"<<endl;
string num1;
cin>>num1;
int j=0,k;
int flag=1;
while(flag)
{
for(;j<count;j++)
{
if(num1==w[j].num)
{
flag=0;
k=j;
break;
}
}
if(flag)
{
cout<<"不存在此学生,请重新输入:"<<endl;
j=0;
cin>>num1;
}
}
cout<<"你选择的学生的信息为:"<<endl;
cout<<"工号\t姓名\t院系\t班级"<<endl;
cout<<w[k].num<<'\t'<<w[k].name<<'\t'<<w[k].dept<<'\t'<<w[k].Class<<endl;
cout<<endl;
cout<<"***********************************************"<<endl;
cout<<"** 1.修改学号 **"<<endl;
cout<<"** 2.修改姓名 **"<<endl;
cout<<"** 3.修改院系 **"<<endl;
cout<<"** 4.修改班级 **"<<endl;
cout<<"***********************************************"<<endl;
cout<<endl;
cout<<"请选择数字编号0~4"<<endl;
int i3;
cin>>i3;
while(i3<0||i3>4)
{
cout<<"输入有误,请重新输入:"<<endl;
cin>>i3;
}
switch(i3)
{
case 1:
cout<<"请输入新的学生学号:";
cin>>w[k].num;
cout<<"修改信息已保存,现返回主菜单:"<<endl;
menu();
break;
case 2:
cout<<"请输入新的学生姓名:";
cin>>w[k].name;
cout<<"修改信息已保存,现返回主菜单:"<<endl;
menu();
break;
case 3:
cout<<"请输入新的学生院系:";
cin>>w[k].sex;
cout<<"修改信息已保存,现返回主菜单:"<<endl;
menu();
break;
case 4:
cout<<"请输入新的学生班级:";
cin>>w[k].edu;
cout<<"修改信息已保存,现返回主菜单:"<<endl;
menu();
break;
case 0:
menu();
default:
break;
}
学生信息保存模块
void WorkerList::save()
{
if(NUM<=0)
{
cout<<"没有学生信息存入,系统将返回主菜单"<<endl;
menu();
}
else
{
ofstream fout;
fout.open("D:\\worker.txt",ios::out);
cout<<"文件正在保存请稍候......!!"<<endl;
Sleep(1000);
cout<<"数据保存成功!!!"<<endl;
fout<<"已保存学生信息如下:"<<endl;
fout<<"工号\t姓名\t院系\t班级"<<endl;
for(int i=0;i<count;i++)
fout<<w[i].num<<'\t'<<w[i].name<<'\t'<<w[i].dept<<'\t'<<w[i].Class<<endl;
cout<<"系统返回主菜单:"<<endl;
menu();
fout.close();
}
}
设计总结
在本系统的开发过程中,由于组是初次开发软件,在知识、经验方面都存在着不足。另外,在整个开发的过程中,时间也比较仓促。因此,该系统必然会存在一些缺陷和不足。因为对学生信息管理的整个流程不够熟悉,在需求分析时未能做到完全满足用户的需求。
尽管本管理系统存在着很多不足,但其功能全面、易于日后程序更新、数据库管理容易、界面友好、操作方便、效率高、安全性好等优点是本管理系统所必需的。通过开发这个系统,我组掌握了的项目基本开发过程,用到的知识巩固了我组对C语言的学习,但在这次设计中的最大收获并不是掌握这几门开发工具的应用,而是学会了设计系统的思维方法,以及与同学们之间相互帮助的精神。
源程序代码:
#include<windows.h>//调用windows库API函数,设置控制台属性
#include<iostream>
#include"string"
#include<fstream>
#include <stdlib.h>
#include <stdio.h>
#define N 100//N作为最大学生总数
int f=0;//f作为开关
using namespace std;
string p;//p作为接收菜单选项的字符串
void color(int a)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
}
void menu();//显示菜单
class students
{
public:
students(){}
void show();//学生信息显示
~students(){}
friend class studentslist;//友元类,用来访问学生的属性
private:
string num,name,Class,dept;//学生的属性
};
class studentslist
{
private:
students w[N];//一维数组用来储存学生数目
int NUM;//用来计算学生数目
int count;//用来暂时记录当前操作第几个学生
public:
void add();//学生信息录入
void search();//学生信息查找
void dele();//学生信息删除
void modify();//学生信息修改
void save();//学生信息以文件形式保存
void showworker();//学生信息显示在屏幕上
studentslist()
{
NUM=0;
count=0;
}
};
void menu()
{
// color(10);
cout<<endl;
cout<<"***********************************************"<<endl;
cout<<"** **"<<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<<endl;
}
void domain()//主菜单函数实现
{
studentslist wl;
while(1){
system("cls");
menu();
cout<<"请选择数字编号0~6"<<endl;
int i1;
cin>>i1;
while(!(i1>=0&&i1<=6)){
cout<<"输入有误,请重新输入:"<<endl;
cin>>i1;
}
switch(i1){
case 1:
wl.add();break;
case 2:
wl.modify();break;
case 3:
wl.dele();break;
case 4:
wl.search();break;
case 6:
wl.save();break;
case 5:
wl.showworker();break;
case 0:
cout<<"系统退出,谢谢使用!!"<<endl;
exit(0);
default:
break;
}
cout<<"是否返回主菜单? Y/N"<<endl;
cin>>p;
if(p=="n"||p=="N"){
cout<<"系统退出,谢谢使用!!"<<endl;
exit(0);
}
}
}
void studentslist::add()//学生信息添加函数实现
{
cout<<"请输入学生信息:"<<endl;
cout<<"学号\t姓名\t班级\t系别"<<endl;
string num;
cin>>num;
for(int i=0;i<NUM;i++)
while(num==w[i].num){
cout<<"此学生学号已存在,请重新输入:"<<endl;
cin>>num;
}
w[NUM].num=num;
cin>>w[NUM].name>>w[NUM].dept>>w[NUM].Class;
++NUM;
count=NUM;
}
void students::show()//显示学生信息函数实现
{
cout<<"学号\t姓名\t系别\t班级"<<endl;
cout<<num<<'\t'<<name<<'\t'<<Class<<'\t'<<dept<<endl;
cout<<endl;
}
void studentslist::modify()//学生信息修改函数实现
{
if(NUM<=0){
cout<<"没有学生信息存入,系统将返回主菜单"<<endl;
menu();
}
else{
cout<<"学生信息如下:"<<endl;
cout<<"学号\t姓名\t系别\t班级"<<endl;
for(int i=0;i<count;i++)
cout<<w[i].num<<'\t'<<w[i].name<<'\t'<<w[i].dept<<'\t'<<w[i].Class<<endl;
}
cout<<"请输入需要修改信息学生的学号:"<<endl;
string num1;
cin>>num1;
int j=0,k;
int flag=1;
while(flag){
for(;j<count;j++){
if(num1==w[j].num){
flag=0;
k=j;
break;
}
}
if(flag){
cout<<"不存在此学生,请重新输入:"<<endl;
j=0;
cin>>num1;
}
}
cout<<"你选择的学生信息为:"<<endl;
cout<<"学号\t姓名\t系别\t班级"<<endl;
cout<<w[k].num<<'\t'<<w[k].name<<'\t'<<w[k].dept<<'\t'<<w[k].Class<<endl;
cout<<endl;
cout<<"***********************************************"<<endl;
cout<<"** 1.修改学号 **"<<endl;
cout<<"** 2.修改姓名 **"<<endl;
cout<<"** 3.修改系别 **"<<endl;
cout<<"** 4.修改班级 **"<<endl;
cout<<"** 0.返回主菜单 **"<<endl;
cout<<"***********************************************"<<endl;
cout<<endl;
cout<<"请选择数字编号0~4"<<endl;
int i3;
cin>>i3;
while(i3<0||i3>4){
cout<<"输入有误,请重新输入:"<<endl;
cin>>i3;
}
switch(i3){
case 1:
cout<<"请输入新的学生学号:";
cin>>w[k].num;
cout<<"修改信息已保存,现返回主菜单:"<<endl;
menu();
break;
case 2:
cout<<"请输入新的学生姓名:";
cin>>w[k].name;
cout<<"修改信息已保存,现返回主菜单:"<<endl;
menu();
break;
case 3:
cout<<"请输入新的学生系别:";
cin>>w[k].dept;
cout<<"修改信息已保存,现返回主菜单:"<<endl;
menu();
break;
case 4:
cout<<"请输入新的学生班级:";
cin>>w[k].Class;
cout<<"修改信息已保存,现返回主菜单:"<<endl;
menu();
break;
case 0:
menu();
default:
break;
}
}
void studentslist::showworker()//学生信息显示函数实现
{
if(NUM<=0){
cout<<"没有学生信息存入,系统将返回主菜单"<<endl;
menu();
}
else
cout<<"已保存的学生信息如下:"<<endl;
cout<<"学号\t姓名\t系别\t班级"<<endl;
for(int i=0;i<count;i++)
cout<<w[i].num<<'\t'<<w[i].name<<'\t'<<w[i].dept<<'\t'<<w[i].Class<<endl;
}
void studentslist::search()
{
if(NUM<=0){
cout<<"没有学生信息存入,系统将返回主菜单"<<endl;
menu();
}
else
cout<<"请选择查找方式:"<<endl;
cout<<"***********************************************"<<endl;
cout<<"** 1.按学号查找 **"<<endl;
cout<<"** 2.按姓名查找 **"<<endl;
cout<<"** 0.返回主菜单 **"<<endl;
cout<<"***********************************************"<<endl;
cout<<endl;
cout<<"请选择数字编号0~3"<<endl;
int i4;
cin>>i4;
while(i4<0||i4>3){
cout<<"输入有误,请重新输入:"<<endl;
cin>>i4;
}
if(i4==1){
string num2;
cout<<"请输入要查询的学生的学号:"<<endl;
cin>>num2;
int j=0,k;
int flag=1;
while(flag){
for(;j<count;j++)
{
if(num2==w[j].num)
{
flag=0;
k=j;
cout<<"查询的学生信息如下:"<<endl;
cout<<"学号\t姓名\t系别'\t'班级"<<endl;
cout<<w[k].num<<'\t'<<w[k].name<<'\t'<<w[k].dept<<'\t'<<w[k].Class<<endl;
break;
}
}
if(flag)
{
flag=0;
cout<<"不存在此学生!!\n返回主菜单"<<endl;
break;
}
}
}
else if(i4==2)
{
string name2;
cout<<"请输入要查询的学生学号:"<<endl;
cin>>name2;
int j2=0,k2;
int flag2=1;
while(flag2)
{
for(;j2<count;j2++)
{
if(name2==w[j2].name)
{
flag2=0;
k2=j2;
cout<<"查询的学生信息如下:"<<endl;
cout<<"学号\t姓名\t系别'\t'班级"<<endl;
cout<<w[k2].num<<'\t'<<w[k2].name<<'\t'<<w[k2].dept<<'\t'<<w[k2].Class<<endl;
break;
}
}
if(flag2)
{
flag2=0;
cout<<"不存在此学生!!\n返回主菜单"<<endl;
break;
}
}
}
else if(i4==0)
menu();
}
void studentslist::dele()//学生信息删除功能实现
{
if(NUM<=0)
{
cout<<"没有学生信息存入,系统将返回主菜单"<<endl;
menu();
}
else
cout<<"学生信息如下:"<<endl;
cout<<"学号\t姓名\t系别\t<<班级"<<endl;
for(int i=0;i<count;i++)
cout<<w[i].num<<'\t'<<w[i].name<<'\t'<<w[i].dept<<'\t'<<w[i].Class<<endl;
cout<<"请输入需要删除信息学生学号:"<<endl;
string num3;
cin>>num3;
int j=0,k;
int flag=1;
while(flag)
{
for(;j<count;j++)
{
if(num3==w[j].num)
{
flag=0;
k=j;
break;
}
}
if(flag)
{
cout<<"不存在此学生,请重新输入:"<<endl;
j=0;
cin>>num3;
}
}
cout<<"你选择的学生的信息为:"<<endl;
cout<<"学号\t姓名\t系别\t班级"<<endl;
cout<<w[k].num<<'\t'<<w[k].name<<'\t'<<w[k].dept<<'\t'<<w[k].Class<<endl;
cout<<"确认请输入Y\t返回主菜单请输入N "<<endl;
string p;
cin>>p;
while(1)
{
if(p=="y"||p=="Y")
{
cout<<"学生信息已删除!"<<endl;
for(int i=0;i<count;i++)
if(w[i].num==num3)
int j=i;
for(;j<=count-1;j++)
w[j]=w[j+1];
count--;
break;
}
else if(p=="n"||p=="N")
{
menu();
}
else
{
cout<<"输入有误,请重新输入:";
cin>>p;
}
}
}
void studentslist::save()
{
if(NUM<=0)
{
cout<<"没有学生信息存入,系统将返回主菜单"<<endl;
menu();
}
else
{
ofstream fout;
fout.open("f:\\worker.txt",ios::out);
cout<<"文件正在保存请稍候......!!"<<endl;
Sleep(1000);
cout<<"数据保存成功!!!"<<endl;
fout<<"已保存员工信息如下:"<<endl;
fout<<"学号\t姓名\t系别\t班级"<<endl;
for(int i=0;i<count;i++)
fout<<w[i].num<<'\t'<<w[i].name<<'\t'<<w[i].dept<<'\t'<<w[i].Class<<endl;
cout<<"系统返回主菜单:"<<endl;
menu();
fout.close();
}
}
int main(){
system("color 2f");
domain();
return 0;
}