学术休假-学生信息管理系统v1.0

这是第一个学术休假的项目,主体部分在回家时的火车上完成的,隔了几天继续加工,今天终于完成,这是学生管理系统的beta版本,后续还将继续完善。

学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能:
(1)系统以菜单方式工作
(2)学生信息录入功能(学生信息用文件保存)---输入
(3)学生信息浏览功能---输出
(4)查询、排序功能
     按学号查询
     按姓名查询
(5)学生信息的删除与修改(可选项)

/*
 *Copyright (c) 2015,烟台大学计算机学院
 *All gight reserved.
 *文件名称:temp.cpp
 *作者:邵帅
 *完成时间:2015年1月19日
 *版本号:v1.0
*/
#include<fstream>
#include<iostream>
#include<cstdlib>
#include<string>
using namespace std;
void showmeun(void);
int name_search(string ,int );
int num_search(string ,int );
void showinfo(int num);
void showchange(void);
int open(void);
void save(int num);
struct Student
{
    string number;
    string name;
    string old;
    string sex;
    string birthday;
    string add;
    string phone;
    string mail;
}; //档案结构体
Student stu[8000];
int main()
{
    int choice,i;
    string numkey,namekey;
    int num=0,add,addsum,cut;
    while (1)
    {
        num=open();
        showmeun();//打开开始菜单
        cin>>choice;
        if (choice==0)
        {
            cout<<"感谢使用@Mayuko学生管理系统!"<<endl;
            break;
        }
        else if (choice==1)
        {
            cout<<"请输入学生的学号:";
            cin>>numkey;
            i=num_search(numkey,num);
            if (i==-1)
            {
                cout<<"无此学生信息!"<<endl;
                continue;
            }
            else
                showinfo(i);
            cout<<endl;
        }
        else if (choice==2)
        {
            cout<<"请输入学生的姓名:";
            cin>>namekey;
            i=name_search(namekey,num);
            if (i==-1)
            {
                cout<<"无此学生信息!"<<endl;
                continue;
            }
            else
                showinfo(i);
            cout<<endl;
        }
        else if (choice==3)
        {
            cout<<"学生的信息如下:"<<endl;
            for (i=0; i<num; i++)
            {
                showinfo(i);
                cout<<endl;
            }
        }
        else if (choice==4)
        {
            cout<<"请输入写入的个数;";
            cin>>addsum;
            cout<<"请依次输入学生的学号、姓名、年龄、性别(M or F)、出生年月、地址、电话、E—mail"<<endl;
            cout<<"列如:201401 晓凡 18 M 19961218 地球村 17862817891 [email protected]"<<endl;
            //打开文件
            ofstream outfile("students.txt",ios::app);
            if (!outfile)
            {
                cout<<"打开文件失败!";
                exit(1);
            }
            num+=addsum;
            for (add=num; add<(addsum+num); add++)
            {
                cin>>stu[add].number>>stu[add].name>>stu[add].old>>stu[add].sex>>stu[add].birthday>>stu[add].add>>stu[add].phone>>stu[add].mail;
                outfile<<stu[add].number<<" "<<stu[add].name<<" "<<stu[add].old<<" "<<stu[add].sex<<" "<<stu[add].birthday<<" "<<stu[add].add<<" "<<stu[add].phone<<" "<<stu[add].mail<<endl;
            }
            outfile.close();
            cout<<"写入结束!共写入"<<addsum<<"条记录,现共有"<<num<<"条记录。"<<endl;
            //文件写入结束
        }
        else if (choice==5)
        {
            cout<<"请输入要修改学生的学号:";
            cin>>numkey;
            i=num_search(numkey,num);
            cout<<"您正在修改“";
            showinfo(i);
            cout<<"”的信息"<<endl;
            showchange();
            cin>>cut;
            cout<<"请输入修改的内容:";
            while (1)
            {
                if (cut==1)
                    cin>>stu[i].number;
                else if (cut==2)
                    cin>>stu[i].name;
                else if (cut==3)
                    cin>>stu[i].old;
                else if (cut==4)
                    cin>>stu[i].sex;
                else if (cut==5)
                    cin>>stu[i].birthday;
                else if (cut==6)
                    cin>>stu[i].add;
                else if (cut==7)
                    cin>>stu[i].phone;
                else if (cut==8)
                    cin>>stu[i].mail;
                else
                {
                    cout<<"输入错误,即将返回"<<endl;
                    break;
                }
                save(num);
                cout<<"修改成功!"<<endl;
                break;
            }

        }
    }
    return 0;
}
int open(void)
{
    int num=0;
    ifstream infile("students.txt",ios::in);
    if (!infile)
    {
        cout<<"打开文件失败!";
        exit(1);
    }
    while (infile>>stu[num].number)
    {
        infile>>stu[num].name;
        infile>>stu[num].old;
        infile>>stu[num].sex;
        infile>>stu[num].birthday;
        infile>>stu[num].add;
        infile>>stu[num].phone;
        infile>>stu[num].mail;
        num++;
    }
    infile.close();
    //文件读取结束
    return num;
}
void save(int num)
{
    int add;
    ofstream outfile("students.txt",ios::out);
    if (!outfile)
    {
        cout<<"打开文件失败!";
        exit(1);
    }
    for (add=0; add<num; add++)
    {
        outfile<<stu[add].number<<" "<<stu[add].name<<" "<<stu[add].old<<" "<<stu[add].sex<<" "<<stu[add].birthday<<" "<<stu[add].add<<" "<<stu[add].phone<<" "<<stu[add].mail<<endl;
    }
    outfile.close();
}
void showmeun(void)
{
    cout<<"-----------------"<<endl;
    cout<<"学生信息管理系统"<<endl;
    cout<<"-----------------"<<endl;
    cout<<"1、按学号查找"<<endl;
    cout<<"2、按姓名查找"<<endl;
    cout<<"3、学生信息浏览"<<endl;
    cout<<"4、学生信息录入"<<endl;
    cout<<"5、修改学生信息"<<endl;
    cout<<"请选择功能(键入0退出):";
}
void showchange(void)
{
    cout<<"--------------"<<endl;
    cout<<"1-学号"<<endl;
    cout<<"2-姓名"<<endl;
    cout<<"3-年龄"<<endl;
    cout<<"4-性别"<<endl;
    cout<<"5-出生年月"<<endl;
    cout<<"6-地址"<<endl;
    cout<<"7-电话"<<endl;
    cout<<"8-E-mail"<<endl;
    cout<<"--------------"<<endl;
    cout<<"请输入要修改的选项:";
}
void showinfo(int num)
{
    cout<<stu[num].number<<" "<<stu[num].name<<" "<<stu[num].old<<" "<<stu[num].sex<<" "<<stu[num].birthday<<" "<<stu[num].add<<" "<<stu[num].phone<<" "<<stu[num].mail;
}
int name_search(string key,int n)
{
    int i;
    for (i=0; i<n; i++)
    {
        if (key==stu[i].name)
            return i;
    }
    return i;
}
int num_search(string key,int n)
{
    int i=-1;
    for (i=0; i<n; i++)
    {
        if (key==stu[i].number)
            return i;
    }
    return i;
}
运行结果:

学术休假-学生信息管理系统v1.0_第1张图片


学术休假-学生信息管理系统v1.0_第2张图片


学术休假-学生信息管理系统v1.0_第3张图片


学术休假-学生信息管理系统v1.0_第4张图片


学术休假-学生信息管理系统v1.0_第5张图片


另外,temp文件夹的文件“students.txt”文件截图:

学术休假-学生信息管理系统v1.0_第6张图片


@ Mayuko

你可能感兴趣的:(学术休假-学生信息管理系统v1.0)