c学生成绩管理系统课设报告含程序和截图
C语言学生成绩管理系统课程设计报告

设计一个学生成绩管理系统,对上学期的本班的学习成绩进行管理,具有查询和检索功能,并且能够对指定文件操作,也可将多个文件组成一个文件。
A、设计内容1、每一条记录包括一个学生的学号、姓名、性别、各门课成绩(上学期的科目)、平均成绩。
2、输入功能:可以一次完成若干条记录的输入。
3、显示功能:完成全部学生记录的显示。
4、查找功能:完成按姓名或学号查找学生记录,并显示。
5、排序功能:按学生平均成绩进行排序。
6、插入功能:按学号顺序插入一条学生记录。
7、将学生记录存在文件student.dat中。
8、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!B、设计要求一、已知有存储本班学生记录(包括学号、姓名、科目成绩、性别、)的文件student.dat,所有学生以学号从小到大排序(该文件自行建立)。
要求编程序实现查询、排序、插入、删除诸功能。
具体要求如下:A.要求显示如下界面****************************************1--------------查询2--------------排序3--------------插入4--------------删除****************************************通过选择1-4来确定要做哪一个操作。
B.若选1,则出现如下界面****************************************1.1----------按学号查询1.2----------按姓名查询1.3----------按成绩查询****************************************通过选择1.1-1.3来确定要做哪一个操作,其中:按姓名查询用顺序法实现;按成绩查询实现查询成绩小于m分的学生;找到该生将学生记录输出到屏幕,若查无此人,输出相关信息。
C.若选2,则按成绩从大到小排序,姓名,学号顺序也随之调整。
学生成绩管理系统(c语言)课程设计报告

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{intnum;char name[20];ﻫint foxscore;ﻫintcscore;ﻫintenglishscore;ﻫ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.in put 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(structstudent)); // 申请新节点ﻫ cin>>p1->num>>p1->name>>p1->foxscore>>p1->cscore>>p1->englishscore; // 输入节点的值ﻫp1-> next = NULL; // 将新节点的指针置为空while(p1->num>0){ﻫif (head==NULL) head=p1; //空表,接入表头ﻫ e lse p2->next=p1; // 非空表,接到表尾ﻫ p2 = p1;p1=(struct student *)malloc(sizeof(struct student)); //申请下一个新节点ﻫcin>>p1->num>>p1->name>>p1->foxscore>>p1->cscore>>p1->englishsco re;//输入节点的值ﻫ }return head; //返回链表的头指针ﻫ}void count(struct student *head){struct student *temp;temp=head; //取得链表的头指针{ﻫint m;ﻫm=temp->foxscore+temp->cscore+temp->engliwhile(temp!==NULL)ﻫshscore;ﻫ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++){ﻫint t=a[k];a[k]=a[k+1];a[k+1]=t;ﻫ} if(a[k]<a[k+1])ﻫfor(i=1;i<5;i++)cout<<a[i]<<endl;}voidquery(struct student *head)ﻫ{ﻫstruct student *temper;temper=head;int number;ﻫcin>>number;ﻫfor(int i=1;i<=4;i++){{ﻫcout<<" nameis:"<<tempeif(number==temper->num)ﻫr->name<<endl;cout<<" foxscore is:"<<temper->foxscore<<endl;cout<<" c score is:"<<temper->cscore<<endl;ﻫcout<<" English scoreis:"<<temper->englishscore<<endl;ﻫcout<<"congratulation,syetem have found what you want to search"<<en dl;ﻫ}temper=temper->next;ﻫ}}ﻫvoidmain(){ﻫ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,sortingthe totalscore:"<<endl;ﻫsort(head);ﻫcout<<" enter num thatyou can search eachshtudent's information"<<endl;ﻫquery(head);ﻫcout<<" thanks you forusemy student grade management system"<<endl;}ﻫ编译时候都没有错....ﻫdebug输入时候出现了错误....ﻫ调试运行后发现原来是while循环出了问题啊ﻫ修改后.........#i nclude<iostream.h>ﻫ#include<stdlib.h>ﻫstruct studentﻫ{ﻫint num;char name[20];ﻫint foxscore;ﻫintcscore;int englishscore;struct student *next;};void menu()ﻫ{ﻫcout<<"welecome tomy studentgrade managementsystem"<<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(inti=1;i<=4;i++){if (head==NULL) head=p1; //空表,接入表头ﻫelse p2->next=p1; // 非空表,接到表尾ﻫ p2 = p1;p1=(structstudent *)malloc(sizeof(structstudent)); //申请下一个新节点if(i<=3){cin>>p1->num>>p1->name>>p1->foxscore>>p1->cscore>>p1->englishscore;ﻫ} //输入节点的值ﻫ}returnhead; //返回链表的头指针ﻫ}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 scoreis:"<<temper->cscore<<endl;ﻫcout<<" English score is:"<<temper->englishscore<<endl;cout<<" congratulation,syetemhave found what you want to sear ch"<<endl;ﻫ}temper=temper->next;}ﻫ}ﻫvoid main(){ﻫmenu();cout<<" firstly,please input information:"<<endl;structstudent *head;head=NULL; /* 建一个空表*/head=creat(head); /* 创建单链表*/cout<<" secondly,count the total scoreeach student:"<<endl;ﻫcoun t(head);cout<<" thirdly,sorting the total score:"<<endl;ﻫsort(head);ﻫcout<<" enter num that you can search each shtudent'sinformation"<<endl;ﻫquery(head);cout<<" thanks you for use my studentgrade 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); /*上边*/}ﻫ for(i=40;i<=450;i+=10) rectangle(i,451,i+10,460);/*下边*/ﻫ{ﻫ 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=bios key(0);/*接收按键*/if(key==ESC)/*按ESC键退出*/break;ﻫelseif(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;elseif(key==DOWN&&snake.direction!=3)ﻫsnake.direction=4;ﻫ }/*endwhile(1)*/ﻫ}/*游戏结束*/void GameOver(void){ﻫ cleardevice();ﻫ PrScore();ﻫsetcolor(RED);settextstyle(0,0,4);outtextxy(200,200,"GAMEOVER");ﻫ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> /*字符操作函数*/#defineUP 0x48/*光标上移键*/#define DOWN 0x50 /*光标下移键*/#define LEFT 0x4b /*光标左移键*/#define RIGHT 0x4d /*光标右移键*/ﻫ#define ENTER 0x0d /*回车键*/void *rar; /*全局变量,保存光标图象*/struct palettetype palette; /*使用调色板信息*/ﻫint GraphDriver; /* 图形设备驱动*/ﻫint GraphMode; /* 图形模式值*/ﻫintErrorCode; /* 错误代码*/int MaxColors; /* 可用颜色的最大数值*/int MaxX, MaxY; /*屏幕的最大分辨率*/ﻫdouble AspectRatio; /* 屏幕的像素比*/void drawboder(void); /*画边框函数*/ﻫvoid initialize(void); /*初始化函数*/ﻫvoidcomputer(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",ﻫgrapherror msg( 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;intx, 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=(v p.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*wi dth-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(R ED);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;} /*如果移到头,再上移,则移动到最下边字符位置*/else{y=y-height-height/2;ﻫn--;ﻫ} /*否则,移到上边一个字符位置*/if(v==DOWN) /*下移箭头时新位置计算*/if(y>=7*height)ﻫ{y=y0;n=0;} /*如果移到尾,再下移,则移动到最上边字符位置*/elseﻫ {y=y+height+height/2;n++;} /*否则,移到下边一个字符位置*/putimage(x,y,rar,XOR_PUT); /*在新的位置显示光标箭头*/ﻫ }ﻫc=str1[n*5+m];/*将字符保存到变量c中*/ﻫ if(is digit(c)||c=='.') /*判断是否是数字或小数点*/ﻫ{if(flag==-1) /*如果标志为-1,表明为负数*/ﻫ{ﻫ strcpy(str2,"-");/*将负号连接到字符串中*/flag=1;} /*将标志值恢复为1*/sprintf(temp,"%c",c); /*将字符保存到字符串变量temp中*/strcat(str2,temp); /*将temp中的字符串连接到str2中*/ﻫ setfillst yle(SOLID_FILL,color+3);bar(2*width+width/2,height/2,15*width/2,3*height/2);ﻫ outtextxy(5*width,height,str2);/*显示字符串*/}ﻫif(c=='+')ﻫ {num1=atof(str2); /*将第一个操作数转换为浮点数*/ﻫstrcpy(str2,""); /*将str2清空*/ﻫact=1; /*做计算加法标志值*/setfillstyle(SOLID_FILL,color+3);ﻫbar(2*width+width/2,height/2,15*width/2,3*height/2);outtextxy(5*width,height,"0."); /*显示字符串*/ﻫ}if(c=='-'){if(strcmp(str2,"")==0)/*如果str2为空,说明是负号,而不是减号*/flag=-1; /*设置负数标志*/else{num1=atof(str2); /*将第二个操作数转换为浮点数*/ﻫstrcpy(str2,""); /*将str2清空*/ﻫact=2;/*做计算减法标志值*/ﻫsetfillstyle(SOLID_FILL,color+3);ﻫbar(2*width+width/2,height/2,15*width/2,3*height/2); /*画矩形*/ﻫouttextxy(5*width,height,"0."); /*显示字符串*/}}ﻫif(c=='*')ﻫ{num1=atof(str2); /*将第二个操作数转换为浮点数*/ﻫstrcpy(str2,"");/*将str2清空*/ act=3;/*做计算乘法标志值*/ﻫsetfillstyle(SOLID_FILL,color+3); bar(2*w idth+width/2,height/2,15*width/2,3*height/2);outtextxy(5*width,height,"0."); /*显示字符串*/ﻫ}if(c=='/'){num1=atof(str2);/*将第二个操作数转换为浮点数*/strcpy(str2,"");/*将str2清空*/ﻫact=4;/*做计算除法标志值*/ﻫsetfillstyle(SOLID_FILL,color+3);bar(2*width+width/2,height/2,15*width/2,3*height/2);}ﻫif(c=='^')outtextxy(5*width,height,"0."); /*显示字符串*/ﻫ{num1=atof(str2); /*将第二个操作数转换为浮点数*/strcpy(str2,""); /*将str2清空*/act=5; /*做计算乘方标志值*/ﻫsetfillstyle(SOLID_FILL,color+3); /*设置用淡绿色实体填充*/bar(2*width+width/2,height/2,15*width/2,3*height/2); /*画矩形*/ﻫouttextxy(5*widt}ﻫif(c=='%')h,height,"0."); /*显示字符串*/ﻫ{ﻫnum1=atof(str2); /*将第二个操作数转换为浮点数*/strcpy(str2,""); /*将str2清空*/ﻫact=6; /*做计算模运算乘方标志值*/ﻫsetfillstyle(SOLID_FILL,color+3);/*设置用淡绿色实体填充*/ﻫbar(2*width+width/2,height/2,15*widt h/2,3*height/2); /*画矩形*/outtextxy(5*width,height,"0.");/*显示字符串*/}ﻫif(c=='=')ﻫ{num2=atof(str2);/*将第二个操作数转换为浮点数*/ﻫswitch(act) /*根据运算符号计算*/ﻫ{ﻫcase 1:result=num1+num2;break; /*做加法*/case 2:result=num1-num2;break; /*做减法*/ﻫcase 3:result=num1*num2;break; /*做乘法*/ﻫcase4:result=num1/num2;break; /*做除法*/ﻫcase 5:result=pow(num1,num 2);break;/*做x的y次方*/ﻫcase6:result=fmod(num1,num2);break; /*做模运算*/ﻫ}ﻫsetfillstyle(SOLID_FILL,color+3);/*设置用淡绿色实体填充*/ﻫbar(2*width +width/2,height/2,15*width/2,3*height/2); /*覆盖结果区*/ﻫsprintf(temp,"%f",re sult); /*将结果保存到temp中*/ﻫouttextxy(5*width,height,temp); /*显示结果*/ﻫ}if(c=='c')ﻫ{num1=0;/*将两个操作数复位0,符号标志为1*/ﻫnum2=0;flag=1;ﻫstrcpy(str2,"");/*将str2清空*/ﻫsetfillstyle(SOLID_FILL,color+3); /*设置用淡绿色实体填充*/ﻫbar(2*width+width/2,height/2,15*width/2,3*height/2);/*覆盖结果区*/ﻫouttextxy(5*width,height,"0.");/*显示字符串*/}if(c=='Q')exit(0); /*如果选择了q回车,结束计算程序*/ﻫ}ﻫputimage(x,y,rar,XOR_P UT);/*在退出之前消去光标箭头*/ﻫreturn; /*返回*/ﻫ}ﻫ/*窗口函数*/void mwindow(char*header )ﻫ{int height;cleardevice(); /* 清除图形屏幕 */setcolor(MaxColors -1); /*设置当前颜色为白色*/ﻫsetviewport( 20,20, MaxX/2,MaxY/2, 1 ); /*设置视口大小*/height=textheight( "H"); /*读取基本文本大小*/ﻫsettextstyle( DEFAULT _FONT, HORIZ_DIR, 1 );/*设置文本样式*/settextjustify(CENTER_TEXT, TOP_TEXT );/*设置字符排列方式*/outtextxy(MaxX/4, 2,header ); /*输出标题*/setviewport( 20,20+height+4, MaxX/2+4, MaxY/2+20, 1); /*设置视口大小*/ﻫdrawboder();/*画边框*/}ﻫvoid drawboder(void) /*画边框*/ﻫ{ﻫstruct viewporttype vp; /*定义视口类型变量*/ﻫsetcolor(MaxColors- 1 ); /*设置当前颜色为白色*/ﻫsetlinestyle( SOLID_LINE, 0, NORM_WIDTH);/*设置画线方式*/ﻫgetviewsettings( &vp );/*将当前视口信息装入vp所指的结构中*/rectangle( 0, 0,vp.right-vp.left, vp.bottom-vp.top); /*画矩形边框*/}ﻫ/*设计鼠标图形函数*/ﻫint arrow()ﻫ{int size;ﻫintraw[]={4,4,4,8,6,8,14,16,16,16,8,6,8,4,4,4}; /*定义多边形坐标*/setfillstyle(SOLID_FILL,2);/*设置填充模式*/fillpoly(8,raw); /*画出一光标箭头*/size=imagesize(4,4,16,16); /*测试图象大小*/ﻫrar=malloc(size); /*分配内存区域*/ﻫgetimage(4,4,16,16,rar); /*存放光标箭头图象*/ﻫputimage(4,4,rar,XOR_PUT);/*消去光标箭头图象*/ﻫreturn 0;}ﻫ/*按键函数*/int specialkey(void)ﻫ{ﻫint key;while(bioskey(1)==0); /*等待键盘输入*/ﻫkey=bioskey(0); /*键盘输入*/key=key&0xff?key&0xff:key>>8; /*只取特殊键的扫描值,其余为0*/ﻫreturn(key); /*返回键值*/}c语言课程设计_计算器设计进程调度代码ﻫﻫ#include "stdio.h"#include "stdlib.h"#include "string.h"ﻫtypedef struct nodeﻫ{charname[10]; /*进程标识符*/int prio; /*进程优先数*/int round; /*进程时间轮转时间片*/int cputime; /*进程占用CPU时间*/ﻫint needtime; /*进程到完成还要的时间*/int count; /*计数器*/ﻫchar state; /*进程的状态*/struct node *next; /*链指针*/ﻫ}PCB;ﻫPCB *finish,*ready,*tail,*run; /*队列指针*/ﻫint N; /*进程数*//*将就绪队列中的第一个进程投入运行*/firstin(){ﻫrun=ready;/*就绪队列头指针赋值给运行头指针*/run->state='R'; /*进程状态变为运行态*/ﻫready=ready->next; /*就绪对列头指针后移到下一进程*/ﻫ}ﻫ/*标题输出函数*/voidprt1(char a){ﻫif(toupper(a)=='P') /*优先数法*/printf("namecputime needtime priority state\n");ﻫelseﻫprintf(" name cputime needtimecount roundstate\n");ﻫ}ﻫ/*进程PCB输出*/ﻫvoid prt2(chara,PCB *q){ﻫif(toupper(a)=='P') /*优先数法的输出*/printf(" %-10s%-10d%-10d%-10d %c\n",q->name,q->cputime,q->needtime,q->prio,q->state);else/*轮转法的输出*/printf("%-10s%-10d%-10d%-10d%-10d %-c\n",q->name,q->cputime,q->needtime,q->count,q->round,q->state);}ﻫ/*输出函数*/voidprt(char algo){PCB *p;prt1(algo);/*输出标题*/ﻫif(run!=NULL) /*如果运行指针不空*/ﻫprt2(algo,run); /*输出当前正在运行的PCB*/p=ready; /*输出就绪队列PCB*/ﻫwhile(p!=NULL)ﻫ{prt2(algo,p);ﻫp=p->next;}p=finish; /*输出完成队列的PCB*/while(p!=NULL)ﻫ{ﻫprt2(algo,p);p=p->next;}getch(); /*压任意键继续*/}/*优先数的插入算法*/insert1(PCB *q){ﻫPCB *p1,*s,*r;ﻫint b;s=q; /*待插入的PCB指针*/p1=ready; /*就绪队列头指针*/r=p1; /*r做p1的前驱指针*/b=1;while((p1!=NULL)&&b) /*根据优先数确定插入位置*/if(p1->prio>=s->prio){ﻫr=p1;ﻫp1=p1->next;ﻫ}elseb=0;if(r!=p1)/*如果条件成立说明插入在r与p1之间*/ﻫ{r->next=s;s->next=p1;}elseﻫ{s->next=p1; /*否则插入在就绪队列的头*/ready=s;}ﻫ}ﻫ/*轮转法插入函数*/insert2(PCB *p2)ﻫ{tail->next=p2; /*将新的PCB插入在当前就绪队列的尾*/ﻫtail=p2;p2->next=NULL;ﻫ}ﻫ/*优先数创建初始PCB信息*/ﻫvoid create1(charalg){PCB *p;ﻫint i,time;ﻫchar na[10];ﻫready=NULL; /*就绪队列头指针*/finish=NULL; /*完成队列头指针*/ﻫrun=NULL; /*运行队列指针*/printf("Enter name and time of process\n"); /*输入进程标识和所需时间创建PCB*/ﻫfor(i=1;i<=N;i++)ﻫ{ﻫp=malloc(sizeof(PCB));ﻫscanf("%s",na);ﻫscanf("%d",&time);strcpy(p->name,na);p->cputime=0;p->needtime=time;ﻫp->state='w';p->prio=50-time;ﻫif(ready!=NULL)/*就绪队列不空调用插入函数插入*/insert1(p);ﻫelse{p->next=ready; /*创建就绪队列的第一个PCB*/ready=p;ﻫ}}ﻫclrscr();printf(" output of priority:\n");ﻫprintf("************************************************\n");ﻫprt(alg); /*输出进程PCB信息*/ﻫrun=ready; /*将就绪队列的第一个进程投入运行*/ﻫready=ready->next;ﻫrun->state='R';}ﻫ/*轮转法创建进程PCB*/void create2(char alg){PCB *p;inti,time;char na[10];ﻫready=NULL;finish=NULL;run=NULL;ﻫprintf("Enter name and time of round process\n");ﻫfor(i=1;i<=N;i++) {ﻫp=malloc(sizeof(PCB));scanf("%s",na);ﻫscanf("%d",&time);ﻫstrcpy(p->name,na);p->cputime=0;ﻫp->needtime=time;ﻫp->count=0; /*计数器*/ﻫp->st ate='w';ﻫp->round=2;/*时间片*/if(ready!=NULL)ﻫinsert2(p);else{ﻫp->next=ready;ﻫready=p;ﻫtail=p;}ﻫ}ﻫclrscr();printf(" output of round\n");printf("************************************************\n");ﻫprt(alg); /*输出进程PCB信息*/run=ready; /*将就绪队列的第一个进程投入运行*/ready=ready->next;ﻫrun->state='R';}/*优先数调度算法*/ﻫpriority(char alg){ﻫwhile(run!=NULL)/*当运行队列不空时,有进程正在运行*/{run->cputime=run->cputime+1;ﻫrun->needtime=run->needtime-1;ﻫrun ->prio=run->prio-3; /*每运行一次优先数降低3个单位*/ﻫif(run->needtime==0) /*如所需时间为0将其插入完成队列*/{run->next=finish;finish=run;ﻫrun->state='F'; /*置状态为完成态*/ﻫrun=NULL;/*运行队列头指针为空*/if(ready!=NULL) /*如就绪队列不空*/firstin(); /*将就绪对列的第一个进程投入运行*/ﻫ}ﻫelse /*没有运行完同时优先数不是最大,则将其变为就绪态插入到就绪队列*/if((ready!=NULL)&&(run->prio<ready->prio)){ﻫrun->state='W';ﻫinsert1(run);firstin(); /*将就绪队列的第一个进程投入运行*/ﻫ}ﻫprt(alg); /*输出进程PCB信息*/ﻫ}ﻫ}{ﻫrun->cputime=run-/*时间片轮转法*/ﻫroundrun(char alg)ﻫ{ﻫwhile(run!=NULL)ﻫ>cputime+1;ﻫrun->needtime=run->needtime-1;ﻫrun->count=run->count+1;ﻫif(run->needtime==0)/*运行完将其变为完成态,插入完成队列*/{ﻫrun->next=finish;finish=run;run->state='F';ﻫrun=NULL;ﻫif(ready!=NUL L)ﻫfirstin(); /*就绪对列不空,将第一个进程投入运行*/}ﻫelseﻫif(run->count==run->round)/*如果时间片到*/ﻫ{run->count=0; /*计数器置0*/ﻫif(ready!=NULL) /*如就绪队列不空*/{run->state='W'; /*将进程插入到就绪队列中等待轮转*/insert2(run);firstin();/*将就绪对列的第一个进程投入运行*/ﻫ}ﻫ}prt(alg); /*输出进程信息*/}ﻫ}/*主函数*/main()ﻫ{ﻫchar algo;/*算法标记*/clrscr();printf("type the algorithm:P/R(priority/roundrobin)\n");ﻫscanf("%c",&algo); /*输入字符确定算法*/ﻫprintf("Enter process number\n");ﻫscanf("%d",&N); /*输入进程数*/ﻫif(algo=='P'||algo=='p') {ﻫcreate1(algo);/*优先数法*/priority(algo);}elseﻫif(algo=='R'||algo=='r'){ﻫcreate2(algo); /*轮转法*/roundrun(algo);ﻫ}}[C语言课程设计]通讯录代码ﻫﻫ#include "stdio.h" /*I/O函数*/ﻫ#include"stdlib.h"/*标准库函数*/ﻫ#include "string.h"/*字符串函数*/ﻫ#include"ctype.h" /*字符操作函数*/ﻫ#defineM50 /*定义常数表示记录数*/typedef struct /*定义数据结构*/ﻫ{char name[20];/*姓名*/char units[30];/*单位*/ﻫ char tele[10]; /*电话*/}ADDRESS;/******以下是函数原型*******/ﻫintenter(ADDRESSt[]); /*输入记录*/void list(ADDRESS t[],int n);/*显示记录*/voidsearch(ADDRESS t[],int n); /*按姓名查找显示记录*/int delete(ADDRESS t[],intn);/*删除记录*/int add(ADDRESSt[],intn); /*插入记录*/voidsave(ADDRESS t[],int n); /*记录保存为文件*/int load(ADDRESS t[]); /*从文件中读记录*/ﻫvoid display(ADDRESSt[]);/*按序号查找显示记录*/void sort(ADDRESSt[],int n); /*按姓名排序*/ﻫvoid qseek(ADDRESS t[],int n);/*快速查找记录*/ﻫvoid copy(); /*文件复制*/void print(ADDRESS temp);/*显示单条记录*/ﻫint find(ADDRESSt[],int n,char*s);/*查找函数*/intmenu_select(); /*主菜单函数*//******主函数开始*******/main()ﻫ{inti;ﻫADDRESS adr[M]; /*定义结构体数组*/ﻫ intlength; /*保存记录长度*/ﻫ clrscr(); /*清屏*/ﻫfor(;;)/*无限循环*/{ﻫswitch(menu_select())/*调用主菜单函数,返回值整数作开关语句的条件*/{case0:length=enter(adr);break;/*输入记录*/ﻫ case 1:list(adr,length);break; /*显示全部记录*/case2:search(adr,length);break; /*查找记录*/ﻫ case3:length=delete(adr,length);break; /*删除记录*/case 4:length=add(adr,length); break; /*插入记录*/case 5:save(adr,length);break;/*保存文件*/ﻫcase 6:length=load(adr);break; /*读文件*/ case7:display(adr);break; /*按序号显示记录*/case8:sort(adr,length);break;/*按姓名排序*/case9:qseek(adr,length);break;/*快速查找记录*/case10:copy();break;/*复制文件*/case 11:exit(0); /*如返回值为11则程序结束*/ﻫ}}}/*菜单函数,函数返回值为整数,代表所选的菜单项*/ﻫmenu_select()ﻫ{ﻫ char s[80];int c;gotoxy(1,25);/*将光标定为在第25行,第1列*/ﻫprintf("pressany key enter menu......\n");/*提示压任意键继续*/ﻫ getch();/*读入任意字符*/ﻫ clrscr(); /*清屏*/ﻫ gotoxy(1,1);ﻫprintf("********************MENU*********************\n\n");printf(" 0. Enterrecord\n");ﻫ printf(" 1.List the file\n");printf(" 2.Searchrecord onname\n");printf(" 3. Delete arecord\n");ﻫ printf(" 4.addrecord\n");ﻫ printf(" 5. Savethe file\n");printf(" 6. Loadthefile\n");printf(" 7. display record on order\n");printf(" 8. sort tomake newfile\n");ﻫ printf(" 9.Quick seekrecord\n");ﻫprintf(" 10. copy the fileto new file\n");printf(" 11. Quit\n");ﻫ printf("***********************************************\n");do{printf("\n Enteryou choice(0~11):"); /*提示输入选项*/scanf("%s",s); /*输入选择项*/c=atoi(s);/*将输入的字符串转化为整型数*/ﻫ }while(c<0||c>11); /*选择项不在0~11之间重输*/returnc; /*返回选择项,主程序根据该数调用相应的函数*/ﻫ}ﻫ/***输入记录,形参为结构体数组,函数值返回类型为整型表示记录长度*/ﻫint enter(ADDRESS t[])ﻫ{int i,n;char *s;clrscr(); /*清屏*/ﻫprintf("\nplease input num \n");/*提示信息*/ﻫ scanf("%d",&n);/*输入记录数*/printf("please input record\n");/*提示输入记录*/ﻫ printf("name unit tele phone\n");ﻫ printf("------------------------------------------------\n");for(i=0;i<n;i++)ﻫ {scanf("%s%s%s",t[i].name,t[i].units,t[i].tele); /*输入记录*/ﻫprintf("----------------------------------------------\n");ﻫ }return n; /*返回记录条数*/}ﻫ/*显示记录,参数为记录数组和记录条数*/ﻫvoid list(ADDRESS t[],intn){ﻫint i;clrscr();ﻫ printf("\n\n*******************ADDRESS******************\n");printf("name unit telephone\n");printf("------------------------------------------------\n");for(i=0;i<n;i++)printf("%-20s%-30s%-10s\n",t[i].name,t[i].units,t[i].tele);ﻫ if((i+1)%10==0) /*判断输出是否达到10 {ﻫ printf("Press any keycontinue...\n"); /*提示信息*/条记录*/ﻫgetch(); /*压任意键继续*/}ﻫ printf("************************end*******************\n");}ﻫ/*查找记录*/void search(ADDRESS t[],int n)ﻫ{char s[20]; /*保存待查找姓名字符串*/ﻫ int i; /*保存查找到结点的序号*/clrscr(); /*清屏*/printf("please search name\n");ﻫscanf("%s",s); /*输入待查找姓名*/i=find(t,n,s);/*调用find函数,得到一个整数*/if(i>n-1) /*如果整数i值大于n-1,说明没找到*/ﻫ printf("not found\n");ﻫelseprint(t[i]);/*找到,调用显示函数显示记录*/}ﻫ/*显示指定的一条记录*/void print(ADDRESS temp){clrscr();ﻫ printf("\n\n********************************************\n");printf("name unit telephone\n");printf("------------------------------------------------\n");printf("%-20s%-30s%-10s\n",temp.name,temp.units,temp.tele);ﻫ printf("**********************end***********************\n");}/*查找函数,参数为记录数组和记录条数以及姓名s */intfind(ADDRESSt[],int n,char*s){inti;for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/{ﻫ if(strcmp(s,t[i].name)==0) /*记录中的姓名和待比较的姓名是否相等*/return i; /*相等,则返回该记录的下标号,程序提前结结束*/ﻫ}return i; /*返回i值*/ﻫ}ﻫ/*删除函数,参数为记录数组和记录条数*/int delete(ADDRESS t[],int n){char s[20]; /*要删除记录的姓名*/int ch=0;int i,j;printf("please deletedname\n");/*提示信息*/scanf("%s",s);/*输入姓名*/ﻫ i=find(t,n,s); /*调用find函数*/ﻫ if(i>n-1) /*如果i>n-1超过了数组的长度*/printf("no foundnot deleted\n"); /*显示没找到要删除的记录*/else{print(t[i]); /*调用输出函数显示该条记录信息*/。
C语言程序设计学生成绩管理系统实验报告

