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

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7318768.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.所有的操作大多是在内存中实现,增加操作的速度,十分的方便。 缺点:1.程序虽然经过多次

4、精简,但仅仅是形式上、小范围的精简,仍未得到本质上的精简,即未找到更加简单、更加高效、更加合理、更小占用的资源的算法。2.程序仍然存在不合理的地方,例如程序某些部分输入错误会导致程序中止或转向其他功能模块,即程序建议用户注意提示,进行合理的准确的输入,这样更有利于管理工作。3详细设计3.1总体设计思路通过对课题的分析,程序的要求是设计选修课管理系统,对选修课程能够进行录入和修改操作等,要求有主界面和退出功能。首先,考虑到程序的数据输入,可以设置一个课程增加选项,通过该界面,进行选修课的录入和修改操作,最后将录入的课程存到相应的文件中。然后定义各种函数的功能包括:查看、查询、删除等。另一个为选课

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

6、提高了程序的移植性。3.2 类定义class subject /建立一个课程类,保存课程信息class student /建立一个学生类,保存学生信息函数:该程序包含的主要函数功能说明:void XuanKeMenu(); / 选课主菜单函数int find(int no); void Save(); void DL(); /登录界面的函数voidMainMenu();void output(); void Load(); /载入文件信息的函数void Load2();void quit();void add();voidChaXun();void chaxun1();void chaxun2

7、();voidxuanke();void tq1(); /提取选课编号的函数void tq2();void AddStuInfo(); /添加学生信息的函数void SaveStuInfo(); /保存学生信息到文件中void del(); /删除已选课程信息的函数void sum();3.3宏定义#define N 103.4文件操作函数void AddStuInfo();/添加学生信息的函数void SaveStuInfo();/保存学生信息到文件中3.5用户操作函数/该函数根据用户的选择,完成指定的操作void DL()/登录界面voidMainMenu()/系统主菜单void outp

8、ut()/显示函数:将课程信息输出到屏幕voidAddStuInfo()/增加学生信息,并保存在文件中void add()/增加课程信息,并保存在文件中void del()/删除已选课程信息voidChaXun() /查询主菜单函数voidxuanke() /选课函数:执行选课功能void sum()/统计函数,统计并输出文件中的数据3.6其他重要函数void Load()/载入函数:载入课程信息(文件此前已建立)void Load2()/载入学生信息(文件此前已建立)void Save()/保存已选的课程信息voidSaveStuInfo()/保存学生信息void quit()/退出函数vo

9、id chaxun1()/按学分方式查询void chaxun2()/按课程性质查询void tq1(char *str)/提取出选课时输入的课程编号int find(int no)/寻找函数,找到想要的课程编号void display(int i)/输出函数void tq2(char *str)/提取函数:提前删除时输入的课程编号4测试结果和运行效果运行程序后,登陆界面登陆学号,进入登陆后的界面,在其中可以选择查看课程信息、添加课程信息、查询课程信息、学生选课、统计情况和退出。按照提示输入0-5和Enter键进入下级菜单,或者退出程序。图4-1登陆后的界面输入1进入查看课程信息页面后,给出存

10、放在文件类的所有课程信息,按y和Enter键停留界面,按n和Enter退出。图4-2 进入查看课程信息界面在主菜单中选择2,进入添加课程信息界面。图4-3 添加课程时的界面在主菜单中选4,学生选课界面。图4-4学生选课时的界面在登陆界面输入exit退出系统。图4-5退出系统时的界面5系统开发所用到的技术操作系统: Windows 7开发软件: Microsoft Visual Studio 2013技术:功能模块(函数);向量;文件保存和读取。模块:是抽象的概念,按照功能划分模块,尽可能保证每个模块互相独立。这个一般同程序的逻辑设计有关,同具体语言关系不大。函数:一般都有有明确的定义,有明确的

11、语法。用来完成相对独立功能和程序。向量(Vector):Vector 是C+标准程序库中的一个类,可视为会自动扩展容量的数组,以循序(Sequential)的方式维护变量集合。vector的特色包括支持随机存取,在集合尾端增删元素很快,但是在集合中间增删元素比较费时。vector是C+标准程序库中的众多容器(container)之一,除此之外还有list、set、map、等等。 vector以模板(泛型)方式实现,可以存储任何类型的变量,包括用户自定义的数据型态。文件操作:C语言对文件的处理一般有两种方法,缓冲文件系统和非缓冲文件系统。在文件系统中,系统对文件进行读写之前首先在内存区开辟一个称

12、作缓冲区的专用内存区域。在缓冲文件系统中,系统对文件进行读写之前首先在内存区开辟一个称作缓冲区的专用内存区域。从内存向磁盘写文件时必须先写入缓冲区,装满缓冲区后才一起写到磁盘上去;从磁盘读文件时必须先把一批数据读到缓冲区(充满缓冲区),然后再从缓冲区将数据逐个送到用户数据区。在非缓冲文件系统中,文件的处理不自动开辟确定大小的缓冲区,而是由程序设定的缓冲区。一般用缓冲文件系统进行的输入/输出。用非缓冲文件系统进行的输入/输出称为低级(低层)输入/输出。ANSI C标准采用缓冲文件系统,现代的操作系统也广泛采用缓冲型文件系统。参考文献1 李素若. C+面向对象程序设计.北京:中国水利水电出版社,2

13、013.2 曾辉.王更生. C+程序设计实训教程.北京:北京邮电大学出版社,20113 揣锦华等编.C+程序设计语言.西安:西安电子科技大学出版社,20114 张素琴主编.C+程序设计语言.北京:清华大学出版社,20105 邓飞,李瑶主编C+程序设计.北京科海电子出版社 20096 李军民等编.C+程序设计语言.西安: 西安电子科技大学出版社,2011附录 全部代码#include#include#include#include#include#include #include#define N 10using namespace std;int F;class subject /建立一个课程

14、类,保存课程信息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 cnt;Stu;vector v; /声明一个指向课程信息的向量vector z; /声明一个指向学生信息的向量set T; /建立一个集合vector set TT; /建立一个向量集合set :iterator it; /建立一个迭代器void XuanKeMen

15、u(); /声明一个选课主菜单函数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 chaxun2();void xuanke();void tq1(); /声明提取信息的函数void tq2();void AddStuInfo(); /声明添加学生信息的函数void del();void su

16、m();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.nam; St = Stu.zxf = 0; fprintf(fp, %s %s %d %dn, Stu.num, Stu.nam, St, Stu.zxf); /存入文

17、件 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.time2; cout S.xf; cout S.kkxq; v.push_back(S); Save();

18、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 SaveStuInfo() /

19、保存学生信息 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, t, 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

20、 endl endl endl; cout t * endl; 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);

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

22、ls); cout endl endl endl; cout t * endl; cout t * 课程信息 * endl; cout t * endl endl; cout t 课程 课程 课程 总 授课 实验或 学分 开课 endl; cout t 编号 名称 性质 学时 学时 上机学时 学分 学期 endl endl; if (vi.xf = key) cnt+; 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 cnt = 0; cout endl endl endl; cout t * endl; cout t * 课程信息 * endl; cout t * endl endl; cout key; cout t 课程 课程 课程 总 授课 实验或 学分

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

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