




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C+大学选课系统课程设计-课程设计C+大学选课系统课程设计 目录第一章 课程设计目的2第二章 课程内容设计和要求3第三章 源代码14第四章 运行结果38第五章 结束语52第六章 参考文献53 第一章 课程设计目的1. 目标 选课系统开发的目标是实现学生选课信息关系的系统化、规范化和自动化。 2. 系统技术 学生选课系统要求具有信息处理的开发性,方便教师上传学生成绩、学生上网选课和查询选课信息及成绩等,因此本系统设计为基于WWW的网络数据库应用系统,使用ASP脚本以Access为数据库的开发技术,运行在支持ASP的服务器上。 3. 基本设计概念和处理流程 采用基于SQL Server的分布式数据库管理系统。三层结构是目前用得最多的,这种结构比传统的C/S结构增加了一个应用程序服务器,应用程序服务器包括了统一的界面、业务规则和数据处理逻辑等等,这样客户端程序就可以做得比较小,也就是常说的瘦客户。更由于业务规则和数据处理逻辑的集中在服务器上统一管理,客户端无须进行复杂的计算,也不会因为错误的操作而影响到其他的用户,所以可靠性、稳定性和效率都比较好。(其结构如图) 4. 用户的特点 为保证系统安全高效地运行,本系统把用户划分为3类:教务处、教师和学生。不同的用户在系统中的作用和权限也有所不同,所以它所需要完成的功能也就不同。 (1)教务处可以完成本系统所有的功能 学生信息管理:除学生基本信息外,还可管理学生所选课程、成绩等。 教师信息管理:包括教师个人的基本情况和任课情况。 项目及班数的设定:根据学校教务处所排课进行班级数及人数的统计,然后根据统计结果进行项目及班数的设定。 排课:根据上一步分班情况安排任课教师。 报表生成及输出:生成教师担任课程分班表、按项目生成学生成绩表、按学生行政班生成成绩表及所有报表的输出。 (2)教师在本系统的功能 查询学生选课情况、自己任课情况、获取自己所担任课程分班表、录入及修改成绩等。 (3)学生在本系统的功能 查询本人信息、教师任课信息、选课、选课信息查询、成绩查询。 第二章 课程内容设计和要求二、需求规定 (一)对功能的规定 1. 可实现学生选课注册。 2. 方便实现学生选课信息查询。 3. 可对学生成绩档案进行管理,成绩表单生成简便。 4. 安全有效的用户区分,管理。 5. 档案数据的高安全性,保密性。 6. 有帮助文档 (二)对性能的规定 使用稳定,操作性能好,操作方法易于掌握,系统的安全性强。 三、设计思想 用户的需求具体表现在对各种信息的提供、编辑、处理及查询统计上。这就要求数据库结构能充分满足各种信息的输入、处理和输出。通过分析学生选课管理系统的现实需求,学生选课管理系统各环节的基本数据及数据处理流程,在与管理人员沟通、交流与探讨的基础上,得到以下学生选课系统的数据流程图。3运行环境该程序的运行环境为Windows XP系统,Microsoft Visual C+6.0版本。840C+大学选课系统源代码课程设计#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;student()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 *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)course *p = root;if(root=NULL)C+大学选课系统课程设计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;C+大学选课系统课程设计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()exit(-1);/总菜单char menu()int k=0;char a3,c,i;system(cls);coutendlendl;coutttttC+课程设计课题nnendl;couttt*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);/struct subjectdbsubject sub;subjectdb *Next;int stuInform(studentdb *P);int save(studentdb *Y,subjectdb *P);int couInform(subjectdb *P);/学生端功能函数int selectCou(studentdb *P,subjectdb *X) /学生选课C+大学选课系统课程设计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此课程已选满,不能选.按任意键继续stu.addcourse(N2,0.0);coutnntt选课成功!按任意键继续Next;cerrntt没有此课程!按任意键继续Next;return 1;int stuInform(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;C+大学选课系统课程设计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) /退出系统save(X,P);tuichu();return 0;/管理端功能函数int addStudent(studentdb *P) /增加学生char N20;system(cls);coutnntttt增加学生操作nendl;coutN;coutendltt增加学生操作成功,按任意键继续Next = P-Next ;newnode-stu.readname(N);P-Next = newnode ;return 1;int addCourse(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 deleteStudent(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;C+大学选课系统课程设计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 deleteCourse(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;coutM;while(q)q-sub.getkname(N);if(strcmp(N,M)=0)R-Next = q-Next;free(q);coutntt删除课程操作成功,按任意键继续Next;R = R-Next;cerrntt没有此课程!t请按任意键继续.Next;char M20,N20,NA20;float score;system(cls);coutnntttt 填写成绩操作nendl;if(q!=NULL)coutnttt课程名称tt选课人数nendl;elsecoutnnntt对不起,暂时没有任何选修课程。请按任意键继续.sub.getkname(N);couttttNsetw(28-strlen(N)sub.retactivestudent()Next ;q = P-Next;coutM;while(q)q-sub.getkname(N);studentname *K = q-sub.retfirst();if(K!=NULL)K = K-Next;if(strcmp(N,M)=0)system(cls);if(K!=NULL)coutnntt请填写选修M的学生成绩nendl;coutnttt姓名tt成绩endl;if(K=NULL)cerrnttt无任何信息!请按任意键继续.endl;while(K)coutnttttnamescore;studentdb *XX = X-Next;while(XX)XX-stu.getname(NA);if(strcmp(NA,K-tname)=0)XX-stu.wrecourse(M,score);XX = XX-Next;K = K-Next;if(K=NULL)coutntt填写成绩完毕!请按任意键继续.Next;cerrntt没有此课程!请按任意键继续.endl;return 1;int changeSC(subjectdb *P) /更改学分float k;system(cls);coutnnntttt更改学分操作nNext;char N20,M20;if(q!=NULL)coutnnntt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025签订的无效合同应如何处理
- 河南省豫北六校联考2025届高三下册5月份联合模拟考试数学试卷附解析
- 福建省龙岩市2024~2025学年 高二下册第一次月考数学试卷附解析
- 2025届广东省东莞市东城实验学校2中考二模数学试卷含答案
- 2024年南丰县县城学校教师选调真题
- 2024年江西日报社招聘工作人员考试真题
- 2025年儿科护理副高考试试题
- 中国农业生产力发展水平测度与评价
- 通信设备企业经营管理方案
- 第一节 人体对外界环境的感知 教学设计
- 礼遇未来-形象与礼仪智慧树知到答案章节测试2023年青岛黄海学院
- 2023年郴州市发改系统政策业务知识抢答赛题库
- 上海市应届小学毕业班学生登记表2优质资料
- 公司竞业协议书
- GB/T 42061-2022医疗器械质量管理体系用于法规的要求
- 网上支付跨行清算系统报文交换标准
- 燃气安全继续教育考试题及答案
- 无人机驾驶员高级工职业资格考试题库(高频题汇总)
- 供应商大会品质报告课件
- 职工《劳动法》与《劳动合同法》知识培训课件
- 人民日报-计算机(电脑)常用快捷键400个(超级实用)
评论
0/150
提交评论