移通学院C语言程序设计报告书设计名称:学生成绩管理系统专业:指导老师:班级:姓名:学号:座号:时间一、实验目的1.在编辑应用程序过程中,逐步加深对C语言编程的理解;2.加强实践的能力,动手能力,同时进一步对所学的知识进行巩固;3.培养初步编程的能力,为以后的学习奠定基础;二、实验内容运用所学的C语言知识编辑一个应用程序:学习成绩管理系统三.系统软件环境:本程序主要运行在: Visual C++ 6.0Turbo C/C++ 3.0四.课程设计题目:学生成绩管理系统程序说明:有N个学生,每个学生的数据包含学号不重复、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统,使之能提供以下功能:1主菜单2各菜单项功能①成绩录入:输入学生的学号、姓名及三门课的成绩;②成绩查询:按学号查询学生记录;③成绩统计:计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序后输出;④退出系统:退出整个系统即主菜单;五.数据结构设计描述:↓int num; /定义学号,变量为整型/char name; /定义姓名,变量为字符型/int score; /定义课程的成绩,变量为整型/float average; /定义平均分,变量为浮点型/七.系统各函数的功能,、相互调用关系1.函数实现功能说明:1menu函数是定义一个菜单函数,其功能在于输出菜单界面供使用者选择;2input函数是定义用于输入学生信息;3select 函数是定义用于查询学生信息;包括学号、姓名及各科成绩;4statistics 函数计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序输出;2.相互调用关系:Main函数调用menu函数;Menu 函数可以调用input 函数、select函数和statistics 函数八.心得体会C语言是一种较为基础和普遍的编程语言,应用相当广泛,这次课程设计的要求与C语言的广泛应用相比较还有很大的差距;我们对于C语言的理解和使用还处在一个初级的阶段,我们要想掌握它,要学习的还很多,同时要懂得创新,许多的编程方法都是人们一步一步总结出来的,我想我们也要努力拓展自己的思维,努力去寻求新的方法,以创造出更为完善的应用程序; 九.程序:include <stdio.h>include <stdlib.h>include <conio.h>define N 3 /学生人数/define M 3 /课程门数/struct student{int num; /学号/char name20; /姓名/int score3; /三门课成绩/float average;}stuN; /学生数/void input; /查询/void select; /统计/void menu;void input{int i,j;printf"\t\t①成绩录入\n\n";fori=0;i<N;i++{printf"请输入学号:";scanf"%d",&stui.num;printf"请输入姓名:";scanf"%s",&;forj=0;j<M;j++{printf"第%d门成绩的分数:",j+1;scanf"%d",&stui.scorej;}printf"\n\n";}printf"\n\n";printf"输入完毕按任意键返回主菜单";}/2.查询/void selectint no{int i;printf"学生%d号: \n",no; printf"学号: %d\n",stuno-1.num; printf"姓名: %s\n",;for i=0;i<M;i++{printf"第%d门课程的成绩为: ",i+1; printf"%d\n",stuno-1.scorei;}printf"\n按任意键返回主菜单";getch;}/3.统计/void statistics{float temp=0;int i=0;/学生成绩平均分/temp=0;printf"\t\t③成绩统计\n\n";forj=0;j<N;j++{fori=0;i<M;i++{temp=temp+stuj.scorei;}stuj.average=temp/N;printf"\n学生%s的成绩平均成绩为:",;printf"%0.2f分",stuj.average;temp=0;}/排序/for j=0;j<N;j++fori=0;i<N-j-1;i++ifstui.average<stui+1.average{ temp=stui.average;stui.average=stui+1.average;stui+1.average=temp;}printf"\n\n学生平均成绩前三名:";fori=0;i<3;i++{printf"\n第%d名:%0.2f分",i+1,stui.average;}printf"\n\n按任意键返回主菜单";getch;}void menu{ int num=0;int n=0;printf"\n\t\t\t学生成绩管理系统\n\n";printf"\n\t\t\t①成绩录入\n\t\t\t②成绩查询\n\t\t\t③成绩统计\n\t\t\t④退出系统\n";printf"\t\t\tchoose:";scanf"%d",#switchnum{case 1:system"cls";input;break;case 2:system"cls";printf"\t\t②成绩查询\n\n"; printf"请输入要查询的学生号1~3:";scanf"%d",&n;selectn;break;case 3:system"cls";statistics;break;case 4:exit0;default:;}}void main{while1{system"cls"; /清屏/menu;}}。
c程序实验报告(学生成绩管理系统).doc

附件1:C语言综合实验题目学生成绩管理系统学院理学院专业电子信息科学与技术班级电信科1002姓名李珍2011 年06 月30 日目录目录 (2)一:需求分析 (3)二:总体分析 (3)1:进入界面 (3)2:选择界面 (3)3:创建函数(creat) (4)4:追加函数(add) (5)5:查询函数 (6)6:修改函数 (7)7:删除函数 (8)8:统计函数 (9)9:排序函数 (10)10:显示函数 (11)。
(11)三:详细设计 (11)1.进入界面 (11)2:选择界面 (12)3.创建学生的资料 (12)4.追加学生的资料 (13)5.查询学生的资料 (14)6,.修改学生资料 (14)7.删除学生资料 (15)8. 统计学生资料 (16)9对学生资料进行排序 (16)10.显示函数 (17)11.退出 (18)四:调试与测试 (18)4.1:调试 (18)4.2测试结果 (18)五:结论与心得体会 (18)六:附录 (18)6.1:程序源代码 (18)6.2:参考文献 (30)6.3:本科生《C语言综合实验》成绩评定表 (30)学生成绩管理系统一:需求分析学生成绩管理系统是学生熟悉的教学系统之一,系统以学生成绩的输入、输出、插入、删除、排序、统计等基本功能模块为基础,将结构体、链表、文件等主要知识点结合在一起,运用菜单、排序等一些常用算法,解决学生成绩管理的实际问题。
设计一个学生成绩管理系统,对上学期的本班的学习成绩进行管理,可以用数组或链表来设计这个程序,具有查询和检索功能,并且能够对指定文件操作,也可将多个文件组成一个文件。
1):每一条记录包括一个学生的学号、姓名、性别、各门课成绩(上学期的科目)、平均成绩。
2):创建功能:可以一次完成若干条记录的输入。
3):显示输出功能:完成全部学生记录的显示。
4):查找功能:完成按姓名或学号查找学生记录,并显示。
5):排序功能:按学生平均成绩进行排序。
c语言程序设计课程设计报告学生成绩管理系统

