C++学生选课系统.docx

上传人:b****6 文档编号:7105317 上传时间:2023-01-17 格式:DOCX 页数:28 大小:35.74KB
下载 相关 举报
C++学生选课系统.docx_第1页
第1页 / 共28页
C++学生选课系统.docx_第2页
第2页 / 共28页
C++学生选课系统.docx_第3页
第3页 / 共28页
C++学生选课系统.docx_第4页
第4页 / 共28页
C++学生选课系统.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

C++学生选课系统.docx

《C++学生选课系统.docx》由会员分享,可在线阅读,更多相关《C++学生选课系统.docx(28页珍藏版)》请在冰豆网上搜索。

C++学生选课系统.docx

C+学生选课系统学生选课系统摘要本课程设计的目的是设计一个学生选修课程系统的程序,用来实现对学生成绩的管理,其中包括学生信息的文件读入、添加、查询、保存、删除以与相应的课程信息管理。

程序设计了两个类,其中一个包含学生的学号、某某、选课数以与选修总学分,另一个如此包含了课程的信息,包括课程编号、课程名称、课程性质、课时等等。

然后通过数组、向量、集合等来实现学生选课信息的记录、保存,删除等相关操作从而达到管理学生选课的。

因为这次课程设计,我们可以熟练的使用C+语言来完成一个学生选课管理系统。

但是编写过程中难免会遇到错误,希望教师给予指导。

1需求分析需求分析计算机技术作为信息化的核心技术受到全社会的普遍重视。

如今,计算机的使用也已不再局限于科学计算,它已进入人类社会的各个领域并发挥着越来越重要的作用。

深入掌握计算机专业知识、具有良好系统设计与分析能力的计算机高级专业人才在社会上深受欢迎。

而系统设计与分析能力的培养需要通过实践训练才能获得。

通过计算机对一些系统的管理已经成为一种系统、便捷的方式。

本课程设计就是用C+设计学生选课系统的问题,实现对学生选课的管理操作。

本课程设计的目的是设计一个学生选修课程系统的程序,用来实现对学生成绩的管理,其中包括学生信息的文件读入、添加、查询、保存、删除以与相应的课程信息管理。

程序设计了两个类,其中一个包含学生的学号、某某、选课数以与选修总学分,另一个如此包含了课程的信息,包括课程编号、课程名称、课程性质、课时等等。

然后通过数组、向量、集合等来实现学生选课信息的记录、保存,删除等相关操作从而达到管理学生选课的。

2概要设计概要设计2.1对象设计对象设计把学生和学科信息设计成类student和类subject,通过文件操作函数对输入的学生和学科信息进展读取和存放。

2.2设计优缺点设计优缺点优点:

1.人性化的程序提示语言,程序提示语言较人性化,不仅大多为祈使语句、疑问句,而且提示明确,具有较强的明确的指导作用。

程序提示不仅层次清楚,提示方式多样,而且提示信息井然有序,更加有利于用户顺利、准确地进展程序的操作。

2.所有的操作大多是在内存中实现,增加操作的速度,十分的方便。

缺点:

1.程序虽然经过屡次精简,但仅仅是形式上、小X围的精简,仍未得到本质上的精简,即未找到更加简单、更加高效、更加合理、更小占用的资源的算法。

2.程序仍然存在不合理的地方,例如程序某些局部输入错误会导致程序中止或转向其他功能模块,即程序建议用户注意提示,进展合理的准确的输入,这样更有利于管理工作。

3详细设计详细设计总体设计思路总体设计思路通过对课题的分析,程序的要求是设计选修课管理系统,对选修课程能够进展录入和修改操作等,要求有主界面和退出功能。

首先,考虑到程序的数据输入,可以设置一个课程增加选项,通过该界面,进展选修课的录入和修改操作,最后将录入的课程存到相应的文件中。

然后定义各种函数的功能包括:

查看、查询、删除等。

