c++大学选课系统课程设计课程设计_第1页
c++大学选课系统课程设计课程设计_第2页
c++大学选课系统课程设计课程设计_第3页
c++大学选课系统课程设计课程设计_第4页
c++大学选课系统课程设计课程设计_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C+大学选课系统课程设计-课程设计C+大学选课系统课程设计  目录第一章 课程设计目的 2第二章 课程内容设计和要求 3第三章 源代码 14第四章 运行结果 38第五章 结束语 52第六章 参考文献 53     第一章  课程设计目的1. 目标 选课系统开发的目标是实现学生选课信息关系的系统化、规范化和自动化。 2. 系统技术 学生选课系统要求具有信息处理的开发性,方便教师上传学生成绩、学生上网选课和查询选课信息及成绩等,因此本系统设计为基于WWW的网络数据库应用系统,使用

2、ASP脚本以Access为数据库的开发技术,运行在支持ASP的服务器上。 3. 基本设计概念和处理流程 采用基于SQL Server的分布式数据库管理系统。三层结构是目前用得最多的,这种结构比传统的C/S结构增加了一个应用程序服务器,应用程序服务器包括了统一的界面、业务规则和数据处理逻辑等等,这样客户端程序就可以做得比较小,也就是常说的瘦客户。更由于业务规则和数据处理逻辑的集中在服务器上统一管理,客户端无须进行复杂的计算,也不会因为错误的操作而影响到其他的用户,所以可靠性、稳定性和效率都比较好。(其结构如图) 4. 用户的特点 为保证系统安全高效地运行,本系统把用户划分为3类:教务处、教师和学

3、生。不同的用户在系统中的作用和权限也有所不同,所以它所需要完成的功能也就不同。 (1)教务处可以完成本系统所有的功能 学生信息管理:除学生基本信息外,还可管理学生所选课程、成绩等。 教师信息管理:包括教师个人的基本情况和任课情况。 项目及班数的设定:根据学校教务处所排课进行班级数及人数的统计,然后根据统计结果进行项目及班数的设定。 排课:根据上一步分班情况安排任课教师。 报表生成及输出:生成教师担任课程分班表、按项目生成学生成绩表、按学生行政班生成成绩表及所有报表的输出。 (2)教师在本系统的功能 查询学生选课情况、自己任课情况、获取自己所担任课程分班表、录入及修改成绩等。 (3)学生在本系统

4、的功能 查询本人信息、教师任课信息、选课、选课信息查询、成绩查询。    第二章  课程内容设计和要求二、需求规定 (一)对功能的规定 1. 可实现学生选课注册。 2. 方便实现学生选课信息查询。 3. 可对学生成绩档案进行管理,成绩表单生成简便。 4. 安全有效的用户区分,管理。 5. 档案数据的高安全性,保密性。 6. 有帮助文档 (二)对性能的规定 使用稳定,操作性能好,操作方法易于掌握,系统的安全性强。 三、设计思想 用户的需求具体表现在对各种信息的提供、编辑、处理及查询统计上。这就要求数据库结构能充分满足各种信息的输入、处理和输出。通过分析学生

5、选课管理系统的现实需求,学生选课管理系统各环节的基本数据及数据处理流程,在与管理人员沟通、交流与探讨的基础上,得到以下学生选课系统的数据流程图。3运行环境该程序的运行环境为Windows XP系统,版本。840C+大学选课系统源代码课程设计#include <string.h>#include <stdio.h>#include <iostream.h>#include <stdlib.h>#include <iomanip.h>#include <fstream.h>#include <conio.h>/定义

6、课程struct course        /某个学生所学的课程中的某一个 char cname20;  /课程名称 float grade;    /课程成绩 course *Next;   /指向下一个课程的指针;/学生类class studentpublic: student()   root = NULL;  const maxcourse = 5; 

7、60;factcourse = 0;  void readname(char N );    /读入学生的姓名 void getname(char N);     /得到学生的姓名 void wrecourse(char N,float score); /要据课程名写入学生课程的成绩 float average();       /学生课程的平均成绩 void addcourse(char N,float

8、g);  /给学生增加一门课 int findcourse(char N);    /查找是否已有此课程,如果有返回1,如果没有返回0 int retfactcourse()   return factcourse;          /得到所学的课程数目 course *retroot()   return root;     

