DIYIT

面朝大海,春暖花开 (手目贝卜口一小囗口贝卜口,言亥扌三人一大!:))

IT博客 首页 新随笔 联系 聚合 管理
  30 Posts :: 2 Stories :: 64 Comments :: 0 Trackbacks

C++程序设计报告》

 

一.设计题目:学生成绩管理系统。

二.课程设计内容

1.简单的系统与功能分析

2.建立数据结构表

3.要建立一个测试的数据表,至少要有20个测试数据

4.使用数据链表实现数据的:录入、查询、修改、增加、删除、统计、输出

三.程设计目的

a)         了解和掌握掌握程序设计的基本过程

b)        进一步熟悉C++语言的特点

c)        通过设计一个程序,更好的掌握C++这门语言

d)        能够使自己的程序实现一定的功能,对C++产生一种浓厚的兴趣

四.课程设计要求

1.  写出系统需求、功能分析

2.  写出数据结构表

3.  写出数据测试表

4.  编写代码

5.  上机调试

6.  写出设计报告书

五.下面是学生成绩管理系统的数据结构表

序号

成员名(字段名)

数据类型

长度

字段含义

1

Class_0

char

20

班级

2

num

int

 

学号

3

name

Char

8

姓名

4

elec

float

 

电子技术

5

C_prog

Float

 

C++程序设计

6

Media

Float

 

多媒体技术

7

Eng

Float

 

大学英语

8

Math

Float

 

高等数学

9

Sport

Float

 

大学体育

10

Polity

Float

 

马克思主义政治经济学

11

Ave

Float

 

平均成绩

12

Order

int

 

名次

 

 

 

 

 

 

 

 

 

程序功能介绍

在浪费您的宝贵时间看此程序之前,请先允许我向您介绍一下我这个粗俗的“学生信息管理系统”所能过成的一些小小的功能。

首先,当您初次进入本系统时,你会看到一个非常人性化的窗口界面,也将为您导航,不至于你在面对这个“小东西”时而不知所措。然后系统将提示您输入一个数,以确定您所要选择的功能。下面列举出您好输入的数所对应的功能,相信这一定能对您好了解和使用本系统有非常实在的帮助:

     0.退出系统:这将直接退出本系统,所以友情提醒您,当您确定需要退出时,才能用到她,所以切记慎用!!   

1.  输入成绩:系统将提示您依次要输入什么,这样您就不至于张冠李戴了。

2.  修改成绩:您只要输入学号,便能轻松的修改输错的成绩,并有系统提示您该怎样输入。

3.  成绩查询:输入学号,便能快速查询该生详细情况简单吧!!

4.  删除学生记录:也许是您的疏忽不小心输错了,我想该功能也许有补牢未晚的功效了。

5.  输出所有学生成绩:全班成员情况,尽收眼底。

6.  统计平均成绩:作为一个老师,我想莫过于想知道全班的大体情况,此功能将完成您的心愿!

看完了以上的介绍觉得怎么样,是否想先睹为快呢?当然只要您想要,您就能拥有她!!

 