C语言程序设计课程设计报告设计题目:学生成绩管理系统学号班级姓名完成方式:(单选)自我评分:(单选)●独立完成●优秀○参考他人工作的基础上完成○良好○在他人的帮助下完成○中等○完整拷贝他人成果○及格○不及格2011年5月11日一、总体设计1.程序的总体设计程序总框架2. 数据结构结构体数组struct student /*定义结构体变量student*/{int num;char name[10];int gen;int ch,en,math,tot;};Struct student Stu[100];3. 函数原型声明的说明(功能,参数,返回值)1).输出不及格名单:void failsbj(int n,struct student stu[]) /*输出不及格的名单,只要有一科不及格即进入名单*/2).计算平均分void sumup(int *n,struct student (*stu)[]) /*计算每个人各科平均分的函数*/3).打印所有数据void display(int n,struct student stu[]) /*输出所有数据*/ 4).检索void search(int n,struct student stu[]) /*依照名字或者数字搜索条目*/5).排序void assort(int n,struct student (*stu)[]) /*排序模块*/ 6).增加条目void add(int *n,struct student (*stu)[]) /*加入条目模块*/ 7).删除条目void del(int *n,struct student (*stu)[]) /*删除条目模块*/ 8).编辑条目void edit(int *n,struct student (*stu)[]) /*编辑条目模块*/ 9).导出列表void save(int *n,struct student (*stu)[]) /*将结果另存为*/ 10).统计分析void anlz(int *n,struct student (*stu)[]) /*统计全班成绩,包括求出各分数段人数,各科班平均分*/ 4. 流程图二、详细设计1.主程序如上图。
c语言课程设计学生成绩管理系统报告

