视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
学生选课系统说明书
2025-09-26 21:59:19 责编:小OO
文档
山东建筑大学 计算机科学与技术学院

课程设计说明书

题    目:      学生选课系统

课    程:      C/C++课程设计

院 (部):      计算机科学与技术学院

专    业:      计算机科学与技术

班    级:      计科143  

学生姓名:        肖洋

学    号:      ***********

****      ***    

完成日期:      2015//12//30   

1、课程设计目的

本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学习完《C/C++语言》课程后进行的一次全面的综合练习。本课程设计的目的和任务:(1)巩固和加深学生对C/C++课程的基本知识的理解和掌握;(2)掌握C/C++编程和程序调试的基本技能;(3)利用C/C++进行简单软件设计的基本思路和方法,初步理解面向过程和面向对象的编程思想;(4)提高运用C/C++解决实际问题的能力;(5)掌握书写程序设计说明文档的能力。(6) 培养实际操作能力,为以后的工作打下坚实的基础

2、课程设计任务

设计题目学生选课系统
已知技术参数和设计要求假定有N门课程,每门课程有课程编号,课程名称,课程性质,学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于15)自由选课。试设计一个选修课程系统,使之能提供以下功能:

1、系统以菜单方式工作

2、课程信息和学生选课信息录入功能(课程信息用文件保存)

3、课程信息浏览功能

4、查询功能

5、按学分查询

6、某门课程学生选修情况(可选项)

设计内容与步骤1、模块化程序设计。

2、具体数据结构的定义及其处理数据算法的设计。

3、锯齿型程序书写格式。

4、程序设计、实现、调试。

5、课程设计说明书。

设计工作计划与进度安排1、程序设计10学时。

2、实现与调试6学时。

3、课程设计说明书4学时。

设计考核要求1、考勤20%。

2、课程设计说明书50%。

3、答辩、成果演示30%。

3、学生选课系统

3.1 问题描述与功能设计

第一步: 分析问题    

a)对于不同的函数,luru(),luru2(),xxqingkuang(),liulan(),find(),确定要产生的数据(输出),应定义表示输入和输出的各种符合类型的变量。

c)根据需要,定义结构体,并通过顺序操作,通过循环操作 完成包括许多文本和图象处理操作。

Struct kech[N]课程的结构数组
char name[10];       

课程名称
课程性质
课程编号
学时
授课学时
实验或上机学时
int begintime; 开课学期
学分
int people; 该课程选课人数
Struct xuanke[N]选课信息的结构数组
 double xuehao  ;  学号
int bianhao[10]选课课程编号  

可获得学分
学生选修课程系统主要功能有

录入课程信息(并保存文件):

录入学生选课信息(也可以保存在文件中)

课程信息浏览功能

按学分查询功能

某门课程学生选修情况功能

各种功能之间以菜单方式工作,实现信息对信息的灵活获取和操作。

3.2 概要设计

总体框图

3.3 详细设计

流程图

3.4测试数据与测试情况

4、参考文献

[1] 何钦铭、颜晖著,C语言程序设计,高等教育出版社,2011年12月。

[2] 杜茂康、李昌兵著,C++面向对象程序设计(第二版),电子工业出版社,2009年11月。

[3] 钱能,C/C++程序设计教程(修订版)—设计思想与实现,清华大学出版社,2013年1月。

[4] 郑秋生:C/C/C++程序设计教程,电子工业出版社,2007年10月。

5、课程设计总结

 通过这次课程设计,认识了C语言结构的用法和各种流程的控制输出样式:

1、设计课程结构和学生选课的结构元素时应考虑存储字节大小其中char型数组,整型数据,其中存储学号的整形数组在存储例如20141111099学号时内存不足会导致运行出错。

2、对异常的处理能力也得到提升,在按学分查询课程时,首先没有录入数据时应该输出“你还没有录入课程”其次查询录入的数据中,如果存在则输出在该结构数组,如果不存在则输出“没有该课程”。

3、在一次次的修改文件的执行代码和编辑时,在菜单显示的功能上也需要排列整齐和有序,在完成设计功能的同时也增加了一些相应的小功能,对学生的选课信息进行可获得学分的计算。

4、通过本次课程设计也培养了我思考、综合运用所学有关相应知识能力,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关。在这次课程设计中也知道了自己的动手能力不强有待进一部的提高,只是掌握的还不够,还需强化知识。

6.附件(源程序)

#include

#include

#include

using namespace std;

#define N 5  

struct kech {         //定义课程结构

    char name[10];   //课程名称

    char xz[20];    //课程性质  

    int num;        //课程编号 

    int time;       //学时

    int Atime;     //授课学时

    int Btime;      //实验或上机学时

    int score;     //学分

    int begintime; //开课学期

    int people;

}kech[N];

struct xuanke {       //定义学生选课结构

    double xuehao;           //学号

    int bianhao[10];     //选课编号

    int hdxf;           //可获得学分

}xuanke[N];

int subject = 0, index = 0;

void luru() //录入课程信息

