c++课程设计之学生选修课程系统设计.docx
- 文档编号:26021154
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:41
- 大小:307.07KB
c++课程设计之学生选修课程系统设计.docx
《c++课程设计之学生选修课程系统设计.docx》由会员分享,可在线阅读,更多相关《c++课程设计之学生选修课程系统设计.docx(41页珍藏版)》请在冰豆网上搜索。
c++课程设计之学生选修课程系统设计
《C++程序设计》课程设计报告
学生选修课程系统设计
一、需求分析
计算机技术作为信息化的核心技术受到全社会的普遍重视。
如今,计算机的使用也已不再局限于科学计算,它已进入人类社会的各个领域并发挥着越来越重要的作用。
深入掌握计算机专业知识、具有良好系统设计与分析能力的计算机高级专业人才在社会上深受欢迎。
而系统设计与分析能力的培养需要通过实践训练才能获得。
通过计算机对一些系统的管理已经成为一种系统、便捷的方式。
本课程设计就是用C++设计学生选课系统的问题,实现对学生选课的管理操作。
本课程设计的目的是设计一个学生选修课程系统的程序,用来实现对学生成绩的管理,其中包括学生信息的文件读入、添加、查询、保存、删除以及相应的课程信息管理。
程序设计了两个类,其中一个包含学生的学号、姓名、选课数以及选修总学分,另一个则包含了课程的信息,包括课程编号、课程名称、课程性质、课时等等。
然后通过数组、向量、集合等来实现学生选课信息的记录、保存,删除等相关操作从而达到管理学生选课的。
二、设计要求
假定有n门课程,每门课程有课程编号、课程名称、课程性质、总学时、授课学时、实验学时、学分、开课学期等信息。
学生可以按要求(如每个学生总学分不得少于20、没学期不能超过3门课程,每门课程不得超过50个人,但不能少于10否则该课程不开设)自由选课。
使之能提供一些功能:
1)课程信息录入功能
2)课程信息浏览功能
3)查询功能:
(按课程性质查询、按课程学分查询,查询每个学生的选修信息、查询每门课程的选修信息等)
4)学生选修课程
5)修改课程或选课信息(根据课程编号或名称修改课程信息、根据学生姓名修改选课信息);
6)删除课程或选课信息(根据课程编号或名称删除课程信息、根据学生姓名删除选课信息);
三、总体设计
我们设计一个程序对学生选课信息进行保存,对学生的选课信息进行可执行操作,如添加、删除、查询等等。
该程序包括以下功能模块:
1)学生信息添加模块:
能够输入学生基本信息并保存到文件中。
2)查看模块:
显示所有可选修课程的信息。
3)查询:
显示所有符合要求的课程信息。
4)选课:
显示学生已选课程信息和选课,删除已选课程信息。
5)退出系统。
为了完善系统,我们还添加了一个登录界面。
考虑到添加课程信息的功能只适合老师,因此我们设置了添加课程的权限设置(必须输入密码)。
我们建立了两个文件用来保存学生信息和课程信息。
(student.txt和subject.txt)
该系统功能说明:
1)系统以菜单方式工作
2)课程信息录入功能(课程信息用文件保存)--输入
3)课程信息浏览功能--输出
4)查询功能:
(至少一种查询方式)--算法
5)按学分查询
6)按课程性质查询
7)学生选修课程(可选项)
四、详细设计
该成序包含的主要函数功能说明:
voidXuanKeMenu();//选课主菜单函数
intfind(intno);
voidSave();
voidDL();//登录界面的函数
voidMainMenu();
voidoutput();
voidLoad();//载入文件信息的函数
voidLoad2();
voidquit();
voidadd();
voidChaXun();
voidchaxun1();
voidchaxun2();
voidxuanke();
voidtq1();//提取选课编号的函数
voidtq2();
voidAddStuInfo();//添加学生信息的函数
voidSaveStuInfo();//保存学生信息到文件中
voiddel();//删除已选课程信息的函数
主要的数据结构表:
序号
成员名
数据类型
字段含义
1
nam
char
姓名
2
num
char
学号
3
zxf
int
总学分
4
cnt
int
选课总数
5
name
char
课程名称
6
num
int
课程编号
7
cha
char
课程性质
8
Time
int
课程总学时
9
time1
int
授课总学时
10
time2
int
实验(上机)总学时
11
xf
int
课程学分
12
kkxq
char
开课学期
五、程序代码
#include
#include
#include
#include
#include
#defineN10
usingnamespacestd;
intF;
classsubject//建立一个课程类,保存课程信息
{
public:
intnum;
charname[30];
charcha[20];
intTime,time1,time2,xf;
charkkxq[20];
}S;
classstudent//建立一个学生类,保存学生信息
{
public:
charnam[10];
charnum[15];
intzxf;
intcnt;
}Stu;
vector
vector
set
vector
set
:
iteratorit;//建立一个迭代器
voidXuanKeMenu();//声明一个选课主菜单函数
intfind(intno);
voidSave();
voidDL();//声明一个登录界面的函数
voidMainMenu();
voidoutput();
voidLoad();//声明载入文件信息的函数
voidLoad2();
voidquit();
voidadd();
voidChaXun();
voidchaxun1();
voidchaxun2();
voidxuanke();
voidtq1();//声明提取信息的函数
voidtq2();
voidAddStuInfo();//声明添加学生信息的函数
voiddel();
voidAddStuInfo()
{
FILE*fp;
fp=fopen("d:
\\student.txt","a");fseek(fp,0,2);//打开学生信息文件
system("cls");
cout< cout<<"\t\t***************************************************"< cout<<"\t\t*****************学生选课系统******************"< cout<<"\t\t***************************************************"< cout<<"\t\t\t请输入学号: ";cin>>Stu.num; cout<<"\t\t\t请输入姓名: ";cin>>Stu.nam; St=Stu.zxf=0; fprintf(fp,"%s%s%d%d\n",Stu.num,Stu.nam,St,Stu.zxf);//存入文件 z.push_back(Stu);T.clear();TT.push_back(T);//用向量指向学生信息 fclose(fp); } voidadd() { stringpassword1,password2; charpassword[20];int_cnt=0; FILE*fp; fp=fopen("d: \\password","r"); fscanf(fp,"%s",password);password2=password; fclose(fp); system("cls"); cout< cout<<"\t********************************************************"< cout<<"\t**********************课程信息*******************"< cout<<"\t********************************************************"< cout<<"\t请输入密码: ";//对添加课程进行权限设置 charch; while(ch=getch()) { if(ch==13)break; if(ch! =8){putchar('*');password1+=ch;_cnt++;} else { if(_cnt) { password1.erase(password1.end()-1); _cnt--; system("cls"); cout< cout<<"\t********************************************************"< cout<<"\t**********************课程信息*******************"< cout<<"\t********************************************************"< cout<<"\t请输入密码: "; intx=_cnt; while(x--)cout<<"*"; } } } if(password1! =password2){cout<<"\n\n\t\t\t密码错误! ! ! ";getch();MainMenu();} A: system("cls"); cout< cout<<"\t********************************************************"< cout<<"\t**********************课程信息*******************"< cout<<"\t********************************************************"< cout<<"\t\t\t请输入课程编号: "; cin>>S.num; cout<<"\t\t\t请输入课程名称: "; cin>>S.name; cout<<"\t\t\t请输入课程性质: "; cin>>S.cha; cout<<"\t\t\t请输入总课时: "; cin>>S.Time; cout<<"\t\t\t请输入授课学时"; cin>>S.time1; cout<<"\t\t\t请输入上机学时(实验学时): "; cin>>S.time2; cout<<"\t\t\t请输入学分: "; cin>>S.xf; cout<<"\t\t\t请输入开课学期: "; cin>>S.kkxq; v.push_back(S); Save(); cout< "; strings;cin>>s; if(s[0]=='Y'||s[0]=='y')gotoA; elseMainMenu(); } voidSave()//保存已选的课程信息 { FILE*fp; fp=fopen("d: \\subject.txt","w"); for(inti=0;i fprintf(fp,"%d%s%s%d%d%d%d%s\n",v[i].num,v[i].name, v[i].cha,v[i].Time,v[i].time1,v[i].time2,v[i].xf,v[i].kkxq); fclose(fp); } voidSaveStuInfo()//保存学生信息 { FILE*fp; fp=fopen("d: \\student.txt","w"); for(inti=0;i { fprintf(fp,"%s%s%d%d",z[i].num,z[i].nam,z[i].cnt,z[i].zxf); for(it=TT[i].begin();it! =TT[i].end();it++) fprintf(fp,"%d",*it); fprintf(fp,"\n"); } fclose(fp); } voidquit()//退出函数 { exit (1); } voidChaXun()//查询主菜单函数 { system("cls"); cout< cout<<"\t********************************************************"< cout<<"\t**********************课程信息*******************"< cout<<"\t********************************************************"< cout<<"\t\t\t\t请选择查询方式: \n\t\t\t\t[1]学分查询\n\t\t\t\t[2]课程性质查询\n\t\t\t\t[0]返回主菜单\n\n"; cout<<"\t\t\t\t请选择[0-2]: "; intchoice; cin>>choice; if(choice>=0&&choice<3) { if(choice==1)chaxun1(); if(choice==2)chaxun2(); if(choice==0)MainMenu(); } elseChaXun(); } voidchaxun1()//按学分方式查询 { system("cls");intcnt=0; cout< cout<<"\t********************************************************"< cout<<"\t**********************课程信息*******************"< cout<<"\t********************************************************"< cout<<"\t请输入学分: "; intkey; cin>>key; cout<<"\t课程"<<""<<"课程"<<"课程"<<""<<"总" <<""<<"授课"<<""<<"实验或"<<""<<"学分"<<""<<"开课"< cout<<"\t编号"<<""<<"名称"<<"性质"<<""<<"学时" <<""<<"学时"<<""<<"上机学时"<<""<<"学分"<<""<<"学期"< for(inti=0;i { if(cnt&&cnt%10==0) { cout< cout<<"\t按任意键查看下一页";getch(); system("cls"); cout< cout<<"\t********************************************************"< cout<<"\t**********************课程信息*******************"< cout<<"\t********************************************************"< cout<<"\t课程"<<""<<"课程"<<"课程"<<""<<"总" <<""<<"授课"<<""<<"实验或"<<""<<"学分"<<""<<"开课"< cout<<"\t编号"<<""<<"名称"<<"性质"<<""<<"学时" <<""<<"学时"<<""<<"上机学时"<<""<<"学分"<<""<<"学期"< } if(v[i].xf==key) { cnt++; printf("\t%3d%12s%8s%4d%6d%8d%8d%7s\n", v[i].num,v[i].name,v[i].cha,v[i].Time,v[i].time1,v[i].time2,v[i].xf,v[i].kkxq); } } cout< "; strings;cin>>s; if(s[0]=='Y'||s[0]=='y')chaxun1(); elseMainMenu(); } voidchaxun2()//按课程性质查询 { system("cls");intcnt=0; cout< cout<<"\t********************************************************"< cout<<"\t**********************课程信息*******************"< cout<<"\t********************************************************"< cout<<"\t请输入课程性质: "; charkey[20]; cin>>key; cout<<"\t课程"<<""<<"课程"<<"课程"<<""<<"总" <<""<<"授课"<<""<<"实验或"<<""<<"学分"<<""<<"开课"< cout<<"\t编号"<<""<<"名称"<<"性质"<<""<<"学时" <<""<<"学时"<<""<<"上机学时"<<""<<"学分"<<""<<"学期"< for(inti=0;i { if(cnt&&cnt%10==0) { cout< cout<<"\t按任意键查看下一页";getch(); system("cls"); cout< cout<<"\t********************************************************"< cout<<"\t**********************课程信息*******************"< cout<<"\t********************************************************"< cout<<"\t课程"<<""<<"课程"<<"课程"<<""<<"总" <<""<<"授课"<<""<<"实验或"<<""<<"学分"<<""<<"开课"< cout<<"\t编号"<<""<<"名称"<<"性质"<<""<<"学时" <<""<<"学时"<<""<<"上机学时"<<""<<"学分"<<""<<"学期"< } if(! strcmp(v[i].cha,key)) { cnt++; printf("\t%3d%12s%8s%4d%6d%8d%8d%7s\n", v[i].num,v[i].name,v[i].cha,v[i].Time,v[i].time1,v[i].time2,v[i].xf,v[i].kkxq); } } cout< "; strings;cin>>s; if(s[0]=='Y'||s[0]=='y')chaxun2(); elseMainMenu(); } voidtq1(char*str)//提取出选课时输入的课程编号 { stringt=""; inti=0,cont=0; while(str[i]) { if(isalnum(str[i]))t+=str[i]; else { inttmp=atoi(t.c_str()); if(TT[F].find(tmp)! =TT[F].end()){t="";i++;continue;} z[F].zxf+=v[find(tmp)].xf; TT[F].insert(tmp);t="";cont++; } i++; // } inttmp=atoi(t.c_str());//cout< if(TT[F].find(tmp)==TT[F].end()) { cont++; TT[F].insert(tmp); z[F].zxf+=v[find(tmp)].xf; } z[F].cnt+=cont; } voidxuanke()//选课函数: 执行选课功能 { charstr[100]; system("cls"); cout< cout<<"\t********************************************************"< cout<<"\t**********************课程信息*********
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 课程设计 学生 选修 课程 系统 设计