c语言课程设计-学生成绩管理系统-可自行修改讲解学习

合集下载

成绩管理系统c语言课程设计

成绩管理系统c语言课程设计

成绩管理系统c语言课程设计一、教学目标本课程旨在通过成绩管理系统的课程设计,让学生掌握C语言编程的基本语法,理解结构化程序设计的基本思想,并能够运用C语言实现简单的系统程序。

在知识目标方面,学生需要掌握C语言的基本数据类型、控制结构、函数等语法知识。

在技能目标方面,学生需要能够独立编写并调试C语言程序,具备一定的程序设计能力。

在情感态度价值观目标方面,学生应该培养对计算机科学的兴趣,增强解决实际问题的信心和勇气。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、控制结构、函数等知识,通过成绩管理系统的实例,让学生了解并掌握结构化程序设计的方法。

具体的教学大纲安排如下:1.第1-2课时:C语言概述,基本数据类型和输入输出语句。

2.第3-4课时:控制结构,包括条件语句和循环语句。

3.第5-6课时:函数的定义和调用,掌握函数的参数传递和返回值。

4.第7-8课时:数组和字符串的处理,实现成绩管理系统的数据存储。

5.第9-10课时:指针的概念和应用,优化成绩管理系统的数据处理。

6.第11-12课时:结构体和文件操作,完善成绩管理系统的功能。

三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用讲授法、讨论法、案例分析法和实验法等多种教学方法。

1.讲授法:用于讲解C语言的基本语法和概念。

2.讨论法:通过分组讨论,让学生深入理解程序设计中的问题。

3.案例分析法:分析成绩管理系统的实现过程,让学生了解实际应用。

4.实验法:让学生动手编写和调试程序,提高编程能力。

四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备等。

1.教材:选用《C程序设计语言》作为主要教材,辅以《C语言编程实例教程》进行实践指导。

2.参考书:提供《C语言程序设计》等参考书,供学生深入研究。

3.多媒体资料:制作课件和教学视频,方便学生复习和自学。

4.实验设备:提供计算机实验室,让学生进行编程实践。

五、教学评估本课程的教学评估将采用多元化评价方式,全面客观地评价学生的学习成果。

c语言成绩管理系统课程设计

c语言成绩管理系统课程设计

c语言成绩管理系统课程设计一、教学目标本课程的目标是使学生掌握C语言编程的基本技能,能够运用C语言设计简单的成绩管理系统。

通过本课程的学习,学生将能够理解C语言的基本语法和数据结构,掌握函数的定义和调用,学会使用指针和数组,以及熟练运用条件语句和循环语句。

此外,学生还将培养编程思维和解决问题的能力,提高团队合作和沟通的能力。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、函数、指针、数组、控制语句等。

具体包括以下几个方面的内容:1.C语言的基本语法:包括变量、常量、运算符、表达式等。

2.数据结构:包括整型、浮点型、字符型等基本数据类型,以及数组、结构体、指针等复杂数据类型。

3.函数:包括函数的定义、声明和调用,以及函数的参数传递和返回值。

4.指针:包括指针的概念、指针的运算、指针与数组的关系等。

5.数组:包括一维数组和多维数组的定义和使用。

6.控制语句:包括条件语句和循环语句的语法和应用。

三、教学方法本课程将采用讲授法、案例分析法和实验法等多种教学方法相结合的方式进行教学。

1.讲授法:通过教师的讲解,使学生掌握C语言的基本语法和数据结构,理解函数的定义和调用,以及掌握指针和数组的使用方法。

2.案例分析法:通过分析实际案例,使学生学会运用C语言解决实际问题,培养编程思维和解决问题的能力。

3.实验法:通过实验操作,使学生熟练掌握C语言编程的技巧和方法,提高编程能力。

四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备等。

1.教材:选用《C程序设计语言》作为主要教材,为学生提供系统的C语言知识体系。

2.参考书:提供《C Primer Plus》等参考书,供学生自主学习和拓展知识。

3.多媒体资料:制作PPT课件,通过图片、动画等形式展示C语言编程的概念和实例。

4.实验设备:提供计算机实验室,供学生进行编程实验和实践。

五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分,以全面客观地评价学生的学习成果。

c语言学生成绩管理系统课程设计

c语言学生成绩管理系统课程设计

c语言学生成绩管理系统课程设计一、课程目标知识目标:1. 学生能理解C语言在开发学生成绩管理系统中的应用,掌握基本的程序结构和语法。

2. 学生能运用C语言实现对学生成绩的录入、查询、修改、删除和排序等功能。

3. 学生了解并掌握数组、结构体、文件操作等C语言核心知识在学生成绩管理系统中的运用。

技能目标:1. 学生能够独立设计并编写简单的C语言程序,实现学生成绩管理系统的基本功能。

2. 学生能够运用调试工具对程序进行调试,找出并修正程序中的错误。

3. 学生能够通过分析实际需求,提出合理的解决方案,提高编程解决问题的能力。

情感态度价值观目标:1. 学生通过学习C语言学生成绩管理系统,培养对计算机编程的兴趣和热情。

2. 学生在团队协作中,学会沟通、分享、合作,培养良好的团队精神和编程习惯。

3. 学生通过解决实际问题,体会编程带来的成就感,增强自信心,培养积极向上的学习态度。

课程性质:本课程属于实践性较强的课程,旨在让学生通过动手实践,掌握C 语言编程技能,并能够应用于实际问题的解决。

学生特点:学生已经具备一定的C语言基础,对编程有一定的了解,但对复杂程序的设计和开发尚处于起步阶段。

教学要求:结合学生特点和课程性质,本课程要求教师注重实践操作,引导学生通过动手实践掌握编程技能,并在实践中提高解决问题的能力。

同时,注重培养学生的团队协作和沟通能力,提高学生的综合素质。

通过本课程的学习,使学生能够达到上述课程目标,并为后续相关课程的学习打下坚实基础。

二、教学内容1. C语言基础知识回顾:包括数据类型、运算符、控制结构等,为后续课程打下基础。

(对应教材章节:1-3章)- 数据类型、变量定义- 运算符、表达式- 顺序结构、分支结构、循环结构2. 数组与函数:介绍数组的使用以及函数的定义与调用,为成绩管理系统提供数据存储和处理方法。

(对应教材章节:4-5章)- 一维数组、二维数组- 函数的定义、调用、参数传递- 递归函数3. 结构体与文件操作:讲解结构体的定义和使用,以及文件操作的基本方法,为成绩管理系统提供数据存储和读取功能。

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