另一个为选课界面,该界面学生可以进展课程选择和浏览查询等操作。

在进展该操作之前需要对保存的文件进展读取,然后对其中的东西进展查询等。

在学生选好课程以后,可以将选好的课程保存于相应的文件中,以便下次进展修改。

通过函数的层层调用来实现程序的逻辑结构。

中间通过文件的打开和关闭实现对文件内部所包含的数据操作。

为了方便用户控制管理,又添加了一些更人性化的功能如人工调试,运行配置等功能。

文件存储信息的方式更是简化了程序结构,使程序读起来更容易懂。

除此之外,本系统采用分块实现功能,将要实现的增加课程信息、修改课程信息、删除课程信息、增加学生信息和修改学生信息等功能分别用不同的子程序来完成,这样不仅方便了我们程序调试,更提高了程序的移植性。

类定义类定义classsubject/建立一个课程类,保存课程信息classstudent/建立一个学生类,保存学生信息函数:

该程序包含的主要函数功能说明:

voidXuanKeMenu();/选课主菜单函数intfind(intno);voidSave();voidDL();/登录界面的函数voidMainMenu();voidoutput();voidLoad();/载入文件信息的函数voidLoad2();voidquit();voidadd();voidChaXun();voidchaxun1();voidchaxun2();voidxuanke();voidtq1();/提取选课编号的函数voidtq2();voidAddStuInfo();/添加学生信息的函数voidSaveStuInfo();/保存学生信息到文件中voiddel();/删除已选课程信息的函数voidsum();3.3宏定义宏定义#defineN10文件操作函数文件操作函数voidAddStuInfo();/添加学生信息的函数voidSaveStuInfo();/保存学生信息到文件中用户操作函数用户操作函数/该函数根据用户的选择,完成指定的操作voidDL()/登录界面voidMainMenu()/系统主菜单voidoutput()/显示函数:

将课程信息输出到屏幕voidAddStuInfo()/增加学生信息,并保存在文件中voidadd()/增加课程信息,并保存在文件中voiddel()/删除已选课程信息voidChaXun()/查询主菜单函数voidxuanke()/选课函数:

执行选课功能voidsum()/统计函数,统计并输出文件中的数据3.6其他重要函数其他重要函数voidLoad()/载入函数:

载入课程信息文件此前已建立voidLoad2()/载入学生信息文件此前已建立voidSave()/保存已选的课程信息voidSaveStuInfo()/保存学生信息voidquit()/退出函数voidchaxun1()/按学分方式查询voidchaxun2()/按课程性质查询voidtq1(char*str)/提取出选课时输入的课程编号intfind(intno)/寻找函数,找到想要的课程编号voiddisplay(inti)/输出函数voidtq2(char*str)/提取函数:

提前删除时输入的课程编号4测试结果与运行效果测试结果与运行效果运行程序后,登陆界面登陆学号,进入登陆后的界面,在其中可以选择查看课程信息、添加课程信息、查询课程信息、学生选课、统计情况和退出。

按照提示输入0-5和Enter键进入下级菜单,或者退出程序。

图4-1登陆后的界面输入1进入查看课程信息页面后,给出存放在文件类的所有课程信息,按y和Enter键停留界面,按n和Enter退出。

图4-2进入查看课程信息界面在主菜单中选择2,进入添加课程信息界面。

图4-3添加课程时的界面在主菜单中选4,学生选课界面。

图4-4学生选课时的界面在登陆界面输入exit退出系统。

图4-5退出系统时的界面5系统开发所系统开发所用到的技术用到的技术操作系统:

Windows7开发软件:

MicrosoftVisualStudio2013技术:

功能模块函数;向量;文件保存与读取。

模块:

是抽象的概念,按照功能划分模块,尽可能保证每个模块互相独立。

这个一般同程序的逻辑设计有关,同具体语言关系不大。

函数:

一般都有有明确的定义,有明确的语法。

