收藏 分销(赏)

学生成绩管理系统(c语言)课程设计报告.doc

上传人:精*** 文档编号:3992631 上传时间:2024-07-24 格式:DOC 页数:56 大小:104.04KB 下载积分:16 金币
下载 相关 举报
学生成绩管理系统(c语言)课程设计报告.doc_第1页
第1页 / 共56页
学生成绩管理系统(c语言)课程设计报告.doc_第2页
第2页 / 共56页


点击查看更多>>
资源描述
http://www.ut365。com/cyuyan/10。html 学生成绩管理系统(c语言)课程设计报告 学生成绩管理系统 要求是这样的 1、用c语言编写一个简单的学生信息管理程序,能实现对学生信息的简单管理。 2、具体要求: 建立一个4个学生的信息登记表,每个学生的信息包括:学号,姓名,和3门课程的成绩(FOX,C,ENGLISH)。        程序运行时显示一个简单的菜单,例如:    (1):信息输入(INPUT)    (2):总分统计(COUNT)    (3):总分排序(SORT)    (4):查询(QUERY)      其中:      (1):对4个学生的信息进行输入;      (2):对每个学生的3门课程统计总分;       (3):对4个学生的总分按降序排序并显示出来;       (4):查询输入一个学号后,显示出该学生的有关信息; 。。。。。。。。。。.。 偶先写了个。.。 #i nclude〈iostream.h〉 #i nclude<stdlib。h> struct student {  int num;     char name[20];  int foxscore;  int cscore;  int englishscore;     struct student *next; }; void menu() {  cout〈<”        welecome to my student grade management system"〈〈endl;  cout<<”  please follow everyone step in the menu”〈〈endl;  cout〈<"    1。input information”〈〈endl;  cout〈<"    2.total scores”<<endl;  cout〈〈”    3.sort”<<endl;  cout〈〈”    4.query”〈〈endl;  cout〈〈"    ***************************************************"〈〈endl; } struct student *creat(struct student *head) // 函数返回的是与节点相同类型的指针 {     struct student *p1,*p2;     p1=p2=(struct student*) malloc(sizeof(struct student)); // 申请新节点     cin〉〉p1—〉num>〉p1->name>〉p1-〉foxscore>>p1—>cscore〉〉p1->englishscore; // 输入节点的值     p1-〉 next = NULL; // 将新节点的指针置为空     while(p1-〉num〉0)     {         if (head==NULL) head=p1; //空表,接入表头         else p2—〉next=p1; // 非空表,接到表尾         p2 = p1;         p1=(struct student *)malloc(sizeof(struct student)); //申请下一个新节点   cin〉〉p1-〉num〉>p1-〉name〉>p1—〉foxscore〉〉p1->cscore〉〉p1-〉englishscore;  //输入节点的值     }     return head; //返回链表的头指针 }   void count(struct student *head) {  struct student *temp;  temp=head; //取得链表的头指针  while(temp!==NULL)  {   int m;   m=temp—>foxscore+temp->cscore+temp->englishscore;          cout〈<m<<endl;//输出链表节点的值          temp=temp—>next; //跟踪链表增长  } } void sort(struct student *head) {  struct student *tp;  tp=head;  int a[4];//定义总分数组  int i,j,k;  while(temp!==NULL)  {  a[i]=tp—〉foxscore+tp-〉cscore+tp-〉englishscore;  tp=tp->next;  i=i+1;  }  for(j=1;j<=3;j++)//冒泡法排序   for(k=1;k〈=4-j;k++)    if(a[k]<a[k+1])    {     int t=a[k];a[k]=a[k+1];a[k+1]=t;    }    for(i=1;i〈5;i++)     cout〈〈a[i]<〈endl; } void query(struct student *head) {  struct student *temper;  temper=head;  int number;  cin〉〉number;  for(int i=1;i〈=4;i++)  {  if(number==temper-〉num)  {   cout<〈"            name is:”〈〈temper—〉name<〈endl;   cout〈〈”       fox score is:”〈〈temper->foxscore〈<endl;   cout〈<”         c score is:”〈〈temper—>cscore〈〈endl;   cout〈〈"   English score is:”〈<temper-〉englishscore<<endl;   cout<<”        congratulation,syetem have found what you want to search”〈<endl;  }   temper=temper-〉next;  } } void main() {  menu();  cout<<”    firstly,please input information:"<〈endl;  struct student *head;  head=NULL; /* 建一个空表*/     head=creat(head); /* 创建单链表*/  cout〈〈”    secondly,count the total score each student:”<<endl;  count(head);  cout〈〈”    thirdly,sorting the total score:"〈〈endl;  sort(head);  cout〈〈”    enter num  that you can search each shtudent's information”〈〈endl;  query(head);  cout〈<"       thanks you for use my student grade management system”<〈endl; } 编译时候都没有错。.。。 debug输入时候出现了错误。。。。 调试运行后发现原来是while循环出了问题啊 修改后。。。..。。.。 #i nclude〈iostream。h> #i nclude<stdlib。h> struct student {  int num;     char name[20];  int foxscore;  int cscore;  int englishscore;     struct student *next; }; void menu() {  cout〈〈"        welecome to my student grade management system"〈〈endl;  cout〈〈”  please follow everyone step in the menu”<〈endl;  cout<〈"    1。input information”<〈endl;  cout〈〈"    2。total scores”<<endl;  cout〈〈”    3。sort"〈〈endl;  cout〈〈”    4.query"〈〈endl;  cout〈<”    ***************************************************"〈<endl; } struct student *creat(struct student *head) // 函数返回的是与节点相同类型的指针 {     struct student *p1,*p2;     p1=p2=(struct student*) malloc(sizeof(struct student)); // 申请新节点     cin〉>p1—〉num>〉p1—〉name>〉p1—〉foxscore〉〉p1-〉cscore〉〉p1—〉englishscore; // 输入节点的值     p1-> next = NULL; // 将新节点的指针置为空     for(int i=1;i<=4;i++)     {         if (head==NULL) head=p1; //空表,接入表头         else p2—>next=p1; // 非空表,接到表尾         p2 = p1;         p1=(struct student *)malloc(sizeof(struct student)); //申请下一个新节点   if(i〈=3)   {    cin〉〉p1-〉num>〉p1-〉name〉〉p1—〉foxscore〉>p1->cscore〉>p1—〉englishscore;   }   //输入节点的值     }     return head; //返回链表的头指针 }  void count(struct student *head) {  struct student *temp;  temp=head; //取得链表的头指针     for(int i=1;i〈=4;i++)     {   int m;   m=temp—〉foxscore+temp->cscore+temp—〉englishscore;        cout〈<m〈〈endl;//输出链表节点的值         temp=temp—〉next; //跟踪链表增长  } } void sort(struct student *head) {  struct student *tp;  tp=head;  int a[4];//定义总分数组  int i,j,k;  a[1]=tp—〉foxscore+tp—〉cscore+tp—〉englishscore;  tp=tp—〉next;  a[2]=tp-〉foxscore+tp—>cscore+tp-〉englishscore;  tp=tp—〉next;  a[3]=tp—>foxscore+tp-〉cscore+tp—〉englishscore;  tp=tp-〉next;  a[4]=tp-〉foxscore+tp—〉cscore+tp—>englishscore;  for(j=1;j〈=3;j++)//冒泡法排序   for(k=1;k〈=4—j;k++)    if(a[k]〈a[k+1])    {     int t=a[k];a[k]=a[k+1];a[k+1]=t;    }    for(i=1;i<5;i++)     cout<〈a[i]〈〈endl; } void query(struct student *head) {  struct student *temper;  temper=head;  int number;  cin〉〉number;  for(int i=1;i〈=4;i++)  {  if(number==temper—〉num)  {   cout〈〈"            name is:"<〈temper—〉name〈〈endl;   cout〈〈”       fox score is:"<〈temper—〉foxscore<<endl;   cout<〈”         c score is:”<<temper->cscore〈〈endl;   cout<〈"   English score is:"〈〈temper—〉englishscore〈<endl;   cout〈〈”        congratulation,syetem have found what you want to search”〈〈endl;  }   temper=temper-〉next;  } } void main() {  menu();  cout〈<”    firstly,please input information:”〈〈endl;  struct student *head;  head=NULL; /* 建一个空表*/     head=creat(head); /* 创建单链表*/  cout〈<"    secondly,count the total score each student:”<<endl;  count(head);  cout<〈”    thirdly,sorting the total score:”<〈endl;  sort(head);  cout〈〈"    enter num  that you can search each shtudent's information"〈<endl;  query(head);  cout〈〈”       thanks you for use my student grade management system”<<endl; } C语言课程设计_贪吃蛇代码 #define N 200 #include 〈graphics。h> #include <stdlib.h〉 #include 〈dos.h〉 #define LEFT 0x4b00 #define RIGHT 0x4d00 #define DOWN 0x5000 #define UP 0x4800 #define ESC 0x011b int i,key; int score=0;/*得分*/ int gamespeed=50000;/*游戏速度自己调整*/ struct Food {    int x;/*食物的横坐标*/    int y;/*食物的纵坐标*/    int yes;/*判断是否要出现食物的变量*/ }food;/*食物的结构体*/ struct Snake {    int x[N];    int y[N];    int node;/*蛇的节数*/    int direction;/*蛇移动方向*/    int life;/* 蛇的生命,0活着,1死亡*/ }snake; void Init(void);/*图形驱动*/ void Close(void);/*图形结束*/ void DrawK(void);/*开始画面*/ void GameOver(void);/*结束游戏*/ void GamePlay(void);/*玩游戏具体过程*/ void PrScore(void);/*输出成绩*/ /*主函数*/ void main(void) {    Init();/*图形驱动*/    DrawK();/*开始画面*/    GamePlay();/*玩游戏具体过程*/    Close();/*图形结束*/ } /*图形驱动*/ void Init(void) {    int gd=DETECT,gm;    initgraph(&gd,&gm,”c:\\tc");    cleardevice(); } /*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/ void DrawK(void) { /*setbkcolor(LIGHTGREEN);*/    setcolor(11);    setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/    for(i=50;i<=600;i+=10)/*画围墙*/    {       rectangle(i,40,i+10,49); /*上边*/       rectangle(i,451,i+10,460);/*下边*/    }   for(i=40;i<=450;i+=10)   {      rectangle(50,i,59,i+10); /*左边*/      rectangle(601,i,610,i+10);/*右边*/   } } /*玩游戏具体过程*/ void GamePlay(void) {    randomize();/*随机数发生器*/    food.yes=1;/*1表示需要出现新食物,0表示已经存在食物*/    snake.life=0;/*活着*/    snake。direction=1;/*方向往右*/    snake。x[0]=100;snake。y[0]=100;/*蛇头*/    snake。x[1]=110;snake。y[1]=100;    snake。node=2;/*节数*/    PrScore();/*输出得分*/    while(1)/*可以重复玩游戏,压ESC键结束*/    {       while(!kbhit())/*在没有按键的情况下,蛇自己移动身体*/       {   if(food。yes==1)/*需要出现新食物*/   {       food.x=rand()%400+60;       food.y=rand()%350+60;       while(food。x%10!=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/   food.x++;       while(food.y%10!=0)   food.y++;   food。yes=0;/*画面上有食物了*/   }   if(food。yes==0)/*画面上有食物了就要显示*/   {               setcolor(GREEN);               rectangle(food.x,food。y,food。x+10,food。y—10);   }          for(i=snake。node-1;i〉0;i-—)/*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*/          {             snake。x[i]=snake。x[i—1];      snake.y[i]=snake。y[i—1];   }        /*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*/   switch(snake。direction)   {      case 1:snake。x[0]+=10;break;      case 2: snake。x[0]-=10;break;      case 3: snake.y[0]—=10;break;      case 4: snake.y[0]+=10;break;   }   for(i=3;i<snake。node;i++)/*从蛇的第四节开始判断是否撞到自己了,因为蛇头为两节,第三节不可能拐过来*/   {      if(snake.x[i]==snake。x[0]&&snake。y[i]==snake。y[0])      {                GameOver();/*显示失败*/                snake。life=1;                break;      }         }  if(snake。x[0]〈55||snake.x[0]〉595||snake。y[0]<55||     snake.y[0]〉455)/*蛇是否撞到墙壁*/  {      GameOver();/*本次游戏结束*/      snake.life=1; /*蛇死*/  }  if(snake。life==1)/*以上两种判断以后,如果蛇死就跳出内循环,重新开始*/            break;  if(snake。x[0]==food。x&&snake.y[0]==food.y)/*吃到食物以后*/  {            setcolor(0);/*把画面上的食物东西去掉*/            rectangle(food。x,food.y,food。x+10,food。y—10);     snake。x[snake。node]=—20;snake.y[snake.node]=—20;           /*新的一节先放在看不见的位置,下次循环就取前一节的位置*/     snake.node++;/*蛇的身体长一节*/     food。yes=1;/*画面上需要出现新的食物*/     score+=10;     PrScore();/*输出新得分*/  }  setcolor(4);/*画出蛇*/  for(i=0;i<snake。node;i++)     rectangle(snake.x[i],snake。y[i],snake。x[i]+10,                snake。y[i]—10);  delay(gamespeed);  setcolor(0);/*用黑色去除蛇的的最后一节*/  rectangle(snake.x[snake。node—1],snake。y[snake。node—1],  snake.x[snake.node—1]+10,snake.y[snake。node—1]—10);      }  /*endwhile(!kbhit)*/     if(snake。life==1)/*如果蛇死就跳出循环*/         break;     key=bioskey(0);/*接收按键*/     if(key==ESC)/*按ESC键退出*/        break;     else        if(key==UP&&snake.direction!=4) /*判断是否往相反的方向移动*/    snake。direction=3;        else    if(key==RIGHT&&snake.direction!=2)       snake.direction=1;    else       if(key==LEFT&&snake.direction!=1)   snake。direction=2;       else   if(key==DOWN&&snake.direction!=3)      snake。direction=4;    }/*endwhile(1)*/ } /*游戏结束*/ void GameOver(void) {     cleardevice();     PrScore();    setcolor(RED);    settextstyle(0,0,4);    outtextxy(200,200,”GAME OVER”);    getch(); } /*输出成绩*/ void PrScore(void) {      char str[10];    setfillstyle(SOLID_FILL,YELLOW);    bar(50,15,220,35);    setcolor(6);    settextstyle(0,0,2);    sprintf(str,”score:%d",score);    outtextxy(55,20,str); } /*图形结束*/ void Close(void) {       getch();     closegraph(); } C语言课程设计_贪吃蛇代码,不错啊 c语言课程设计_计算器设计 #include 〈dos。h>   /*DOS接口函数*/ #include <math.h〉   /*数学函数的定义*/ #include 〈conio。h>  /*屏幕操作函数*/ #include <stdio.h〉  /*I/O函数*/ #include 〈stdlib。h〉  /*库函数*/ #include <stdarg.h〉  /*变量长度参数表*/ #include 〈graphics.h>  /*图形函数*/ #include 〈string。h>  /*字符串函数*/ #include 〈ctype。h〉  /*字符操作函数*/ #define UP 0x48    /*光标上移键*/ #define DOWN 0x50  /*光标下移键*/ #define LEFT 0x4b  /*光标左移键*/ #define RIGHT 0x4d  /*光标右移键*/ #define ENTER 0x0d  /*回车键*/ void *rar;       /*全局变量,保存光标图象*/ struct palettetype palette; /*使用调色板信息*/ int  GraphDriver; /* 图形设备驱动*/ int  GraphMode; /* 图形模式值*/ int  ErrorCode;  /* 错误代码*/ int  MaxColors;  /* 可用颜色的最大数值*/ int  MaxX, MaxY; /* 屏幕的最大分辨率*/ double  AspectRatio; /* 屏幕的像素比*/ void drawboder(void); /*画边框函数*/ void initialize(void);  /*初始化函数*/ void computer(void);  /*计算器计算函数*/ void changetextstyle(int font, int direction, int charsize);  /*改变文本样式函数*/ void mwindow(char *header);  /*窗口函数*/ int specialkey(void) ;   /*获取特殊键函数*/ int arrow();     /*设置箭头光标函数*/ /*主函数*/ int main() {    initialize();/* 设置系统进入图形模式 */    computer(); /*运行计算器 */    closegraph();/*系统关闭图形模式返回文本模式*/    return(0);   /*结束程序*/ } /* 设置系统进入图形模式 */ void initialize(void) {    int xasp, yasp; /* 用于读x和y方向纵横比*/    GraphDriver = DETECT; /* 自动检测显示器*/    initgraph( &GraphDriver, &GraphMode, "” ); /*初始化图形系统*/    ErrorCode = graphresult();  /*读初始化结果*/    if( ErrorCode != grOk )  /*如果初始化时出现错误*/    {       printf("Graphics System Error: %s\n",       grapherrormsg( ErrorCode ) ); /*显示错误代码*/       exit( 1 );  /*退出*/     }     getpalette( &palette );  /* 读面板信息*/     MaxColors = getmaxcolor() + 1; /* 读取颜色的最大值*/     MaxX = getmaxx();    /* 读屏幕尺寸 */     MaxY = getmaxy();  /* 读屏幕尺寸 */     getaspectratio( &xasp, &yasp ); /* 拷贝纵横比到变量中*/     AspectRatio = (double)xasp/(double)yasp;/* 计算纵横比值*/ } /*计算器函数*/ void computer(void) {     struct viewporttype vp;  /*定义视口类型变量*/     int color, height, width;     int x, y,x0,y0, i, j,v,m,n,act,flag=1;     float num1=0,num2=0,result;  /*操作数和计算结果变量*/     char cnum[5],str2[20]={””},c,temp[20]={””};     char str1[]=”1230.456+-789*/Qc=^%";/* 定义字符串在按钮图形上显示的符号 */     mwindow( "Calculator” );  /* 显示主窗口 */     color = 7;     /*设置灰颜色值*/     getviewsettings( &vp );    /* 读取当前窗口的大小*/     width=(vp.right+1)/10;    /* 设置按钮宽度  */     height=(vp.bottom—10)/10 ;  /*设置按钮高度  */     x = width /2;   /*设置x的坐标值*/     y = height/2; /*设置y的坐标值*/     setfillstyle(SOLID_FILL, color+3);     bar( x+width*2, y, x+7*width, y+height );     /*画一个二维矩形条显示运算数和结果*/     setcolor( color+3 );  /*设置淡绿颜色边框线*/     rectangle( x+width*2, y, x+7*width, y+height );      /*画一个矩形边框线*/     setcolor(RED);  /*设置颜色为红色*/     outtextxy(x+3*width,y+height/2,”0。”); /*输出字符串”0。"*/     x =2*width—width/2;   /*设置x的坐标值*/     y =2*height+height/2;  /*设置y的坐标值*/     for( j=0 ; j〈4 ; ++j ) /*画按钮*/     {        for( i=0 ; i〈5 ; ++i )        {            setfillstyle(SOLID_FILL, color);            setcolor(RED);            bar( x, y, x+width, y+height ); /*画一个矩形条*/            rectangle( x, y, x+width, y+height );            sprintf(str2,”%c”,str1[j*5+i]);              /*将字符保存到str2中*/            outtextxy( x+(width/2), y+height/2, str2);            x =x+width+ (width / 2) ; /*移动列坐标*/        }        y +=(height/2)*3; /* 移动行坐标*/        x =2*width—width/2;  /*复位列坐标*/     }     x0=2*width;     y0=3*height;     x=x0;     y=y0;     gotoxy(x,y); /*移动光标到x,y位置*/     arrow();  /*显示光标*/     putimage(x,y,rar,XOR_PUT);     m=0;     n=0;     strcpy(str2,””);  /*设置str2为空串*/     while((v=specialkey())!=45)  /*当压下Alt+x键结束程序,否则执行下面的循环*/     {        while((v=specialkey())!=ENTER)  /*当压下键不是回车时*/        {    putimage(x,y,rar,XOR_PUT); /*显示光标图象*/    if(v==RIGHT)   /*右移箭头时新位置计算*/       if(x〉=x0+6*width)                  /*如果右移,移到尾,则移动到最左边字符位置*/       {    x=x0;    m=0;        }       else       {    x=x+width+width/2;    m++;        } /*否则,右移到下一个字符位置*/    if(v==LEFT) /*左移箭头时新位置计算*/       if(x〈=x0)       {    x=x0+6*width;    m=4;       } /*如果移到头,再左移,则移动到最右边字符位置*/       else       {   x=x—width-width/2;   m——;       } /*否则,左移到前一个字符位置*/           if(v==UP) /*上移箭头时新位置计算*/       if(y〈=y0)       {   y=y0+4*height+height/2;   n=3;       } /*如果移到头,再上移,则移动到最下边字符位置*/
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服