• 学术休假-学生信息管理系统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 xiaofan@163.com"<<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;
    }
    
    运行结果:






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



    @ Mayuko

  • 相关阅读:
    BZOJ_4383_[POI2015]Pustynia_线段树优化建图+拓扑排序
    BZOJ_1492_[NOI2007]货币兑换Cash_CDQ分治+斜率优化
    BZOJ_3073_[Pa2011]Journeys_线段树优化建图+BFS
    BZOJ_2726_[SDOI2012]任务安排_斜率优化+二分
    BZOJ_1406_[AHOI2007]密码箱_枚举+数学
    哈希表(Hash table)
    算法分析方法之平摊分析(Amotized Analysis)
    数据库视图功能的使用
    不基于比较的排序算法:Counting-sort和Radix-sort
    QuickSort(快速排序)的JAVA实现
  • 原文地址:https://www.cnblogs.com/mayuko/p/4567563.html
Copyright © 2020-2023  润新知