C课程设计的目的与要求.docx
《C课程设计的目的与要求.docx》由会员分享,可在线阅读,更多相关《C课程设计的目的与要求.docx(24页珍藏版)》请在咨信网上搜索。
概述 1.1目的 本课程设计的目的是培养应用《面向对象程序设计》设计方法及思想解决实际问题的能力,掌握使用面向对象程序设计语言C++,熟悉面向对象开发平台Visual C++6.0,提高调查研究、查阅技术资料以及编写技术文献的能力。 1.2意义 C++是实践性很强的课程。课程设计是加强我们实践能力的一个强有力手段。课程设计规定我们在完毕程序设计的同时可以写出比较规范的设计报告。严格实行课程设计这一环节,对于我们基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用。 设计方案简述 2.1系统框架 主 菜 单 学生成绩输入 学生成绩记录 学生成绩排名 成绩的记录结果显示 学生成绩的查找 学生成绩的添加 学生成绩的删除 学生数据的读取 学生数据的存储 2.2功能分析 1、用C++语言实现系统; 2、对学生信息(涉及学院、学号、姓名、高等数学、c++、大学英语、马列、平均分、总分)进行管理,涉及学生成绩的信息输入、输出、查询、删除、排序、记录、退出。 3、规定设计的管理系统可以完毕以下功能: (1)、每一条记录涉及一个学生的学号、姓名、(至少)4门课成绩。 (2)、成绩信息录入功能:(成绩信息用文献保存,可以一次完毕若干条记录的输入。) (3)、成绩信息显示浏览功能:完毕所有学生记录的显示。 (4)、查询功能:完毕按姓名或学号查找学生记录,并显示。 (5)、成绩信息的删除:按姓名或学号进行删除某学生的成绩. (6)、排序功能:按学生学号或总成绩(从小到大)进行排序。 (7)、应提供一个界面来调用各个功能,调用界面和各个功能的 操作界面应尽也许清楚美观! 具体设计 3.1模块设计与分析 (1)输入学生资料: 重要功能用来对学生的成绩进行收集和输入。在学生信息保存在系统中的前提下,成绩录入需要输入学生资料,比如班级,学号,姓名。在准确输入学生资料后,就可以对该学生的各科成绩进行录入。该学生各科成绩输入成功后,系统会提醒是否继续进行操作,假如想继续输入学生成绩就输入y,不想再输入学生成绩的话就输入n,再输入n之后,系统返回到主菜单。 (2)输出学生资料 重要功能用来对学生的成绩进行输出。在系统已经录入了学生资料成绩的前提下,使用该功能可以显示所有学生的信息,资料等等。具体涉及学生的班级,学号,姓名和各科成绩。在查看学生的资料,成绩各方面的信息后,按任意键就可以返回到主菜单。 (3) 添加学生资料 重要功能是用来添加学生资料,成绩。假如系统有保存学生资料的情况下,想录入学生成绩的话,就不用添加学生资料这模块。假如系统没有保存该学生信息的话,就要使用此模块,在成功添加学生资料后,就可以对该学生进行其他的操作。 (4)按姓名查找,删除该学生资料 重要功能是用来删除学生资料。在系统保存学生资料的前提下,想删除某学生的资料,可以输入学生姓名,系统查找该学生资料后,就可以删除了。 (5)查找并显示学生资料 重要功能是用来查找学生资料。在系统保存了某学生资料的前提下,想要查找该学生资料,可以输入该学生姓名,这样系统就会显示该学生资料和各科成绩等信息。 (6)储存学生资料并退出系统 重要功能是用来储存学生资料对系统的最新操作进行保存,及时更新系统。 3.2程序代码 #include<iostream> #include<stdio.h> #include<ctype.h> #include<stdlib.h> #include<string.h> #include<iostream> #include<iomanip> using namespace std; typedef class { public: char num[10]; char cla[10]; char name[20]; char byyl[10]; char jsjzc[20]; char sjk[10]; char jsjyy[20]; char jsdl[20]; }Student; Student stu[80]; int menu() { char c; for(;c<‘0'||c>‘8';) { system("cls"); cout<<" 欢迎使用本学生成绩管理系统!!"<<endl; cout<<endl; cout<<"****************************** 学生成绩管理系统 ****************************** "<<endl; cout<<setw(32)<<" "<<"1.输入学生资料"<<endl; cout<<setw(32)<<" "<<"2.输出学生资料"<<endl; cout<<setw(32)<<" "<<"3.按学生成绩进行排列"<<endl; cout<<setw(32)<<" "<<"4.添加学生资料"<<endl; cout<<setw(32)<<" "<<"5.按姓名查找,删除该学生资料"<<endl; cout<<setw(32)<<" "<<"6.查找并显示学生资料"<<endl; cout<<setw(32)<<" "<<"7.按姓名查找,修改该学生资料"<<endl; cout<<setw(32)<<" "<<"8.从文献中读入数据"<<endl; cout<<setw(32)<<" "<<"0.储存学生资料并退出系统"<<endl; cout<<setfill('=')<<setw(48)<<"="<<endl; cout<<setw(15)<<" "; cout<<"请选择(0-8):"; c=getchar(); } return(c-'0'); } int Input(Student stud[],int n) //输入数据。 { int i=0; char sign,x[10]; for(;sign != 'n' && sign != 'N';) { cout<<setw(15)<<" "<<"班级:"; cin>>stud[n+i].cla; cout<<setw(15)<<" "<<"学号:"; cin>>stud[n+i].num; cout<<setw(15)<<" "<<"姓名:"; cin>>stud[n+i].name; cout<<setw(15)<<" "<<"数据结构:"; cin>>stud[n+i].byyl; cout<<setw(15)<<" "<<"离散数学:"; cin>>stud[n+i].jsjzc; cout<<setw(15)<<" "<<"大学物理:"; cin>>stud[n+i].sjk; cout<<setw(15)<<" "<<"大学英语:"; cin>>stud[n+i].jsjyy; cout<<setw(15)<<" "<<"模拟电路:"; cin>>stud[n+i].jsdl; gets(x); cout<<setw(10)<<" "; cout<<"尚有要输入的信息吗?(y/n)"; cin>>&sign; i++; } return(n+i); } void Display(Student stud[], int n) //输出数据。 { int i; cout<<setw(15)<<" "<<setfill('-')<<setw(65)<<"-"<<endl; cout<<setw(15)<<" "<<"班级 学号 姓名 数据结构 离散数学 大学物理 大学英语 模拟电路"<<endl; cout<<setw(15)<<" "; cout<<setfill('-')<<setw(65)<<"-"<<endl; for(i=1;i<n+1;i++) { printf("\t\t%-9s%-9s%-9s%-9s%-9s%-9s%-9s\n",stud[i-1].cla,stud[i-1].num,stud[i-1].name,stud[i-1].byyl,stud[i-1].jsjzc,stud[i-1].sjk,stud[i-1].jsjyy); if(i>1 && i%10==0) { cout<<setw(15)<<" "<<setfill('-')<<setw(35)<<"-"<<endl; cout<<setw(15)<<" "; system("pause"); cout<<setw(15)<<" "<<setfill('-')<<setw(35)<<"-"<<endl; } } cout<<setw(15)<<" "; system("pause"); } void Sort(Student stud[],int n) //按名字排序。 { int i,j; char t[20]; for(i=0;i<n-1;i++) for(j=0;j<n-1-i;j++) if(strcmp(stud[j].num,stud[j+1].num)>0) { strcpy(t,stud[j+1].cla); strcpy(stud[j+1].cla,stud[j].cla); strcpy(stud[j].cla,t); strcpy(t,stud[j+1].num); strcpy(stud[j+1].num,stud[j].num); strcpy(stud[j].num,t); strcpy(t,stud[j+1].name); strcpy(stud[j+1].name,stud[j].name); strcpy(stud[j].name,t); strcpy(t,stud[j+1].byyl); strcpy(stud[j+1].name,stud[j].byyl); strcpy(stud[j].byyl,t); strcpy(t,stud[j+1].jsjzc); strcpy(stud[j+1].name,stud[j].jsjzc); strcpy(stud[j].jsjzc,t); strcpy(t,stud[j+1].sjk); strcpy(stud[j+1].name,stud[j].sjk); strcpy(stud[j].sjk,t); strcpy(t,stud[j+1].jsjyy); strcpy(stud[j+1].name,stud[j].jsjyy); strcpy(stud[j].jsjyy,t); strcpy(t,stud[j+1].jsdl); strcpy(stud[j+1].name,stud[j].jsdl); strcpy(stud[j].jsdl,t); } cout<<setw(15)<<" "<<"排序成功!"<<endl; } int Insert(Student stud[],int n) //插入一条学生信息。 { char x[10]; cout<<setw(15)<<" "<<"班级:"; cin>>stud[n].cla; cout<<setw(15)<<" "<<"学号:"; cin>>stud[n].num; cout<<setw(15)<<" "<<"姓名:"; cin>>stud[n].name; cout<<setw(15)<<" "<<"数据结构:"; cin>>stud[n].byyl; cout<<setw(15)<<" "<<"离散数学:"; cin>>stud[n].jsjzc; cout<<setw(15)<<" "<<"大学物理:"; cin>>stud[n].sjk; cout<<setw(15)<<" "<<"大学英语:"; cin>>stud[n].jsjyy; cout<<setw(15)<<" "<<"模拟电路:"; cin>>stud[n].jsdl; gets(x); n++; cout<<setw(15)<<" "<<"插入成功!"<<endl; return(n); } int Delete(Student stud[],int n) //按名字查找信息,删除信息。 { char s[20]; int i=0,j; cin>>s; while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判断*/ if(i==n) { printf("\t\t\t没有发现该学生资料!\n"); /*返回失败信息*/ return(n); } for(j=i;j<n-1;j++) /*删除操作*/ { strcpy(stud[j].num,stud[j+1].num); strcpy(stud[j].name,stud[j+1].name); strcpy(stud[j].cla,stud[j+1].cla); strcpy(stud[j].byyl,stud[j+1].byyl); strcpy(stud[j].jsjzc,stud[j+1].jsjzc); strcpy(stud[j].sjk,stud[j+1].sjk); strcpy(stud[j].jsjyy,stud[j+1].jsjyy); strcpy(stud[j].jsdl,stud[j+1].jsdl); } cout<<setw(15)<<" "<<"当前信息已删除成功!"<<endl; /*返回成功信息*/ return(n-1); } void Query(Student stud[],int n) //按名字查找信息 { char s[20]; int i=0; cout<<setw(15)<<" "<<"输入他(她)的姓名:"; cin>>s; while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判断*/ if(i==n) { printf("\t\t\t没有发现该学生资料!\n"); /*输入失败信息*/ return; } cout<<setw(15)<<" "<<"学号:"<<stud[i].num<<endl; cout<<setw(15)<<" "<<"数据结构:"<<stud[i].byyl<<endl; cout<<setw(15)<<" "<<"离散数学:"<<stud[i].jsjzc<<endl; cout<<setw(15)<<" "<<"大学物理:"<<stud[i].sjk<<endl; cout<<setw(15)<<" "<<"大学英语:"<<stud[i].jsjyy<<endl; cout<<setw(15)<<" "<<"模拟电路:"<<stud[i].jsdl<<endl; } int Xiugai(Student stud[],int n) //修改信息。 { n=Delete(stud,n); cout<<setw(15)<<" "<<"输入你要修改的学生资料"<<endl; n=Insert(stud,n); cout<<setw(15)<<" "<<"修改完毕"<<endl; return(n); } int AddfromText(Student stud[], int n) //从文献中读入数据。 { int i=0,num; FILE *fp; char filename[20]; cout<<setw(15)<<" "<<"输入文献名:"; cin>>filename; if((fp=fopen(filename,"rb"))==NULL) { cout<<setw(15)<<" "<<"无法打开文献"<<endl; cout<<setw(15)<<" "; system("pause"); return(n); } fscanf(fp,"%d",&num); for(;i<num;) { fscanf(fp,"%s%s%s%s%s%s%s",stud[n+i].cla,stud[n+i].num,stud[n+i].name,stud[n+i].byyl,stud[n+i].jsjzc,stud[n+i].sjk,stud[n+i].jsjyy,stud[n+i].jsdl); i++; } n+=num; fclose(fp); cout<<setw(15)<<" "<<"读入成功!"<<endl; cout<<setw(15)<<" "; system("pause"); return(n); } void WritetoText(Student stud[],int n) //将所有记录写入文献。 { int i=0; FILE *fp; char filename[20]; cout<<setw(15)<<" "<<"将资料输入文献"<<endl; cout<<setw(15)<<" "<<"输入文献名:"; cin>>filename; if((fp=fopen(filename,"w"))==NULL) { cout<<setw(15)<<" "<<"无法打开文献"<<endl; system("pause"); return; } fprintf(fp,"%d\n",n); for(;i<n;) { fprintf(fp,"%-6s%-5s%-5s%-5s%-5s%-5s%-5s\n",stud[i].cla,stud[i].num,stud[i].name,stud[i].byyl,stud[i].jsjzc,stud[i].sjk,stud[i].jsjyy); i++; } fclose(fp); cout<<setw(15)<<" "<<"输入成功!"<<endl; int b; cout<<setw(15)<<" "<<"请拟定是否退出系统:"<<endl; cout<<setw(15)<<" "<<"0.退出系统"<<endl; cout<<setw(15)<<" "<<"1.返回"<<endl; cin>>b; if(b==0) { cout<<setw(15)<<" "<<"谢谢使用!"<<endl; cout<<setw(15)<<" "; system("pause"); exit(0); } } void main() //主函数调用。 { int n=0; for(;;) { switch(menu()) { case 1: cout<<setw(15)<<" "<<"输入学生资料"<<endl; n=Input(stu,n); break; case 2: cout<<setw(15)<<" "<<"输出所有学生资料"<<endl; Display(stu,n); break; case 3: cout<<setw(15)<<" "<<"按姓名排序"<<endl; Sort(stu,n); cout<<setw(15)<<" "; system("pause"); break; case 4: cout<<setw(15)<<" "<<"插入学生资料"<<endl; n=Insert(stu,n); cout<<setw(15)<<" "; system("pause"); break; case 5: cout<<setw(15)<<" "<<"删除学生资料"<<endl; cout<<setw(15)<<" "<<"输入他(她)的姓名:"; n=Delete(stu,n); cout<<setw(15)<<" "; system("pause"); break; case 6: cout<<setw(15)<<" "<<"查找学生"<<endl; Query(stu,n); cout<<setw(15)<<" "; system("pause"); break; case 7: cout<<setw(15)<<" "<<"修改学生资料"<<endl; cout<<setw(15)<<" "<<"输入你要修改的学生的姓名:"; n=Xiugai(stu,n); system("pause"); break; case 8: cout<<setw(15)<<" "<<"从文献中读入数据"<<endl; n=AddfromText(stu,n); break; case 0: cout<<setw(15)<<" "<<"将所有资料写入文献"<<endl; WritetoText(stu,n); cout<<setw(15)<<" "; system("pause"); break; } } } 调试分析 1.实际完毕的情况说明。 通过程序简朴的实现了学生成绩的浏览、增长、删除和修改等操作,可一通过修改其中量的类型来支持多种数据类型的输入、输出。 2.程序的性能分析。 程序只能实现一些简朴的浏览、增长、删除和修改操作而不能进一步的对每 个班级或学校全体学生成绩进行分类等的操作。 3.上机过程中出现的问题及其解决方案。 上机过程中碰到很多问题比如需要用到数据库时每次执行都要连接数据源, 但是一旦工作空间移动则下次再运营时就找不到数据源,无法执行。 解决方法:可以把数据库设立成动态的,每次执行程序时通过控制面板“ODBC数据源管理器”把程序与数据源连接起来。 4.程序中可以扩充的功能及设计实现构想。 总结 通过将近几周的课程设计,简朴的学生成绩管理系统基本完毕,系统基本功能基本实现,测试运营也基本正常。该系统基本上可以进行学生成绩信息录入、修改、查询、浏览、删除、记录等操作。 在整个课程设计阶段,由于自己动手局限性和对开发工具的陌生,最重要的是,对知识还不是纯熟地掌握,系统碰到了很多大大小小的问题,如如何运用Visual C++ 6.0与数据库的连接技术提高系统性能等,所以我的学生成绩管理系统是一个很简朴的教师用户系统。在一次次克服困难的过程中,我得到了极大的锻炼,获得了许多宝贵的软件开发经验和技巧。同时,我也懂得了一个很重要的道理,那就是说一个程序的产生需要一个对题目规定有一个对的全面的分析。另一方面,就该考虑程序算法的问题了,一个好的算法是一个好程序的灵魂,也决定了一个程序的质量。通过课程设计,我加深了对C++这门课的结识,使自己对软件的使用能力得到提高。 我相信这将为我此后的学习工作打下坚实的基础,这对我来说也是一次丰富的收获。 参考文献 1.龚志翔. Visual C++编程实例与技巧集粹[M].北京:北京盼望电子出版社,2023 2.孔鹏. Visual c++ 6.0完全自学手册[M].北京:机械工业出版社,2023 3.邓华. Visual C++案例教程[M].北京中科多媒体电子出版社,2023 4. 谭浩强.C++程序设计(第二版).北京:清华大学出版社,2023 5. 杨永国.Visual C++ 6.0实用教程.北京:清华大学出版社, 2023 7. 黄勇忠.面向对象方法与设计. 北京:国防工业出版社, 2023.- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 目的 要求
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文