C专业课程设计学生选课专业系统设计.doc
《C专业课程设计学生选课专业系统设计.doc》由会员分享,可在线阅读,更多相关《C专业课程设计学生选课专业系统设计.doc(21页珍藏版)》请在咨信网上搜索。
目录 1系统需求分析 14 2总体设计 15 3具体设计 16 4界面设计和各功效模块实现 19 5 系统调试 23 6 试验心得体会 24 7附:源程序 25 1系统需求分析 (1)、本系统是针对高校学生选修课程而设计,经过本系统高校学生能够很方便地进行自由选课。关键问题描述是(功效要求):n门课程,每门课程有课程编号,课程名称,课程性质,总课时,讲课课时,试验或上机课时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。 (2)、关键要求实现功效以下: ① 课程信息录入功效:能依据提醒将各课程相关信息进行输入并保留; ② 课程信息浏览功效:能将已经录入并保留信息进行浏览; ③ 查询功效:可依据不一样查询方法查询对应课程信息。其中查询方法有按学分查询和按课程性质查询两种; 系统步骤图以下: 输入和功效对应数字 判定有否 开始 实施对应功效 结束 是 否 (3)、输入输出要求: 系统以菜单方法工作。用户依据每一个功效模块输入对应内容,然后进行对应操作。如需进行其它操作,可返回主菜单。输出内容要有一个良好界面,使用户看清楚明白。 2总体设计 (1)、系统功效分析 本系统关键由一个Class类及其五个组员函数组成。课题所要求功效由各个函数分别得以实现。首先,在Class类内定义了部分组员变量,用来保留课程编号,课程名称,课程性质,总课时,讲课课时,试验或上机课时,学分,开课学期等信息,还对它组员变量进行了申明,如: 然后,在类外,经过作用域运算符将类内申明组员函数定义,和进行对应操作,以实现对应功效。关键包含功效要求中五大功效,即信息输入、信息浏览、按学分查询课程、按课程性质查询课程等。 最终,在主函数中设置目录显示。用switch瓜分不一样功效选项。系统依据用户输入符号,调用对应组员函数,完成功效实现。 (2)、各个模块之间关系以下图: 学生选修课程系统设计 Course类 Main 函数 Input() Output() SearchByscore() SearchByKind() 3具体设计 (1) 数据库需求分析 该程序关键包含一个Class类和一个main()函数。其中Class类中有Input(),OutPut(),Search(),SearchByscore(float),SearchByKind(string)函数来实现各功效。像在Input()信息输入函数中,ofstream outfile 创建一个文件输出流对象语句就要用到系统库函数fstream,而conio.h则是 Console (键盘和屏幕) 输出输入函数头文件,con - Console,io -- input,output。程序中各功效函数如SearchBy (float)按分数查询和 SearchByKind(string)按性质查询,显然是两个独立函数,但其实现过程很像似。 (2) 数据库概念结构设计(E-R图) 课程 讲课课时时 编号 名称 上级课时 性质 学分时 时 总学分 开课学期 输入入 输出 显示 查找 (3) 数据库逻辑结构设计 (4) 类层次图 课程 课程编号 课程名字 课程性质 总课时 讲课课时 试验或上机课时 学分 开课学期 课程信息录入功效 课程信息浏览功效 查询功效 按学分查询 按课程性质查询 学生选修课程 4界面设计和各功效模块实现 (1)、功效实现文件模块: 在主函数中设置目录显示。设计一个友好、漂亮界面,经过switch语句进行选择进入对应功效模块,建立一个class类对象a,用对象名调用class类功效函数,合适使用清屏函数。经过对象a调用对应组员函数,如a.Input()、a.OutPut()、a.Search()等等,这些公有函数组员就是这个系统要求设计功效模块。各个功效函数具体实现以下: ①、 录入函数模块: 首先,创建一个文件输出流对象outfile,打开文件,判定文件是否存在。经过while设一个无限循环,当给出指定条件时退出。在循环中,调用cout函数来提醒用户输入对应信息,如课程编号、名称、课程性质、总课时、讲课课时、试验或上机课时、学分、开课学期等等。将需要课程输入完成以后,可依据提醒再输入“f”,即可返回主菜单,重新进行功效选择。该步骤界面设计操作图以下: (输入“1”,依据提醒输入课程信息:) 显示(浏览)函数模块: 该函数首先创建了输入流文件对象infile,使用语句infile.open(file),然后定义一个string类型二维数组,用来保留从文本内读取信息,用for循环境保护证保留不止一门课程信息。最终,cout输出显示全部保留信息。操作界面图以下: 查找功效,即按学分查找和按课程性质查找,具体实现以下: 按课程性质查找:创建输入流文件对象infile,然后定义一个string类型二维数组,用来保留从文本内读取信息,比较用户输入字符和保留信息中那些课程性质相对应,将对应课程信息进行输出显示,界面设计操作图以下: 按课程学分查找:原理同上,假如用户输入学分和所保留信息想对应,则将对应课程信息输出显示。输入“0”可返回主菜单。具体程序见源程序清单。该步骤界面显示以下: 5 系统调试 (1)、 在查找功效函数当中,刚开始我输入课程性质用数字替换,以后面我查找函数在进行输入比较时是用汉字进行比较,这么就造成了查找错误,刚开始我找了很久也找不出来,以后还是在同学帮助下最终找到了这个错误,并更正。输出了正确结果。 (2)、在class类当中我刚开始把组员变量如课程性质只简单设置为字符型char,当在类外进行初始化时出现了错误,因为把要取得字符串函数只简单设置为字符型是不行,它返回得不到一个字符串,要把其设置string类型或数组类型,这么就能够经过编译了。 (3)、进行程序调试时,事先函数中没有用到清屏,造成界面繁琐不清楚。以后在头文件中加了#include<windows.h>,又在程序中合适地添加了system("cls")语句,这才使得界面友好清楚。 6 试验心得体会 心得 连续三天课程设计最终要靠近尾声了。即使接下来还要面临担心期末考试,但总算能够稍微松一口气。 说实话,每次做课程设计、写试验汇报,我全部好上火长痘好几天。原来因为上学期课程设计没有认真做,在网上下载了一篇类似题目,自己作了部分修改,便跑去答辩,被老师当众批评,心里惭愧得要死!心里暗下决心,这次试验汇报一定要自己写,不管写得多差,只要自己很努力地认真在写就好了。 这次题目初看不是极难,一个类,部分组员变量,多个组员函数,将它们组合起来就OK了。可是越写下去,便认为四处是难题。到最终感觉自己像处于一个大迷宫里,四面四处是出口,走近了一看,却发觉那只是上面画着门墙壁······ 我只会定义一个类和它组员变量和组员函数,但要求是要有N门课程呢,还要能显示你所输入课程信息,还要按要求将分类不一样信息挑选出来······天哪,这可怎么办呢?看来,要将自己输入信息有统计地保留起来就好了。可是老师没教这个呀(以后才知道相关内容在C语言教科书上有,上学期课程设计也有包含到,但因为上次没有认真做,所以对该知识点没有印象)。还跑去图书馆找资料,找到了相关内容,可是,答辩时间也迫近了······ 第三天早晨进试验室,问同学,发觉已经有些人将这个题目完整地做了出来,我不得不感叹人家才思灵敏。也难怪哦,人家是脚扎实地,C语言基础打得好,谁让我上学期玩去了呢?呵······ 老师在试验室里激励大家主动答辩,我盯着自己作品,这个连“半成品”全部谈不上程序,这能去答辩吗?老师也没要求必需答辩,要不,直接copy她们程序写了试验汇报交差完事了!但这不跟上学期一样了么?我这近三天寝食难安不全部白熬了么?去答辩吧,就算给自己付出一个结果吧······ 老师很仁慈,我那个程序对于题目要求根本没什么意义,也就是说我根本没完成任务。估量老师是看我熬了这三天太可怜了,勉强让我过了。 试验做完了,心情还是有点沉重,但没上次那样难过了。毕竟自己写,经过思索,查资料,还是学到了不少东西,对C语言也进行了巩固。我要立即将所缺知识填补上来,然后再下次课程设计中打个漂亮胜仗! 7附:源程序 #include<conio.h> #include<stdlib.h> #include<iostream> #include<fstream> #include<string> using namespace std; class Course { private: int courseNumber; string courseName; string courseKind; int coursePeriod; int schoolPeriod; int experimentPeriod; float credithour; string courseterm; public: void CourseInfoInput(); //信息输入 void CourseInfoOutPut(); //信息输出 void Search(); //查找信息 void SearchByCredithour(float); //根据学分查找 void SearchByCourseKind(string); //根据课程;类型查找 }; const char* coursefile="C:\\course.txt"; //将课程信息定位到C盘下course.txt中!!!!!!!!! void Course::CourseInfoInput() //课程信息录入 { ofstream outcoursefile; //创建一个文件输出流对象 outcoursefile.open(coursefile); //打开文件 if(!outcoursefile) //判定文件是否存在 { cout << "文件打开失败!"<< endl; return ; } while(1) //无限循环,给出指定条件退出 { cout << "***********************************课程信息***********************************\n"; cout << " 按任意键开始信息录入 \n"; cout << " 输入q退出 \n"; if(getch()=='q') { break; } cout<<"请输入课程编号: "; cin>>courseNumber; cout<<"请输入课程名称:"; cin>>courseName; cout<<"请输入课程性质:"; cin>>courseKind; cout<<"请输入总课时:"; cin>>coursePeriod; cout<<"请输入讲课课时:"; cin>>schoolPeriod; cout<<"请输入试验&上机课时:"; cin>>experimentPeriod; cout<<"请输入学分:"; cin>>credithour; cout<<"请输入开课学期:"; cin>>courseterm; outcoursefile<<courseNumber<<" "<<courseName<<" "<<courseKind<<" "<<coursePeriod <<" "<<schoolPeriod<<" "<<experimentPeriod<<" "<<credithour<<" "<<endl; } outcoursefile.close(); //关闭输出流文件 } void Course::CourseInfoOutPut() //课程信息浏览 { ifstream incoursefile; //创建输入流文件对象 incoursefile.open(coursefile); //打开 if(!incoursefile) //判定文件存在 { cout << "文件读取失败"; return ; } cout << "课程编号 | 课程名称 | 课程性质 | 总课时 | 讲课课时 | 试验上机课时 | 学分|开课学期\n"; string arrcourse[100][100]; //定义一个string类型二维数组,用来保留从文本内读取信息 int line=0; memset(arrcourse,0,sizeof(arrcourse)); //将数组清空 while(!incoursefile.eof()) //文件不为空条件设置 { for(int j=0;j<7;j++) { incoursefile>>arrcourse[line][j]; } line++; } for(int i=0;i<line;i++) { for(int j=0;j<7;j++) { cout << arrcourse[i][j] <<"\t"; } cout << endl; } incoursefile.close(); } void Course::SearchByCredithour(float tempch) { ifstream incoursefile; //创建输入流文件对象 incoursefile.open(coursefile); //打开 if(!incoursefile) //判定文件存在 { cout << "文件读取失败"; return ; } string arrcourse[100][100]; //定义一个string类型二维数组,用来保留从文本内读取信息 int line=0; memset(arrcourse,0,sizeof(arrcourse)); //将数组清空 while(!incoursefile.eof()) //文件不为空条件设置 { incoursefile>>arrcourse[line][0]>>arrcourse[line][1]>>arrcourse[line][2]>>arrcourse[line][3] >>arrcourse[line][4]>>arrcourse[line][5]>>arrcourse[line][6]; //文件流读取数据 line++; } cout << "课程编号 | 课程名称 | 课程性质 | 总课时 | 讲课课时 | 试验上机课时 | 学分|开课学期\n"; for(int i=0;i<line;i++) { if(atof(arrcourse[i][6].c_str())==tempch) //比较 { cout << arrcourse[i][0] <<" \t "<< arrcourse[i][1]<<" \t " << arrcourse[i][2]<<" \t " << arrcourse[i][3]<<" \t " << arrcourse[i][4]<<" \t " <<arrcourse[i][5]<<" \t "<<arrcourse[i][6]<<"\n------------------------------------------------------------------------------"<< endl; } } cout << "\n\n"; incoursefile.close(); } void Course::SearchByCourseKind(string strtemp)///课程类型查询 { ifstream incoursefile; //创建输入流文件对象 incoursefile.open(coursefile); //打开 if(!incoursefile) //判定文件存在 { cout << "文件读取失败"; return ; } string arrcourse[100][100]; int line=0; memset(arrcourse,0,sizeof(arrcourse)); while(!incoursefile.eof()) { incoursefile>>arrcourse[line][0]>>arrcourse[line][1]>>arrcourse[line][2]>>arrcourse[line][3] >>arrcourse[line][4]>>arrcourse[line][5]>>arrcourse[line][6]; line++; } cout << "课程编号 | 课程名称 | 课程性质 | 总课时 | 讲课课时 | 试验上机课时 | 学分|开课学期\n"; for(int i=0;i<line;i++) { if(arrcourse[i][2]==strtemp) { cout << arrcourse[i][0] <<" \t "<< arrcourse[i][1]<<" \t " << arrcourse[i][2]<<"\t " << arrcourse[i][3]<<" \t " << arrcourse[i][4]<<" \t " <<arrcourse[i][5]<<" \t"<<arrcourse[i][6]<<"\n-----------------------------------------------------------------------------"<< endl; } } cout << "\n\n"; } void Course::Search() { while(1) { cout << "选择查询方法:" << endl; cout << "(1).按课程类型查询" << endl; cout << "(2).按学分查询" << endl; cout << "(0).返回"<< endl; int i; cin>>i; switch(i) { case 1: cout << "请输入课程类型:\n"; char strtmp[100]; cin >> strtmp; SearchByCourseKind(strtmp); break; case 2: cout << "请输入学分:\n"; float ftemp; cin >> ftemp; SearchByCredithour(ftemp); break; } if(i==0) { break; } } } int main() { Course Excourse; while(1) { cout << "***************************************************************************\n"; cout << "* 学生选课系统 *\n"; cout << "* 请选择操作 *\n"; cout << "* (1).录入课程信息 *\n"; cout << "* (2).浏览课程信息 *\n"; cout << "* (3).查询课程信息 *\n"; cout << "* (0).退出系统 *\n"; cout<< "***************************************************************************"; cout << endl; int i; cin>>i; switch(i) { case 1: Excourse.CourseInfoInput(); break; case 2: Excourse.CourseInfoOutPut(); break; case 3: Excourse.Search(); break; case 0: exit(0); } } return 1; } 课程设计评分表 课题名称: 项 目 评 价 设计方案合理性和发明性 设计和调试结果 设计说明书质量 答辩陈说和回复问题情况 课程设计周表现情况 综合成绩 老师署名: 日 期:- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 专业课程 设计 学生 选课 专业 系统
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文