另附:功能结构图(如果您急于知道有什么功能或时间太紧,这莫过于是最好的选择了

 

 

 

学生信息管理系统

成绩录入

成绩

修改

成绩查询

删除成绩

输出成绩

统计成绩

退出系统

 

//.cpp源程序

#include <iostream.h>

#include <string.h>

struct node

{

       int Class;

       int num;

       char name[8];

       float elec,cprog,math,eng,sport,polity;

       float ave;

       int order;

       node *next;

};

node *insert(node *head,node *p)//按顺序插入一个结点

{

       node *p1,*p2;

       if(head==0)

       {

              head=p;

              p->next=0;

              return(head);

       }

       else if(head->ave<=p->ave)

       {

              p->next=head;

              head=p;

              return(head);

       }

       else

       {p2=p1=head;

       while(p2->next&&p2->ave>p->ave)

       {

              p1=p2;p2=p2->next;

       }

       if(p2->ave>p->ave)

       {

              p2->next=p;

              p->next=0;

       }

       else {

              p->next=p2;

              p1->next=p;

       }

       }

       return(head);

}

node *create(void)//创建一条有序键表

{

       node *p1,*head=0; int Class;char name[8];

       int num;static int order=0;

       float elec,cprog,math,eng,sport,polity,ave;

       cout<<"请输入班级,姓名,学号,电子技术,C++成绩,数学,";

       cout<<"英语,政治,体育,以-1结束"<<endl;

       cin>>Class>>name>>num>>elec>>cprog>>math>>eng>>sport>>polity;

       while(Class!=-1)

       {

              p1=new node;

              ave=(elec+cprog)/2;

              p1->Class=Class;p1->num=num;strcpy(p1->name,name);p1->elec=elec;

              p1->math=math;p1->eng=eng;p1->polity=polity;p1->sport=sport;

              p1->cprog=cprog;p1->order=++order;

              head=insert(head,p1);

              cout<<"请输入班级,姓名,学号,电子技术,C++,数学,";

              cout<<"英语,政治,体育成绩以-1结束"<<endl;

           cin>>Class>>name>>num>>elec>>cprog>>math>>eng>>sport>>polity;

       }

    if(head){ p1->next=0;}

       return(head);

}

 

void lookup(node *head,int num)//查找函数,找到对应学号的学生

{

       node *p1,*p2;

       if(head==0)

       {

              cout<<"无学生记录!"<<endl;

       }

             

       if(head->num==num)

       {

              cout<<"姓名:"<<head->name<<'\t'<<"学号:"<<head->num<<'\t';

              cout<<"班级:"<<head->Class<<'\t'<<"elec:"<<head->elec<<'\t';

              cout<<"C++:"<<head->cprog<<endl;

              cout<<"数学:"<<head->math<<'\t'<<"英语:"<<head->eng<<'\t';

              cout<<"政治:"<<head->polity<<'\t'<<"体育:"<<head->sport<<endl;

        cout<<"你考了第"<<head->order <<"!"<<endl;

       }

       else{

              p1=head;p2=head->next;

              while(p2->num!=num&&p2->next!=0)

              {

                     p1=p2;

                     p2=p2->next;

              }

              if(p2->num==num)

              {

                cout<<"姓名:"<<p2->name<<'\t'<<"学号:"<<p2->num<<'\t';

                cout<<"班级:"<<p2->Class<<'\t'<<"elec:"<<p2->elec<<'\t'<<"C++"<<p2->cprog<<endl;

             cout<<"数学:"<<p2->math<<'\t'<<"英语:"<<p2->eng<<'\t';

                cout<<"政治:"<<p2->polity<<'\t'<<"体育:"<<p2->sport<<endl;

               cout<<"你考了第"<<p2->order <<"!"<<endl;

              }

       }

}

void output(node *head)//输出函数,输出所有人的成绩

{

    node *p;

       p=head;

       cout<<"输出学生信息:"<<endl;

       while(p!=0)

       {

              cout<<"姓名:"<<p->name<<'\t'<<"学号:"<<p->num<<'\t';

              cout<<"班级;"<<p->Class<<'\t'<<"elec:"<<p->elec<<'\t';

              cout<<"C++:"<<p->cprog<<endl;

              cout<<"数学:"<<p->math<<'\t'<<"英语:"<<p->eng<<'\t';

              cout<<"政治:"<<p->polity<<'\t'<<"体育;"<<p->sport<<endl;

           cout<<"你考了第"<<p->order <<"!"<<endl;

              cout<<endl;

              p=p->next;

       }

       cout<<endl;

}

node *modify(node *head,int num)//修改函数,修改对应学号的学生成绩

{

       node *p1,*p2;

       if(head==0)

       {

              cout<<"无学生记录!"<<endl;

              return(0);

       }

       else if(head->num==num)

       {

              float elec,cprog,math,eng,sport,polity;

              cout<<"请输入新的电子技术成绩和C++成绩,数学,英语,政治,";

              cout<<"体育成绩以-1结束"<<endl;

              cin>>elec>>cprog>>math>>eng>>sport>>polity;;

              head->elec=elec;head->cprog=cprog;head->math=math;head->eng=eng;

              head->polity=polity;head->sport=sport;

 

       }

       else

       {

              p1=head;p2=head->next;

              while(p2->num!=num&&p2->next!=0)

              {

                     p1=p2;

                     p2=p2->next;

              }

              if(p2->num==num)

              {

                     float elec,cprog,math,eng,sport,polity;

                     cout<<"请输入新的子技术成绩和C++成绩数学,英语,政治,";

                     cout<<"体育成绩以-1结束"<<endl;

                     cin>>elec>>cprog>>math>>eng>>sport>>polity;

                  p2->elec=elec;p2->cprog=cprog;p2->math;p2->eng=eng;

                     p2->polity=polity;p2->sport=sport;

              }

              else cout<<"没找到该学生!"<<endl;

       }

       return(head);

}

node *Delete(node *head,int num)//删除一个学生的记录

{

       node *p1,*p2;

       if(head==0)

       {

              cout<<"无学生记录!"<<endl;

              return(0);

       }

       else if(head->num==num)

       {

              p1=head;head=head->next;

              delete p1;cout<<"已删除了这个学生的记录"<<endl;

 

       }

       else

       {

              p1=head;p2=head->next;

              while(p2->num!=num&&p2->next!=0)

              {

                     p1=p2;

                     p2=p2->next;

              }

              if(p2->num==num)

              {

                     p1->next=p2->next;

                     delete p2;cout<<"已删除了这个学生的记录"<<endl;

 

              }

              else cout<<"没找到该学生!"<<endl;

       }

       return(head);

}

void statistic(node *head)//统计函数,统计平均成绩

{

       node *p1;int i=0;

       float s1=0,s2=0,s3=0,s4=0,s5=0,s6=0;//S1为电子技术总成绩;

       //S2C++总成绩;s3为数学总成绩;s4为英语,S5为政治;S6为体育;

       p1=head;

       while(p1!=0)

       {

              s1=s1+p1->elec;s2=s2+p1->elec;i++;s3=s3+p1->math;

              s4=s4+p1->eng;s5=s5+p1->polity;s6=s6+p1->sport;i++;

 

              p1=p1->next;

       }

       cout<<"平均成绩:"<<endl;

       cout<<"电子技术平均成绩"<<s1/i<<'\t'<<"C++平均成绩:"<<s2/i<<endl;

       cout<<"数学"<<s3/i<<'\t'<<"英语"<<s4/i<<'\t'<<"政治"<<s5/i<<'\t';

       cout<<"体育"<<s6/i<<endl;

}

 

void deletechain(node *head)//释放键表所占的空间

 

{

       node *p1;

       while(head)

       {

              p1=head;

              head=head->next;

              delete p1;

       }

}

 

void main()//主函数

{

       node *head;int num;

       int a;

T:{

         cout<<"************************************************"<<endl;

         cout<<"***** 欢迎使用本系统(请选择你所要的功能) ****"<<endl;

         cout<<"             0.退出系统.                       "<<endl;

         cout<<"             1.成绩录入.                       "<<endl;

         cout<<"             2.成绩修改.                      "<<endl;

         cout<<"             3.成绩查询.                      "<<endl;

         cout<<"             4.删除成绩.                       "<<endl;

         cout<<"             5.输出所有人的成绩 .              "<<endl;

         cout<<"             6.统计平均成绩.                   "<<endl;

         cout<<"************************************************"<<endl;

         cout<<"请输入你选择的数字:";cin>>a;

  }

  switch(a)

  {

  case 0:goto end;

  case 1:head=create();goto T;break;

  case 2:cout<<"请输入学号:";cin>>num;modify(head,num);goto T;break;

  case 3 :cout<<"请输入学号:";cin>>num;lookup(head,num);goto T;break;

  case 4:cout<<"请输入学号:";cin>>num;Delete(head,num);goto T;break;

  case 5:output(head);goto T;break;

  case 6:statistic(head);goto T;break;

  default:break;

  };

end:;

       cout<<"谢谢您使用本系统!"<<endl;

      if(head) deletechain(head);

}

             

 

 

 

程序运行界面

 

 

 

 

 

 

 

 

 

 

 

 

课程设计总结

终于可以松口气了,经过两天多时间的思考,写源程序,上机调试.现在终于告一段落了.看到自己的劳动成果,心中不免有些惊喜,没想到自己还能独立完成初次的课程设计.

这种课程设计是枯燥无味的,但对C++这门程序语言的掌握却有非常大的作用.从开始对题目的分析,就注定摆在我这样一个对C++了解不多的新手面前的是一段艰难的旅程.但最终很庆幸的是我居然能够坚持下来,而且独立完成了设计工作.

C++是很难学的,这也许是因人而异,但对我来说确实是一个障碍.如今要自己完成一个课程设计,无疑是对自己的一个挑战.先是分析题目,这里困难不是很大,因为已有了比较完整的设计提示:有哪此数据,要用到哪些函数,都作了比较清楚的说明.其实也只是要将那些函数填完整就行了.看起来比较轻松,但实际操作起来却是比较麻烦的.由于平时对C++知识的积累较为匮乏,(这可能是最主要的原因了),所以操作起来真是寸步难行,没办法,只有拿出课本找到相应的知识点,临阵磨枪.费了一番功夫,终于写出了源程序,但这不一定就意味着万事大吉,接下来的调试更是曲折了.好不容易将程序输入进去了,一编译,错误一大堆,没办法只有一个一个找了.这接下来的工作我想是每一个和我一样的人都会遇到了,在此我就不再赘述.

但不管怎么样,我还是完成了这个设计.虽说累了点,但我想这对我们进一步掌握C++,并为下学期的C++二级考试是有很大的帮助的.能够编出程序,其实本身就是对自己的一种肯定,是对自己前面一段时间学习C++综合水平的一个检阅.当然完成后的兴喜,只有经历过了才能体会到.而我体会到了.(6/26/05)

posted on 2006-05-07 14:40 percy:) 阅读(2074) 评论(7)  编辑 收藏 引用 所属分类: C++