学生成绩管理系统(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语言课程设计—学生成绩管理系统

#include ”stdio.h”#include ”string.h”#include "stdlib.h"#include "conio.h"#include ”string.h”#include "fcntl。

h"typedef struct student{int num;char grade[10];char classroom[10];char name[10];float score_math;float score_chinese;float score_english;float average;float sum;}STU;typedef struct Node{STU data;struct Node *next;}*linklist;void menu();char *loginpassword(char password[],int n);//登录验证密码函数声明//linklist createstulist(linklist head);//创建学生链表即学生信息录入函数声明// void printstulist(linklist head);//学生信息输出函数声明//void searchstu_namelist(linklist head);//学生信息查询函数声明(按姓名)// void searchstu_numlist(linklist head);//学生信息查询函数声明(按学号) linklist modifystulist(linklist head);//学生信息修改函数声明//linklist delatestulist(linklist head);//学生信息删除函数声明//void savestulist(linklist head);//学生信息保存到文件函数声明// linklist loadstulist();//从文件中读取学生信息函数声明// void sortstulist(linklist head); //成绩排名函数(按年级)声明//void sort(STU stu[],int flag); //学生分班函数声明//void sortstuclass(linklist head); //成绩排名函数(按班级)声明////*************************************//void main(){char admin[]=”zhangqiong";char password[]=”123456";char person[20];char password1[10];int i;printf(”********************************************************************************\n”);printf("\t\t **********欢迎来到学生成绩管理系统**********\n\n");printf(”********************************************************************************\n\n”);printf(”\t\t\t\t用户登录\n\n\n\n");for(i=0;i<3;i++){printf("用户名:”);gets(person);fflush(stdin);printf(”\n\n\n”);loginpassword(password1,10);printf("\n\n\n”);if(strcmp(admin,person)==0&&strcmp(password,password1)==0){printf(”\t\t\t\t成功登录,亲!\n”);printf("\n\n”);printf(”按任意键继续!”);getch();menu();break;}elseprintf("\t用户名或者密码输入错误\n”);}if(i==3)printf("\t对不起,您今天输入次数太多,已被强制退出!\n”);}//**********************************************************////**********************************************************//char *loginpassword(char password[],int n)//登录密码函数,隐藏密码可见//{int i=0;int m=0;char ch;printf("用户密码:”);while((ch=getch())!='\r’&&m〈n){password[i++]=ch;printf(”*");}password[i]='\0';return password;}//***************************************************// void menu()//主界面函数//{system("cls");linklist L;L=(linklist)malloc(sizeof(Node));L—>next=NULL;int ch;do{printf(”\t -——-----—-******——--——--—---******—————-————-******-—-—-—-—-—\n\n");printf("\t\t\t**********学生成绩管理系统***********\n\n”);printf("\t ——----——--******-—-——------—******—---———--—-******—---———-——\n\n\n\n\n");printf("\t1。

学生成绩管理系统c语言课程设计

学生成绩管理系统c语言课程设计

学生成绩管理系统c语言课程设计1. 介绍学生成绩管理系统是一种可以帮助学校或教育机构管理学生的成绩信息的软件系统。

它能够记录和管理学生的各门课程的成绩,提供成绩查询、统计分析以及生成报表的功能。

在这个项目中,我们将使用C语言来设计和实现一个简单的学生成绩管理系统。

2. 功能需求2.1 学生信息管理•添加学生信息:输入学生的学号、姓名、性别、年龄等基本信息,并将其保存到系统中。

•修改学生信息:根据学生的学号或姓名,找到对应的学生信息,并允许修改其基本信息。

•删除学生信息:根据学生的学号或姓名,找到对应的学生信息,并从系统中删除。

2.2 成绩管理•录入学生成绩:输入学生的学号或姓名,根据学号或姓名找到对应的学生信息,并记录其各门课程的成绩。

•查询学生成绩:根据学生的学号或姓名,找到对应的学生信息,并显示其各门课程的成绩。

•统计学生成绩:计算学生的总分、平均分等统计信息,并按照成绩排名进行排序并显示。

•生成成绩报表:将学生的成绩信息按照一定的格式输出到文件中,以方便查阅和打印。

2.3 界面设计•主菜单:显示系统的功能选项,包括学生信息管理、成绩管理、退出等选项。

•学生信息管理菜单:显示学生信息管理的功能选项,包括添加学生信息、修改学生信息、删除学生信息等选项。

•成绩管理菜单:显示成绩管理的功能选项,包括录入学生成绩、查询学生成绩、统计学生成绩、生成成绩报表等选项。

•输入提示:在功能选项中,根据需要给出相应的输入提示,以引导用户正确地操作系统。

3. 设计思路3.1 数据结构设计为了实现学生成绩管理系统,我们需要设计合适的数据结构来存储学生信息和成绩。

在这个项目中,我们可以使用结构体来表示学生信息,如下所示:struct Student {int id; // 学号char name[20]; // 姓名char gender[10]; // 性别int age; // 年龄float grades[5]; // 各门课程成绩};3.2 模块设计为了实现功能需求中的各项功能,我们需要设计相应的模块来实现。

c语言学生成绩管理系统课程设计

c语言学生成绩管理系统课程设计

c语言学生成绩管理系统课程设计一、课程目标知识目标:1. 学生能理解C语言在开发学生成绩管理系统中的应用和重要性。

2. 学生掌握C语言中的基本数据类型、运算符、控制结构等基础知识,并能运用到成绩管理系统的设计与实现中。

3. 学生能掌握文件操作、数组、结构体等C语言高级特性,用以存储、查询和管理学生成绩。

技能目标:1. 学生能够运用所学知识,设计并编写一个简单的学生成绩管理系统。

2. 学生通过实际操作,培养解决问题的能力,包括分析需求、设计算法、编写程序和测试代码。

3. 学生通过小组合作,提升团队协作能力和项目管理的实践技能。

情感态度价值观目标:1. 学生在学习过程中培养对编程的兴趣和热情,增强对信息技术的认同感。

2. 学生通过解决实际问题,体会编程带来的成就感,激发进一步学习的动力。

3. 学生在团队合作中学会相互尊重、倾听和沟通,培养积极向上的情感态度。

课程性质:本课程是计算机科学与技术学科的一门实践性课程,强调理论与实践相结合,注重培养学生的实际操作能力和创新思维。

学生特点:高年级学生对C语言有一定的基础知识,具备一定的编程能力和问题解决能力。

教学要求:课程要求学生在理解基本概念的基础上,通过项目驱动的教学方式,动手实践,将理论知识转化为实际应用。

通过课程学习,学生应达到以上设定的知识、技能和情感态度价值观目标,为后续的深入学习打下坚实基础。

二、教学内容本课程教学内容主要包括以下几部分:1. C语言基础知识回顾:数据类型、变量、运算符、控制结构等,确保学生具备扎实的编程基础。

2. 文件操作:文件打开、关闭、读写等操作,为成绩管理系统中的数据持久化提供支持。

3. 数组与字符串:数组的使用、字符串处理,用于存储和管理学生成绩信息。

4. 结构体:自定义结构体类型,用于表示学生信息和成绩。

5. 函数:模块化编程,提高代码可读性和可维护性。

6. 项目实践:设计并实现一个学生成绩管理系统,涵盖以下功能:- 录入学生信息- 修改学生信息- 删除学生信息- 查询学生信息- 成绩排名- 成绩统计分析7. 教学大纲:- 第一周:C语言基础知识回顾,数组与字符串操作- 第二周:结构体、函数,文件操作- 第三周:项目需求分析,设计系统框架- 第四周:编写代码,实现各功能模块- 第五周:系统测试,优化代码,撰写项目报告教学内容与教材关联性:本课程教学内容紧密结合教材中的相关章节,如数据类型、控制结构、文件操作等,确保学生所学知识的系统性和科学性。

c语言学生成绩管理系统课程设计

c语言学生成绩管理系统课程设计

c语言学生成绩管理系统课程设计一、教学目标本课程的教学目标是使学生掌握C语言学生成绩管理系统的开发方法,培养学生的编程能力和实际应用能力。

具体分为以下三个部分:1.知识目标:学生需要掌握C语言的基本语法、数据结构、函数、文件操作等编程知识,了解学生成绩管理系统的需求分析和系统设计方法。

2.技能目标:学生能够运用C语言独立完成一个学生成绩管理系统的设计和实现,具备一定的编程实践能力和问题解决能力。

3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,增强学生对技术改变生活的认识,培养学生的创新精神和团队合作意识。

二、教学内容教学内容以教材《C语言程序设计》为主线,结合实际应用需求,安排如下:1.C语言基础知识:数据类型、运算符、控制结构、数组、字符串等。

2.函数与模块化编程:函数定义与调用、局部变量与全局变量、递归、文件操作等。

3.数据结构:链表、栈、队列、树等。

4.学生成绩管理系统设计:需求分析、系统设计、模块划分、编程实现等。

5.调试与优化:调试方法、性能分析、代码优化等。

三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法相结合,以激发学生的学习兴趣和主动性。

1.讲授法:用于传授C语言基本语法和编程原理,帮助学生建立扎实的理论基础。

2.案例分析法:通过分析实际案例,让学生了解学生成绩管理系统的需求分析和设计方法,提高学生的实际应用能力。

3.实验法:安排实验课,让学生动手编写代码,培养学生的编程实践能力和问题解决能力。

四、教学资源教学资源包括教材、多媒体资料、实验设备等,以支持教学内容和教学方法的实施,丰富学生的学习体验。

1.教材:《C语言程序设计》。

2.多媒体资料:教学PPT、视频教程、在线编程练习等。

3.实验设备:计算机、网络设备、编程环境等。

五、教学评估教学评估是检验学生学习成果的重要手段,主要包括以下几个方面:1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和积极性。

学生成绩管理系统C语言版

学生成绩管理系统C语言版

1、2、编一程序,能计算每个学生的总分和平均分。

3、编一程序,能按输入要求打印各门课程的最高分和最低分的同学。

4、编一程序,能将五个学生的成绩按总分进行降序排序。

5、编一程序,能删除一个学生的记录;6、编一程序,能增加一个学生的记录;建立一个菜单模式的学生信息管理系统,完成功能如下:一、建立主菜单*****学生信息管理系统*****1、输入学生信息2、输出学生信息3、计算每个同学成绩的总分与平均分4、对学生成绩进行排序5、输出每门功课最高分的同学信息6、输出每门功课最低分的同学信息7、退出系统主菜单界面:二、将综合练习一中的程序改写为子程序并能通过主菜单进行调用。

先上图开发环境windows 7,vc 6.0 开始贴代码:/*************** 张海山* 10软件2班* 安庆职业技术学院* QQ:136533295******************/#include"stdio.h"#include"stdlib.h"#include"malloc.h"#include"string.h"typedef struct lode{int id;char name[20];char sex[10];int score[4];struct lode *next;}lode,*linklist;linklist input(linklist head)//输入学生信息{char cmd='y';int t,i,l;char name[10];char sex[2];int score[3]={0};//int sum;linklist p;while(cmd=='y'||cmd=='Y'){p=(linklist)malloc(sizeof(lode));printf("请输入学生的编号\n");fflush(stdin);scanf("%d",&t);p->id=t;printf("请输入学生的姓名:\n");fflush(stdin);scanf("%s",p->name);/* l=strlen(p->name);p->sex[l]='\0';/* for(i=0;i<l;i++){p->name[i]=name[i];}*/printf("请输入学生的性别:\n");fflush(stdin);scanf("%s",p->sex);/* l=strlen(p->sex);p->sex[l]='\0';/* for(i=0;i<l;i++){p->sex[i]=sex[i];}*/fflush(stdin);printf("请依次输入学生的三门课成绩:\n");scanf("%d",&score[0]);p->score[0]=score[0];fflush(stdin);scanf("%d",&score[1]);p->score[1]=score[1];fflush(stdin);scanf("%d",&score[2]);p->score[2]=score[2];fflush(stdin);p->next=head->next;head->next=p;printf("是否继续(y)&返回主菜单(n) y&n\n");fflush(stdin);scanf("%c",&cmd);}return head;}linklist print(linklist head){linklist p;int i=1;p=head->next;printf("\t序号\t姓名\t性别\t英语\t数学\t语文\n");while(p!=NULL){printf("\t%d\t%s\t%s\t%d\t%d\t%d\n",p->id,p->name,p->sex,p->score[0],p->score[1],p->sco re[2]);p=p->next;/*if(p==NULL)break;printf("%d\n",i);*/}//printf("%d\n",i);//printf("i=%d\n",i);return 0;}void avg(linklist head){int sum=0;double avg=0;linklist p;p=head->next;while(p!=NULL){sum=0;sum=p->score[1]+p->score[2]+p->score[0];avg=sum/3;printf("%s的总分为:%d\t平均分为:%.2lf\n",p->name,sum,avg);p=p->next;}}void maxmin(linklist head){linklist p;intmax1=0,max1index,min1=head->next->score[0],min1index,max2=0,max2index,min2=head->nex t->score[1],min2index,max3=0,max3index,min3=head->next->score[2],min3index;p=head->next;while(p!=NULL){if(max1<(p->score[0])){max1=p->score[0];max1index=p->id;}if(min1>=(p->score[0])){min1=p->score[0];min1index=p->id;}if(max2<(p->score[1])){max2=p->score[1];max2index=p->id;}if(min2>=(p->score[1])){min2=p->score[1];min2index=p->id;}if(max3<(p->score[2])){max3=p->score[2];max3index=p->id;}if(min3>=(p->score[2])){min3=p->score[2];min3index=p->id;}p=p->next;}printf("英语:\n");p=head->next;while(p!=NULL){if((p->id)==max1index)printf("英语最高分为:%d\t姓名为:%s\n",p->score[0],p->name);if((p->id)==min1index)printf("英语最低分为:%d\t姓名为:%s\n",p->score[0],p->name);p=p->next;}printf("数学:\n");p=head->next;while(p!=NULL){if((p->id)==max2index)printf("数学最高分为:%d\t姓名为:%s\n",p->score[1],p->name);if((p->id)==min2index)printf("数学最低分为:%d\t姓名为:%s\n",p->score[1],p->name);p=p->next;}printf("语文:\n");p=head->next;while(p!=NULL){if((p->id)==max3index)printf("语文最高分为:%d\t姓名为:%s\n",p->score[2],p->name);if((p->id)==min3index)printf("语文最低分为:%d\t姓名为:%s\n",p->score[2],p->name);p=p->next;}}void rank(linklist head){linklist p;int i=0,j,k,n=0;int sum[100];p=head->next;while(p!=NULL){n++;sum[i]=p->score[1]+p->score[2]+p->score[0];i++;p=p->next;}printf("n=%d\n",n);for(i=1;i<6;i++){for(j=0;j<6-i;j++)if(sum[j]<sum[j+1]){k=sum[j];sum[j]=sum[j+1];sum[j+1]=k;}}printf("\t序号\t姓名\t性别\t英语\t数学\t语文\n");for(i=0;i<n;i++){p=head->next;while(p!=NULL){if(sum[i]==(p->score[1]+p->score[2]+p->score[0])){printf("\t%d\t%s\t%s\t%d\t%d\t%d\n",p->id,p->name,p->sex,p->score[0],p->score[1],p->sco re[2]);break;}p=p->next;}}}void add(linklist head){linklist p,q;p=head;q=(linklist)malloc(sizeof(lode));printf("请输入要插入学生的序号:\n");fflush(stdin);scanf("%d",&q->id);fflush(stdin);printf("请输入学生的姓名:\n");scanf("%s",q->name);fflush(stdin);printf("请输入学生性别:\n");scanf("%s",q->sex);fflush(stdin);printf("请依次输入学生的三门课成绩:\n");scanf("%d",&q->score[0]);fflush(stdin);scanf("%d",&q->score[1]);fflush(stdin);scanf("%d",&q->score[2]);fflush(stdin);q->next=NULL;while(p->next!=NULL){p=p->next;}p->next=q;//p->next=NULL;}void del(linklist head){linklist p,temp;int j;p=head->next;temp=head;printf("请输入要删除学生记录的序号:\n");scanf("%d",&j);while(p!=NULL){if(p->id!=j){p=p->next;temp=temp->next;}else{temp->next=p->next;free(p);break;}}}void main(){int cmd;linklist head;head=(linklist)malloc(sizeof(lode));head->next=NULL;do{printf("\n\n |***************学生成绩管理程序***************|\n");printf(" |----------------------------------------------|\n");printf(" | |\n");printf(" | 主菜单|\n");printf(" | |\n");printf(" |----------------------------------------------|\n");printf(" | |\n");printf(" | 请输入选择项目:|\n");printf(" | |\n");printf(" | 1、输入学生成绩|\n");printf(" | |\n");printf(" | 2、输出学生成绩|\n");printf(" | |\n");printf(" | 3、计算总成绩、平均成绩|\n");printf(" | |\n");printf(" | 4、求最高分、最低分|\n");printf(" | |\n");printf(" | 5、排序|\n");printf(" | |\n");printf(" | 6、增加记录|\n");printf(" | |\n");printf(" | 7、删除记录|\n");printf(" | |\n");printf(" | 0、退出系统|\n");printf(" | |\n");printf(" |----------------------------------------------|\n");scanf("%d",&cmd);switch(cmd){case 0:break; //退出系统case 1: input(head);break; //输入学生信息case 2: print(head);break; //输出学生信息case 3: avg(head);break; //求总成绩、平均数case 4: maxmin(head);break; //最高分case 5: rank(head);break; //排序case 6: add(head);break; //增加记录case 7: del(head);break; //删除记录default :printf("您输入错误!\n");}}while(cmd!=0);}因为是C语言版的要严格按照样子输入哦要不然就会出现不可预料的结果。

C语言课程设计-学生成绩管理系统

C语言课程设计-学生成绩管理系统

#include<stdio.h>#include<string.h>/* strcmp 函数原型(yuánxíng)包含*/#define N 100/*定义最大学生(xué sheng)人数为100*/struct student /*学生(xué sheng)结构体定义*/ {char no[11]; /*学号,10 位*/char name[10];/*姓名(xìngmíng),3 个汉字*/ float score[5];/*储存5 门功课(gōngkè)的成绩*/ float ave;/*储存平均分*/int year;/*入学年*/}stu[N];int num;int panduani(int); void output(); void init();void newfile(); void read1(); void weihu(); void new1(); void xiugai();int xgcj(int); void delete1(); void tongji(); void tongji1();/*通过i 的值,判断信息要查找的信息是否存在*/ /*输出学生成绩函数(公共函数) *//*系统初始化函数*//*建立新的数据文件*//*从数据文件中读取数据*//*维护界面函数*//*新增一个学生成绩函数*//*修改学生成绩*//*修改成绩*//*删除学生信息函数*//*统计界面函数*//*计算每一个学生平均分*/void tongji2(); /*计算每门课程的平均分*/void paixu1(); /*排序函数*/void paino(); /*按学号排序*/void paiave(); /*按平均分排序*/void paidkcj(); /*按单科成绩排序*/void change(int,int); /*交换结构体数组中的两个记录*/ void outputx(int); /*选择输出单科成绩徐修楼编*/ void find1(); /*查找界面函数*/int find(char sno[]); /*按学号查找*/int findname(char cname[]);/*按姓名查找*/void findyear(int cyear); /*按入学年查找*/void save(); void stop(); /*保存文件*/ /*停顿函数*/void stop() /*停顿函数 (公共函数) */{printf("Press Any Key To Continue...\n");getch();}void output() /*输出学生(xué sheng)成绩函数(公共函数) */{int i,j;printf("================================================================= ==\n");printf("XueHao XingMing RuXueNian C GaoShu DaWu DianLu MoDian\n");printf("================================================================= ==\n");for(i=0;i<num;i++)printf("%-11s% -10s%-11d",stu[i].no,stu[i].name,stu[i].year);for(j=0;j<5;j++)printf("% -7.1f",stu[i].score[j]);printf("\n");}stop();}void init() /*系统(xìtǒng)初始化函数*/{if(access("stu.dat",0)) /*判断文件是否(shì fǒu)存在*/newfile(); /*若不存在(cúnzài),新建数据文件*/elseread1(); /*若存在(cúnzài),读取数据*/}void newfile() /*建立新的数据文件*/{int i;FILE *fp;if((fp=fopen("stu.dat","wb"))==NULL) /*创建二进制文件*/{printf("Chuang Jian Shi Bai! Qing Chong Xin Yun Xing Cheng Xu.\n"); /*显示“创建文件失败,请重新运行程序”*/exit(0); /*终止程序*/}printf(" Chu Ci Yun Xing, Jin Xing Shu Ju Chu Shi Hua...\n");/*显示“初次运行,进行数据初始化...”*/stop();clrscr();printf(" Qing Shu Ru Xue Sheng Ren Shu:");/*显示“请输入学生人数:”*/scanf("%d",&num);for(i=0;i<num;i++)printf("Qing Shu Ru Di %d Ge Xue Sheng De Xue Hao:",i+1); /*显示(xiǎnshì)“请输入(shūrù)第i+1 个学生的学号:”*/getchar(); /*吃回车(huí chē)*/gets(stu[i].no);printf("Xing Ming:"); /*显示(xiǎnshì)“姓名(xìngmíng):”*/gets(stu[i].name);printf("Ru Xue Nian:");/*显示“入学年”*/scanf("%d",&stu[i].year);printf("C-YuYan Cheng Ji:");/*显示“C 语言成绩”*/scanf("%f",&stu[i].score[0]);printf("GaoShu Cheng Ji:");/*显示“高数成绩”*/scanf("%f",&stu[i].score[1]);printf("DaWu Cheng Ji:");/*显示“大物成绩”*/scanf("%f",&stu[i].score[2]);printf("DianLu Cheng Ji:");/*显示“电路成绩”*/scanf("%f",&stu[i].score[3]);printf("MoDian Cheng Ji:");/*显示“模电成绩”*/scanf("%f",&stu[i].score[4]);fwrite(&stu[i],1,sizeof(struct student),fp); /*把第i+1 名学生成绩写入文件*/}fclose(fp);clrscr();printf("======================================\n");printf(" Gung Cai Shu Ru De %d Ge Shu Ju Wei:\n",num); /*显示“刚才输入的num 个数据为:”*/printf("======================================\n\n");output();}void read1() /*从数据文件中读取数据*/{FILE *fp;num=0; /*num 为数据文件中实际存储的学生人数*/fp=fopen("stu.dat","r");if(fp==NULL) /*数据文件不存在*/{printf("Wen Jian Da Kai Shi Bai! Chong Xin Yun Xing Cheng Xu\n"); /*显示“文件打开失败!重新运行程序”*/exit(0);}while(!feof(fp)){fread(&stu[num],1,sizeof(struct student),fp);num++;}num--;fclose(fp);printf("=======================================\n");printf(" Xian You %d Ge Xue Sheng De Cheng Ji:\n",num); /*显示(xiǎnshì)“现有(xiàn yǒu) NUM 个学生(xué sheng)的成绩:”*/printf("=======================================\n\n");output();}void weihu() /*维护(wéihù)界面函数*/{char c1;while(1){clrscr();printf("\n\n\n\t\t\t*****************************\n");printf("\t\t\t* printf("\t\t\t* printf("\t\t\t* printf("\t\t\t* printf("\t\t\t*Wei Hu1. Xin Zeng2. Shan Chu3. Xiu GaiESC. Fan Hui*\n");*\n"); /*新增*/*\n"); /*删除(shānchú) (按学号) */*\n"); /*修改*/*\n"); /*返回*/printf("\t\t\t*****************************\n");printf("\t\t\tQing Xuan Ze:\n");/*请选择:*/c1=getch();if(c1==27)break;switch(c1){case '1':new1();break;case '2':delete1();case '3':xiugai();break;default:printf("Xuan Zen You Wu,Qing Chong Xuan!\n");/*“选择有误,请重选!”*/}}}void new1() /*新增一个学生成绩函数*/{printf("Qing Shu Ru Xue Hao:"); /*显示“请输入学号:”*/getchar(); /*吃回车*/gets(stu[num].no);printf("Xing Ming:"); /*显示(xiǎnshì)“姓名(xìngmíng):”*/gets(stu[num].name);printf("Ru Xue Nian:");/*显示(xiǎnshì)“入学(rù xué)年”*/scanf("%d",&stu[num].year);printf("C-YuYan Cheng Ji:");/*显示(xiǎnshì)“C 语言成绩”*/scanf("%f",&stu[num].score[0]);printf("GaoShu Cheng Ji:");/*显示“高数成绩”*/scanf("%f",&stu[num].score[1]);printf("DaWu Cheng Ji:");/*显示“大物成绩”*/scanf("%f",&stu[num].score[2]);printf("DianLu Cheng Ji:");/*显示“电路成绩”*/scanf("%f",&stu[num].score[3]);printf("MoDian Cheng Ji:");/*显示“模电成绩”*/scanf("%f",&stu[num].score[4]);num++;printf("\n======================================\n");printf(" Xian You %d Ge Xue Sheng De Cheng Ji:\n",num); /*显示“现有NUM 个学生的成绩:”*/printf("======================================\n\n");output();}void xiugai() /*修改学生成绩*/{char xg[11];int i;printf("\nQing shu ru yao xiu gai xue sheng de xue hao:\n\n");gets(xg);for(i=0;i<num;i++)if(strcmp(stu[i].no,xg)==0)break;if(i==num){printf("\nShu ju wen jian wu gai sheng xi xi!\n\nQing chong xin shu ru xue hao.\n\n");stop();return;}xgcj(i);}int xgcj(int x) /*修改成绩*/{char xueke[5][10]={"Cyuyan"," Gaoshu","Wuli","Dianlu","Modian"};char (*p)[10],c;int j,k;p=xueke;for(;;){clrscr();printf("\n");printf("\t\t\t************************************\n\n");printf("\t\t\t printf("\t\t\t printf("\t\t\t printf("\t\t\t printf("\t\t\t printf("\t\t\t printf("\t\t\tCheng Ji1.C Yu Yan2.Gao Shu3.Wu Li4.Dian Lu5.Mo DianEsc.Fan Hui\n");\n"); /*C 语言(yǔyán)*/\n"); /*高数*/\n"); /*大学物理*/\n"); /*电路(diànlù)*/\n"); /*模电*/\n\n"); /*返回(fǎnhuí)上级*/printf("\t\t\t************************************\n\n");printf("\tQing xuan ze yao xiu gai de cheng ji(press 1.2.3.4.5.Esc):\n");c=getch();if(c==27)break;else if (c>='1'&&c<='5'){k=c-49;printf("\nQing shu ru %s cheng ji:\n",p+k);scanf("%f",&stu[x].score[k]);printf("\nXiu gai hou gai xue sheng xin xi wei:\n");printf("XueHao XingMing RuXueNian C GaoShu DaWu DianLu MoDian\n"); printf("================================================================= ==\n");printf("%-11s%-10s%-11d",stu[x].no,stu[x].name,stu[x].year);for(j=0;j<5;j++)printf("% -7.1f",stu[x].score[j]);printf("\n");}else printf("\nXuan Zen You Wu,Qing Chong Xuan!\n\n");stop();}}int find(char sno[]) /*按学号查找(chá zhǎo) */{int i;for(i=0;i<num;i++)if(strcmp(stu[i].no,sno)==0) /*判断(pànduàn)两个字符串相等*/return i;/*查找成功*/return -1;/*查找失败*/}void delete1() /*删除学生信息函数*/{char cno[11];int i,j;printf("Qing Shu Ru Yao Shan Chu De Xue Sheng Xue Hao:"); /*“请输入(shūrù)要删除的学生学号”*/gets(cno);i=find(cno);if(i!=-1){for(j=i;j<num;j++)stu[j]=stu[j+1];num--;printf("Xian You %d Ge Xue Sheng De Cheng Ji:\n",num); /*显示(xiǎnshì)“现有NUM 个学生(xué sheng)的成绩:”*/output();}else {printf("qing shu ru zheng que de xue hao. \n");stop();}}void tongji() /*统计界面(jièmiàn)函数*/{int i;char c2;while(1){clrscr();printf("\n\n\n\t\t\t************************************\n");printf("\t\t\t* Tong Ji *\n");printf("\t\t\t* 1. Xue Sheng Ping Jun Fen *\n"); /*计算(jì suàn)学生平均分*/printf("\t\t\t* 2. Ke Cheng Ping Jun Fen *\n"); /*计算每门课程平均分*/printf("\t\t\t* ESC. Fan Hui *\n"); /*返回*/printf("\t\t\t************************************\n");printf("\t\t\tQing Xuan Ze:\n");/*请选择:*/c2=getch();if(c2==27) break;switch(c2){case '1':tongji1();printf("\n\nXue Sheng Ping Jun Fen Wei:\n");printf("===========================================\n");printf("XueHao XingMing RuXueNian PingJunFen\n");printf("===========================================\n");for(i=0;i<num;i++)printf("%-11s% -10s%-11d%-10.2f\n",stu[i].no,stu[i].name,stu[i].year,stu[i].ave); stop();break;case '2':tongji2();break;default:printf("Xuan Zen You Wu,Qing Chong Xuan!\n");/*“选择(xuǎnzé)有误,请重选!”*/ }}}void tongji1() /*计算(jì suàn)每一个学生平均分*/{int i,j;for(i=0;i<num;i++){stu[i].ave=0;for(j=0;j<5;j++)stu[i].ave+=stu[i].score[j];stu[i].ave=stu[i].ave/5;}}void tongji2() /*计算(jì suàn)每门课程的平均分*/{int i,j;float sum;float avec[5]; /*储存(chǔcún)每门课的平均分*/for(j=0;j<5;j++){sum=0;for(i=0;i<num;i++)sum+=stu[i].score[j];avec[j]=sum/num;}printf("\n\nGe Ke Ping Jun Fen Wei:\n");/*“各科平均分:”*/printf("===================================\n"); printf("C GaoShu DaWu DianLu MoDian\n");printf("===================================\n"); for(i=0;i<5;i++)printf("%-7.1f",avec[i]);printf("\n");stop();}void paixu1() /*排序(pái xù)界面*/{char c3;for(;;){clrscr();printf("\n\n\n");printf("\t\t\t*************************************\n");printf("\t\t\t* printf("\t\t\t*printf("\t\t\t* printf("\t\t\t* printf("\t\t\t*Pai Xu * \n");1. An Xue Hao * \n"); /*按学号排序(pái xù)*/2. An Ping Jun Fen * \n"); /*按平均分排序(pái xù)*/3. An dan ke cheng ji * \n"); /*按单科成绩(chéngjì)排序*/ ESC. Fan Hui * \n"); /*返回(fǎnhuí)*/printf("\t\t\t*************************************\n\n"); printf("\t\Qing Xuan Ze(press 1.2.3.Esc):\n");/*请选择(xuǎnzé):*/ c3=getch();if(c3==27) break;switch(c3){case '1':paino();break;case '2':paiave();break;case '3':paidkcj();break;default:printf("\nXuan Zen You Wu,Qing Chong Xuan!\n\n");/*选择有误,请重选!*/stop();}}}void paino() /*按学号排序*/{ /*按学号从低到高冒泡法排序*/int i,j,k;for(i=0;i<num;i++)for(j=0;j<num-1-i;j++)if(strcmp(stu[j].no,stu[j+1].no)>0)change(j,j+1);printf("\nPai Xu Hou Wei:\n"); /*“排序后为:”*/output();}void paiave() /*按平均分排序*/{ /*按平均分从高到低冒泡法排序*/int i,j;struct student temp;tongji1(); /*计算平均成绩*/for(i=0;i<num;i++)for(j=0;j<num-i-1;j++)if(stu[j].ave<stu[j+1].ave)change(j,j+1);printf("\n\tPai Xu Hou Wei:\n"); /*“排序(pái xù)后为:”*/printf("\t===============================================\n"); printf("\tXueHao XingMing RuXueNian Ave Pai ming\n");printf("\t===============================================\n"); for(i=0;i<num;i++)printf("\t%-11s% -10s%-11d%-6.2f %4d\n",stu[i].no,stu[i].name,stu[i].year,stu[i].ave,i+1);stop();}void paidkcj() /*按单科成绩(chéngjì)排序*/char c;int i,j,k;for(;;){clrscr();printf("\n");printf("\t\t\t************************************\n\n");printf("\t\t\t printf("\t\t\t printf("\t\t\t printf("\t\t\t printf("\t\t\t printf("\t\t\t printf("\t\t\tDan Ke Cheng Ji1.C Yu Yan2.Gao Shu3.Wu Li4.Dian Lu5.Mo DianEsc.Fan Hui\n");\n"); /*C 语言*/\n"); /*高数*/\n"); /*大学物理*/\n"); /*电路(diànlù)*/\n"); /*模电*/\n\n"); /*返回(fǎnhuí)上级*/printf("\t\t\t************************************\n\n");printf("\tQing xuan ze(press 1.2.3.4.5.Esc):\n");c=getch();if(c==27)break;else if (c>='1'&&c<='5'){k=c-49;for(i=0;i<num;i++)for(j=0;j<num-1-i;j++)if(stu[j].score[k]<stu[j+1].score[k])change(j,j+1);outputx(k);}else printf("\nXuan Zen You Wu,Qing Chong Xuan!\n\n");stop();}}void change(int i,int j) /*交换(jiāohuàn)结构体数组中的两个记录*/ {struct student temp;temp=stu[i];stu[i]=stu[j];stu[j]=temp;void outputx(int k) /*选择(xuǎnzé)输出单科成绩*/{char xueke[5][10]={"Cyuyan","Gaoshu","Wuli","Dianlu","Modian"};char (*p)[10]; /*定义(dìngyì)一个指向包含10 个字符型元素的一维数组的指针变量*/int i;p=xueke;printf("\n\tPai Xu Hou Wei:\n");printf("\t===============================================\n");printf("\tXueHao XingMing RuXueNian %s Pai Ming\n",p+k);printf("\t===============================================\n");for(i=0;i<num;i++)printf("\t%-11s% -10s%-11d%-6.1f%5d\n",stu[i].no,stu[i].name,stu[i].year,stu[i].score[k],i+1);}void find1() /*查找界面(jièmiàn)函数*/{char c4;char cno[11],cname[10];int i,j,cyear;while(1){clrscr();printf("\t\t\t************************************\n");printf("\t\t\t* printf("\t\t\t*printf("\t\t\t* printf("\t\t\t* printf("\t\t\t*Cha Zhao *\n");1. An Xue Hao *\n"); /*按学号查找(chá zhǎo)*/2. An Xing Ming *\n"); /*按姓名(xìngmíng)查找*/3. An Ru Xue Nian *\n"); /*按入学年查找*/ ESC. Fan Hui *\n"); /*返回*/printf("\t\t\t************************************\n"); printf("\t\t\tQing Xuan Ze:\n");/*请选择:*/c4=getch();if(c4==27) break;switch(c4){case '1':printf("Shu Ru Xue Hao:\n");/*“输入学号:”*/gets(cno);i=find(cno);panduani( i);break;case '2':printf("Shu Ru Xing Ming:\n");/*“输入(shūrù)姓名:”*/gets(cname);i=findname(cname);panduani(i);break;case '3':printf("Shu Ru RU Xue Nian:\n");/*“输入(shūrù)入学年”*/scanf("%d",&cyear);findyear(cyear);stop();break;default:printf("Xuan Zen You Wu,Qing Chong Xuan!\n");/*“选择(xuǎnzé)有误,请重选!”*/}}}int findname(char cname[]) /*按姓名(xìngmíng)查找*/{int i;for(i=0;i<num;i++)if(strcmp(stu[i].name,cname)==0) /*判断两个(liǎnɡ ɡè)字符串相等*/return i; /*查找成功*/return -1; /*查找失败*/}void findyear(int cyear){int i,j,flag=0;for(i=0;i<num;i++)if(stu[i].year==cyear){ flag=1;break;}if(flag==0){printf("Yao Cha Zhao De Xue Sheng Bu Cun Zai\n");stop(); }else{printf("Cha Zhao Dao De Xue Sheng Xin Xi Wei:\n");/*“查找到的学生信息为:”*/printf("XueHao XingMing RuXueNian C GaoShu DaWu DianLu MoDian\n");printf("================================================================= ==\n");for(i=0;i<num;i++){if(stu[i].year==cyear) /*判断两个数值相等*/{printf("%-11s% -10s%-11d",stu[i].no,stu[i].name,stu[i].year);for(j=0;j<5;j++)printf("% -7.1f",stu[i].score[j]);printf("\n");}}}}int panduani(int i) /*通过i 的值,判断(pànduàn)信息要查找的信息是否存在*/{int j;if(i==-1){printf("Yao Cha Zhao De Xue Sheng Bu Cun Zai\n");/*要查找的学生(xué sheng)不存在*/ stop();}else{printf("Cha Zhao Dao De Xue Sheng Xin Xi Wei:\n");/*“查找到的学生(xué sheng)信息为:”*/printf("XueHao XingMing RuXueNian C GaoShu DaWu DianLu MoDian\n");printf("================================================================= ==\n");printf("%-11s% -10s%-11d",stu[i].no,stu[i].name,stu[i].year);for(j=0;j<5;j++)printf("% -7.1f",stu[i].score[j]);printf("\n");stop();}}void save() /*保存(bǎocún)文件*/{int i;FILE *fp;if((fp=fopen("stu.dat","wb"))==NULL) /*创建(chuàngjiàn)二进制文件*/{printf("Chuang Jian Shi Bai! Qing Chong Xin Yun Xing Cheng Xu.\n"); /*显示“创建文件失败,请重新运行程序”*/exit(0); /*终止程序*/}for(i=0;i<num;i++)fwrite(&stu[i],1,sizeof(struct student),fp); /*将I+1 名学生成绩写入文件*/fclose(fp);}void main() /*主控菜单(cài dān)*/{char c;init();while(1){clrscr();printf("\n\n\n\t\t\t*****************************\n");printf("\t\t\t* MAIN MENU *\n");printf("\t\t\t* printf("\t\t\t* printf("\t\t\t* printf("\t\t\t* 1. Wei Hu *\n"); /*维护(wéihù)*/2. Tong Ji *\n"); /*统计(tǒngjì)*/3. Pai Xu *\n"); /*排序(pái xù)*/4. Cha Zhao *\n"); /*查找(chá zhǎo)*/printf("\t\t\t* ESC. SAVE & EXIT *\n"); /*存盘退出*/ printf("\t\t\t*****************************\n");printf("\t\t\tQing Xuan Ze:\n");/*请选择:*/c=getch();switch(c){case '1':weihu();break;case '2':tongji();break;case '3':paixu1();break;case '4':find1();break;case 27:save();exit(0);break;default:printf("Xuan Zen You Wu,Qing Chong Xuan!\n");/*“选择有误,请重选!”*/}}}(1) #include<stdio.h>#include<string.h>/* strcmp 函数原型包含*/#define N 100/*定义最大学生人数为100*/struct student /*学生结构体定义*/{char no[11](2) feof(fp)){fread(&stu[num],1,sizeof(struct student),fp)。

C简单学生成绩管理系统C课程设计

C简单学生成绩管理系统C课程设计

C简单学生成绩管理系统C课程设计Newly compiled on November 23, 2020C++学生成绩管理系统要求用C++语言编写学生成绩管理系统,要求能进行添加删除修改输入输出等的操作,并能使用面相对像原理对此系统进行实现。

学生成绩管理系统分析:学生成绩管理系统分为8个模块,分别是:添加学生信息,输出学生成绩,查找学生成绩,修改学生成绩,删除学生成绩,学生成绩排序,保存数据到文件和读取文件中学生成绩的模块。

学生成绩管理系统结构:各个子函数功能及其流程:1.首先定义一个学生类Class Student;并定义其各个私有变量和公有函数2.Student();构造函数,用于初始化学生类中的各个变量并记录3.Add();函数:用于添加学生信息的函数包括学号姓名成绩等的内容4.Output();函数:用于输出学生信息,包括学号姓名各科及总分平均成绩5.Find();函数:用于查找学生各项信息。

6.modify();函数:用于修改学生各项信息。

7.delete();函数:用于删除学生信息。

();函数:对学生各项信息进行排序操作。

8.save()和load();函数:将学生信息保存到文件中,并在需要的时候调用该文件将其中的学生信息显示出来9.“=”“<<”“>>”符号的重载:在各个函数处理数据过程中对这些的调用处理函数源代码:此函数源代码在VisualC++环境下编译通过。

具体如下:#include""#include""#include""#include""#include""#include""#include""class student ame,n1)==0){temp=stu[j];f3=1;}}if(f3==0)cout<<"对不起,没有你要查找的学生成绩"<<endl;else{cout<<" ---------------------------------------------------------------------------\n";cout<<" number name sex math C++ English total average\n";cout<<" --------------------------------------------------------------------------- \n";cout<<" "<<<<" "<<<<" "<<<<" "<<[0]<<" "<<[1]<<" "<<[2]<<" "<<<<" "<<<<endl;}getch();}void student::modify() ame,n2)==0){t=j;f4=1;}}if(f4==0)cout<<"对不起,没有你要修改的学生成绩"<<endl;else{cout<< "请输入学号: ";cin>>stu[t].number;cout<< " 姓名: ";cin>>stu[t].name;cout<< " 性别 : ";cin>>stu[t].sex;cout<< " 数学成绩: ";cin>>stu[t].score[0];cout<< " C++成绩: ";cin>>stu[t].score[1];cout<< " 英语成绩: ";cin>>stu[t].score[2];stu[t].total=stu[t].score[0]+stu[t].score[1]+stu[t].score[2];stu[t].average=stu[t].total/3;cout<<" 修改成功 !"<<endl;}getch();}void student::deleted() ame)==0){f5=1;n--;do{stu[i]=stu[i+1];i++;}while(i<=n);}}if(f5==0)cout<<"您要求删除的对象本来就不存在!";cout<<"要继续删除吗(y/n)"<<endl;cin>>c;if(toupper(c)!='Y'&&toupper(c)!='N'){cout<<"输入指令错误!请重新输入Y或N!"<<endl;cin>>c;}}while(toupper(c)=='Y');getch();}void student::sort() verage>stu[i].average)k=j;if(k!=i){s3=stu[i];stu[i]=stu[k];stu[k]=s3;}}cout<<"\n\n排序成功!\n\n";}void student::save() ame<<' '<<stu[i].sex<<' '<<stu[i].number<<' '<<stu[i].score[0]<<' '<<stu[i].score[1]<<' '<<stu[i].score[2]<<''<<stu[i].total<<' '<<stu[i].average<<' ';cout<<"保存成功!"<<endl;}();getch();}void student::load() ame>>stu[i].sex>>stu[i].number>>stu[i].score[0]>>stu[i].score[1]>>stu[i].score[2]>>stu[i].total>>stu[i].average;}cout<<"文件已读取成功!"<<endl;}();getch();}student & student::operator=(student & T) 加学生信息 "<<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<<"\n\n请选择(1~9)并按回车键确认:";}int main() //主函数{int choose;student s;do{menu();cin>>choose;switch(choose){case 1: (); break;case 2: (); break;case 3: (); break;case 4: (); break;case 5: (); break;case 6: (); break;case 7: (); break;case 8: (); break;default : break;}}while(choose!=0);}。

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

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

c语言课程设计报告学生成绩管理系统一、教学目标本课程旨在让学生掌握C语言的基本语法和编程技巧,通过实现一个学生成绩管理系统,培养学生运用C语言解决实际问题的能力。

具体目标如下:1.知识目标:–掌握C语言的数据类型、运算符、控制结构、函数等基本语法。

–理解结构体和文件操作等相关知识。

2.技能目标:–能够运用C语言编写简单的程序。

–学会使用C语言实现数据的输入、输出和处理。

–掌握使用结构体创建学生成绩数据结构,并实现对成绩的增删改查等操作。

3.情感态度价值观目标:–培养学生对编程的兴趣,增强自信心。

–培养学生的团队协作能力和解决问题的能力。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、文件操作等。

具体安排如下:1.C语言基本语法:数据类型、变量、运算符、控制结构、函数等。

2.数据结构:结构体、数组、指针等。

3.文件操作:文件的打开、关闭、读写等。

4.学生成绩管理系统:实现一个学生成绩管理系统,包括学生的增删改查、成绩的排序、统计等功能。

三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法。

1.讲授法:用于讲解C语言的基本语法和概念。

2.案例分析法:通过分析实际案例,让学生学会运用C语言解决实际问题。

3.实验法:让学生动手实践,编写程序,培养实际编程能力。

四、教学资源1.教材:《C程序设计语言》或《C语言入门教程》。

2.参考书:《C Primer Plus》、《C语言编程思想》等。

3.多媒体资料:教学PPT、视频教程等。

4.实验设备:计算机、网络等。

五、教学评估本课程的评估方式包括平时表现、作业、考试等。

评估方式应客观、公正,能够全面反映学生的学习成果。

具体安排如下:1.平时表现:占课程总评的30%,包括课堂参与度、提问回答、小组讨论等。

2.作业:占课程总评的30%,包括课后练习、编程作业等。

3.考试:占课程总评的40%,包括期中考试和期末考试。

六、教学安排本课程的教学安排如下:1.教学进度:按照教材的章节进行教学,确保在有限的时间内完成教学任务。

学生成绩管理系统c语言课程设计

学生成绩管理系统c语言课程设计

学生成绩管理系统c语言课程设计一、课程目标知识目标:1. 让学生掌握C语言中结构体、数组、函数等基本知识点的综合运用,能够设计并实现一个学生成绩管理系统;2. 让学生了解并掌握文件操作在C语言中的实现方法,能够完成数据的存储与读取;3. 让学生理解模块化编程的思想,能够将复杂的程序分解为多个简单、独立的功能模块。

技能目标:1. 培养学生运用C语言解决实际问题的能力,提高编程技巧;2. 培养学生分析问题、设计算法、编写程序、调试程序的能力;3. 培养学生团队协作能力,能够与他人共同完成一个项目。

情感态度价值观目标:1. 培养学生对待编程的兴趣和热情,激发学生学习C语言的积极性;2. 培养学生认真负责、严谨细致的工作态度,养成良好的编程习惯;3. 培养学生善于思考、勇于创新的精神,提高学生的自主学习能力。

分析课程性质、学生特点和教学要求,本课程将目标分解为以下具体学习成果:1. 能够独立设计并实现一个具备基本功能的学生成绩管理系统;2. 能够运用所学知识,完成对学生成绩的增、删、改、查等操作;3. 能够通过团队协作,优化系统功能,提高系统性能;4. 能够对编程过程中遇到的问题进行自主分析、解决,并在实践中不断总结经验,提高编程能力。

二、教学内容根据课程目标,本章节的教学内容主要包括以下几部分:1. C语言基础回顾:结构体、数组、函数的定义与使用;2. 文件操作:文件的打开、关闭、读写操作;3. 模块化编程:功能模块的划分、接口设计、实现与调用;4. 学生成绩管理系统需求分析:功能模块划分、数据结构设计;5. 学生成绩管理系统的设计与实现:各功能模块的具体实现;6. 团队协作与项目实践:项目分工、进度安排、协作沟通。

具体教学大纲安排如下:1. 复习C语言基础知识,明确课程所需掌握的基本概念(1课时);2. 讲解文件操作原理,并通过示例演示文件操作在C语言中的实现(2课时);3. 介绍模块化编程思想,分析学生成绩管理系统功能模块划分及接口设计(2课时);4. 分析学生成绩管理系统需求,引导学生进行数据结构设计(2课时);5. 指导学生进行学生成绩管理系统的设计与实现,分阶段完成各功能模块(6课时);6. 安排团队协作项目实践,确保学生在实践中掌握所学知识,提高编程能力(4课时)。

c语言学生成绩管理系统课程设计

c语言学生成绩管理系统课程设计

c语言学生成绩管理系统课程设计一、教学目标本课程旨在通过学习C语言学生成绩管理系统的设计与实现,使学生掌握C语言编程的基本技能,培养其软件开发和项目管理的能力。

具体目标如下:1.知识目标:学生需掌握C语言的基本语法、数据结构、函数、指针等核心概念,并理解学生成绩管理系统的需求分析和系统设计方法。

2.技能目标:学生能运用C语言独立编写简单的程序,并具备成绩管理系统的基本开发能力,包括数据库设计、界面实现和功能编程。

3.情感态度价值观目标:通过项目驱动的教学方式,培养学生团队协作的精神、创新意识和解决实际问题的能力。

二、教学内容本课程的教学内容围绕C语言学生成绩管理系统的开发展开,具体包括:1.C语言基础知识:C语言概述、数据类型、运算符、控制语句等。

2.数据结构:数组、链表、栈和队列等。

3.函数和指针:函数定义、调用、指针运算和应用。

4.文件操作:文件读写、文件管理等。

5.学生成绩管理系统设计:需求分析、数据库设计、界面实现、功能编程、测试与调试。

三、教学方法为提高学生的学习兴趣和主动性,本课程将采用多种教学方法,包括:1.讲授法:用于传授C语言基础知识和系统设计方法。

2.案例分析法:分析实际案例,引导学生学会解决实际问题。

3.实验法:学生动手编写代码,实现成绩管理系统各功能。

4.小组讨论法:分组完成项目,培养团队协作和沟通能力。

四、教学资源为实现课程目标,我们将提供以下教学资源:1.教材:《C程序设计语言》(K&R)、《C语言编程实践》等。

2.参考书:《C Primer Plus》、《C和指针》等。

3.多媒体资料:教学PPT、视频教程、在线代码示例等。

4.实验设备:计算机、网络环境、编程软件(如Visual Studio、Code::Blocks等)。

五、教学评估本课程的教学评估将采用多元化评价方式,全面客观地评价学生的学习成果。

评估方式包括:1.平时表现:考察学生的课堂参与度、提问回答、小组讨论等,占总评的20%。

c语言 学生成绩管理系统 课程设计

c语言 学生成绩管理系统 课程设计

c语言学生成绩管理系统课程设计下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。

文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!C语言学生成绩管理系统课程设计一、引言随着信息技术的迅猛发展,学生成绩管理系统已经成为学校教育管理的重要组成部分。

学生成绩管理系统c语言课程设计

学生成绩管理系统c语言课程设计

学生成绩管理系统c语言课程设计一、课程目标知识目标:1. 理解C语言在学生成绩管理系统中的应用和重要性;2. 掌握C语言的基本语法,如数据类型、运算符、控制结构等;3. 学会使用C语言数组、函数和文件操作实现学生成绩的存储、查询、修改和删除;4. 了解结构体在C语言中的应用,能够使用结构体表示和管理学生信息。

技能目标:1. 能够运用所学知识,独立设计和编写一个简单的学生成绩管理系统;2. 培养学生的编程思维和解决问题的能力,使其能够分析需求,提出解决方案;3. 提高学生的团队协作和沟通能力,能够在小组合作中发挥积极作用。

情感态度价值观目标:1. 培养学生对计算机编程的兴趣,激发其学习C语言的积极性;2. 培养学生的责任感和自信心,使其在学习过程中保持积极的心态;3. 培养学生尊重知识产权,遵循编程规范,养成良好的编程习惯。

本课程旨在通过学生成绩管理系统的设计与实现,使学生在掌握C语言基础知识的基础上,提高编程实践能力。

针对学生的年级特点,课程注重培养学生的学习兴趣、动手能力和团队协作精神,使其在完成课程任务的过程中,形成积极向上的情感态度价值观。

课程目标的设定既符合学科知识体系,又注重学生个体发展需求,为后续教学设计和评估提供明确的方向。

二、教学内容本课程教学内容依据课程目标,结合教材章节,进行以下安排:1. C语言基础知识回顾:- 数据类型、变量和常量- 运算符和表达式- 控制结构(顺序、选择、循环)2. 数组与函数:- 数组的概念及应用- 函数的定义、声明和调用- 递归函数3. 结构体与文件操作:- 结构体的定义和使用- 文件的打开、读写和关闭- 学生信息存储与读取4. 学生成绩管理系统设计与实现:- 系统需求分析- 功能模块划分- 编程实现(数据输入、查询、修改、删除、排序等)5. 团队协作与项目实践:- 小组分工与协作- 代码审查与优化- 项目测试与总结教学内容按照以上五个方面进行系统性地组织,确保学生能够逐步掌握C语言在学生成绩管理系统中的应用。

c学生成绩管理系统课程设计

c学生成绩管理系统课程设计

c学生成绩管理系统课程设计一、课程目标知识目标:1. 理解学生成绩管理系统的作用和重要性,掌握其基本功能模块;2. 学习数据库的基本操作,如数据的增、删、改、查;3. 掌握运用编程语言(如Python)实现学生成绩管理系统的基本功能。

技能目标:1. 能够运用所学知识设计并实现一个简单的学生成绩管理系统;2. 学会使用数据库存储和管理数据,提高数据处理能力;3. 培养编程思维,提高问题解决能力。

情感态度价值观目标:1. 培养学生对信息技术的兴趣,激发学习积极性;2. 增强学生的团队协作意识,培养合作解决问题的能力;3. 培养学生的创新意识,鼓励敢于尝试、不断探索的精神。

课程性质:本课程属于信息技术学科,旨在让学生通过实践操作,掌握数据库和编程语言的基本知识,提高实际问题解决能力。

学生特点:六年级学生已经具备一定的计算机操作能力,对新鲜事物充满好奇心,善于合作与分享。

教学要求:结合学生特点,注重实践操作,以任务驱动教学,让学生在完成具体任务的过程中,掌握知识技能,培养情感态度价值观。

将课程目标分解为具体的学习成果,以便进行教学设计和评估。

二、教学内容1. 学生成绩管理系统的基本概念与作用- 介绍学生成绩管理系统的定义、功能及其在教育教学中的应用。

2. 数据库基础- 学习数据库的基本概念,如数据表、字段、记录等;- 掌握数据库的基本操作,包括创建、修改、删除数据表,以及数据的增、删、改、查。

3. 编程语言入门- 介绍Python编程语言的基本语法和结构;- 学习使用Python进行简单的数据处理和文件操作。

4. 学生成绩管理系统设计与实现- 分析学生成绩管理系统的需求,设计系统功能模块;- 运用所学知识,实现一个简单的学生成绩管理系统。

教学大纲安排:第一课时:学生成绩管理系统基本概念与作用第二课时:数据库基础(一)—— 数据表与字段第三课时:数据库基础(二)—— 数据操作第四课时:Python编程语言入门第五课时:学生成绩管理系统设计与实现(一)第六课时:学生成绩管理系统设计与实现(二)教学内容与教材关联性:本教学内容与教材中关于数据库、编程语言以及信息系统设计的相关章节紧密关联,确保教学内容的科学性和系统性。

c学生成绩管理系统课程设计

c学生成绩管理系统课程设计

c学生成绩管理系统课程设计一、课程目标知识目标:1. 让学生理解学生成绩管理系统的重要性,掌握其基本概念和功能。

2. 使学生掌握数据库的基本操作,如数据录入、查询、更新和删除。

3. 帮助学生掌握数据表之间的关系,了解外键的作用和使用方法。

技能目标:1. 培养学生运用数据库技术设计和实现学生成绩管理系统的能力。

2. 培养学生运用所学知识解决实际问题的能力,如优化数据库性能、处理数据异常等。

3. 提高学生的团队协作能力,学会在项目中分工合作、共同完成任务。

情感态度价值观目标:1. 培养学生对计算机技术的兴趣和热情,提高其学习积极性。

2. 培养学生认真负责的工作态度,养成良好的编程习惯。

3. 增强学生的自信心,使其勇于面对挑战,克服困难。

课程性质分析:本课程属于信息技术学科,结合数据库知识,针对学生成绩管理系统进行设计与实践。

学生特点分析:学生已具备一定的计算机操作能力和编程基础,具有较强的学习能力和探究精神。

教学要求:1. 紧密联系课本知识,注重实践操作,提高学生的实际应用能力。

2. 结合实际案例,引导学生掌握学生成绩管理系统的设计方法和步骤。

3. 注重培养学生的团队协作能力和沟通能力,提高其在项目中的参与度。

二、教学内容1. 学生成绩管理系统概述- 了解学生成绩管理系统的背景和意义- 掌握系统的主要功能和模块划分2. 数据库基础知识- 复习数据库的基本概念和原理- 学习数据库设计的基本步骤和方法3. 数据表设计与操作- 学习创建数据表,定义字段和数据类型- 掌握外键约束的使用,建立数据表之间的关系4. 数据库操作语言- 学习SQL语言的基本语法和操作命令(如SELECT、INSERT、UPDATE、DELETE)- 掌握数据库的查询、插入、更新和删除操作5. 学生成绩管理系统功能实现- 分析系统需求,设计系统功能模块- 学习使用数据库技术实现学生信息、成绩管理等功能6. 系统测试与优化- 掌握系统测试的基本方法,对系统进行功能测试和性能测试- 学习优化数据库性能,提高系统运行效率7. 项目实践与团队协作- 分组进行项目实践,分工合作完成学生成绩管理系统的设计与实现- 学习在项目中沟通协作,解决问题,提高团队工作效率教学内容安排与进度:本课程教学内容分为七个部分,按照以下进度进行:1. 第1周:学生成绩管理系统概述、数据库基础知识2. 第2周:数据表设计与操作3. 第3周:数据库操作语言4. 第4周:学生成绩管理系统功能实现5. 第5周:系统测试与优化6. 第6周:项目实践与团队协作7. 第7周:课程总结与评价教材关联:本教学内容与教材《数据库原理与应用》第3章至第6章内容密切相关,涵盖了数据库设计、数据操作、SQL语言及系统测试等知识点。

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

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

c语言课程设计报告学生成绩管理系统一、课程目标知识目标:1. 学生能理解并掌握C语言基础,包括变量定义、数据类型、运算符、控制结构等。

2. 学生能运用C语言实现学生成绩管理系统的基本功能,如添加、删除、修改、查询学生成绩。

3. 学生了解并掌握文件操作在C语言中的应用,实现对数据的持久化存储。

技能目标:1. 学生能够运用结构体数组管理大量数据,培养数据组织和管理的实际操作能力。

2. 学生通过编程实践,掌握模块化编程方法,提高代码的复用性和可维护性。

3. 学生通过团队协作,培养沟通与协作能力,共同完成学生成绩管理系统的设计与实现。

情感态度价值观目标:1. 学生通过解决实际问题,培养对编程的兴趣,激发探究精神。

2. 学生在团队协作中,学会尊重他人意见,培养合作精神,提高解决问题的信心。

3. 学生认识到编程在生活中的实际应用,增强对计算机科学的认识和热爱。

课程性质:本课程为实践性较强的学科,结合C语言编程知识,以项目驱动的方式进行教学。

学生特点:学生为高中一年级学生,已具备一定的计算机操作能力,对编程有一定了解,但实际操作经验不足。

教学要求:教师需引导学生掌握C语言基础知识,注重实践操作,鼓励学生主动探究、团队协作,培养解决实际问题的能力。

在教学过程中,将课程目标分解为具体的学习成果,以便进行有效的教学设计和评估。

二、教学内容根据课程目标,教学内容分为以下三个部分:1. C语言基础知识:- 变量定义、数据类型、常量与变量- 运算符、表达式、语句- 控制结构:顺序、选择、循环- 函数的定义与调用- 指针与数组2. 学生成绩管理系统功能实现:- 结构体的定义与使用- 结构体数组操作- 系统功能模块划分:添加、删除、修改、查询学生成绩- 函数调用关系分析,实现模块化编程3. 文件操作与数据持久化:- 文件打开、关闭、读写操作- 学生成绩数据的存储与读取- 文件错误处理与异常处理教学大纲安排:第一周:C语言基础知识复习,学习结构体和结构体数组第二周:学生成绩管理系统功能设计,编写添加、删除、修改、查询功能的代码第三周:文件操作学习,实现学生成绩数据的持久化存储,优化系统性能第四周:项目测试、调试与优化,总结交流教学内容与教材关联性:本教学内容与教材《C语言程序设计》相关章节紧密关联,涵盖第3章至第6章的知识点,以及第8章文件操作部分。

学生成绩管理系统C语言课程设计

学生成绩管理系统C语言课程设计

××××学院课程设计报告课程名称:学院:专业班级:姓名:学号:指导教师:完成时间:报告成绩:评阅意见:评阅老师:评阅时间:、 “ “ “《学生成绩管理系统》C 语言课程设计一、 设计要求1) 收集资料,全面分析课题,分解问题,形成中体编程思路;2) 深入分析各个小问题,编写个部分程序模块;3) 对于设计中用到的关键函数,要联系实际 问题进行具体介绍; 4) 上机调试,确保程序能正确运行;二、 设计目的:1) 通过设计,了解 C 语言的实际运用,加强对 C 语言的重视;2) 通过设计,强化 C 语言的基本运用及 C 语句的准确掌握;3) 通过设计,掌握设计软件一般方法,了解软件设计的一般思路; 4) 通过设计,锻炼撰写报告的水平。

