在南航四年的时间里面,有件事情是值得吹逼的,就是我的C++考了100分。在这里分享C++课程设计文件给大家,仅供大家参考。

点击这里下载课程设计报告

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <iomanip>
#include <cstring>
using namespace std;

class Book
{
    char bookNo[20], bookName[20];
    int Num;
public:
    Book(char *nop =NULL, char *nap =NULL, int n =0)
    {
        if(nop)strcpy(bookNo, nop);
        if(nap)strcpy(bookName, nap);
        Num = n;
    }
    void Show()
    {
        cout << left << setw(20) << bookNo << left << setw(20) << bookName << left << setw(20) << Num << endl;
    }
    void Print(ofstream &out)
    {
        out << left << setw(20) << bookNo << left << setw(20) << bookName << left << setw(20) << Num << endl;
    }
    void setInfo(char *nop, char *nap, int n)
    {
        strcpy(bookNo, nop);
        strcpy(bookName, nap);
        Num = n;
    }
    void setNum(int n)
    {
        Num = n;
    }
    int getNum()
    {
        return Num;
    }
    friend class bookList;
};
class bookList
{
    Book *Books;
    int curLen, maxLen;
public:
    bookList(int len =20)
    {
        maxLen = len;
        curLen = 0;
        Books = new Book[maxLen];
    }
    ~bookList()
    {
        delete []Books;
    }
    void appendBook(char *nop, char *nap, int n)
    {
        if(curLen == maxLen)
        {
            Book *newBooks = new Book[maxLen+10];
            for(int i=0; i<curLen; i++)
                *(newBooks+i)=*(Books+i);        //简单的浅拷贝
            delete []Books;
            Books = newBooks;
            maxLen += 10;
        }
        getBooks(curLen++).setInfo(nop, nap, n);
    }
    int isIn(char *bkNo)
    {
        for (int i=0; i<curLen; i++)
        {
            if(strcmp(getBooks(i).bookNo,bkNo)==0) return i;
        }
        return -1;
    }
    Book & getBooks(int i)
    {
        return *(Books+i);
    }
    void deleteBook(char *bkNo)
    {
            for (int i=isIn(bkNo); i<curLen-1; i++)
             *(Books+i) = *(Books +i +1);    //curLen 控制长度,最后一个不用管,有新数据时会将其覆盖
            curLen--;
    }
    void sortBooks()
    {
        int min;
        Book temp;

        for (int i=0; i<curLen-1; i++)
        {
            min = i;
            for (int j=i+1; j<curLen; j++)
                if(strcmp(getBooks(min).bookNo, getBooks(j).bookNo)==1) min = j;
            if (min != i)
            {
                temp = getBooks(min);
                getBooks(min) = getBooks(i);
                getBooks(i) = temp;
            }
        }
        cout << "按书号的升序排列了图书" << endl;
    }
    void showAll()
    {
        for (int i =0; i<curLen; i++)
            getBooks(i).Show();
    }
    int curBookLen()
    {
        return curLen;
    }
    void setCurBookLen(int len)
    {
        curLen = len;
    }
    void initBookList()
    {
        readFromFile("bookdata.txt");
    }
    void readFromFile(char *filename)
    {
        int len;
        char bkNo[20],bkName[20];
        int Num;
        ifstream infile(filename);
        infile >> len;
        for (int i=0; i<len; i++)
        {
            infile >> bkNo >> bkName >> Num;
            appendBook(bkNo, bkName, Num);
        }
        infile.close();
        cout << "从文件插入了" << len << "条记录" << endl;
    }
    void writeToFile(char *filename)
    {
        ofstream outfile(filename);
        outfile << curLen << endl;
        for (int i=0; i<curLen; i++)
            getBooks(i).Print(outfile);
        outfile.close();
        cout << "向文件输出了" << curLen << "条记录" << endl;
    }
};
void appendRecord(bookList &booksObj)
{
    char bkNo[20], bkName[20];
    int Num;

    cout << "    请输入新增书籍的书号、书名和数量:  ";
    cin >> bkNo >> bkName >> Num;
    booksObj.appendBook(bkNo, bkName, Num);
}