评论

# re: 一个C++作业(原创,附原程序) 2006-05-19 19:53 张明明
很好
  回复  更多评论
  

# re: 一个C++作业(原创,附原程序) 2006-10-11 11:09 fengjicj
感觉还可以哦,是你自己独立完成的不了!
  回复  更多评论
  

# re: 一个C++作业(原创,附原程序) 2006-10-11 11:10 fengjicj
@fengjicj
  回复  更多评论
  

# re: 一个C++作业(原创,附原程序) 2006-10-11 11:11 fengjicj
我们也要搞了呢,不知道怎么做呢,老师说不可以抄网上的,还要提问哦!
  回复  更多评论
  

# re: 一个C++作业(原创,附原程序) 2006-10-11 12:27 percy
@fengjicj
这个是我自己做的啊,但其中还有一些错误。当时我们老师是赵泽茂,刚开始时也是一个个问,但后来也管不了这么多了,毕竟人太多了,一个老师根本就顾不过来,但自己做一做还是有好处的。你有什么问题可以发到我的邮箱上去:
pengjianqing@sina.com  回复  更多评论
  

# re: 一个C++作业(原创,附原程序) 2006-12-15 17:12 mawlan
hen hao  回复  更多评论
  

# re: 一个C++作业(原创,附原程序) 2007-01-21 14:07 23
我们刚也做了这个系统  回复  更多评论
  

只有注册用户登录后才能发表评论。