三、 课题分析:编写一个《学生成绩管理系统》的 C 程序,包括以下功能:1) 学号段查询功能;2) 输入功能;3) 添加功能、修改功能; 4) 成绩处理功能等5) 可实现数据输入、数据显示、数据插入、数据访问、数据保留、数据更新等存储功能,以及各学科平均分、最高分、最低分的提取等数据处理功能。

该程序运行相对只能化,可通过学号比较来插入数据、根据姓名查找数据以及更新数据。

其操作简单,查找方 便,修改迅速,普遍适合学校学生成绩管理,可大大减少人工管理的工作量,提高工作效 率。

四、 定义数据结构及相关解释:1) 在《学生成绩管理系统》中,各模块功能系统之间构成的数据结构关系为非线性数据结构的树结构。

2) 树结构:每一个结点只有一个前件,称为父结点。

没有前件的结点只有一个,称为树的根结点,简称树的根。

在《学生成绩管理系统》中的数据结构图中“图书馆管理程序”为根;在树结构中,每一个结点都可以有多个后件,他们都称为该结点的子结点,没有后 件的结点称为叶子。

例如,在《学生成绩管理系统》中的数据结构图中“查看数据” 通 过比较学号来插入数据”、 通过姓名查找查看数据”、 通过姓名查找来更新数据”、 保留数据”以及求各学科的“平均分、最高分、最低分”为“学生成绩管理系统”的子结点,也是该树结构的叶子。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学生成绩管理系统课程设计报告目录一、系统软件环境 (3)二、课程设计题目 (3)三、课程设计的基本要求 (3)四、数据结构设计描述 (4)五、各变量的定义和作用 (4)六、系统各函数的功能、相互调用关系 (4)七、N-S 流程图 (5)八、课程设计过程中遇到的问题及解决过程 (6)九、心得与体会 (6)十、附页源程序清单 (6)十一、参考文献 (6)附录学生成绩管理系统课程设计报 告一.系统软件环境:本程序主要运行在: Visual C++ 6.0Turbo C/C++ 3.0Turbo C 2.0二.课程设计题目:(一)用梯形法求定积分(数值求解算法)用梯形法编程求函数f(x)=x 2+2x+1的定积分的值。