void delRecord(bookList &booksObj)
{
    char bkNo[20];
    cout << "    请输入您要删除的书号:  ";
    cin >> bkNo;
    if (booksObj.isIn(bkNo) >-1) booksObj.deleteBook(bkNo);
    else cout << "您要删除的书不存在" << endl;
}

void showAll(bookList &booksObj)
{
    booksObj.showAll();
}

void query(bookList &booksObj)
{
    char bkNo[20];
    int i;

    cout << "请输入书号:  ";
    cin >> bkNo;
    if ((i=booksObj.isIn(bkNo))>-1)
    {
        cout << "该书为";
        booksObj.getBooks(booksObj.isIn(bkNo)).Show();
    }
    else
        cout << "没有该图书!" << endl;
}

void addBooks(bookList &booksObj)
{
    int i,Num, number;
    char bkNo[20];

    cout << "请输入您要入库的书的书号和数量:  ";
    cin  >> bkNo >> number;
    if((i=booksObj.isIn(bkNo)) > -1)
    {
        Num = booksObj.getBooks(i).getNum();
        booksObj.getBooks(i).setNum(Num+number);
    }
    else
    {
        cout << "该书不存在,请增加一条记录" << endl;
        appendRecord(booksObj);
    }
}

void sellBooks(bookList &booksObj)
{
    int i, Num, sell;
    char bkNo[20];

    cout << "请输入您要销售书的书号、数量:  " << endl;
    cin >> bkNo >> sell;

    if((i=booksObj.isIn(bkNo)) > -1)
    {
        Num = booksObj.getBooks(i).getNum();
        if(Num<sell) cout << "库存不足" << endl;
        else
        {
            booksObj.getBooks(i).setNum(Num-sell);
            cout << "销售了" << sell << "本书" << endl;
        }
    }
    else     cout << "该书不存在,请增加一条记录" << endl;
}

void appendFromTxtFile(bookList &booksObj)
{
    char filename[20];

    cout << "请输入文件名: ";
    cin >> filename;
    booksObj.readFromFile(filename);
}

void writeToTxtFile(bookList booksObj)
{
    char filename[20];

    cout << "请输入文件名:  ";
    cin >> filename;
    booksObj.writeToFile(filename);
}

void sortByNo(bookList &booksObj)
{
    booksObj.sortBooks();
}

void deleteAll(bookList &booksObj)
{
    booksObj.setCurBookLen(0);
}

char Quit(bookList &booksObj)
{
    char flag;

    cout << "Are you sure to quit? input y or n  :";
    cin >> flag;
    if(flag == 'y') booksObj.writeToFile("bookdata.txt");
    return flag;
}

int menu_select()
{
    char *menu[11] = {
        "1.    追加图书记录",
        "2.    删除图书记录",
        "3.    查询所有图书记录",
        "4.    查询图书",
        "5.    图书入库",
        "6.    图书销售",
        "7.    批量导入图书",
        "8.    导出图书记录",
        "9.    按书号排序",
        "10.   删除全部图书记录",
        "0.    退出"
    };
    int choice;
    do{
        system("cls");
        cout << "                                图书库存管理系统" << endl << endl;
        cout << "                       =================================" << endl;
        for(int i=0; i<11; i++)
            cout << "                             " << menu[i] << endl;
        cout << "                       =================================" << endl;
        cout << "请输入选择: ";
        cin >> choice;
    }while(choice<0 || choice>10);
    return choice;
}

