c++课程设计之学生选修课程系统设计.docx

上传人:小飞机 文档编号:3153755 上传时间:2023-03-11 格式:DOCX 页数:30 大小:43.55KB
返回 下载 相关 举报
c++课程设计之学生选修课程系统设计.docx_第1页
第1页 / 共30页
c++课程设计之学生选修课程系统设计.docx_第2页
第2页 / 共30页
c++课程设计之学生选修课程系统设计.docx_第3页
第3页 / 共30页
c++课程设计之学生选修课程系统设计.docx_第4页
第4页 / 共30页
c++课程设计之学生选修课程系统设计.docx_第5页
第5页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《c++课程设计之学生选修课程系统设计.docx》由会员分享,可在线阅读,更多相关《c++课程设计之学生选修课程系统设计.docx(30页珍藏版)》请在三一办公上搜索。

1、c+课程设计之学生选修课程系统设计C+程序设计课程设计报告 学生选修课程系统设计 1 一、需求分析 计算机技术作为信息化的核心技术受到全社会的普遍重视。如今,计算机的使用也已不再局限于科学计算,它已进入人类社会的各个领域并发挥着越来越重要的作用。深入掌握计算机专业知识、具有良好系统设计与分析能力的计算机高级专业人才在社会上深受欢迎。而系统设计与分析能力的培养需要通过实践训练才能获得。通过计算机对一些系统的管理已经成为一种系统、便捷的方式。本课程设计就是用C+设计学生选课系统的问题,实现对学生选课的管理操作。 本课程设计的目的是设计一个学生选修课程系统的程序,用来实现对学生成绩的管理,其中包括学

2、生信息的文件读入、添加、查询、保存、删除以及相应的课程信息管理。程序设计了两个类,其中一个包含学生的学号、姓名、选课数以及选修总学分,另一个则包含了课程的信息,包括课程编号、课程名称、课程性质、课时等等。然后通过数组、向量、集合等来实现学生选课信息的记录、保存,删除等相关操作从而达到管理学生选课的。 二、设计要求 假定有n门课程,每门课程有课程编号、课程名称、课程性质、总学时、授课学时、实验学时、学分、开课学期等信息。学生可以按要求(如每个学生总学分不得少于20、没学期不能超过3门课程,每门课程不得超过50个人,但不能少于10否则该课程不开设)自由选课。使之能提供一些功能: 1) 课程信息录入

3、功能 2) 课程信息浏览功能 3) 查询功能: 4) 学生选修课程 5) 修改课程或选课信息; 6) 删除课程或选课信息; 三、总体设计 我们设计一个程序对学生选课信息进行保存,对学生的选课信息进行可执行操作,如添加、删除、查询等等。 该程序包括以下功能模块: 1) 学生信息添加模块:能够输入学生基本信息并保存到文件中。 2) 查看模块:显示所有可选修课程的信息。 3) 查询:显示所有符合要求的课程信息。 4) 选课:显示学生已选课程信息和选课,删除已选课程信息。 5) 退出系统。 为了完善系统,我们还添加了一个登录界面。考虑到添加课程信息的功能只适合老师,因此我们设置了添加课程的权限设置。我

4、们建立了两个文件用来保存学生信息和课程信息。 该系统功能说明: 1) 系统以菜单方式工作 2) 课程信息录入功能(课程信息用文件保存)输入 3) 课程信息浏览功能输出 4) 查询功能:(至少一种查询方式)算法 5) 按学分查询 6) 按课程性质查询 7) 学生选修课程(可选项) 2 四、详细设计 该成序包含的主要函数功能说明: void XuanKeMenu; / 选课主菜单函数 int find(int no); void Save; void DL; /登录界面的函数 void MainMenu; void output; void Load; /载入文件信息的函数 void Load2;

5、 void quit; void add; void ChaXun; void chaxun1; void chaxun2; void xuanke; void tq1; /提取选课编号的函数 void tq2; void AddStuInfo; /添加学生信息的函数 void SaveStuInfo; /保存学生信息到文件中 void del; /删除已选课程信息的函数 主要的数据结构表: 序号 成员名 数据类型 字段含义 1 2 3 4 5 6 7 8 9 10 11 12 nam num zxf cnt name num cha Time time1 time2 xf kkxq char

6、 char int int char int char int int int int char 姓名 学号 总学分 选课总数 课程名称 课程编号 课程性质 课程总学时 授课总学时 实验总学时 课程学分 开课学期 五、程序代码 #include #include #include #include #include #define N 10 using namespace std; int F; 3 class subject /建立一个课程类,保存课程信息 public: int num; char name30; char cha20; int Time,time1,time2,xf; c

7、har 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 XuanKeMenu; /声明一个 选课主菜单函数 int find(int no); void Save; void DL; /声明一个登录界面

8、的函数 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 AddStuInfo FILE *fp; fp=fopen(d:student.txt,a);fseek(fp,0,2); /打开学生信息文件 system(cl

9、s); 4 coutendlendlendlendlendl; couttt*endl; couttt* 学生选课系统 *endl; couttt*endlendl; coutStu.num; coutStu.nam; St=Stu.zxf=0; fprintf(fp,%s %s %d %dn,Stu.num,Stu.nam,St,Stu.zxf); /存入文件 z.push_back (Stu); T.clear; TT.push_back(T); /用向量指向学生信息 fclose(fp); void add string password1,password2; char passwor