c语言课程设计学生成绩管理系统报告一、教学目标本课程旨在通过C语言编程实现一个学生成绩管理系统,让学生掌握C语言的基本语法、数据结构、函数、文件操作等知识,培养学生编写程序解决实际问题的能力。
具体目标如下:1.知识目标:(1)掌握C语言的基本语法和编程技巧;(2)了解数据结构的基本概念,学会使用数组、链表等数据结构;(3)熟悉函数的定义和调用,掌握函数的参数传递和返回值;(4)掌握文件操作,了解文件读写的原理和方法。
2.技能目标:(1)能够独立编写C语言程序,解决实际问题;(2)具备良好的编程习惯,代码结构清晰、可读性强;(3)掌握调试和优化程序的方法,提高程序的运行效率;(4)学会使用版本控制系统,如Git,进行代码管理和协作开发。
3.情感态度价值观目标:(1)培养学生的编程兴趣,激发学习C语言的积极性;(2)培养学生团队协作精神,提高沟通与协作能力;(3)培养学生的问题解决能力,培养创新意识和持续学习的态度;(4)培养学生具有良好的职业道德,遵守编程规范,尊重他人代码。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、函数、文件操作等。
具体安排如下:1.C语言基本语法:介绍C语言的数据类型、运算符、表达式、控制语句等基本概念;2.数据结构:讲解数组、链表、栈和队列等数据结构的基本原理和应用;3.函数:讲解函数的定义、声明、调用,以及函数的参数传递和返回值;4.文件操作:介绍文件的概念、文件读写的方法和技巧。
三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法相结合,以激发学生的学习兴趣和主动性。
具体方法如下:1.讲授法:通过讲解C语言的基本语法、数据结构、函数和文件操作等知识,使学生掌握课程的基本概念和编程技巧;2.案例分析法:分析实际编程案例,让学生学会将理论知识应用于实际问题解决;3.实验法:安排上机实验,让学生动手编写程序,培养实际编程能力;4.小组讨论法:学生进行小组讨论,培养团队协作和沟通能力。
C语言课程设计-学生成绩管理系统报告书

