ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:35.74KB ,
资源ID:7105317      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7105317.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++学生选课系统.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C++学生选课系统.docx

1、C+学生选课系统学生选课系统 摘要 本课程设计的目的是设计一个学生选修课程系统的程序,用来实现对学生成绩的管理,其中包括学生信息的文件读入、添加、查询、保存、删除以与相应的课程信息管理。程序设计了两个类,其中一个包含学生的学号、某某、选课数以与选修总学分,另一个如此包含了课程的信息,包括课程编号、课程名称、课程性质、课时等等。然后通过数组、向量、集合等来实现学生选课信息的记录、保存,删除等相关操作从而达到管理学生选课的。因为这次课程设计,我们可以熟练的使用 C+语言来完成一个学生选课管理系统。但是编写过程中难免会遇到错误,希望教师给予指导。1 需求分析需求分析 计算机技术作为信息化的核心技术受

2、到全社会的普遍重视。如今,计算机的使用也已不再局限于科学计算,它已进入人类社会的各个领域并发挥着越来越重要的作用。深入掌握计算机专业知识、具有良好系统设计与分析能力的计算机高级专业人才在社会上深受欢迎。而系统设计与分析能力的培养需要通过实践训练才能获得。通过计算机对一些系统的管理已经成为一种系统、便捷的方式。本课程设计就是用 C+设计学生选课系统的问题,实现对学生选课的管理操作。本课程设计的目的是设计一个学生选修课程系统的程序,用来实现对学生成绩的管理,其中包括学生信息的文件读入、添加、查询、保存、删除以与相应的课程信息管理。程序设计了两个类,其中一个包含学生的学号、某某、选课数以与选修总学分

3、,另一个如此包含了课程的信息,包括课程编号、课程名称、课程性质、课时等等。然后通过数组、向量、集合等来实现学生选课信息的记录、保存,删除等相关操作从而达到管理学生选课的。2 概要设计概要设计 2.1 对象设计对象设计 把学生和学科信息设计成类 student 和类 subject,通过文件操作函数对输入的学生和学科信息进展读取和存放。2.2 设计优缺点设计优缺点 优点:1.人性化的程序提示语言,程序提示语言较人性化,不仅大多为祈使语句、疑问句,而且提示明确,具有较强的明确的指导作用。程序提示不仅层次清楚,提示方式多样,而且提示信息井然有序,更加有利于用户顺利、准确地进展程序的操作。2.所有的操

4、作大多是在内存中实现,增加操作的速度,十分的方便。缺点:1.程序虽然经过屡次精简,但仅仅是形式上、小 X围的精简,仍未得到本质上的精简,即未找到更加简单、更加高效、更加合理、更小占用的资源的算法。2.程序仍然存在不合理的地方,例如程序某些局部输入错误会导致程序中止或转向其他功能模块,即程序建议用户注意提示,进展合理的准确的输入,这样更有利于管理工作。3 详细设计详细设计 总体设计思路总体设计思路 通过对课题的分析,程序的要求是设计选修课管理系统,对选修课程能够进展录入和修改操作等,要求有主界面和退出功能。首先,考虑到程序的数据输入,可以设置一个课程增加选项,通过该界面,进展选修课的录入和修改操

5、作,最后将录入的课程存到相应的文件中。然后定义各种函数的功能包括:查看、查询、删除等。另一个为选课界面,该界面学生可以进展课程选择和浏览查询等操作。在进展该操作之前需要对保存的文件进展读取,然后对其中的东西进展查询等。在学生选好课程以后,可以将选好的课程保存于相应的文件中,以便下次进展修改。通过函数的层层调用来实现程序的逻辑结构。中间通过文件的打开和关闭实现对文件内部所包含的数据操作。为了方便用户控制管理,又添加了一些更人性化的功能如人工调试,运行配置等功能。文件存储信息的方式更是简化了程序结构,使程序读起来更容易懂。除此之外,本系统采用分块实现功能,将要实现的增加课程信息、修改课程信息、删除

6、课程信息、增加学生信息和修改学生信息等功能分别用不同的子程序来完成,这样不仅方便了我们程序调试,更提高了程序的移植性。类定义类定义 class subject/建立一个课程类,保存课程信息 class student/建立一个学生类,保存学生信息 函数:该程序包含的主要函数功能说明:void XuanKeMenu();/选课主菜单函数 int find(int no);void Save();void DL();/登录界面的函数 void MainMenu();void output();void Load();/载入文件信息的函数 void Load2();void quit();void

