




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计报告课程设计题目: 学生选课系统设计 学 号:201121080629姓 名:王洁专 业:软件工程班 级:1121821指导教师:许志文 2012年 6 月28 日课程设计评分表学生姓名: 王洁 班级: 1121821 学号:201120180629课程设计题目:学生选课系统设计项目内容满分实 评选题能结合所学课程知识、有一定的能力训练。符合选题要求(5人一题)10工作量适中,难易度合理10能力水平能熟练应用所学知识,有一定查阅文献及运用文献资料能力10理论依据充分,数据准确,公式推导正确10能应用计算机软件进行编程、资料搜集录入、加工、排版、制图等10能体现创造性思维,或有独特见解10成果质量总体设计正确、合理,各项技术指标符合要求。10说明书综述简练完整,概念清楚、立论正确、技术用语准确、结论严谨合理;分析处理科学、条理分明、语言流畅、结构严谨、版面清晰10设计说明书栏目齐全、合理,符号统一、编号齐全。格式、绘图、表格、插图等规范准确,符合国家标准10有一定篇幅,字符数不少于500010总 分100指导教师评语: 指导教师签名: 年 月 日一面向对象程序设计课程设计的目的本课程设计是在学习面向对象基本理论之后的实践教学环节。该实践教学是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧。要求学生在设计中逐步提高程序设计能力,培养科学的软件工作方法。学生通过课程设计在下述各方面得到锻炼:1能根据实际问题的具体情况,结合面向对象的基本理论和基本技巧,正确分析问题,并能设计出解决问题的有效算法与程序。2提高程序设计和调试能力。学生通过上机实习,验证自己设计的算法和程序的正确性。学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改,进一步提高程序设计水平。题目10 学生选课系统设计假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于10)自由选课。试设计一选修课程系统,使之能提供以下功能: 系统以菜单方式工作v 课程信息录入功能(课程信息用文件保存)输入v 课程信息浏览功能输出v 查询功能:(至少一种查询方式)算法v 按学分查询l 按课程性质查询l 学生选修课程(可选项)v#include #include #include #include #include #include #include /定义课程struct course /某个学生所学的课程中的某一个char cname20; /课程名称float grade; /课程成绩course *Next; /指向下一个课程的指针;/学生类class studentpublic:student()root = NULL;const maxcourse = 5;factcourse = 0;void readname(char N ); /读入学生的姓名void getname(char N); /得到学生的姓名void wrecourse(char N,float score); /要据课程名写入学生课程的成绩float average(); /学生课程的平均成绩void addcourse(char N,float g); /给学生增加一门课int findcourse(char N); /查找是否已有此课程,如果有返回1,如果没有返回0int retfactcourse()return factcourse; /得到所学的课程数目course *retroot()return root; /利用键表将所有的课程保存起来int retmaxcourse()return 5; /得到最多可学的课程数目void clrroot() /清零root = NULL;factcourse = 0;private:char sname20; /学生的姓名int maxcourse; /学生最多可以学五门课程int factcourse; /学生实际所学的课程数目course *root; /课程的根结点指针;void student:readname (char N)/读入学生的姓名strcpy(sname,N);void student:getname(char N)/得到学生的姓名strcpy(N,sname);void student:wrecourse(char N,float score)/要据课程名写入学生课程的成绩course *p = root;if(p=NULL)return;if(p!=NULL)p = p-Next;while(p)if(strcmp(p-cname,N)=0)p-grade = score;p = p-Next;float student:average()/学生课程的平均成绩float aver=0.0;course *p = root;while (p)aver = aver+p-grade;aver = aver/factcourse;return aver;void student:addcourse (char N,float g)/给学生增加一门课course *s = new course;s-Next=NULL;if(root = NULL)root = s;course *p = root;course *newcourse = new course;newcourse-Next = p-Next;p-Next=newcourse;strcpy(newcourse-cname,N);newcourse-grade = g;factcourse+;int student:findcourse (char N)/查找是否已有此课程,如果有返回1,如果没有返回0course *p = root;if(root=NULL)return 0;p = p-Next;while(p)if(strcmp(p-cname,N)=0)return 1;p = p-Next;return 0;/struct studentdbstudent stu;studentdb *Next;struct studentnamechar tname20; /学生的名字float result; /学生所得的该课程分数studentname *Next;/课程类class subjectpublic:subject()first = NULL;maxstudent=30;activestudnet=0;float readcredit(); /得到课程的学分void getcredit(float a); /设置学分float getaverage(); /得到学生的平均成绩float getresult(char N); /查找某个学生的成绩void getkname(char N); /读出课程的名称void setkname(char N); /读入课程的名称studentname *retfirst()return first; /返回根结点void findstudent(studentdb *P); /根据该课程的名称,寻找选这课程的学生int retactivestudent()return activestudnet; /返回实际学生数int retmaxstudent()return 30; /返回最多学生数30void clractivestudnet()activestudnet = 0; /从文件中读出来后将实际学生数清零private:int maxstudent; /最多学生数int activestudnet; /实际学生数studentname *first; /学生名单float credit; /该课程的学分float averagerusult; /该课程的平均成绩char kname20; /该课程的名称;float subject:readcredit ()/得到课程的学分return credit;void subject:getcredit (float a)/设置学分credit=a;float subject:getaverage()/得到学生的平均成绩float k = 0.0;studentname *p;p=first-Next;if(p=NULL)return 0;while(p)k = k + p-result;p = p-Next ;return k/activestudnet;float subject:getresult (char N) /查找某个学生的成绩studentname *p;p = first;while(p)if(strcpy(p-tname ,N)=0)return p-result;p = p-Next ;return -1;void subject:getkname (char N) /读出课程的名称strcpy(N,kname);void subject:setkname (char N) /读入课程的名称strcpy(kname,N);void subject:findstudent(studentdb *P) /根据该课程的名称,寻找选这课程的学生studentname *newcode = new studentname;newcode-Next=NULL;first = newcode;studentname *T = first;studentdb *K = P-Next;while(K)course *Y = K-stu.retroot();if(Y =NULL)K = K-Next;continue;if(Y!=NULL)Y = Y-Next;while(Y)if(strcmp(Y-cname,kname)=0)studentname *Acode = new studentname;char Name20;K-stu.getname(Name);strcpy(Acode-tname,Name);Acode-result = Y-grade;Acode-Next = T-Next;T-Next = Acode;activestudnet = activestudnet + 1;break;Y = Y-Next;K = K-Next;return ;/void tuichu()system(cls);coutnnttt谢谢你使用选修课小系统t再见nnendl;coutnt 如果你觉得此软件有修改及补充之处,请按以下方式联系我们,nt提出你的宝贵意见.我们将不断地改进并及时的公布新版本。谢谢!nnendl;couttt联系方式:ntt 姓名:王洁nntt 电话ntt Email:421773876nntt 学校地址:东华理工大学t邮政编码:330013nnnendl;getch();exit(-1);/总菜单char menu()int k=0;char a3,c,i;system(cls);coutendlendl;coutttttC+课程设计课题nnendl;couttt*ntt* *ntt* 选修课小系统 *ntt* *ntt* *ntt* 操作方式: *ntt* 1.选修课系统学生端 *ntt* *ntt* 2.选修课系统管理端 *ntt* *ntt*nendl;while(1)couta;if(strlen(a)=1)for(i=1;i=2;i+)c=i;if(c=a0)return c;cerrnntttt输入有误!n2)system(cls);cerrnnntt提示:错误输入次数超过三次,你将被强制退出!nnendl;couttt按任意键继续endl;getch();tuichu();/选修课系统端操作char custom()char A10;char b;char i;int k = 0;system(cls);coutnnnttntt选修课系统学生端 ntt ntt 操作方式:. ntt1.学生选课. ntt2.学生情况. ntt3.选课情况. ntt4.退出系统. ntt nttnendl;while(1)coutA;if(strlen(A)=1)for(i=1;i=4;i+)b=i;if(b=A0) return b;cerrntttt输入有误!n2)system(cls);cerrnnttt提示:错误输入超过三次!你将被强制退出!nendl;couttt按任意键继续endl;getch();tuichu();char server()char A10;char b;char i;int k = 0;system(cls);coutnnnttntt ntt 选修课系统管理端 ntt ntt .操作方式: ntt 1.增加学生 2.增加课程 ntt 3.删除学生 4.删除课程 ntt 5.填写成绩 6.更改学分 ntt 7.学生情况 8.选课情况 ntt 9.保存数据 0.退出系统 ntt nttnendl;while(1)coutA;if(strlen(A)=1)for(i=0;i=9;i+)b=i;if(b=A0)return b;cerrntttt输入有误!n2)cerr错误输入超过三次!n;exit(-1);/密码检查void password()int k=0,i;char A=123456;char B10;char a;system(cls);for(i=0;i8;i+)coutendl; while(k=2)printf(ttt请输入管理员密码:);i=0;while(1)a=getch();if(a=13)break;Bi=a;i+;printf(*);Bi=0;if(strcmp(A,B)=0)return;elsek+;cerrnnttt密码输入错误!请重新输入!n=3)system(cls);cerrnnttt输入错误密码超过三次!请按任意键退出.endl;getch();tuichu();/struct subjectdbsubject sub;subjectdb *Next;int menu_2_7(studentdb *P);int menu_2_9(studentdb *Y,subjectdb *P);int menu_2_8(subjectdb *P);/学生端功能函数int menu_1_1(studentdb *P,subjectdb *X) /学生选课system(cls);coutnntttt学生选课操作Next;int i;char N20,M20;if(q!=NULL)coutnnntt所有学生名单如下:nendl;elsecerrnnntt对不起,暂时没有学生名单!请按任意键继续.stu.getname(N);coutttttN;coutNext ;q = P-Next;if(q=NULL)return 1;coutN;i=0;q=P-Next;while(q)q-stu.getname(M);if(strcmp(N,M)=0)i+;q = q-Next;int j=0,k=1;if(i=0)coutnntt没有这个学生! 请按任意键返回.1)coutnntt共找到i个姓名为N的学生endl;coutk;if(ki|k=0)cerrnttt输入有误!按任意键继续Next;j=0;while(q)q-stu.getname(M);if(strcmp(N,M)=0)j+;if(j=k)if(q-stu.retfactcourse()=q-stu.retmaxcourse()coutntt所选课程已满!按任意键继续Next;char N120;system(cls);if(t!=NULL)coutnnntt所有课程如下:endl;coutntttt课程名称tt 学分endl;elsecerrnnntt对不起,暂时没有课程sub.getkname(N1);couttttt N1setw(26-strlen(N1)sub.readcredit()Next ;char N220;coutN2;t = X-Next;while(t)t-sub.getkname(N1);if(strcmp(N1,N2)=0)if(q-stu.findcourse(N2)=1)coutntt此课程你已选过了,不能再选.按任意键继续Next;char NA20;while(t)t-sub.getkname(NA);if(strcmp(NA,N2)=0)if(t-sub.retactivestudent()=t-sub.retmaxstudent () coutntt此课程已选满,不能选.按任意键继续Next;q-stu.addcourse(N2,0.0);coutnntt选课成功!按任意键继续Next;cerrntt没有此课程!按任意键继续Next;return 1;int menu_1_2(studentdb *P,subjectdb *X) /学生情况studentdb *q=P-Next;char N20;system(cls);coutnntttt学生情况操作endl;int i;if(q!=NULL)coutnnntt所有学生选课信息如下:nendlendl;couttt 姓名ttt选课情况nendl;elsecerrnnntt对不起,暂时没有学生名单!请按任意键继续.stu.getname(N);couttt Nsetw(25-strlen(N) 已选 stu.retfactcourse() 门课 Next ;char M20;coutM;i=0;q=P-Next;while(q)q-stu.getname(N);if(strcmp(N,M)=0)i+;q = q-Next;int j=0,k=1;if(i=0)coutnttt没找到这个学生!请按任意键继续.1)coutntt共找到i个姓名为M的学生endl;coutk;if(ki|k=0)cerrnttt输入有误!按任意键继续.Next;j=0;q=P-Next;while(q)q-stu.getname(N);if(strcmp(N,M)=0)j+;if(j=k)system(cls);course *T=q-stu.retroot();if(T=NULL)coutnnntttN同学你还未选课! 请按任意键继续.Next;coutnnnttN同学你已选stu.retfactcourse()门课,具体如下nnendl;coutttt课程名称tt成绩nendl;while(T)coutttt cnamecname)gradeNext;j=0;q = q-Next;coutntt请按任意键继续.Next;char N20;system(cls);coutnntttt选课情况操作endl;if(q!=NULL)coutnnntt所有选课情况如下:nendl;coutnttt课程名称tt选课人数nendl;elsecerrnnntt对不起,暂时没有课程!请按任意键继续.sub.getkname(N);couttttNsetw(28-strlen(N)sub.retactivestudent()Next ;coutntt请按任意键继续.endl;return 1;int menu_1_4(studentdb *X,subjectdb *P) /退出系统menu_2_9(X,P);tuichu();return 0;/管理端功能函数int menu_2_1(studentdb *P) /增加学生char N20;system(cls);coutnntttt增加学生操作nendl;coutN;coutendltt增加学生操作成功,按任意键继续Next = P-Next ;newnode-stu.readname(N);P-Next = newnode ;return 1;int menu_2_2(subjectdb *P) /增加课程float k;char N20,M20;system(cls);coutnntttt增加课程操作nendl;coutN;coutNext;while(q)q-sub.getkname(M);if(strcmp(N,M)=0)coutntt此课程已经存在,按任意键继续Next;coutk;coutntt增加课程操作成功,按任意键继续Next = P-Next ;newnode-sub.setkname(N);newnode-sub.getcredit(k);P-Next = newnode ;return 1;int menu_2_3(studentdb *P) /删除学生system(cls);coutnntttt删除学生操作Next;if(q=NULL)return 1;int i;char N20,M20;coutN;i=0;while(q)q-stu.getname(M);if(strcmp(N,M)=0)i+;q = q-Next;int j=0,k=1;if(i=0)cerrntt没有这个学生!请按任意键继续.1)coutntt共找到i个姓名为N的学生endl;coutk;if(ki|kNext;studentdb *R = P;j=0;while(q)q-stu.getname(M);if(strcmp(N,M)=0)j+;if(j=k)R-Next = q-Next;free(q);coutntt删除学生操作成功,按任意键继续.Next;R = R-Next;return 1; int menu_2_4(subjectdb *P) /删除课程subjectdb *q=P-Next;char N20;system(cls);coutnntttt删除课程操作endl;if(q!=NULL)coutnnntt所有课程如下:nendl;elsecerrnnntt对不起,暂时没有课程!请按任意键继续.sub.getkname(N);coutttttNNext ;q = P-Next;subjectdb *R = P;if(q=NULL)return 1;char M20
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 玻璃厂专利使用监督管理规定
- 2025年南阳市中心医院招聘高层次人才(博士研究生)50人备考考试试题及答案解析
- 2025通辽工会社会工作者招聘10人考试模拟试题及答案解析
- 2025江苏南京水务集团有限公司招聘22人考试模拟试题及答案解析
- 2025内蒙古乌兰察布察右后旗丰华学校招聘1人考试参考试题及答案解析
- 2025内蒙古兖矿能源集团股份有限公司校园招聘350人考试模拟试题及答案解析
- 2025年武汉市青山区公开招聘编外聘用制教师281人考试参考试题及答案解析
- 2025上海天蟾逸夫舞台工作人员公开招聘备考考试试题及答案解析
- 2025上海科技管理学校下半年招聘工作人员1人(行政岗位)备考考试试题及答案解析
- Unit 7 Ways to be healthy Lesson 5 A lifestyle survey(说课稿) 2024-2025学年冀教版(2024)七年级英语下册
- 2025版国际双语幼儿园托班入托服务合同
- 员工下班外出免责协议书
- 2025-2030中国海水利用行业经营形势分析与投资方向建议报告
- 体验单元 《分类与打包》课件 2025-2026学年大象版科学二年级上册
- 公司成立后追认合同范本
- QC/T 262-2025汽车渗碳齿轮金相检验
- 2025年交通安全问答试题及答案
- 电子厂安全考试题库及答案大全
- 导管相关性血流感染预防策略
- 2025年七年级语文上册常考必背重点知识梳理总结
- 《管理学基础与实务》 课件 曾宪达 第1-5章 管理与管理者- 目标与计划
评论
0/150
提交评论