9、; /利用键表将所有的课程保存起来  int retmaxcourse()   return 5;      /得到最多可学的课程数目  void clrroot()      /清零   root = NULL;  factcourse = 0;  student() private: char sname20;  

10、      /学生的姓名 int maxcourse;      /学生最多可以学五门课程 int factcourse;      /学生实际所学的课程数目 course *root;      /课程的根结点指针;void student:readname (char N) strcpy(sname,N);void student:getname(cha

11、r 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

12、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); newcour

13、se->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 studentdb 

14、;student stu; studentdb *Next;struct studentname char tname20;       /学生的名字 float  result;     /学生所得的该课程分数 studentname *Next;/课程类class subjectpublic: subject()   first = NULL;  maxstudent=30;

15、0; activestudnet=0;  float readcredit();    /得到课程的学分 void  getcredit(float a);  /设置学分 float getaverage();    /得到学生的平均成绩 float getresult(char N);  /查找某个学生的成绩 void  getkname(char N);  /读出课程的名称 void  set

16、kname(char N);  /读入课程的名称 studentname *retfirst()   return first;    /返回根结点  void findstudent(studentdb *P);  /根据该课程的名称,寻找选这课程的学生 int retactivestudent()   return activestudnet;  /返回实际学生数  int retmaxstudent()

17、0;  return 30;     /返回最多学生数30  void clractivestudnet()   activestudnet = 0;   /从文件中读出来后将实际学生数清零 private: int maxstudent;    /最多学生数 int activestudnet;   /实际学生数 studentname *first;  

18、 /学生名单 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;

19、 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)&

20、#160; 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;

21、0;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->

22、;Next;  while(Y)     if(strcmp(Y->cname,kname)=0)       studentname *Acode = new studentname;    char Name20;    K->stu.getname(Name);    strcpy(Acode->tname,Nam

23、e);    Acode->result = Y->grade;    Acode->Next = T->Next;    T->Next = Acode;    activestudnet = activestudnet + 1;    break;      Y = Y->Next; &#

24、160;  K = K->Next;  return ;/void tuichu() exit(-1);/总菜单char menu() int k=0; char a3,c,i; system("cls"); cout<<endl<<endl; cout<<"ttttC+课程设计课题nn"<<endl; cout<<"tt*n" <<&qu

25、ot;tt*                                          *n" <<"tt*  

26、0;            1.选课系统学生端           *n" <<"tt*                     

27、0;                    *n" <<"tt*               2.选课系统管理端         

28、0; *n" <<"tt*                                          *n" <&

29、lt;"tt*n"<<endl; while(1)   cout<<"ntt请选择登入方式: "  cin>>a;  if(strlen(a)=1)     for(i='1'i<='2'i+)       c=i;    if(c=a0)

30、60;    return c;       cerr<<"nntttt输入有误!n"<<endl;  k+;  if(k>2)     system("cls");   cerr<<"nnntt提示:错误输入次数超过三次,你将被强制退出!nn"<<end

31、l;   cout<<"tt按任意键继续"<<endl;   getch();   tuichu();   /选修课系统端操作char custom() char A10; char b; char i; int k = 0; system("cls"); cout<<"nnn" <<"tt

32、n" <<"tt选修课系统学生端n" <<"tt               n" <<"tt 操作方式: n" <<"tt1.学生选课 n" <<"tt2.学生情况n" <<"tt3.选课情况n"

33、 <<"tt4.退出系统n" <<"tt              n" <<"ttn"<<endl;  while(1)   cout<<"ttt请选择操作方式: "  cin>>A;  if(s

34、trlen(A)=1)     for(i='1'i<='4'i+)       b=i;     if(b=A0) return b;       cerr<<"ntttt输入有误!n"<<endl;  k+;  if(k>2)&

35、#160;    system("cls");   cerr<<"nnttt提示:错误输入超过三次!你将被强制退出!n"<<endl;   cout<<"tt按任意键继续"<<endl;   getch();   tuichu();   char server() char A10;

36、0;char b; char i; int k = 0; system("cls"); cout<<"nnn" <<"ttn" <<"tt                        

37、0;                         n" <<"tt                  选修课系统管理端  &