用来完成相对独立功能和程序。

向量Vector:

Vector是C+标准程序库中的一个类,可视为会自动扩展容量的数组,以循序(Sequential)的方式维护变量集合。

vector的特色包括支持随机存取,在集合尾端增删元素很快,但是在集合中间增删元素比拟费时。

vector是C+标准程序库中的众多容器container之一,除此之外还有list、set、map、等等。

vector以模板(泛型)方式实现,可以存储任何类型的变量,包括用户自定义的数据型态。

文件操作:

C语言对文件的处理一般有两种方法,缓冲文件系统和非缓冲文件系统。

在文件系统中,系统对文件进展读写之前首先在内存区开辟一个称作缓冲区的专用内存区域。

在缓冲文件系统中,系统对文件进展读写之前首先在内存区开辟一个称作缓冲区的专用内存区域。

从内存向磁盘写文件时必须先写入缓冲区,装满缓冲区后才一起写到磁盘上去;从磁盘读文件时必须先把一批数据读到缓冲区充满缓冲区,然后再从缓冲区将数据逐个送到用户数据区。

在非缓冲文件系统中,文件的处理不自动开辟确定大小的缓冲区,而是由程序设定的缓冲区。

一般用缓冲文件系统进展的输入/输出。

用非缓冲文件系统进展的输入/输出称为低级低层输入/输出。

ANSIC标准采用缓冲文件系统,现代的操作系统也广泛采用缓冲型文件系统。

参考文献参考文献1李素假如.C+面向对象程序设计.:

中国水利水电,2013.2曾辉.王更生.C+程序设计实训教程.:

邮电大学,20113揣锦华等编.C+程序设计语言.某某:

某某电子科技大学,20114X素琴主编.C+程序设计语言.:

清华大学,20105邓飞,李瑶主编C+程序设计.科海电子20096李军民等编.C+程序设计语言.某某:

某某电子科技大学,2011附录附录全部代码全部代码#include#include#include#include#include#include#include#defineN10usingnamespacestd;intF;classsubject/建立一个课程类,保存课程信息public:

intnum;charname30;charcha20;intTime,time1,time2,xf;charkkxq20;S;classstudent/建立一个学生类,保存学生信息public:

charnam10;charnum15;intzxf;intt;Stu;vectorv;/声明一个指向课程信息的向量vectorz;/声明一个指向学生信息的向量setT;/建立一个集合vectorsetTT;/建立一个向量集合set:

iteratorit;/建立一个迭代器voidXuanKeMenu();/声明一个选课主菜单函数intfind(intno);voidSave();voidDL();/声明一个登录界面的函数voidMainMenu();voidoutput();voidLoad();/声明载入文件信息的函数voidLoad2();voidquit();voidadd();voidChaXun();voidchaxun1();voidchaxun2();voidxuanke();voidtq1();/声明提取信息的函数voidtq2();voidAddStuInfo();/声明添加学生信息的函数voiddel();voidsum();voidAddStuInfo()FILE*fp;fp=fopen(d:

student.txt,a);fseek(fp,0,2);/打开学生信息文件system(cls);coutendlendlendlendlendl;couttt*endl;couttt*学生选课系统*endl;couttt*endlendl;coutStu.num;coutStu.nam;Stut=Stu.zxf=0;fprintf(fp,%s%s%d%dn,Stu.num,Stu.nam,Stut,Stu.zxf);/存入文件z.push_back(Stu);T.clear();TT.push_back(T);/用向量指向学生信息fclose(fp);voidadd()A:

system(cls);coutendlendlendl;coutt*endl;coutt*课程信息*endl;coutt*endlendl;coutS.num;coutS.name;coutS.cha;coutS.Time;coutS.time1;coutS.time2;coutS.xf;coutS.kkxq;v.push_back(S);Save();coutendls;if(s0=Y|s0=y)gotoA;elseMainMenu();voidSave()/保存已选的课程信息FILE*fp;fp=fopen(d:

subject.txt,w);for(unsignedinti=0;iv.size();i+)fprintf(fp,%d%s%s%d%d%d%d%sn,vi.num,vi.name,vi.cha,vi.Time,vi.time1,vi.time2,vi.xf,vi.kkxq);fclose(fp);voidSaveStuInfo()/保存学生信息FILE*fp;fp=fopen(d:

student.txt,w);for(unsignedinti=0;iz.size();i+)fprintf(fp,%s%s%d%d,zi.num,zi.nam,zit,zi.zxf);for(it=TTi.begin();it!

=TTi.end();it+)fprintf(fp,%d,*it);fprintf(fp,n);fclose(fp);voidquit()/退出函数exit

(1);voidChaXun()/查询主菜单函数system(cls);coutendlendlendl;coutt*endl;coutt*课程信息*endl;coutt*endlendl;couttttt请选择查询方式:

ntttt1学分查询ntttt2课程性质查询ntttt0返回主菜单nn;coutchoice;if(choice=0&choice3)if(choice=1)chaxun1();if(choice=2)chaxun2();if(choice=0)MainMenu();elseChaXun();voidchaxun1()/按学分方式查询system(cls);intt=0;coutendlendlendl;coutt*endl;coutt*课程信息*endl;coutt*endlendl;coutkey;coutt课程课程课程总授课实验或学分开课endl;coutt编号名称性质学时学时上机学时学分学期endlendl;for(unsignedinti=0;iv.size();i+)if(t&t%10=0)coutendlt=endl;coutt按任意键查看下一页;_getch();system(cls);coutendlendlendl;coutt*endl;coutt*课程信息*endl;coutt*endlendl;coutt课程课程课程总授课实验或学分开课endl;coutt编号名称性质学时学时上机学时学分学期endlendl;if(vi.xf=key)t+;printf(t%3d%12s%8s%4d%6d%8d%8d%7sn,vi.num,vi.name,vi.cha,vi.Time,vi.time1,vi.time2,vi.xf,vi.kkxq);coutendls;if(s0=Y|s0=y)chaxun1();elseMainMenu();voidchaxun2()/按课程性质查询system(cls);intt=0;coutendlendlendl;coutt*endl;coutt*课程信息*endl;coutt*endlendl;coutkey;coutt课程课程课程总授课实验或学分开课endl;coutt编号名称性质学时学时上机学时学分学期endlendl;for(unsignedinti=0;iv.size();i+)if(t&t%10=0)coutendlt=endl;coutt按任意键查看下一页;_getch();system(cls);coutendlendlendl;coutt*endl;coutt*课程信息*endl;coutt*endlendl;coutt课程课程课程总授课实验或学分开课endl;coutt编号名称性质学时学时上机学时学分学期endlendl;if(!

strcmp(vi.cha,key)t+;printf(t%3d%12s%8s%4d%6d%8d%8d%7sn,vi.num,vi.name,vi.cha,vi.Time,vi.time1,vi.time2,vi.xf,vi.kkxq);coutendls;if(s0=Y|s0=y)chaxun2();elseMainMenu();voidtq1(char*str)/提取出选课时输入的课程编号stringt=;inti=0,cont=0;while(stri)if(isalnum(stri)t+=stri;elseinttmp=atoi(t.c_str();if(TTF.find(tmp)!

=TTF.end()t=;i+;continue;zF.zxf+=vfind(tmp).xf;TTF.insert(tmp);t=;cont+;i+;inttmp=atoi(t.c_str();if(TTF.find(tmp)=TTF.end()cont+;TTF.insert(tmp);zF.zxf+=vfind(tmp).xf;zFt+=cont;voidxuanke()/选课函数:

执行选课功能charstr100;system(cls);coutendlendl;coutt*endl;coutt*课程信息*endl;coutt*endlendl;coutt课程课程课程总授课实验或学分开课endl;coutt编号名称性质学时学时上机学时学分学期endlendl;for(unsignedinti=0;iv.size();i+)if(i&i%10=0)coutendlt=endl;coutendlt请输入所选课程编号:

;gets(str);if(strcmp(str,)tq1(str);/,system(cls);coutendlendl;coutt*endl;coutt*课程信息*endl;coutt*endlendl;coutt课程课程课程总授课实验或学分开课endl;coutt编号名称性质学时学时上机学时学分学期endlendl;printf(t%3d%12s%8s%4d%6d%8d%8d%7sn,vi.num,vi.name,vi.cha,vi.Time,vi.time1,vi.time2,vi.xf,vi.kkxq);coutendlt=;coutendlt请输入所选课程编号:

;gets(str);if(strcmp(str,)tq1(str);SaveStuInfo();coutx;if(x0=y|x0=Y)xuanke();elseXuanKeMenu();intfind(intno)/寻找函数,找到想要的课程编号for(unsignedinti=0;iv.size();i+)if(vi.num=no)returni;voiddisplay(inti)printf(t%3d%12s%8s%4d%6d%8d%8d%7sn,vi.num,vi.name,vi.cha,vi.Time,vi.time1,vi.time2,vi.xf,vi.kkxq);voidXuanKeMenu()/选课菜单函数system(cls);intchoice,l=0;coutendlendl;coutt*endl;coutt*学生选课*endl;coutt*endlendl;coutt某某:

zF.nam学号:

zF.num已选zFt;cout门课程已选课程总学分:

zF.zxfendl;coutt=endl;coutt已选课程信息:

n;coutt课程课程课程总授课实验或学分开课endl;coutt编号名称性质学时学时上机学时学分学期endlendl;for(it=TTF.begin();it!

=TTF.end();it+,l+)if(l&l%10=0)coutendlt=endl;coutchoice;getchar();if(choice=1)xuanke();elseif(choice=2)del();elseif(choice=0)MainMenu();elseif(choice=3);elseXuanKeMenu();system(cls);coutendlendl;coutt*endl;coutt*学生选课*endl;coutt*endlendl;coutt某某:

zF.nam学号:

zF.num已选zFt;cout门课程已选课程总学分:

zF.zxfendl;coutt=endl;coutt已选课程信息:

n;coutt课程课程课程总授课实验或学分开课endl;coutt编号名称性质学时学时上机学时学分学期endlendl;display(find(*it);coutendlt=endl;coutchoice;getchar();if(choice=1)xuanke();elseif(choice=2)del();elseif(choice=0)MainMenu();elseXuanKeMenu();voidtq2(char*str)/提取函数:

提前删除时输入的课程编号stringt=;inti=0,cont=0;while(stri)if(isalnum(stri)t+=stri;elseinttmp=atoi(t.c_str();set:

iterator_t=TTF.find(tmp);if(_t!

=TTF.end()t=;TTF.erase(_t);zFt-;zF.zxf-=vfind(tmp).xf;i+;inttmp=atoi(t.c_str();set:

iterator_t=TTF.find(tmp);if(_t!

=TTF.end()t=;TTF.erase(_t);zFt-;zF.zxf-=vfind(tmp).xf;voiddel()/删除已选课程信息intm,l=0,k=0;charstr100;system(cls);coutendlendl;coutt*endl;coutt*学生选课*endl;coutt*endlendl;coutt某某:

zF.nam学号:

zF.num已选zFt;cout门课程已选课程总学分:

zF.zxfendl;coutt=endl;coutt已选课程信息:

n;coutt课程课程课程总授课实验或学分开课endl;coutt编号名称性质学时学时上机学时学分学期endlendl;for(it=TTF.begin();it!

=TTF.end();it+,l+)if(l&l%10=0)coutendlt=endl;couttttt请输入要删除的课程的编号:

;gets(str);if(strcmp(str,)tq2(str);system(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1