{

    int i = subject;

    ofstream ofile("e:\\\\ksfiles\\\ext.txt", ios::app);

    cout << "/******请输入课程信息******/\\n";

    cout << "课程编号:";    //输入课程编号

    cin >> kech[i].num;

    ofile << kech[i].num << " ";

    cout << "课程名称:";     //输入课程名称

    cin >> kech[i].name;

    ofile << kech[i].name << " ";

    cout << "课程性质:";    //输入课程性质

    cin >> kech[i].xz;

    ofile << kech[i].xz << " ";

    cout << "总学时:";      //输入总学时

    cin >> kech[i].time;

    ofile << kech[i].time << " ";

    cout << "授课学时:";    //输入授课学时

    cin >> kech[i].Atime;

    ofile << kech[i].Atime << " ";

    cout << "实验或上机学时:";   //输入实验或上机学时

    cin >> kech[i].Btime;

    ofile << kech[i].Btime << " ";

    cout << "学分:";       //输入学分

    cin >> kech[i].score;

    ofile << kech[i].score << " ";

    cout << "开课学期:";   //输入开课学期

    cin >> kech[i].begintime;

    ofile << kech[i].begintime << " ";

    kech[i].people = 0;

    ofile << kech[i].people << endl;

    ofile.close();

    subject++;

}

void luru2() //录入学生选课信息

{

    int i = index;

    int n;

    if (subject == 0)

    {

        cout << "你还没有录入课程信息!" << endl;            //异常处理

        return;

    }

    ofstream open("e:\\\\ksfiles\\\\class.txt", ios::app);//保存文件

    cout << "/******请输入选课学生信息******/" << endl;

    cout << "学生学号:";   //输入学号

    cin >> xuanke[i].xuehao;

    open << xuanke[i].xuehao << " ";

    cout << "请输入该生所选课程数量:";

    cin >> n;

    int j = 0;

    int panduan = 0;

    xuanke[i].hdxf = 0;

    while (j != n)

    {

        cout << "第" << j + 1 << "个课程编号: ";

        cin >> xuanke[i].bianhao[j];

        open << xuanke[i].bianhao[j] << " ";

        for (int k = 0;k        {

            if (xuanke[i].bianhao[j] == kech[k].num)

            {

                panduan = 1;

                xuanke[i].hdxf += kech[k].score;

                kech[k].people++;//对可获得学分进行计算

            }

        }

        if (panduan == 0)

            cout << "该课程编号不存在!请重新输入" << endl;     //异常处理

        else  j++;

    }

    cout << "该学生可获得" << xuanke[i].hdxf << "学分" << endl;

    open << xuanke[i].hdxf << endl;

    open.close();

    index++;

}

void liulan()         //浏览课程信息

{

    int i;

    if (subject != 0)

    {

        cout << endl << "课程编号 课程名称 课程性质 总学时 授课学时 实验或上机学时 学分 开课学期" << endl;  //*输出信息 

        for (i = 0;i        {

            cout << "   " << kech[i].num << "\   " << kech[i].name << "\    " << kech[i].xz << "  \" << kech[i].time << " \" << kech[i].Atime << "   \" << kech[i].Btime << "\   " << kech[i].score << "\  " << kech[i].begintime << endl;

        }

    }

    else

    {

        cout << "你还没有录入课程信息!" << endl;         //异常处理

        return;

    }

}

int find()  // 查询功能

{

    int s;

    int panduan = 0;

    cout << "请输入你所要查询课程的学分为:";

    cin >> s;

    if (subject == 0)

        cout << "你还没有录入课程信息!" << endl;     //异常处理

    else

    {

        for (int i = 0;i        {

            if (s == kech[i].score)

            {

                panduan = 1;

                cout << endl << "课程编号 课程名称 课程性质 总学时 授课学时 实验或上机学时 学分 开课学期" << endl;

                cout << "   " << kech[i].num << "\   " << kech[i].name << "\    " << kech[i].xz << "  \" << kech[i].time << " \" << kech[i].Atime << "   \" << kech[i].Btime << "\   " << kech[i].score << "\  " << kech[i].begintime << endl;

            }

        }

        if (panduan == 0)    cout << "没有该学分的课程!" << endl;   //异常处理

    }

    return -1;

}

void xxqingkuang()  //某课程的选课情况统计

{

    int m;

    int panduan = 0;

    cout << "请输入您要查询的的课程编号:";

    cin >> m;

    if (subject == 0)

        cout << "你还没有录入课程信息!" << endl;  //异常处理

    else

        for (int i = 0;i        {

            if (m == kech[i].num)

            {

                panduan = 1;

                cout << "该课程的选课人数为 " << kech[i].people << "人" << endl;

            }

        }

    if (panduan == 0)

        cout << "抱歉,还没有该课程编号!" << endl;   //异常处理    

}

void main() //主函数

{

    int choice = 0;

    while (choice != 6)

    {

        cout << "/*************欢迎使用本系统,请根据需要进行操作!*************/" << endl;

        cout << "/**********主菜单**********/" << endl;

        cout << "1.课程录入" << endl;

        cout << "2.课程浏览" << endl;

        cout << "3.课程查询" << endl;

        cout << "4.学生选课" << endl;

        cout << "5.学生选修情况" << endl;

        cout << "6.系统退出" << endl;

        cout << "请选择:" << endl;

        cin >> choice;

        switch (choice)

        {

        case 1:

            luru(); break;

        case 2:

            liulan(); break;

        case 3:

            find(); break;

        case 4:

            luru2();break;

        case 5:

            xxqingkuang(); break;

        case 6:

            cout << "/*************感谢使用本系统!*************/\\n"; break;

        default:

            cout << "选择错误,请重新选择!" << endl;

        }

    }

}下载本文

显示全文
专题