38、#160;             n" <<"tt                                &

39、#160;                 n" <<"tt      操作方式:                      &

40、#160;            n" <<"tt               1.增加学生      2.增加课程         n" <<&

41、quot;tt               3.删除学生      4.删除课程         n" <<"tt               5.

42、填写成绩      6.更改学分         n" <<"tt               7.学生情况      8.选课情况         n&qu

43、ot; <<"tt               9.保存数据      0.退出系统         n" <<"tt           

44、60;                                      n" <<"ttn"<<endl; while(1)  

45、; cout<<"tt 请选择操作方式: "  cin>>A;  if(strlen(A)=1)     for(i='0'i<='9'i+)       b=i;    if(b=A0)    return b;    

46、60;  cerr<<"ntttt输入有误!n"<<endl;  k+;  if(k>2)     cerr<<"错误输入超过三次!n"   exit(-1);   /struct subjectdb subject sub; subjectdb *Next;int stuInform(studentdb *P);int sa

47、ve(studentdb *Y,subjectdb *P);int couInform(subjectdb *P);/学生端功能函数int selectCou(studentdb *P,subjectdb *X)    /学生选课C+大学选课系统课程设计system("cls"); cout<<"nntttt学生选课操作"<<endl;  studentdb *q=P->Next; int i; char N20,M20; if(q!=

48、NULL)  cout<<"nnntt所有学生名单如下:n"<<endl; else   cerr<<"nnntt对不起,暂时没有学生名单!请按任意键继续."<<endl;  return 1;  while(q)   q->stu.getname(N);  cout<<"tttt"<<N; 

49、0;cout<<endl;  q = q->Next ;  q = P->Next; if(q=NULL)  return 1; cout<<"nntt 请输入学生姓名:" cin>>N; i=0; q=P->Next; while(q)   q->stu.getname(M);  if(strcmp(N,M)=0)  

50、0;i+;  q = q->Next;  int j=0,k=1; if(i=0)   cout<<"nntt没有这个学生! 请按任意键返回."<<endl;  return 1;  else if(i>1)   cout<<"nntt共找到"<<i<<"个姓名为"<<N<<"的学生

51、"<<endl;  cout<<"tt选择第几个:"  cin>>k;  if(k>i|k<=0)    cerr<<"nttt输入有误!按任意键继续"<<endl;  return 1;  q = P->Next; j=0; while(q)   q->stu.getnam