10、d20;int _cnt=0; FILE *fp; fp=fopen(d:password,r); fscanf(fp,%s,password); password2=password; fclose(fp); system(cls); coutendlendlendl; coutt *endl; coutt * 课 程 信 息 *endl; coutt *endlendl; coutt 请输入密码:; /对添加课程进行权限设置 char ch; while(ch=getch) if(ch=13) break; if(ch != 8) putchar(*); password1 += ch;_

11、cnt+; else if(_cnt) password1.erase(password1.end-1); _cnt-; system(cls); coutendlendlendl; coutt *endl; coutt * 课 程 信 息 *endl; coutt *endlendl; coutt 请输入密码:; int x=_cnt; 5 while(x-)cout*; if(password1 != password2) coutnnttt 密码错误!;getch; MainMenu; A: system(cls); coutendlendlendl; coutt *endl; cout

12、t * 课 程 信 息 *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) goto A; else MainMenu; void Save /保存已选的课程信息 FILE *fp; fp=fopen(d:subject.txt,w); for(int i=0;iv.size;i+) fprintf(fp,%d %s %

13、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 /保存学生信息 FILE *fp; 6 fp=fopen(d:student.txt,w); for(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

14、); fclose(fp); void quit /退出函数 exit(1); void ChaXun /查询主菜单函数 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; el

15、se ChaXun; void chaxun1 /按学分方式查询 system(cls);int cnt=0; coutendlendlendl; coutt *endl; coutt * 课 程 信 息 *endl; coutt *endlendl; coutkey; coutt 课程 课程 课程 总 授课 实验或 学分 开课endl; coutt 编号 名称 性质 学时 学时 上机学时 学分 学期endlendl; for(int i=0;iv.size;i+) if(cnt&cnt%10=0) coutendlt = endl; coutt 按任意键查看下一页; getch; syste

16、m(cls); coutendlendlendl; coutt *endl; coutt * 课 程 信 息 *endl; coutt *endlendl; coutt 课程 课程 课程 总 授课 实验或 学分 开课endl; coutt 编号 名称 性质 学时 学时 上机学时 学分 学期endlendl; 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); coutendls; if(s0=Y|s0=y)

17、 chaxun1; else MainMenu; void chaxun2 /按课程性质查询 system(cls);int cnt=0; coutendlendlendl; coutt *endl; coutt * 课 程 信 息 *endl; coutt *endlendl; 8 coutkey; coutt 课程 课程 课程 总 授课 实验或 学分 开课endl; coutt 编号 名称 性质 学时 学时 上机学时 学分 学期endlendl; for(int i=0;iv.size;i+) if(cnt&cnt%10=0) coutendlt = endl; coutt 按任意键查看下

18、一页; getch; system(cls); coutendlendlendl; coutt *endl; coutt * 课 程 信 息 *endl; coutt *endlendl; coutt 课程 课程 课程 总 授课 实验或 学分 开课endl; coutt 编号 名称 性质 学时 学时 上机学时 学分 学期endlendl; if(!strcmp(vi.cha,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);

19、 coutendls; if(s0=Y|s0=y) chaxun2; else MainMenu; void tq1(char *str) /提取出选课时输入的课程编号 string t=; int i=0,cont=0; while(stri) if(isalnum(stri) t += stri; else 9 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

20、_str);/coutt ;system(pause); if(TTF.find(tmp)=TTF.end) cont+; TTF.insert(tmp); zF.zxf += vfind(tmp).xf; zF.cnt += cont; void xuanke /选课函数:执行选课功能 char str100; system(cls); coutendlendl; coutt *endl; coutt * 课 程 信 息 *endl; coutt *endlendl; coutt 课程 课程 课程 总 授课 实验或 学分 开课endl; coutt 编号 名称 性质 学时 学时 上机学时 学

21、分 学期endlendl; for(int i=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 课程 课程 课程 总 10 授课 实验或 学分 开课endl; coutt 编号 名称 性质 学时 学时 上机学时 学分 学期endlendl; printf(t

22、%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; if(zF.zxf60) coutx; if(x0=y|x0=Y) xuanke; else XuanKeMenu; else XuanKeMenu; int find(int no) /寻找函数,找到想要的课程编号 for(int i=0;iv

23、.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); int choice,l=0; coutendlendl; coutt *endl; coutt * 学 生 选 课 *endl; coutt *endlendl; coutt 姓名:zF.nam 学号:zF.num

24、 已选 zF.cnt; cout门课程 已选课程总学分:zF.zxf endl; coutt =endl; 11 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; else if(choice=2) del; else if(choice=0)

25、MainMenu; else if(choice=3) ; else XuanKeMenu; system(cls); coutendlendl; coutt *endl; coutt * 学 生 选 课 *endl; coutt *endlendl; coutt 姓名:zF.nam 学号:zF.num 已选 zF.cnt; cout门课程 已选课程总学分:zF.zxf endl; coutt =endl; coutt 已选课程信息:n; coutt 课程 课程 课程 总 授课 实验或 学分 开课endl; coutt 编号 名称 性质 学时 学时 上机学时 学分 学期endlendl; di

26、splay(find(*it); coutendlt = endl; coutchoice; getchar; if(choice=1) xuanke; else if(choice=2) del; else if(choice=0) MainMenu; else XuanKeMenu; void tq2(char *str) /提取函数:提前删除时输入的课程编号 12 string t=; int i=0,cont=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); zF.cnt-; zF.

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号