20)(dx x f提示:把积分区间[a ,b]等分为n 等分(a,b,n 的值由程序输入。

),可得到若干个小梯形,积分面积就近似为这些小梯形面积之和。

(二)综合训练学生成绩管理程序说明:有N 个学生,每个学生的数据包含学号(不重复)、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统,使之能提供以下功能:(1(2)各菜单项功能① 成绩录入:输入学生的学号、姓名及三门课的成绩;② 成绩查询:❖ 按学号查询学生记录。

③ 绩统计:❖ 计算学生的平均分;OK❖ 根据学生的平均分高低,对学生的数据进行排序后输出;OK④ 退出系统:退出整个系统(即主菜单)。

三.课程设计的基本要求设计步骤的规范不但可以培养学生科学的工作方法和作风,而且还能有效地减少错误,提高工作效率。

因此必须严格执行良好的实验步骤规范(包括上级操作规范)。

本课程设计的基本步骤与要求是:1、问题分析及解决方案框架确定充分地分析和理解问题本身,弄清要求做什么。

在确定解决方案框架过程中,考虑怎样使程序结构清晰、合理、简单和易于调试,并确定每个函数的简单功能,以及函数之间的调用关系。

2、详细设计和编码确定算法的主要流程,再此基础上进行代码设计(Coding),每个明确的功能模块程序一般不超过60行,否则要进一步划分。

3、上机前编写程序与检查上机前程序检查可有效提高调试效率,减少上机调试程序时的无谓错误。

程序检查主要有两种途径:用一组测试数据手工执行程序;通过阅读或给别人讲解自己的程序而深入全面地理解程序逻辑。

把程序中的明显错误事先排除。

4、上机调试程序5、完成课程设计报告四.数据结构设计描述五.各变量的定义和作用int num; /*定义学号,变量为整型*/char name; /*定义姓名,变量为字符型*/int score; /*定义课程的成绩,变量为整型*/float average; /*定义平均分,变量为浮点型*/六.系统各函数的功能、相互调用关系1.函数实现功能说明:(1)、menu函数是定义一个菜单函数,其功能在于输出菜单界面供使用者选择。

(2)、input函数是定义用于输入学生信息。

(3)、select函数是定义义用于查询学生信息。

包括学号、姓名及各科成绩。

(4)、statistics函数计算学生的平均分。

根据学生的平均分高低,对学生的数据进行排序后输出。

2.相互调用关系:Main函数调用menu函数。

Menu函数可以调用input函数、select函数和statistics函数七.N-S流程图(一)、用梯形法求定积分流程图:(二)、学生成绩管理系统的NS流程图:1、输入函数:例如输入: 1 王2、查询函数:3、统计函数:4、菜单函数:5、主函数:八.课程设计过程中遇到的问题及解决过程1、For(i=0;i>n;i++)经常写成For(i=0,i>n,i++),导致运行错误。

解决方法:编程时候需要仔细和耐心。

2、对菜单切换的方法不了解,编写的程序运行时候是一竖行向下排列,很影响使用者的视觉范围,通过搜索一些相关资料得知system("cls")的作用。

3、对一些知识的不熟悉,导致刚开始编程的时候很难下手。

解决方法:重新掌握不熟悉的知识并收集相关资料。

九.心得与体会:一周的课程设计很快结束了,一开始拿起题目时什么都不懂,真不知道从何下手到后来觉得它很有趣,很想去做并希望能把它做得更好。

刚开始错误实在太多,改错误真的很头疼,不过当经过一次又一次的调试后,终于弄好了,那时却是特别的高兴。

总的来说就是这次的课程让我学了不少东西,也让我对编程更有兴趣,虽然学的不是很好,不过以后会努力的。

十.源程序(请见附录)附录1:用梯形法求定积分(数值求解算法)附录2:学生成绩管理系统十一.参考文献C程序设计(第三版)附录1:用梯形法求定积分(数值求解算法)#include<stdio.h>main(){int i;float s=0,h,f0,f1,a,b,n;printf("Plreas Enter a,b,n:");scanf("%f,%f,%f",&a,&b,&n);h=(b-a)/n;f0=a*a+2.0*a+1.0;for(i=0;i<=n;i++){a=a+h;f1=a*a+2.0*a+1.0;s=(f0+f1)*h/2.0+s;f0=f1;}printf("%f\n",s);getch();}附录2:学生成绩管理系统#include<stdio.h>#include<stdlib.h>#include<conio.h>#define N 3 /*学生人数*/#define M 3 /*课程门数*/struct student{int num; /*学号*/char name[20]; /*姓名*/int score[3]; /*三门课成绩*/float average;}stu[N]; /*学生数*/void input();void select(); /*查询*/void statistics(); /*统计*/void menu();void input(){int i,j;printf("\t\t①成绩录入\n\n");for(i=0;i<N;i++){printf("请输入学号:");scanf("%d",&stu[i].num);printf("请输入姓名:");scanf("%s",&stu[i].name);for(j=0;j<M;j++){printf("第%d门成绩的分数为:",j+1);scanf("%d",&stu[i].score[j]);}printf("\n\n");}printf("\n\n");printf("输入完毕!按任意键返回主菜单!");getch();}/*2.查询*/void select(int no){int i;printf("学生%d号:\n",no);printf("学号:%d\n",stu[no-1].num);printf("姓名:%s\n",stu[no-1].name);for(i=0;i<M;i++){printf("第%d门课程的成绩为:",i+1);printf("%d\n",stu[no-1].score[i]);}printf("\n按任意键返回主菜单!");getch();}/*3.统计*/void statistics(){float temp=0;int i=0;int j=0;/*学生成绩平均分*/temp=0;printf("\t\t③成绩统计\n\n");printf("\n学生成绩平均分:");for(j=0;j<N;j++){for(i=0;i<M;i++){temp=temp+stu[j].score[i];}stu[j].average=temp/N;printf("\n学生%s的成绩平均成绩为:",stu[j].name); printf("%0.2f分",stu[j].average);temp=0;}/*排序(冒泡法)*/for(j=0;j<N;j++)for(i=0;i<N-j-1;i++)if(stu[i].average<stu[i+1].average){temp=stu[i].average;stu[i].average=stu[i+1].average;stu[i+1].average=temp;}printf("\n\n学生平均成绩前三名:");for(i=0;i<3;i++){printf("\n第%d名:%0.2f分",i+1,stu[i].average);}printf("\n\n按任意键返回主菜单!");getch();}void menu(){int num=0;int n=0;printf("\n\t\t\t学生成绩管理系统\n\n");printf("\t\t\t①成绩录入\n\t\t\t②成绩查询\n\t\t\t③成绩统计\n\t\t\t④退出系统\n");printf("\t\t\tchoose:");scanf("%d",&num);switch(num){case 1:system("cls");input();break;case 2:system("cls");printf("\t\t②成绩查询\n\n");printf("请输入要查询的学生号(1~3):");scanf("%d",&n);select(n);break;case 3:system("cls");statistics();break;case 4:exit(0);default:;}}void main(){while(1){system("cls"); /*清屏*/ menu();}}。

相关文档
最新文档