int main()
{
    bookList booksObj;
    int sel;
    booksObj.initBookList();

    for (;;)
    {
        switch(sel=menu_select())
        {
            case 1:appendRecord(booksObj);system("pause");break;
            case 2:delRecord(booksObj);system("pause");break;
            case 3:showAll(booksObj);system("pause");break;
            case 4:query(booksObj);system("pause");break;
            case 5:addBooks(booksObj);system("pause");break;
            case 6:sellBooks(booksObj);system("pause");break;
            case 7:appendFromTxtFile(booksObj);system("pause");break;
            case 8:writeToTxtFile(booksObj);system("pause");break;
            case 9:sortByNo(booksObj);system("pause");break;
            case 10:deleteAll(booksObj);system("pause");break;
            case 0:
                if(Quit(booksObj) != 'y') continue;
        }
        if(sel == 0) break;
    }
    return 0;
}

2019年11月18日,距离考研还有33天,我甚至还没有进入每日备考考研的状态。这个时候对我来说最大的安宁就是其他什么事情也不要发生,这样我才有可能在最后的时间复习备考……

事总与愿违

当天晚上我下意识的刷新学校教务处网页,发现新增了一个验证码。我删掉cookie,重新刷新网页,发现验证码还在那里。我意识到事情有点不妙,我马上打开御道南航。发现课程表功能已经不能正常刷新,除此之外,依赖于新版教务系统的考试成绩与考试安排功能也不能正常使用。

我很清楚发生了什么事情,学校教务处在登录页面新增了一个验证码。我又清楚事情不是那么简单。我对学校教务处网站的登录逻辑非常了解,之前的时候,第一次登录是不需要输入验证码的。只有你输入错误一次密码,才会要求用户输入验证码。我个人认为这个设计是非常符合逻辑的,因为这样既做到了不影响用户正常访问,又做到了不让机器暴力破解。
但是,今天学校里面竟然在登录页面未出现任何登录错误的情况下直接显示验证码。这件事情已经不是那么简单了,显然是为了阻止任何对网页的抓取。而我所做的小程序在全校范围内有过半的用户量,教务处不可能不知道,信息化处不可能不知道。很有可能,这件事情是针对我的。

我眼前有考研的事情一日日迫近,现在还要处理这些所谓的“政治”纠纷,我实在是压力很大。我把小杉叫到图书馆楼道,给她讲了这件事情。后来,我撰写了一篇声明,宣布御道南航即将停止运行。

服务终止声明

声明一发出,在校内引起反响。大多数同学表示支持和鼓励,有一部分同学打赏给我了十几块钱,有同学表示钱不用退了。最后,找我退钱的同学只有两三个,非常感谢同学们的支持。在当天晚上,看到御道南航的一个个可以点击的课表。每一行代码都倾注了我的心血,每一个功能都蕴含着我的汗水,想到这里,我不禁地哭出来。

一天晚上没有睡好,我内心相当痛苦。早上起来,我振作了精神,一切不能这么停止。我马上给教务处打电话,问他们的态度。从老师的意思中了解到,信息化处告诉了他们这个信息,他们在首页加上验证码防止爬取。我强调,我们告知用户密码会存储,用户授权我们使用,我们的服务不存在任何问题。教务处老师反复强调,这不太好,也讲不出个道理来。因为她是老师,我是学生。我的心里面还念叨着我的考研的事情,所以我只能先放下。她说,先停止,其实我也没办法继续爬了。当天,我请Peter给教务处老师联系,说明需要这个软件的意愿。次日,Peter找到教务处老师讲了这件事情。

令我感到可笑的是,教务处老师一直念叨着我们这个收费怎么怎么了。我说要服务同学,可我也没说不收费,收费的是增值服务。对别人的劳动付费,也是对自己的劳动的尊重。身为学校最重要部门教务处的老师,竟然连这点觉悟都没有,我想这不是老师的错,而是整个民族文化的悲哀。不尊重软件知识产权,也就没人想要创造。现在手上用的Windows、office、Photoshop甚至科研用的软件,多少是美国人的东西。只有真正把软件当成一种付费产品,而不是白嫖的东西,才能提高我们国家在国际上的软实力。

柳暗花明又一村