7、add();void ChaXun();void chaxun1();void chaxun2();void xuanke();void tq1();/提取选课编号的函数 void tq2();void AddStuInfo();/添加学生信息的函数 void SaveStuInfo();/保存学生信息到文件中 void del();/删除已选课程信息的函数 void sum();3.3 宏定义宏定义#define N 10 文件操作函数文件操作函数 void AddStuInfo();/添加学生信息的函数 void SaveStuInfo();/保存学生信息到文件中 用户操作函数用户操作函数

8、/该函数根据用户的选择,完成指定的操作 void DL()/登录界面 void MainMenu()/系统主菜单 void output()/显示函数:将课程信息输出到屏幕 void AddStuInfo()/增加学生信息,并保存在文件中 void add()/增加课程信息,并保存在文件中 void del()/删除已选课程信息 void ChaXun()/查询主菜单函数 void xuanke()/选课函数:执行选课功能 void sum()/统计函数,统计并输出文件中的数据 3.6 其他重要函数其他重要函数 void Load()/载入函数:载入课程信息文件此前已建立 void Load2

9、()/载入学生信息文件此前已建立 void Save()/保存已选的课程信息 void SaveStuInfo()/保存学生信息 void quit()/退出函数 void chaxun1()/按学分方式查询 void chaxun2()/按课程性质查询 void tq1(char*str)/提取出选课时输入的课程编号 int find(int no)/寻找函数,找到想要的课程编号 void display(int i)/输出函数 void tq2(char*str)/提取函数:提前删除时输入的课程编号 4 测试结果与运行效果测试结果与运行效果 运行程序后,登陆界面登陆学号,进入登陆后的界面,

10、在其中可以选择查看课程信息、添加课程信息、查询课程信息、学生选课、统计情况和退出。按照提示输入 0-5和 Enter键进入下级菜单,或者退出程序。图 4-1 登陆后的界面 输入 1进入查看课程信息页面后,给出存放在文件类的所有课程信息,按 y和Enter键停留界面,按 n 和 Enter退出。图 4-2 进入查看课程信息界面 在主菜单中选择 2,进入添加课程信息界面。图 4-3 添加课程时的界面 在主菜单中选 4,学生选课界面。图 4-4 学生选课时的界面 在登陆界面输入 exit 退出系统。图 4-5 退出系统时的界面 5 系统开发所系统开发所用到的技术用到的技术 操作系统:Windows

11、7 开发软件:Microsoft Visual Studio 2013 技术:功能模块函数;向量;文件保存与读取。模块:是抽象的概念,按照功能划分模块,尽可能保证每个模块互相独立。这个一般同程序的逻辑设计有关,同具体语言关系不大。函数:一般都有有明确的定义,有明确的语法。用来完成相对独立功能和程序。向量Vector:Vector 是 C+标准程序库中的一个类,可视为会自动扩展容量的数组,以循序(Sequential)的方式维护变量集合。vector的特色包括支持随机存取,在集合尾端增删元素很快,但是在集合中间增删元素比拟费时。vector是 C+标准程序库中的众多容器container之一,除

12、此之外还有 list、set、map、等等。vector以模板(泛型)方式实现,可以存储任何类型的变量,包括用户自定义的数据型态。文件操作:C 语言对文件的处理一般有两种方法,缓冲文件系统和非缓冲文件系统。在文件系统中,系统对文件进展读写之前首先在内存区开辟一个称作缓冲区的专用内存区域。在缓冲文件系统中,系统对文件进展读写之前首先在内存区开辟一个称作缓冲区的专用内存区域。从内存向磁盘写文件时必须先写入缓冲区,装满缓冲区后才一起写到磁盘上去;从磁盘读文件时必须先把一批数据读到缓冲区充满缓冲区,然后再从缓冲区将数据逐个送到用户数据区。在非缓冲文件系统中,文件的处理不自动开辟确定大小的缓冲区,而是由

13、程序设定的缓冲区。一般用缓冲文件系统进展的输入/输出。用非缓冲文件系统进展的输入/输出称为低级低层输入/输出。ANSI C 标准采用缓冲文件系统,现代的操作系统也广泛采用缓冲型文件系统。参考文献参考文献 1 李素假如.C+面向对象程序设计.:中国水利水电,2013.2 曾辉.王更生.C+程序设计实训教程.:邮电大学,2011 3 揣锦华等编.C+程序设计语言.某某:某某电子科技大学,2011 4 X素琴主编.C+程序设计语言.:清华大学,2010 5 邓飞,李瑶主编C+程序设计.科海电子 2009 6 李军民等编.C+程序设计语言.某某:某某电子科技大学,2011 附录附录 全部代码全部代码#