目录一课题意义 (3)1.1 成绩管理系统的背景分析 (3)1.2学生成绩管理系统设计的目标的分析 (5)二算法分析 (6)2.1学生成绩管理系统模块图 (6)2.2学生成绩管理功能介绍 (7)三学生成绩管理系统设计功能的实现 (8)3.1 成绩管理系统的登录页面 (8)3.2 学生成绩管理系统的录入 (10)3.3 学生成绩管理系统的显示 (12)3.4 学生成绩管理系统的删除 (13)3.5 学生成绩管理系统的查询 (16)3.6学生成绩管理系统的保存 (17)四程序测试 (20)五总结 (21)六参考文献 (22)一课题意义1.1成绩管理系统的背景分析当今时代是飞速发展的信息时代,在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。
计算机的最大好处在于利用它能够进行信息管理。
使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。
尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。
管理信息系统是进行信息的采集、存储、加工、维护和使用的系统,它是随着管理科学和技术科学的发展而形成的。
学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段,对学生来说可以轻松的查阅自己在校的成绩以及信息等。
但是一直以来人们都是靠传统人工的方式管理学生成绩,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对学生成绩信息进行管理,有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高学生成绩管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。
c语言课程设计学生成绩管理系统报告(一)

c语言课程设计学生成绩管理系统报告(一)C语言课程设计学生成绩管理系统报告介绍•学生成绩管理系统的设计背景•项目的目的和意义系统需求分析•功能需求–学生信息录入–成绩管理–查询与统计•性能需求–系统响应速度–数据存储和读取效率系统设计•系统结构•数据库设计•模块功能划分技术选型•编程语言选择:C语言•数据库选择:SQLite 实现步骤•搭建开发环境•创建学生信息录入模块•创建成绩管理模块•创建查询与统计模块•进行系统集成和测试系统遇到的问题与解决方案•内存管理问题•数据库操作问题•用户界面设计问题系统改进与优化•提升性能•增加功能•修复bug结果与展望•成果总结•可能的进一步发展方向参考资料•《C语言程序设计》•《数据库系统概念》•网上开源学生成绩管理系统案例介绍本文将介绍一款基于C语言的学生成绩管理系统的设计与开发。
学生成绩管理系统是一种用于方便高校或学校管理学生成绩的工具。
本项目的目的是提供一个简单易用、功能全面的学生成绩管理系统。
系统需求分析功能需求学生成绩管理系统需具备以下功能:1.学生信息录入:能够方便地录入学生的基本信息,包括姓名、学号、班级等。
2.成绩管理:能够记录学生的各科成绩,并能对成绩进行增、删、改、查等操作。
3.查询与统计:能够根据学号、姓名等条件进行查询,还能对成绩进行统计,包括总分、平均分等。
性能需求为确保学生成绩管理系统的良好使用体验,有以下性能需求:1.系统响应速度:系统应具备快速响应用户操作的能力,避免出现卡顿现象。
2.数据存储和读取效率:系统应能高效地存储和读取学生信息和成绩数据,以保证系统的稳定性和可靠性。
系统设计系统结构学生成绩管理系统采用前后端分离的设计方式,前端使用C语言编写,后端使用SQLite数据库进行数据存储和读取。
系统结构由三个主要模块组成:学生信息录入模块、成绩管理模块和查询与统计模块。
数据库设计系统使用SQLite数据库进行数据存储和读取。
数据库设计包括学生表和成绩表,学生表存储学生的基本信息,成绩表存储学生的各科成绩。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《C++程序设计》课程设计报告设计题目:学生成绩管理系统目录一、设计任务与要求 (3)1.设计内容 (3)2.课程设计的要求 (3)二、系统分析(需求分析) (3)1.需求分析 (3)2.系统性能要求 (3)3.系统的功能分析 (3)4.系统功能模块 (3)5.模块框架图 (3)三、系统设计与实现 (4)1.界面设计 (4)2.功能设计与实现 (4)四、运行显示 (4)五、总结 (11)六、参考资料 (11)附录:源程序 (11)一、设计任务与要求1.目的:通过一个实际的系统开发,提高学生应用所学知识分析问题,解决问题与实际动手的能力,更加熟练的掌握C++程序开发的基本方法与基本步骤,对系统开发时间又进一步体会。
从而综合复习《C++程序设计语言》的所有知识点,进一步熟练面向对象程序的开发方法与流程,提高学生独立分析问题与解决问题的能力。
真正理解书本知识,牢固掌握课堂教学内容。
为毕业设计及毕业后从事专业技术工作打下基础,提高学生全面素质。
2.课程设计的要求:(1)要求用VC++语言来实现一个简单的学生数据管理系统,该系统完成后基本上要能够无错运行,能达到学生成绩管理系统的基本要求。
(2)各个功能分别是用函数来完成,函数存放在一个.cpp文件中。
(3)准备系统运行的模拟数据不得少于十条。
(4)成绩管理系统至少具有以下功能:1)输入:学生的基本信息,包括学号、姓名、性别、籍贯、VC++成绩、英语成绩、物理成绩等;2)计算:每个学生的总成绩、平均成绩所有学生单科的平均成绩,找出总成绩与单科成绩最高的学生并输出;3)查询:可以按学好姓名等进行查询;4)排序:可以按学号、姓名、VC++成绩、英语成绩、物理成绩、总成绩、平均成绩等进行排序并输出;5)删除:删除某条记录;6)帮助与关于;7)退出:推出整个系统的运行。
8)一些时间富裕的学生可以增加更多的菜单项,比如设置颜色、字体风格等。
二、系统分析(需求分析)1.需求分析:a.能对学生各科成绩进行录入。
b.能显示各科成绩平均分。
c.能显示总成绩与单科分最高的同学。
d.能对删除学生信息。
e.能对学生的成绩按姓名、学号进行查询。
f.能按学号与成绩排序。
g.能显示所有学生信息。
2.系统性能要求:a.系统安全、可靠;b.功能齐全;c.操作方便、界面友好;d易于维护与扩充。
3.系统的功能分析:资料维护:系统维护包括对学生信息的录入操作及数据表中的信息进行浏览。
系统功能:可以对数据表中的信息进行浏览。
系统查询:可以对学生的信息进行查询。
4.系统功能模块学生成绩查询系统有:成绩录入、删除,数据查询,排序显示构成。
5.模块框架图三、系统设计与实现1.界面设计程序运行后会出现一个简捷的窗口,便于用户查询数据。
2.功能设计与实现通过主窗体调用其他窗体,具体实现可以参照系统分析相关内容。
应用系统主控界面包括记录编辑与记录查询等功能模块。
记录编辑功能完成学生成绩记录编辑与记录查询功能。
记录查询功能可以对数据各分类的记录进行查询。
四、运行显示1.初始页界面:2.输入学生信息界面:“请按照提示输入学生信息……”是帮助与关于,其他同学的信息如该截图依照提示录入即可。
录入完毕显示界面为:3.显示总成绩与各单科分最高的同学的界面为:4、删除学生的信息界面为:5. 按姓名查询:6. 按学号查询:7. 排序分系统:1)姓名排序:2)学号排序:3)VC++成绩排序:其他排序法与以上一样,此处不再一一显示。
8. 显示所有学生信息:9. 保存文件:10退出系统:此外,界面的颜色与文字的颜色,也是可以改变的。
system("color 97"); //设置背景与字体颜色F是背景颜色的设置值0是字体颜色的设置值(程序第764行)改变9与7的值即改变颜色。
五、总结此次c++课程设计,在指导教师的精心教导下,我们学会了如何用C++编写一个简单的应用程序。
首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。
程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。
根据C++课程所学的概念、理论与方法,按照C++程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C++语言的理解与掌握。
理论联系实际,加深与巩固所学的理论知识,提高实践能力与计算机的综合运用能力。
我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。
六、参考资料C++程序设计谭浩强清华大学出版社附录:源程序#include<stdlib.h>#include<conio.h>#include<iostream>#include<string>#include<fstream>#include<iomanip>using namespace std;class studentprivate:char name[20]; //姓名char sex[8]; //性别char native[8]; //籍贯double cpro;double english;double physical;double allscore;double average; //课程int order; //名次int number; //学号public:student(){}student(char* n,int nu,char* sex,char* native,double cc,double eng,double phy,double as,double av)strcpy(this->name,n);this->number=nu;strcpy(this->native,native);strcpy(this->sex,sex);this->cpro=cc;this->english=eng;this->physical=phy;this->allscore=as;this->average=av;double getcpro()return this->cpro;double getenglish()return this->english;double getphysical()return this->physical;double getalls()return this->allscore;double getAverage()return this->average;char* getname()return this->name;int getnumber()return this->number;friend void ShowHightsrcore();friend void ShowStuInfo();friend void QueryByNumber();friend void QueryByName();friend void SaveFlie();friend void InputStudentInfo();student s[50]; //指针对象,最多存50个学生数据int index = 0;void ShowMenu()cout<<"******************************************"<<endl;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<<" 7、显示所有学生信息"<<endl;cout<<" 8、保存文件"<<endl;cout<<" 9、退出系统"<<endl;cout<<"********************************************"<<endl;cout<<" 选择0-9数字进行操作"<<endl;cout<<"********************************************"<<endl; void InputStudentInfo()char getkey = 0; //是否录入的选择标记char name[20] = {0}; //姓名临时中间变量int number=0; //学号char sex[8]={0}; //性别char native[8]={0}; //籍贯double cpro = 0; //c语言成绩double english = 0; //英语成绩double physical = 0; //物理成绩double allscore = 0; //总成绩double average = 0; //平均成绩int core = 0; //名次cout<<"请按照提示输入学生信息.. .. .."<<endl;docout<<endl<<"学号:";cin>>number;bool IsOk;dobool IsOk = true;for(int n=0;n<index;n++)if(number==s[n].number)cout<<"输入的学号重复,请重新输入:"<<endl;cin>>number;IsOk = false;break;}while(!IsOk);cout<<endl<<"姓名:";cin>>name;cout<<endl<<"性别:";cin>>sex;cout<<endl<<"籍贯:";cin>>native;cout<<endl<<"C++成绩:";cin>>cpro;cout<<endl<<"英语成绩:";cin>>english;cout<<endl<<"物理成绩:";cin>>physical;cout<<endl;allscore=cpro + english + physical;//计算该生的总成绩cout<<" 总成绩:"<<allscore<<endl; //显示该生总成绩average= allscore / 3; //技术该生平均成绩总成绩/科目数cout<<" 平均成绩:"<<average<<endl;//显示该生平均成绩s[index]= student(name, number,sex,native,cpro,english,physical,allscore,average);cout<<" 数据输入成功,想继续输入吗?( y继续/ 任意键退出录入):";cin>>getkey;index++;}while( getkey == 'y' || getkey == 'Y' );cout<<"学生数据录入完毕,键入任意键返回主菜单。