在学生处工作的陈卓建同学告诉我也许我可以申请学校里面的创业项目,我觉得相当不错。中间与陈同学开展了交流,我们觉得很可能能做出一番成绩。最后的想法大概是,延后考研一年,中间做一点创业项目。如果可以这样,我的整个大学生涯就圆满了。未来396天我要做的事情就是本科学业+创业项目+考研+雅思。读研以后争取可以申请到出国项目,土鳖总是要往海里放一放嘛,这个下来整个前路对我来说也就柳暗花明了。
说到光明,那什么是光明的。第二天我来将军路的时候,碰到了李宗祺同学。李同学是保研了南航,正好来这里上课,我们两个在路上进行了一路交流。我给他讲了我的想法,他认为我能做到感兴趣的事情就很好。最后,我们两个得出来一个结论,什么是光明的?所谓光明就是知道自己要做什么就是光明的。李同学之前不知道自己要做什么,现在保研了,那就好好读研,对他来讲,这两年就是光明的。对我而言,我之前不知道做什么,现在知道了,这就是光明的。

吃一堑长一智

整个考研这件事情困扰我很长时间无法决策,现在对我来讲真的是最佳选择了嘛?不可以更好了嘛?我想有很多地方可以改善的。

首先,我主动情况下绝对不会认识陈同学,这一次认识陈同学得益于我和小杉参加了一个中外交流的活动。因此,以后不能封闭自己,多去了解别人也是增长视野的一种方式
其次,我明明知道如果不选择就什么也做不好,但是从未做出明确的选择。似乎如果没有认识陈同学,我要等到考研失败才能重新振作(也许根本不会振作)。我内心里面其实一种选择了自己的兴趣,自己的创业爱好,但是我不肯放下考研。因为我觉得大家都考研,我不考研是一件不太好的事情,这件事情的经验是要听从内心的想法,不能跟大流,这一点冯锦瑾是我学习的榜样。

最后,读研还是非常有必要的,我之所以选择放弃还是因为时间没有安排好,大一挂的课还没过等等吧。现在没了这些麻烦事,还是会选择继续考研的,毕竟这也是我可以出国的一条切实可行的路。

“瑞辅大佬”,大家都喜欢这么称呼他,他对这个称呼也很喜欢的样子。同学们之所以这么称呼他,是因为他在大学期间用电脑做了很多“大事”。很多人可能以为瑞辅从小就开始玩电脑了,是一个小极客。事实则不然,今天就在这里分享一下瑞辅的电脑之路。

不像你所想

小杉小的时候家里面就开始开网吧了,开始了与计算机的零距离接触。而这些对于我来说,都是童话里面的故事。我家条件应该来说是相当差,家里面连彩色电视都没有(爷爷家有一个),更不要说电脑了。当然,农村里面没有谁家里面是有电脑的,所以也就没有那么羡慕。

小的时候,他的爸爸以在外地收破烂维持生计。爸爸并不是一个没有文化、没有上进行的人。只能说是家庭贫穷,不能再上学了。爸爸在外地收破烂的时候也会了解到一些“前沿”的知识。所以有一天,爸爸问:“你说咱家买个电脑有什么好处?什么坏处?要不要买?”。电脑对于我家来讲,算得上是一个梦境中的东西。爸爸问的不是买个电视行不行?买个冰箱行不行?而是直奔电子计算机。

我虽然年幼,但是听到爸爸这句话之后也没有任着性子说“买,一定要买!”。相反地,我回答道:“电脑是个很高级的东西,它有它的好处,也有它的坏处。有了电脑之后,我可能会沉迷于电子游戏,无法认真学习。所以现在我们家买电脑,我觉得不是一个合适的事情。”

电脑的启蒙

说到计算机的启蒙,这个时候就应该开始说说我的叔叔。和爸爸相比,叔叔更加聪明,学习能力更强。再加上叔叔没有在乡下,而是到了一个略有规模的小城市打工,见到的东西更多一点。没有叔叔回来,都会给我讲一点计算机的故事,告诉我有搜狐这种网络门户,有百度这种搜东西的网站,还可以用word来编辑文字。