52、e(M);  if(strcmp(N,M)=0)  j+;  if(j=k)     if(q->stu.retfactcourse()>=q->stu.retmaxcourse()        cout<<"ntt所选课程已满!按任意键继续"<<endl;    return 1;  

53、;    else       subjectdb *t=X->Next;    char N120;    system("cls");    if(t!=NULL)         cout<<"nnntt所有课程如下:&quo

54、t;<<endl;     cout<<"ntttt课程名称tt 学分"<<endl;        else         cerr<<"nnntt对不起,暂时没有课程"<<endl;     return 1; &

55、#160;      while(t)         t->sub.getkname(N1);     cout<<"tttt "<<N1<<setw(26-strlen(N1)<<t->sub.readcredit()<<endl;     t = t-

56、>Next ;        char N220;    cout<<"nt    输入你所要选的课程 : "    cin>>N2;    t = X->Next;    while(t)       

57、  t->sub.getkname(N1);     if(strcmp(N1,N2)=0)           if(q->stu.findcourse(N2)=1)             cout<<"ntt此课程你已选过了,不能再选.按任意键继续&

58、quot;<<endl;        return 1;            t=X->Next;      char NA20;      while(t)        &#

59、160;    t->sub.getkname(NA);       if(strcmp(NA,N2)=0)               if(t->sub.retactivestudent()>=t->sub.retmaxstudent ()      

60、           cout<<"ntt此课程已选满,不能选.按任意键继续"<<endl;      q->stu.addcourse(N2,0.0);      cout<<"nntt选课成功!按任意键继续"<<endl;    &

61、#160; return 1;          t = t->Next;        cerr<<"ntt没有此课程!按任意键继续"<<endl;      return 1;    q = q->Next;  return 1;

62、int stuInform(studentdb *P,subjectdb *X)   /学生情况 studentdb *q=P->Next; char N20; system("cls"); cout<<"nntttt学生情况操作"<<endl; int i; if(q!=NULL)   cout<<"nnntt所有学生选课信息如下:n"<<endl<<endl

63、;  cout<<"tt  姓名ttt选课情况n"<<endl;  else   cerr<<"nnntt对不起,暂时没有学生名单!请按任意键继续."<<endl;  return 1;  while(q)   q->stu.getname(N);  cout<<"tt  "<<N

64、<<setw(25-strlen(N)<<" 已选 "<<q->stu.retfactcourse()<<" 门课 "<<endl;  q = q->Next ;  char M20; cout<<"ntt输入要查看的学生姓名:" cin>>M; i=0; q=P->Next; while(q)   q->st

65、u.getname(N);  if(strcmp(N,M)=0)   i+;  q = q->Next;C+大学选课系统课程设计  int j=0,k=1; if(i=0)    cout<<"nttt没找到这个学生!请按任意键继续."<<endl;  return 1;  else if(i>1)    cout<

66、<"ntt共找到"<<i<<"个姓名为"<<M<<"的学生"<<endl;  cout<<"tt选择第几个:"  cin>>k;  if(k>i|k<=0)   cerr<<"nttt输入有误!按任意键继续."<<endl;  return 1; 

67、60;q = P->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=

68、NULL)       cout<<"nnnttt"<<N<<"同学你还未选课! 请按任意键继续."<<endl;    return 1;      if (T!=NULL)    T = T->Next;   cout<<"nnntt&qu

69、ot;<<N<<"同学你已选"<<q->stu.retfactcourse()<<"门课,具体如下nn"<<endl;   cout<<"ttt课程名称tt成绩n"<<endl;   while(T)       cout<<"ttt "<<T->cname<&l

70、t;setw(25-strlen(T->cname)<<T->grade<<endl;    T = T->Next;      j=0;    q = q->Next;  cout<<"ntt请按任意键继续."<<endl; return 1;int scInform(subjectdb *P)   /选课情况&#

71、160;subjectdb *q=P->Next; char N20; system("cls"); cout<<"nntttt选课情况操作"<<endl; if(q!=NULL)   cout<<"nnntt所有选课情况如下:n"<<endl;  cout<<"nttt课程名称tt选课人数n"<<endl;  else 

72、;  cerr<<"nnntt对不起,暂时没有课程!请按任意键继续."<<endl;  return 1;  while(q)   q->sub.getkname(N);  cout<<"ttt"<<N<<setw(28-strlen(N)<<q->sub.retactivestudent()<<endl;  q = q->N

73、ext ;  cout<<"ntt请按任意键继续."<<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"); cout<<

74、"nntttt增加学生操作n"<<endl; cout<<"nntt请输入学生姓名:" cin>>N; cout<<endl<<"tt增加学生操作成功,按任意键继续"<<endl; studentdb *newnode = new studentdb; newnode->Next = P->Next ; newnode->stu.readname(N); P->Next

75、= newnode ; return 1;int addCourse(subjectdb *P)   /增加课程 float k; char N20,M20; system("cls"); cout<<"nntttt增加课程操作n"<<endl; cout<<"nntt  请输入课程名称:" cin>>N; cout<<endl; subjectdb *q

76、= P->Next; while(q)   q->sub.getkname(M);  if(strcmp(N,M)=0)     cout<<"ntt此课程已经存在,按任意键继续"<<endl;   return 1;    q = q->Next;  cout<<"tt输入此课程的学分:" c

77、in>>k; cout<<"ntt增加课程操作成功,按任意键继续"<<endl; subjectdb *newnode = new subjectdb; newnode->Next = P->Next ; newnode->sub.setkname(N); newnode->sub.getcredit(k); P->Next = newnode ; return 1;int deleteStudent(studentdb *P) 

78、  /删除学生 system("cls"); cout<<"nntttt删除学生操作"<<endl; stuInform(P); studentdb *q = P->Next; if(q=NULL)  return 1; int i; char N20,M20; cout<<"nt请输入要删除的学生姓名 :" cin>>N; i=0; whil

79、e(q)   q->stu.getname(M);  if(strcmp(N,M)=0)   i+;  q = q->Next;  int j=0,k=1; if(i=0)   cerr<<"ntt没有这个学生!请按任意键继续."<<endl;  return 1;  else if(i>1)   cout

80、<<"ntt共找到"<<i<<"个姓名为"<<N<<"的学生"<<endl;  cout<<"ntt要删除第几个:"  cin>>k;  if(k>i|k<=0)  return 1; q = P->Next; studentdb *R = P;C+大学选课系统课程设计 j=0; wh

81、ile(q)   q->stu.getname(M);  if(strcmp(N,M)=0)   j+;  if(j=k)     R->Next = q->Next;   free(q);   cout<<"ntt删除学生操作成功,按任意键继续."<<endl;   return 1; 

82、;   q = q->Next;  R = R->Next;  return 1;int deleteCourse(subjectdb *P)   /删除课程 subjectdb *q=P->Next; char N20; system("cls"); cout<<"nntttt删除课程操作"<<endl; if(q!=NULL)  cout<<

83、;"nnntt所有课程如下:n"<<endl; else   cerr<<"nnntt对不起,暂时没有课程!请按任意键继续."<<endl;  return 1;  while(q)   q->sub.getkname(N);  cout<<"tttt"<<N<<endl;  q = q->Next ;&

84、#160; q = P->Next; subjectdb *R = P; if(q=NULL)  return 1; char M20; cout<<"nt    请输入要删除的课程 :" cin>>M; while(q)   q->sub.getkname(N);  if(strcmp(N,M)=0)     R->

85、;Next = q->Next;   free(q);   cout<<"ntt删除课程操作成功,按任意键继续"<<endl;   return 1;    q = q->Next;  R = R->Next;  cerr<<"ntt没有此课程!t请按任意键继续."<<endl; return 1;int ins

86、ertScore(studentdb *X,subjectdb *P)   /填写成绩 subjectdb *q=P->Next; char M20,N20,NA20; float score; system("cls"); cout<<"nntttt  填写成绩操作n"<<endl; if(q!=NULL)  cout<<"nttt课程名称tt选课人数n"<<endl;&

87、#160;else   cout<<"nnntt对不起,暂时没有任何选修课程。请按任意键继续."<<endl;  return 1;  while(q)   q->sub.getkname(N);  cout<<"ttt"<<N<<setw(28-strlen(N)<<q->sub.retactivestudent()<<endl; 

88、; q = q->Next ;  q = P->Next; cout<<"nt请输入课程名称 :" cin>>M; while(q)   q->sub.getkname(N);  studentname *K = q->sub.retfirst();  if(K!=NULL)   K = K->Next;  if(strcmp(N,M)=0)&

89、#160;    system("cls");   if(K!=NULL)       cout<<"nntt请填写选修"<<M<<"的学生成绩n"<<endl;    cout<<"nttt姓名tt成绩"<<endl;    

90、  if(K=NULL)   cerr<<"nttt无任何信息!请按任意键继续."<<endl;   while(K)       cout<<"nttt"<<K->tname<<"tt "     cin>>score;   &#

91、160;studentdb *XX = X->Next;    while(XX)         XX->stu.getname(NA);     if(strcmp(NA,K->tname)=0)      XX->stu.wrecourse(M,score);     XX =

92、XX->Next;        K = K->Next;      if(K=NULL)    cout<<"ntt填写成绩完毕!请按任意键继续."<<endl;   return 1;    q = q->Next;  cerr<<"ntt没

93、有此课程!请按任意键继续."<<endl; return 1;int changeSC(subjectdb *P)   /更改学分 float k; system("cls"); cout<<"nnntttt更改学分操作n"<<endl; subjectdb *q = P->Next;  char N20,M20; if(q!=NULL)  cout<<"nnnt

94、t 所有课程如下:n"<<endl; else   cerr<<"nnntt对不起,暂时没有任何可选课程。请按任意键继续."<<endl;  return 1;  while(q)   q->sub.getkname(N);  cout<<"tttt  "<<N<<endl;  q = q->Next ;  q = P->Next; cout<<"nnntt请输入要改的课程 :" cin>>M; while(q)   q->sub.getkname(N);  if(strcmp(N,M)=0)     cout<<"nttt原来学分为 :"<<q->sub

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论