14、include#include#include#include#include#include#include#define N 10 using namespace std;int F;class subject/建立一个课程类,保存课程信息 public:int num;char name30;char cha20;int Time,time1,time2,xf;char kkxq20;S;class student/建立一个学生类,保存学生信息 public:char nam10;char num15;int zxf;int t;Stu;vector v;/声明一个 指向课程信息的向量

15、vector z;/声明一个 指向学生信息的向量 set T;/建立一个 集合 vector set TT;/建立一个 向量集合 set :iterator it;/建立一个 迭代器 void XuanKeMenu();/声明一个 选课主菜单函数 int find(int no);void Save();void DL();/声明一个登录界面的函数 void MainMenu();void output();void Load();/声明载入文件信息的函数 void Load2();void quit();void add();void ChaXun();void chaxun1();void

16、 chaxun2();void xuanke();void tq1();/声明提取信息的函数 void tq2();void AddStuInfo();/声明添加学生信息的函数 void del();void sum();void AddStuInfo()FILE*fp;fp=fopen(d:student.txt,a);fseek(fp,0,2);/打开学生信息文件 system(cls);cout endl endl endl endl endl;cout tt*endl;cout tt*学生选课系统*endl;cout tt*endl endl;cout Stu.num;cout Stu

17、.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);void add()A:system(cls);cout endl endl endl;cout t*endl;cout t*课 程 信 息*endl;cout t*endl endl;cout S.num;cout S.name;cout S.cha;cout S.Time;cout S.time1;cout S

18、.time2;cout S.xf;cout S.kkxq;v.push_back(S);Save();cout endl s;if(s0=Y|s0=y)goto A;else MainMenu();void Save()/保存已选的课程信息 FILE*fp;fp=fopen(d:subject.txt,w);for(unsigned int i=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);void Sav

19、eStuInfo()/保存学生信息 FILE*fp;fp=fopen(d:student.txt,w);for(unsigned int i=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);void quit()/退出函数 exit(1);void ChaXun()/查询主菜单函数 system(cls);cout endl endl endl;cout t*e

20、ndl;cout t*课 程 信 息*endl;cout t*endl endl;cout tttt 请选择查询方式:ntttt1学分查询ntttt2课程性质查询ntttt0返回主菜单nn;cout choice;if(choice=0&choice3)if(choice=1)chaxun1();if(choice=2)chaxun2();if(choice=0)MainMenu();else ChaXun();void chaxun1()/按学分方式查询 system(cls);int t=0;cout endl endl endl;cout t*endl;cout t*课 程 信 息*en

21、dl;cout t*endl endl;cout key;cout t 课程 课程 课程 总 授课 实验或 学分 开课 endl;cout t 编号 名称 性质 学时 学时 上机学时 学分 学期 endl endl;for(unsigned int i=0;iv.size();i+)if(t&t%10=0)cout endl t=endl;cout t 按任意键查看下一页;_getch();system(cls);cout endl endl endl;cout t*endl;cout t*课 程 信 息*endl;cout t*endl endl;cout t 课程 课程 课程 总 授课 实

22、验或 学分 开课 endl;cout t 编号 名称 性质 学时 学时 上机学时 学分 学期 endl endl;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);cout endl s;if(s0=Y|s0=y)chaxun1();else MainMenu();void chaxun2()/按课程性质查询 system(cls);int t=0;cout endl endl endl;cout t*endl;cou

23、t t*课 程 信 息*endl;cout t*endl endl;cout key;cout t 课程 课程 课程 总 授课 实验或 学分 开课 endl;cout t 编号 名称 性质 学时 学时 上机学时 学分 学期 endl endl;for(unsigned int i=0;iv.size();i+)if(t&t%10=0)cout endl t=endl;cout t 按任意键查看下一页;_getch();system(cls);cout endl endl endl;cout t*endl;cout t*课 程 信 息*endl;cout t*endl endl;cout t 课

24、程 课程 课程 总 授课 实验或 学分 开课 endl;cout t 编号 名称 性质 学时 学时 上机学时 学分 学期 endl endl;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);cout endl s;if(s0=Y|s0=y)chaxun2();else MainMenu();void tq1(char*str)/提取出选课时输入的课程编号 string t=;int i=0,cont