我印象比较深刻的有这样一个问题。“叔叔,你说在一个word里面,同样一个汉字,一号的字和二号的字哪个占存储空间更多一点呢?”。叔叔说:“一样的。占据存储空间大小和字号大小无关,而和字数有关。”。也就是说从那个时候开始,虽然手里面没有电脑,但却已经开始了我的思考。

虽然没有电脑,但是后来爸爸买了一个功能机,这个功能机一度成为了我的快乐之源,当然上网费用也掏了不少。除了爸爸的手机,中间各种机会我还完了很多手机。我的同学们有了手机之后是赶紧上手一下学校里面同学所讲的游戏,赶紧申请个qq号,体验一下有qq号的“高贵”感觉。这个很多人不理解,但是你试想,学校里面很多人讲着游戏,说qq各种钻、qq秀、偷菜等等,我们这些孩子都会充满好奇。但是我虽然同样期待,但并不那么热衷。相反地,我非常感兴趣各种软件,比如说wps等等。

由于国家重视教育或者说我赶得比较巧,我所处的教育环境并不是那么糟糕。我在农村上学的时候(1-5年级),如果没记错,三年级的时候就第一次接触到了电脑。第一堂课是用画图工具来画图。怎么画矩形、画圆、填充颜色。后来大概是四年级的时候我就第一次在电脑上打出了我的名字,之前的时候一直不会切换输入法。“按空格呀!按空格呀!”,老师在旁边说道着,我一按空格,我的名字就出现在了屏幕上,当时别提多喜悦了。

中学的时光

中学来到了南宫市最好的初中——丰翼中学,每周一次计算机课成了我的期待。当时按学号就坐,一排12个人,然后一条龙接起来坐(就是到头的时候直接拐弯)。我是24号,所以我背后就是1号、2号那些同学。我们初中的座位是按入学成绩排的,所以我身后可以说是班里面学习很好的同学。

老师可能觉得一点点教太麻烦了,所以每天上课就是看视频,看完自己操作。基本上学习的内容就是word,当时我觉得实在是太枯燥了,所以也没有认真听,也没有学会什么。每天就想着,赶紧看完视频,然后我自己研究一下电脑。不过说实话,自己乱点的这段时光,也没有学会什么东西。后来换了一个老师,开始教了一段时间的flash。关键帧、序列、填充序列、动画等等。后来没上完课,到了初三就不让上了。

高中的时候因为我们有个会考要考计算机,而且到我们那一年的时候正好要求比较严苛,不能替考。所以我们继续了每周一节的计算机课。老师并不划水,先演示一遍,然后随机抽同学上去操作,剩下的同学看着。因为老师严格,所以我也学得认真,这段时间讲得主要是excel这些知识,这些知识对我来说是非常重要的。不过值得一提的是我会考所有科目都是A,只有计算机是B。

高中的故事还没有结束。我在会考期间学习的excel知识的确让我非常感兴趣,排序,筛选等等。为了讲清楚,我得说一些背景。我们每个月有月考,月考结束之后就放三天假。这个期间呢,学校里面会公布这次月考的成绩。但是学校里面所有的表彰不是按照这次成绩来表彰的,而是按照这次成绩的60%和上次成绩的40%加权以后进行排名。可能是由于学校里面老师比较慢,每次开学之后才能得到这个加权成绩。按照当时的水平,应该来讲,学校里面不出成绩,整个年级除了我没人做得出来。而我做这个成绩并不是用电脑做的,而是用我的手机上的wps做的。这就是我每次放假回家之后的事情。

排序函数、vlookup函数、选择性粘贴、数据格式等等知识。当时我就拿着我的手机,然后百度该怎么做,怎么输入公式。而且由于是手机操作,一个年级4000多人,所以操作还是非常复杂的,不过我都做出来了。为此,我还建了一个群,大概有2000多个人都加我的群了吧(高中毕业之后依照我的性格就将其解散了)。

我买电脑啦

爸爸后来从我初中开始就一直在酒店里面工作了。酒店里面有很多人,每年都有上大学的。买电脑似乎对于上大学是一件必要的事情,大家也会相互关心一下。爸爸问了一下别人家的孩子买电脑都花了多少钱,基本上都说两千多左右。
听到这个时候我觉得事情对我来说是不利的。别人买两千的电脑,我绝对不能买。虽然没有明晰的概念,但我隐隐约约感觉到2000块钱的电脑绝对不能满足我的需要。我要的电脑,至少得5000块钱。不是为了比谁的贵,而是我觉得2000块钱的太差了。
爸爸是个理性的人,我是一个任性的人。接下来的事情,就是我要想方设法跟爸爸解释清楚为什么要买5000块钱的,结果是我解释不清楚,因为我也不知道为什么。我哭哭啼啼说一定要买,想了所有能劝说爸爸妈妈的话来劝他们,最后爸爸还是给我买了。事实证明,这的确是一个非常正确的选择。

我就玩电脑

在家里面拉了一根100M的网线,插上我的新电脑。别人去补课了,我没有去补课,我在家玩电脑。亲戚劝我去打工,我没有打工,我在家玩电脑。人家指责我爸,怎么不让孩子出来打打工,锻炼一下?爸爸说,孩子要学习一下电脑。
电脑到了之后,精心从淘宝上挑了一个电脑贴膜,我和我爸爸一起认真地贴上去。后来我就“躲”在了农村的奶奶家,开始了我的快乐之旅。看视频!爽!打游戏?没劲!剪视频!爽!学编程!爽!在家里那段时间具体干了什么我不知道了,没有打游戏是真的。
印象中只记得几件小事情来分享。我用爱剪辑把南宫电视台采访刘青的视频剪了一下,加上了字幕。我绘制了一个大学里面班级同学的省份分布图表并发到了群里面。我当着爸爸的面给了网上传销组织400块钱然后那人就没了。竟然有一个人免费指导我学习C#,然后我觉得太复杂了,光搭建环境就搞了好几天,弄得我很不好意思,就把他拉黑了(狗头)。

南航我来了

来到南航才真正算打开了这个约会,正在发生的事情令我烟火缭乱,也许等到这段时光逝去,才能看到它的美丽。

单庄园,瑞辅突然有一个想法,瑞辅想做个网站

为何突发奇想

  1. 目前处于考研备考阶段,总想找点闲事做
    瑞辅不会干别的,就会做个网站。
  2. 昨天(2019.11.13)晚上单庄园让瑞辅听了王小波的小说
    瑞辅不会写小说,但会讲故事。
  3. 明老师最近找瑞辅做一个企业网站并放了一个类似个人经验分享的栏目
    瑞辅没有知识,瑞辅只会扯淡。
  4. 瑞辅的优秀同学可以走上校长特别嘉奖的舞台
    没人搭理瑞辅,瑞辅自己写吧。
  5. 徐强老师写博客,最后整理出来一本书
    瑞辅写不来书,但可以写本传记。
  6. 《软件那些事儿》的绿帽子老师有一个很好的品质就是“坚持做一件事”
    瑞辅就坚持写博客吧。

网站叫啥名字

网站叫“瑞辅小杉”。至于哪一天分手了,那都是后话。但愿不会吧。

网站内容计划

  1. 吹逼的故事。仅看瑞辅的大学,也不那么“枯燥”。但由于不是又红又专、绩点高高,那就只能自己分享。当然初中、高中甚至以前同样丰富多彩,也会写上来。
  2. 自己的思考。价值观这种东西没有对错,代表着个人思想的转折点。
  3. 生活的分享。弄一个专门的栏目,类似于微博那样发牢骚的地方。
  4. 小杉的哲学、分享和生活碎片。