25、=0;while(stri)if(isalnum(stri)t+=stri;else int tmp=atoi(t.c_str();if(TTF.find(tmp)!=TTF.end()t=;i+;continue;zF.zxf+=vfind(tmp).xf;TTF.insert(tmp);t=;cont+;i+;int tmp=atoi(t.c_str();if(TTF.find(tmp)=TTF.end()cont+;TTF.insert(tmp);zF.zxf+=vfind(tmp).xf;zFt+=cont;void xuanke()/选课函数:执行选课功能 char str100;s

26、ystem(cls);cout endl endl;cout t*endl;cout t*课 程 信 息*endl;cout t*endl endl;cout t 课程 课程 课程 总 授课 实验或 学分 开课 endl;cout t 编号 名称 性质 学时 学时 上机学时 学分 学期 endl endl;for(unsigned int i=0;iv.size();i+)if(i&i%10=0)cout endl t=endl;cout endl t 请输入所选课程编号:;gets(str);if(strcmp(str,)tq1(str);/,system(cls);cout endl en

27、dl;cout t*endl;cout t*课 程 信 息*endl;cout t*endl endl;cout t 课程 课程 课程 总 授课 实验或 学分 开课 endl;cout t 编号 名称 性质 学时 学时 上机学时 学分 学期 endl endl;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);cout endl t=;cout endl t 请输入所选课程编号:;gets(str);if(strcmp(str,)tq1(str);S

28、aveStuInfo();cout x;if(x0=y|x0=Y)xuanke();else XuanKeMenu();int find(int no)/寻找函数,找到想要的课程编号 for(unsigned int i=0;iv.size();i+)if(vi.num=no)return i;void display(int i)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);void XuanKeMenu()/选课菜单函数 system(cls

29、);int choice,l=0;cout endl endl;cout t*endl;cout t*学 生 选 课*endl;cout t*endl endl;cout t 某某:zF.nam 学号:zF.num 已选 zFt;cout 门课程 已选课程总学分:zF.zxf endl;cout t=endl;cout t 已选课程信息:n;cout t 课程 课程 课程 总 授课 实验或 学分 开课 endl;cout t 编号 名称 性质 学时 学时 上机学时 学分 学期 endl endl;for(it=TTF.begin();it!=TTF.end();it+,l+)if(l&l%10

30、=0)cout endl t=endl;cout choice;getchar();if(choice=1)xuanke();else if(choice=2)del();else if(choice=0)MainMenu();else if(choice=3);else XuanKeMenu();system(cls);cout endl endl;cout t*endl;cout t*学 生 选 课*endl;cout t*endl endl;cout t 某某:zF.nam 学号:zF.num 已选 zFt;cout 门课程 已选课程总学分:zF.zxf endl;cout t=endl

31、;cout t 已选课程信息:n;cout t 课程 课程 课程 总 授课 实验或 学分 开课 endl;cout t 编号 名称 性质 学时 学时 上机学时 学分 学期 endl endl;display(find(*it);cout endl t=endl;cout choice;getchar();if(choice=1)xuanke();else if(choice=2)del();else if(choice=0)MainMenu();else XuanKeMenu();void tq2(char*str)/提取函数:提前删除时输入的课程编号 string t=;int i=0,co

32、nt=0;while(stri)if(isalnum(stri)t+=stri;else int tmp=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+;int tmp=atoi(t.c_str();set:iterator _t=TTF.find(tmp);if(_t!=TTF.end()t=;TTF.erase(_t);zFt-;zF.zxf-=vfind(tmp).xf;void del()/删除已选课程信息 int m,

33、l=0,k=0;char str100;system(cls);cout endl endl;cout t*endl;cout t*学 生 选 课*endl;cout t*endl endl;cout t 某某:zF.nam 学号:zF.num 已选 zFt;cout 门课程 已选课程总学分:zF.zxf endl;cout t=endl;cout t 已选课程信息:n;cout t 课程 课程 课程 总 授课 实验或 学分 开课 endl;cout t 编号 名称 性质 学时 学时 上机学时 学分 学期 endl endl;for(it=TTF.begin();it!=TTF.end();it+,l+)if(l&l%10=0)cout endl t=endl;cout tttt 请输入要删除的课程的编号:;gets(str);if(strcmp(str,)tq2(str);system(

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

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