学曲谱,请上曲谱自学网!

c语言成绩管理系统

时间:2020-02-13 18:14:00编辑:刘牛来源:曲谱自学网

曲谱自学网今天精心准备的是《c语言成绩管理系统》,下面是详解!

c语言学生信息管理系统代码

学生信息包括学号,名字,性别,年龄,成绩,住址菜单:1.录入学生信息(要求可以重复录入,一个一个录入的那种,不要一开始就定义一个总的个数)2.增加学生信息3.修改学生信息4.删除...

学生信息包括学号,名字,性别,年龄,成绩,住址菜单:1.录入学生信息(要求可以重复录入,一个一个录入的那种,不要一开始就定义一个总的个数)2.增加学生信息3.修改学生信息4.删除学生信息5.浏览学生信息6.按学号查找学生信息7.退出
希望按要求写。用到链表 展开

代码如下:

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
typedef struct examinee //考生信息结构
{   char examno[20]; //准考证号
char name[10]; //姓名
char sex[4]; //性别
short age; //年龄
char examtype[10]; //报考科目
}ElemType;

typedef struct Node //定义链表结点
{
ElemType data; //数据域
struct Node *next; //指针域
}Node,*List,*position;

List make_empty( List L ); //创建一个带头结点的空表
int is_empty( List L ); //测试链表是否是空表
int is_last( position p, List L ); //测试当前位置是否是表尾
position make_node( position p,int n ); //创建结点并输入考生信息
void put_information( position p ); //是否输出该考生信息
void put_name_information( List L ); //输出姓名为xx的考生信息
int put_pos_information( position p ); //输出该地址考生信息
void link_to_tail( List L, position p ); //将结点连接到表尾
int ciculation_make(); //循环创建考生信息
int judge_put_all(); //是否输出所有考生信息
void put_all(List L); //输出所有考生信息。
position find( List L ); //查找第一个姓名为xx的元素并返回位置
position find_previous( List L ); //查找第一个姓名为xx的元素并返回该元素直接前驱的位置
//int judge_delete_val(); //询问是否删除考生数据
int delete_val( List L ); //删除指定考生信息并输出其信息
void menu(List L); //菜单函数
List L;
//position p;

int
main( void ) 
{
List L = NULL; //定义头结点指针
position p = NULL; //定义表工作指针
L = make_empty( L ); //创建空表
printf("\t\t\t★★考生报名管理程序★★\n\t\t----------------------------------------\n");
menu(L);
return 0;
}

//创建一个带头结点的空表
List
make_empty( List L)
{
L = ( List ) malloc (sizeof( Node ));
if(NULL == L)
{
printf("内存分配失败");
exit( 1 );
}
L->next = NULL;
//printf("空表创建成功。\n");
return L;
}

//创建结点并输入考生信息
position
make_node( position p ,int n)
{
if(n) //n为1是创建结点并输入,n为0是修改
{
p = ( position ) malloc ( sizeof ( Node ));
p->next = NULL ;
}
printf("请输入考生准考证号:");
gets(p->data.examno);
printf("请输入考生姓名:");
gets(p->data.name);
do
{
printf("请输入考生性别,只能输入“男”或者“女”:");
gets(p->data.sex);
}
while( 0 != strcmp( p->data.sex, "男" ) && 0 != strcmp( p->data.sex, "女" )); //判断性别是否有误
printf("请输入考生年龄:");
scanf("%hd",&p->data.age);
getchar();  //如果把这句删掉,就“无法执行”下面的报考类别
/*下面的do while用来判断报考类别是否输入有误*/
do
{
printf("请输入报考类别,只能输入“数学”或“英语”或者“数据结构”:");
gets(p->data.examtype);
}
while( 0 != strcmp( "英语", p->data.examtype ) && 0 != strcmp( "数学", p->data.examtype ) && 0 != strcmp( "数据结构", p->data.examtype ));
if(n)
{
printf("报名成功\n");
}
else
{
printf("修改成功\n");
}
return p;
}

//前插法;
void
link_to_tail( List L, position p)
{
p->next = L->next;
L->next = p;
}

//查找第一个姓名为xx的元素并返回位置
position
find( List L )
{
position p = L->next;
char name[10];
printf("请输入你要查找的考生姓名:");
gets(name);
while( p != NULL && 0 != strcmp( p->data.name , name))
{
p=p->next;
}
return p;
}

//测试链表是否是空表
int
is_empty( List L )
{
return L->next == NULL;
}

//测试当前位置是否是表尾
int
is_last( position p, List L )
{
return p->next == NULL;
}

//输出姓名为xx的考生信息
void
put_name_information( List L )
{
position p = find(L);
if(p!=NULL)
{
printf("您要查找的考生信息:\n");
printf("准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n\n",p->data.examno,p->data.name,p->data.sex,p->data.age,p->data.examtype);
}
else
{
printf("没有您要找的学生。\n");
}

}

//循环创建考生信息
int
ciculation_make()
{
int n = 2;
do
{
printf("是否继续创建考生信息?是请输入“1”,不是请输入“0”:");
scanf("%d",&n);
getchar();
}
while( n != 0 && n != 1);
return n;
}

//是否输出考生信息
void
put_information( position p )
{
int n=2;
do
{
printf("是否输出该考生信息?是请输入“1”,不是请输入“0”:");
scanf("%d",&n);
getchar();
}
while( n != 0 && n != 1);
if(n)
{
printf("准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n",p->data.examno,p->data.name,p->data.sex,p->data.age,p->data.examtype);
}
}


//是否输出所有考生信息
int
judge_put_all()
{
int n = 2;
do
{
printf("是否输出所有考生信息?是请输入“1”,不是请输入“0”:");
scanf("%d",&n);
getchar();
}
while( n != 0 && n != 1);
return n;
}

//输出所有考生信息
void
put_all(List L)
{
if(L->next == NULL)
{
printf("现无考生报名!\n");
}
else
{
position p=L->next;
while( p != NULL )
{
printf("准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n",p->data.examno,p->data.name,p->data.sex,p->data.age,p->data.examtype);
p=p->next;
}
}
//getchar();

}

//询问是否删除考生数据
int
judge_delete_val()
{
int n = 2;

do
{
printf("是否要删除某个考生数据?是请输入“1”,不是输入“0”:");
scanf("%d",&n);
getchar();
}
while( n != 0 && n != 1);
return n;
}

//查找第一个姓名为xx的元素并返回其直接前驱的位置
position
find_previous( List L )
{
position q = L;
position p = L->next;
char name[10];
printf("请输入你要查找的考生姓名:");
gets(name);
while( p != NULL && 0 != strcmp( p->data.name , name))
{
q=p;
p=p->next;
}
if( p != NULL )
{
return q;
}
else
return p;
}

//删除指定考生信息并输出其信息
int
delete_val(List L)
{
int n=2;
position q=NULL;
position p=find_previous( L ); //返回考生信息地址
if( NULL == p )
{
printf("你要删除的考生不存在\n");
return 0;
}
else
{
q = p->next;
p->next = q->next;
printf("删除成功。\n删除的考生信息为:\n");
printf("准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n",q->data.examno,q->data.name,q->data.sex,q->data.age,q->data.examtype);
free(q);
return 1;
}

}

//输出该地址考试信息
int
put_pos_information( position p )
{
if(p != NULL )
{
printf("准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n\n",p->data.examno,p->data.name,p->data.sex,p->data.age,p->data.examtype);
return 1;
}
else
{
printf("没有您要查找的学生。");
return 0;
}
}
//菜单函数
void
menu(List L)
{
printf("\t\t\t   a. 考生报名入口\n");
printf("\t\t\t   b. 查询考生信息\n");
printf("\t\t\t   c. 修改考生信息\n");
printf("\t\t\t   d. 删除考生信息\n");
printf("\t\t\t   e. 全部考生信息\n");
printf("\t\t\t   f. 程序作者信息\n");
printf("\t\t\t   g.   退出程序\n");
char n='h';

while(n != 'g')
{
do  //确定正确输入
{
printf("请通过字母序号选择功能:");
n = getchar();
getchar();
putchar('\n');
if( n < 'a' || n > 'g')
{
printf("错误的字母序号。\n");
}
}
while( n < 'a' || n > 'g' );
switch (n)
{
case 'a':
{
printf("请输入报名考生信息:\n");
position p = make_node( p, 1 ); //创建新结点
link_to_tail( L, p ); //将新结点连接到表上
put_information( p );   //是否输出该考生信息
putchar('\n');
}
break;

case 'b':
{
put_name_information( L );
putchar('\n');
}
break;

case 'c':
{
int n=0;
position p = NULL;
printf("您正在进行修改操作。\n");
p = find(L);
n = put_pos_information( p );
if(n)
{
make_node( p , 0 );
put_information( p );   //是否输出该考生信息
}
putchar('\n');
}
break;

case 'd':
{
printf("您正在进行删除操作。\n");
delete_val( L );
putchar('\n');
}
break;

case 'e':
{
put_all( L );
putchar('\n');
}
break;

case 'f':
{
printf("              修改日期    版本号      修改人      修改内容    \n");
printf("        --------------------------------------------------------\n");
printf("              2018.6.19    v2.0       陈百川     增加主菜单\n");
printf("              2018.6.23    v3.0       陈百川   增加生成文件功能\n\n");
printf("            该版本号为v2.0\n");
putchar('\n');
}
break;

default:
break;
}
}
printf("                     感谢本次使用,祝您生活愉快。");
getch();
}

扩展资料:

C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。[1] 目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。

C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。

其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。

参考资料:

百度百科——C语言

C语言成绩管理系统

某班有最多不超过30人(具体人数由键盘输入)参加C语言考试,用一维数组作函数参数编程实现如下成绩管理系统:1、录入每个学生的学号和考试成绩2、计算课程的总分和平均分3、按成绩由...

某班有最多不超过30人(具体人数由键盘输入)参加C语言考试,用一维数组作函数参数编程实现如下成绩管理系统:
1、录入每个学生的学号和考试成绩
2、计算课程的总分和平均分
3、按成绩由高到低排出名次表
4、按学号由小到大排出成绩表
5、按学号查询学生排名及其考试成绩
6、按优秀(90~100)、良好(80~89)、中等(70~79)、及格(60~69)、不及格(0~59)5个类别,统计每个类别的人数以及所占的百分比
7、输出每个学生的学号、考试成绩以及课程总分和平均分
使用结构体 、函数做,不要用链表和文件 展开

#include "stdio.h"
struct stu{
int sid,score;
char g;
};
void scorein(struct stu *p,int n){
int i,t;
for(i=0;i<n;i++){
scanf("%d%d",&p[i].sid,&p[i].score);
p[i].g = (t=p[i].score)>89 && t<101 ? 'A' : t>79 && t<90 ? 'B' : t>69 && t<80 ? 'C' : t>59 && t<70 ? 'D' : 'E';
}
}
int sum(struct stu *p,int n){
int s=0;
while(n--)
s+=p++->score;
return s;
}
void dssort(struct stu *p,int n){
int i,j,k;
struct stu t;
printf("\nSTUID\tSCORE\tCLASS\n=====================\n");
for(i=0;i<n;i++){
for(k=i,j=k+1;j<n;j++)
if(p[k].score<p[j].score)
k=j;
if(k!=i)
t=p[k],p[k]=p[i],p[i]=t;
printf("%d\t%d\t%c\n",p[i].sid,p[i].score,p[i].g);
}
}
void idsort(struct stu *p,int n){
int i,j,k;
struct stu t;
printf("\nSTUID\tSCORE\tCLASS\n=====================\n");
for(i=0;i<n;i++){
for(k=i,j=k+1;j<n;j++)
if(p[k].sid>p[j].sid)
k=j;
if(k!=i)
t=p[k],p[k]=p[i],p[i]=t;
printf("%d\t%d\t%c\n",p[i].sid,p[i].score,p[i].g);
}
}
void query(struct stu *p,int n){
int id;
printf("\nPlease enter ID(int)...\n");
scanf("%d",&id);
while(id-p->sid && n)
p++,n--;
if(n>=0){
printf("STUID\tSCORE\tCLASS\n=====================\n");
printf("%d\t%d\t%c\n\n",p->sid,p->score,p->g);
}
else
printf("No find!\n\n");
}
void level(struct stu *p,int n){
int d[5],i;
char s[5][7]={"优秀","良好","中等","及格","不及格"};
printf("统计信息如下:\n");
for(i=0;i<5;d[i++]=0);
for(i=0;i<n;i++,d[p++->g-'A']++);
for(i=0;i<5;i++)
printf("%6s:\t%d\t%.2f%%\n",s[i],d[i],d[i]/(n+0.0)*100);
}
void outinfo(struct stu *p,int n){
int i;
printf("\nSTUID\tSCORE\n=============\n");
for(i=0;i<n;i++)
printf("%d\t%d\n",p[i].sid,p[i].score);
}
int main(int argc,char *argv[]){
int n,s;
struct stu a[30];
printf("Please enter n(int 0<n<31)...\n");
if(scanf("%d",&n)!=1 || n<1 || n>30){
printf("Input error, exit...\n");
return 0;
}
scorein(a,n);//输入
dssort(a,n);//分数降序
idsort(a,n);//学号升序
query(a,n);//查询
level(a,n);//等级和百分比
outinfo(a,n);//输出各位学生信息
printf("总分: %d",s=sum(a,n));
printf("   平均分:   %.2f\n",s/(n+0.0));
return 0;
}

运行样例:

扩展

如果是用switch选择1-7功能,如
itemSelected=Menu(); //显示菜单,并读取用户输入
switch(itemSelected)
{ case 1: 读取成绩
case 2: 求总分平均分
case 3: 成绩降序
类似这样该怎么编写

C语言怎么编一个简单的成绩管理系统

先录入成绩(学号外加三科成绩不需要姓名),然后按学号查询单人成绩,以及按学号修改单人成绩,怎么做啊,求大佬帮帮忙...

先录入成绩(学号外加三科成绩不需要姓名),然后按学号查询单人成绩,以及按学号修改单人成绩,怎么做啊,求大佬帮帮忙

#include<stdio.h>

main()

{

 int n,xh,sx,yw,yy;

 FILE *fp;  

 if((fp=fopen("chengji.dat","r+"))!=NULL) { 

     while(n!=3){

      printf("请输入:1录入/修改,2查询,3退出\n");

      scanf("%d",&n); 

      if(n<3){

          printf("请输入学号:");

          scanf("%d",&xh); 

      }

      while(n==1&&xh!=0){

    printf("请依次输入数学,语文,英语的成绩:");

    scanf("%d%d%d",&sx,&yw,&yy);

    fseek(fp,(xh-1)*16,SEEK_SET); 

    fprintf(fp,"%4d%4d%4d%4d\n",xh,sx,yw,yy);

    printf("请输入学号:");

    scanf("%d",&xh);   

      }

      while(n==2&&xh!=0){

    printf("数学,语文,英语的成绩,依次为:");

    fseek(fp,(xh-1)*16,SEEK_SET); 

    fscanf(fp,"%d%d%d%d\n",&xh,&sx,&yw,&yy);

    printf("%4d%4d%4d%4d\n",xh,sx,yw,yy);

    printf("请输入学号:");

    scanf("%d",&xh);

      }    

  }

 } 

 fclose(fp); 

}

如图所示,生成一个chengji.dat文件,保存成绩,对此文件进行读写修改。

望。。。。。

学生成绩管理系统(用C语言编程)

学生成绩管理系统(模拟实现一个学生成绩管理系统:该系统存储学生学号、姓名、性别、专业班级、C语言课程成绩,假设本班学生20人。要求使用函数实现实现如下功能:)Inputbasicinforma...

学生成绩管理系统
(模拟实现一个学生成绩管理系统:该系统存储学生学号、姓名、性别、专业班级、C语言课程成绩,假设本班学生20人。要求使用函数实现实现如下功能:)
Input basic information of students
Input scores
Display information of students and their scores
Display information by descending order
Find students who pass the exam (score is lager then 60)
Convert score of each student to A (score>=90), B (90>score>=80), C (80>score>=70), D (70>score>=60), or E (60>score>=0), and display the information
Display the average and the pass rate (及格率) of this class.
Query:
Input sutdentID: Display information of the student.
Input sutdentName: Display information of the student 展开

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define t 100
void fun(struct student *s);
void fun1(struct student *s);
void fun2(struct student *s);
void fun3(struct student *s);
void fun4(struct student *s);
void fun5(struct student *s);
void fun6(struct student *s);
struct student
{
char no[20];
char name[20];
char spec[20];
int grade;
char sex[20];
};
void main()
{
struct student s[t]={{"10001","zhang","chinese",12,"male"},
{"10002","wang","math",13,"fale"},
{"10003","lisi","chemsi",12,"male"},
{"10004","mazhi","english",13,"fale"},
{"10005","kuko","math",14,"male"}};

fun(s);
}
void fun(struct student *s)
{
int n;
printf("\n\n\t\t学生档案管理系统");
printf("\n\n\t----------------------------------------");
printf("\n\n\t\t1:录入学生信息系统");
printf("\n\n\t\t2:修改学生信息系统");
printf("\n\n\t\t3:删除学生信息系统");
printf("\n\n\t\t4:查询学生信息系统");
printf("\n\n\t\t5:输出学生信息系统");
printf("\n\n\t\t6:退出系统");
printf("\n\n\t----------------------------------------");
printf("\n\n请选择你要的服务(按数字1~6进入):");
scanf("%d",&n);
system("cls");
if(n==1)
{
printf("\n\n\t\t欢迎进入录入学生系统");
fun1(s);
}
else if(n==2)
{
printf("\n\n\t\t欢迎进入修改学生系统");
fun5(s);
}
else if(n==3)
{
printf("\n\n\t\t欢迎进入删除学生系统");
fun6(s);
}
else if(n==4)
{
printf("\n\n\t\t欢迎进入查询学生系统");
printf("\n\n\t----------------------------------------");
printf("\n\n\t\t1:按学号查询学生信息系统");
printf("\n\n\t\t2:按班级查询学生信息系统");
printf("\n\n\t----------------------------------------");
printf("\n\n请选择你要的服务(按数字1~2进入):");
scanf("%d",&n);
system("cls");
if(n==1)
{
printf("\n\n\t\t1:按学号查询学生信息系统");
fun2(s);
}
else if(n==2)
{
printf("\n\n\t\t1:按班级查询学生信息系统");
fun3(s);
}
else
{
printf("\n\n\t\t数据错误");
}
}
else if(n==5)
{
printf("\n\n\t\t欢迎进入输出学生系统");
fun4(s);

} else if(n==6)
{
printf("\n\n\t\t谢谢使用学生管理系统!\n");
printf("\n\n\t\t请双击Enter键退出系统:");
getchar();
getchar();
exit(0);
}
else
printf("\n\n\t\t数据错误");
}
void fun1(struct student *s)
{
int n,i;
char d;
printf("\n\n\t请输入学生的数量:");
scanf("%d",&n);
for(i=5;i<n+5;i++)
{
printf("\n\t\t请输入学生学号:");
scanf("%s",s[i].no);
printf("\n\t\t请输入学生姓名:");
scanf("%s",s[i].name);
printf("\n\t\t请输入学生专业:");
scanf("%s",s[i].spec);
printf("\n\t\t请输入学生年级:");
scanf("%d",&s[i].grade);
printf("\n\t\t请输入学生性别:");
scanf("%s",s[i].sex);
getchar('\n');
system("cls");
}
printf("\n\n\t\t学号\t姓名\t专业\t年级\t性别");
printf("\n\t---------------------------------------------------");
for(i=0;i<n+5;i++)
{
printf("\n\n\t\t%-8s%-8s%-8s%-8d%-8s",s[i].no,s[i].name,s[i].spec,s[i].grade,s[i].sex);
}
printf("\n\t---------------------------------------------------\n");
printf("返回首页(请按任意键):");
scanf("%c",&d);
system("cls");
fun(s);
}
void fun2(struct student *s)
{
char a[20],d;
int i;
printf("\n\n\t请输入要查询学生的学号(10001~10005):");
scanf("%s",a);
for(i=0;i<5;i++)
{
if(!strcmp(s[i].no,a))
{
printf("\n\t此学生的信息:");
printf("\n\n\t\t学号\t姓名\t专业\t年级\t性别");
printf("\n\t---------------------------------------------------");
printf("\n\n\t\t%-8s%-8s%-8s%-8d%-8s\n",s[i].no,s[i].name,s[i].spec,s[i].grade,s[i].sex);
printf("\n\t---------------------------------------------------");
}

if(i==4&&s[i].no!="10005")
{
printf("\n\t\t查无此人!");

}
}
printf("\n\n返回首页(请按任意键):");
getchar();
scanf("%c",&d);
system("cls");
fun(s);
}
void fun3(struct student *s)
{
int i,a;
char d;
printf("\n\n\t请输入要查询学生的班级(12~14):");
scanf("%d",&a);
for(i=0;i<5;i++)
{
if(a==s[i].grade)
{
printf("\n\t此学生的信息:");
printf("\n\n\t\t学号\t姓名\t专业\t年级\t性别");
printf("\n\t---------------------------------------------------");
printf("\n\n\t\t%-8s%-8s%-8s%-8d%-8s\n",s[i].no,s[i].name,s[i].spec,s[i].grade,s[i].sex);
printf("\n\t---------------------------------------------------");
}
if(i==4&&s[i].grade!=a)
{
printf("\n\t\t查无此人!");

}
}
printf("\n\n返回首页(请按任意键):");
getchar();
scanf("%c",&d);
system("cls");
fun(s);
}
void fun4(struct student *s)
{
int i;
char d;
printf("\n\n\t\t学号\t姓名\t专业\t年级\t性别");
printf("\n\t---------------------------------------------------");
for(i=0;i<5;i++)
{
printf("\n\n\t\t%-8s%-8s%-8s%-8d%-8s",s[i].no,s[i].name,s[i].spec,s[i].grade,s[i].sex);
}
printf("\n\t---------------------------------------------------\n");
printf("返回首页(请按任意键):");
scanf("%c",&d);
getchar();
system("cls");
fun(s);
}
void fun5(struct student *s)
{
char a[20],d;
int i;
printf("\n\n\t请输入要修改学生的姓名:");
scanf("%s",a);
for(i=0;i<5;i++)
{
if(!strcmp(s[i].name,a))
{ printf("\n\t\t请输入修改学号:");
scanf("%s",s[i].no);
printf("\n\t\t请输入修改专业:");
scanf("%s",s[i].spec);
printf("\n\t\t请输入修改年级:");
scanf("%d",&s[i].grade);
printf("\n\t\t请输入修改性别:");
scanf("%s",s[i].sex);
getchar('\n');
system("cls");
}
}
printf("\n\n\t\t学号\t姓名\t专业\t年级\t性别");
printf("\n\t---------------------------------------------------");
for(i=0;i<5;i++)
{
printf("\n\n\t\t%-8s%-8s%-8s%-8d%-8s",s[i].no,s[i].name,s[i].spec,s[i].grade,s[i].sex);
}
printf("\n\t---------------------------------------------------\n");
printf("返回首页(请按任意键):");
scanf("%c",&d);
system("cls");
fun(s);
}
void fun6(struct student *s)
{
char a[20],d;
int i,k;
printf("\n\n\t请输入要删除学生的姓名:");
scanf("%s",a);
for(i=0;i<5;i++)
{
if(!strcmp(s[i].name,a))
{
s[i]=s[i+1];
printf("\n\t此学生的信息:");
printf("\n\n\t\t学号\t姓名\t专业\t年级\t性别");
printf("\n\t---------------------------------------------------");
for(k=0;k<4;k++)
{
printf("\n\n\t\t%-8s%-8s%-8s%-8d%-8s\n",s[k].no,s[k].name,s[k].spec,s[k].grade,s[k].sex);
}
printf("\n\t---------------------------------------------------");
}
if(i==4)
{
printf("没有此人!");
}
}
printf("返回首页(请按任意键):");
getchar();
scanf("%c",&d);
system("cls");
fun(s);
}

用C语言编写一个学生管理系统。

实验要求1、总体要求:系统功能齐全,运行结果正确,用户界面友好,使用简单方便。2、系统数据要求:学生信息如下:学号、姓名、年龄、所在系、3门课程名称及成绩、总分、平均分。3、...

实验要求

1、总体要求:系统功能齐全,运行结果正确,用户界面友好,使用简单方便。

2、系统数据要求:学生信息如下:学号、姓名、年龄、所在系、3门课程名称及成绩、总分、平均分。

3、系统功能要求:

⑴输入至少10个学生的自然信息(学号、姓名、年龄、所在系、成绩)。

⑵计算每个学生的总分、平均分,并输出每个学生的学号,姓名,总分,平均分。

⑶根据学生的总分进行排序输出。

⑷针对课程不同科目进行排序输出。

⑸统计输出每门课程的平均分。

⑹实现多种查询功能(例如:根据学号或姓名或所在系等,查询一个或多个学生信息)。

⑺对于已输入的学生信息进行储存。

⑻能实现学生信息的增、删、改操作。 展开

概述

  • 单纯只用多个数组管理学生成绩信息,不使用结构体,该程序最主要的难点是依据学号或总成绩对学生信息进行排序,借助了临时数组来标记排好序的下标。

  • 运行结果如下:

输入数据: 

根据总成绩排序:

根据学号删除学生信息:

贴上代码(有点多)

#include <stdio.h>

#include <stdlib.h>             //exit函数头文件 

#include <string.h>             //字符串相关操作头文件 

#define  MAX_STUDENT  30        //最大学生数 

//函数声明,本程序共10个子函数,每个函数对应一个操作 

void student_scanf(int n);

void student_printf(int n);

int student_find_name(int n);

int student_find_num(int n);

void student_sort_num(int n);

void student_sort_sum(int n);

int student_alter_num(int n);

int student_alter_name(int n);

int student_delete_num(int n);

int student_delete_name(int n);

//全局数组变量,用于存储学生信息 

char names[MAX_STUDENT][50];

int math[MAX_STUDENT];

int english[MAX_STUDENT];

int computer[MAX_STUDENT];

int sum[MAX_STUDENT];

int num[MAX_STUDENT];

//以下变量用于学生信息数组排序,作为临时数组 

int temp_num[MAX_STUDENT];

char temp_names[MAX_STUDENT][50];

int temp_math[MAX_STUDENT];

int temp_english[MAX_STUDENT];

int temp_computer[MAX_STUDENT];

int temp_sum[MAX_STUDENT];

//sort数组存储排好序的学号或姓名下标 

int sort[MAX_STUDENT];

//循环全局变量 

int i, j;

//main主函数

int main(void)

{

int choice,n;

while (1)

{

printf("*************************************\n");

printf("欢迎使用学生成绩管理系统\n");

printf("[1] 输入所有学生信息\n");

printf("[2] 输出所有学生成绩\n");

printf("[3] 按学号查找某个学生信息\n");

printf("[4] 按姓名查找某个学生信息\n");

printf("[5] 按学号对学生排序\n");

printf("[6] 按总成绩对学生排序\n");

printf("[7] 按学号修改某个学生信息\n");

printf("[8] 按姓名修改某个学生信息\n");

printf("[9] 按学号删除某个学生信息\n");

printf("[10] 按姓名删除某个学生信息\n");

printf("[0] 退出程序\n");

printf("请输入您的选择(0 - 9):");

scanf("%d",&choice);

printf("**************************************)\n");

switch (choice)

{

case 1://录入;

printf("请输入录入的学生信息数: ");

scanf("%d",&n); 

student_scanf(n);

break;

case 2://输出;

student_printf(n);

break;

case 3://根据学号查找

student_find_num(n);

break;

case 4://根据姓名查找

student_find_name(n);

break;

case 5://按学号排序

student_sort_num(n);

break;

case 6://按姓名排序 

student_sort_sum(n);

break;

case 7://按学号修改 

student_alter_num(n);

break;

case 8://按姓名修改 

student_alter_name(n);

break;

case 9://按学号删除 

student_delete_num(n);

n--;

break;

case 10://按姓名删除 

student_delete_name(n);

n--;

break;

case 0://退出程序 

printf("退出程序\n");

printf("程序结束,谢谢使用!\n");

exit(0);

default:

printf("您输入的菜单有误。请重新输入!\n");

}

}

return 0;

}

//1.输入信息

void student_scanf(int n)

{

for (i = 0; i<n; ++i)

{

printf("\n请输入第%d个学生的信息:\n", i + 1);

printf("\n学号:");

scanf("%d", &num[i]);

printf("\n姓名:");

scanf("%s", names[i]);

printf("\n数学成绩:");

scanf("%d", &math[i]);

printf("\n英语成绩:");

scanf("%d", &english[i]);

printf("\n计算机成绩:");

scanf("%d", &computer[i]);

//计算总成绩

sum[i] = math[i] + english[i] + computer[i];

}

}

//2.打印信息        

void student_printf(int n)

{

printf("\n学号\t姓名\t数学成绩\t英语成绩\t计算机成绩\t总成绩\n");

printf("----------------------------------------------------------\n");

for (i = 0; i<n; ++i)

{

printf("%d\t%s\t%d\t\t%d\t\t%d\t\t%d\n", num[i], names[i], math[i], english[i], computer[i], sum[i]);

}

printf("-------------------------------------------------------\n");

}

//3.按学号查找

int student_find_num(int n)

{

int nums;

int result;

printf("请输入待查找的学生学号:");

scanf("%d",&nums);

result= -1;

for (i = 0; i<n; ++i)

{

if (nums == num[i])

{

result = i;

break;

}

}

//最后判断q值

if (result == -1)

{

printf("没有该学生信息!\n");

return 0;

}

else

{

//先打印表头

printf("\n学号\t\t姓名\t\t数学成绩\t英语成绩\t计算机成绩\t总成绩\n");

//再打印数据

printf("%d\t\t%s\t\t%d\t\t%d\t\t%d\t%d\n", num[result], names[result], math[result], english[result], computer[result], sum[result]);

printf("打印出查找结果!\n");

}

return 1;

}

//4.用姓名查找成绩

int student_find_name(int n)

{

char name[200];

int result;

printf("请输入待查找的学生姓名:");

scanf("%s", name);

result = -1;

for (i = 0; i<n; ++i)

{

if (strcmp(name, names[i]) == 0)

{

result = i;

break;

}

}

if (result == -1)

{//未找到结果

printf("没有该学生信息!\n");

return 0;

}

else//找到结果

{

printf("\n学号\t姓名\t数学成绩\t英语成绩\t计算机成绩\t总成绩\n");

printf("%d\t%s\t%d\t\t%d\t\t%d\t\t%d\n", num[result], names[result], math[result], english[result], computer[result], sum[result]);

printf("已完成查找!\n");

}

return 1;

}

//5.按学号排序

void student_sort_num(int n)

{

int min,max;

for(i=0; i<n; ++i)  //复制临时数组 

{

temp_num[i] = num[i];

}

max = 0;        //查找学号最大值,将其下标存至sort数组的最后一个值中 

for(j=1; j<n; j++)

{

if(temp_num[max]<temp_num[j])

max = j;

sort[n-1] = max;    //sort数组的最后一个数 

for(i=0; i<n-1; ++i)

{

min = i;        //查找学号最小值

for(j=0; j<n; ++j)

{

if(temp_num[min]>temp_num[j])

min = j;

//sort数组记录排序的学生信息的下标 

sort[i] = min;

temp_num[min] = temp_num[max];      //利用临时数组将查找过的学生信息的学号设为最大值,排除查找干扰        

}

for(i=0; i<n; ++i)  //再复制一次临时数组 

{

temp_num[i] = num[i];

strcpy(temp_names[i],names[i]);

temp_math[i] = math[i];

temp_english[i] = english[i];

temp_computer[i] = computer[i];

temp_sum[i] = sum[i];

}

for(i=0; i<n; i++)  //按照下标对原数组进行修改 

{

num[i] = temp_num[sort[i]]; 

strcpy(names[i],temp_names[sort[i]]); 

math[i] = temp_math[sort[i]]; 

english[i] = temp_english[sort[i]]; 

computer[i] = temp_computer[sort[i]]; 

sum[i] = temp_sum[sort[i]];

}

printf("排序完毕,请按菜单键2查看排序结果!\n");

return ;

}

//6.按总成绩排序

void student_sort_sum(int n)

{

int min,max;

for(i=0; i<n; ++i)  //复制临时数组 

{

temp_sum[i] = sum[i];

}

max = 0;        //查找总成绩最大值,将其下标存至sort数组的最后一个值中 

for(j=1; j<n; j++)

{

if(temp_sum[max]<temp_sum[j])

max = j;

sort[n-1] = max;    //sort数组的最后一个数 

for(i=0; i<n-1; ++i)

{

min = i;        //查找总成绩最小值

for(j=0; j<n; ++j)

{

if(temp_sum[min]>temp_sum[j])

min = j;

//sort数组记录排序的学生信息的下标 

sort[i] = min;

temp_sum[min] = temp_sum[max];      //利用临时数组将查找过的学生信息的总成绩设为最大值,排除查找干扰       

}

for(i=0; i<n; ++i)  //再复制一次临时数组 

{

temp_num[i] = num[i];

strcpy(temp_names[i],names[i]);

temp_math[i] = math[i];

temp_english[i] = english[i];

temp_computer[i] = computer[i];

temp_sum[i] = sum[i];

}

for(i=0; i<n; i++)  //按照下标对原数组进行修改 

{

num[i] = temp_num[sort[i]]; 

strcpy(names[i],temp_names[sort[i]]); 

math[i] = temp_math[sort[i]]; 

english[i] = temp_english[sort[i]]; 

computer[i] = temp_computer[sort[i]]; 

sum[i] = temp_sum[sort[i]];

}

printf("排序完毕,请按菜单键2查看排序结果!\n");

return ;

}

//7.按学号修改学生信息

int student_alter_num(int n) 

{

int nums;

int result;

printf("请输入待修改的学生学号:");

scanf("%d",&nums);

result= -1;

for (i = 0; i<n; ++i)

{

if (nums == num[i])

{

result = i;

break;

}

}

//最后判断q值

if (result == -1)

{

printf("没有该学生信息!\n");

return 0;

}

else    //修改信息值 

{

printf("请重新输入该学生信息:\n");

printf("学号:\n");

scanf("%d",&num[result]);

printf("姓名:\n");

scanf("%s",names[result]); 

printf("数学成绩:\n");

scanf("%d",&math[result]);

printf("英语成绩:\n");

scanf("%d",&english[result]);

printf("计算机成绩:\n");

scanf("%d",&computer[result]);

sum[result] = math[result] + english[result] + computer[result];

}

return 1;

//8.按姓名修改学生信息

int student_alter_name(int n) 

{

char name[50];

int result;

printf("请输入待修改的学生姓名:");

scanf("%s",name);

result= -1;

for (i = 0; i<n; ++i)

{

if (strcmp(name,names[i])==0)

{

result = i;

break;

}

}

//最后判断q值

if (result == -1)

{

printf("没有该学生信息!\n");

return 0;

}

else        //修改信息值 

{

printf("请重新输入该学生信息:\n");

printf("学号:\n");

scanf("%d",&num[result]);

printf("姓名:\n");

scanf("%s",names[result]); 

printf("数学成绩:\n");

scanf("%d",&math[result]);

printf("英语成绩:\n");

scanf("%d",&english[result]);

printf("计算机成绩:\n");

scanf("%d",&computer[result]);

sum[result] = math[result] + english[result] + computer[result];

}

return 1;

//9.按学号删除学生信息

int student_delete_num(int n) 

{

int nums;

int result;

printf("请输入待删除的学生学号:");

scanf("%d",&nums);

result= -1;

for (i = 0; i<n; ++i)

{

if (nums == num[i])

{

result = i;

break;

}

}

//最后判断q值

if (result == -1)

{

printf("没有该学生信息!\n");

return 0;

}

else    //删除当前学生信息即为将数组从result的位置依次前挪一个位置 

{

for(i=result; i<n-1; ++i)   //最后在main函数中,要将n的值减1 

{

num[i] = num[i+1]; 

strcpy(names[i],names[i+1]); 

math[i] = math[i+1]; 

english[i] = english[i+1]; 

computer[i] = computer[i+1]; 

sum[i] = sum[i+1];

}

return 1;

//10.按姓名删除学生信息

int student_delete_name(int n) 

{

char name[50];

int result;

printf("请输入待删除的学生姓名:");

scanf("%s",name);

result= -1;

for (i = 0; i<n; ++i)

{

if (strcmp(name,names[i])==0)

{

result = i;

break;

}

}

//最后判断q值

if (result == -1)

{

printf("没有该学生信息!\n");

return 0;

}

else    //删除当前学生信息即为将数组从result的位置依次前挪一个位置 

{

for(i=result; i<n-1; ++i)       //最后在main函数中,要将n的值减1 

{

num[i] = num[i+1]; 

strcpy(names[i],names[i+1]); 

math[i] = math[i+1]; 

english[i] = english[i+1]; 

computer[i] = computer[i+1]; 

sum[i] = sum[i+1];

}

return 1;

用c语言实现一个简单的学生成绩管理系统,包括:学...

用字符界面实现,比如按数字1,可以录入学生所有信息;按数字2,显示所有学生成绩;按数字3,进入查询,按学号或姓名查询该学生是否存在,如果存在显示他的所有信息,否则给出不存在提...

用字符界面实现,比如按数字1,可以录入学生所有信息;按数字2,显示所有学生成绩;按数字3,进入查询,按学号或姓名查询该学生是否存在,如果存在显示他的所有信息,否则给出不存在提示。
谢谢各位大神了,小弟确实不会。。。 展开

//用字符界面实现,比如按数字1,可以录入学生所有信息;
//按数字2,显示所有学生成绩;
//按数字3,进入查询,按学号或姓名查询该学生是否存在,如果存在显示他的所有信息,///否则给出不存在提示。
#include <stdio.h>
struct student
{
   char num[6];  /*学号*/
   char name[10];
   char subject[20]; /*科目*/
   float grade;
}stu[10];
void menu()
{
 printf("====================================\n");
 printf("|               学生成绩管理系统                           |\n");
 printf("|               1    输入学生成绩                           |\n");
 printf("|               2    输出学生成绩                           |\n");
 printf("|               3    查询学生成绩                           |\n");
 printf("|               0    退出管理系统                           |\n");
 printf("====================================\n");
}
void input()
{
  for(int i=0;i<10;i++)
    scanf("%s%s%s%f",stu[i].num,stu[i].name,stu[i].subject,&stu[i].grade);
}
void show()
{
  printf("学号\t姓名\t科目\t成绩\n");
  for(int i=0;i<10;i++)
     printf("%s\t%s\t%s\t%f\n",stu[i].num,stu[i].name,stu[i].subject,stu[i].grade);
}
void serach()
{
  char obj[10];
  printf("输入要查询的学号");
  scanf("%s",obj);
  for(int i=0;i<10;i++)
  {
   if(strcmp(obj,stu[i].num))
   {
      printf("学号\t姓名\t科目\t成绩\n");
      printf("%s\t%s\t%s\t%f\n",stu[i].num,stu[i].name,stu[i].subject,stu[i].grade);  
    }  
  } 
}
int main()
{
  int selection;
  while(true)
  {
   clrscr();
   menu();
   printf("请选择0--3:  ");
   scanf("%d",&selection);
   switch(selection)
   {
     case 1:  input();break;
     case 2:  show();break;
     case 3:  search();break;
     case 0:  exit(0);break;
     default: printf("错误的输入,请重新输入:"); 
   }
  }
  return 0;
}

C语言学生管理系统

学生成绩管理系统主要功能:一、当前学生信息:通过结构体structstudent来保存学生的姓名,学号,性别,语文,数学,英语和计算机等等相关信息,并且可以输入当前学生初始信息。二、学...

学生成绩管理系统
主要功能:
一、 当前学生信息:通过结构体struct student 来保存学生的姓名,学号,性别,语文,数学,英语和计算机等等相关信息,并且可以输入当前学生初始信息。
二、学生成绩查询:输入一个学号, 在文件中查找此学生, 若找到则输出此学生的全部信息和成绩; 若找不到则输出查找失败的信息。 同时也可以全部把各科的平均成绩,最高和最低分输出。
三、新生插入:通过给该生的学号来和原班上的学生的学号比较大小,若大就在后,若小则靠前排,将此生的信息保存下来。
四、输出全部学生信息和全部学生成绩。
五、退出系统。
六、附加说明:系统将来完善的功能有:可以通过性别来模糊查询,也可以通过姓名的姓来先进行模糊查询,以便后面精确查找。
(1) 各种基本数据的录入:学生基本情况录入。
(2) 各种基本数据的修改:允许对以及录入的数据重新进行编辑、修改。
(3) 各种基本数据的插入:在学生选修课程基本信息中插入一条新信息。
(4) 各种基本数据的删除:假设某同学转学或出国深造,删除该生的相关信息。
(5) 基于各种数据的查询:姓张的所有同学、年龄小于20岁的同学等。
(6) 基于各种基本数据的统计计算。如:
(6-1)统计每个学生各门功课的平均成绩,并按平均成绩从高到低的次序排名输出每个学生各门功课的综合成绩和平均成绩(名次、学号、姓名、平均成绩、各门功课的成绩)。
(6-2)统计并输出各班各门功课的平均成绩和总平均成绩。
(6-3)统计并输出每个同学已修学分。
(6-4)列出不及格学生清单(学号、姓名、不及格的课程和成绩)。
(6-5)教务信息其它方面的统计(自行确定)。

程序运行的界面:
※※※※※※※※※※※※※※※※※※※※※※※※※※※"
※ ※"
※ 欢迎进入学生成绩管理系统 ※"
※※※※※※※※※※※※※※※※※※※※※※※※※※※"
※ ※"
※ 1:学生数据输入 ※"
※ 2:成绩统计 ※"
※ 3:总成绩统计并排名 ※"
※ 4:学生数据的添加、修改、与删除 ※"
※ 5:学生数据的读取与存储 ※"
※ 6:退出系统 ※"
※※※※※※※※※※※※※※※※※※※※※※※※※※※"

跪求各位大哥大姐 用纯C帮忙写一下,很急啊 展开

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>

#define max 20

typedef struct student //学生
{
char sno[max]; // 学号
char sname[max]; //姓名
char sex[max]; //性别
char age[max]; //年龄
char depart[max]; //系
char classs[max]; //班
char grade[max]; //年级

struct student* next;
} student;

student* head;

int LogOn() //登录模块,已实现输入密码不回显,如果中途发现输错某几位,可退格键重输
{
char username[max],password[max];
printf("\n请输入用户名:");
scanf("%s",username);
printf("\n请输入密码(最多15位):");

//开始以不回显且支持退格方式获取输入密码
int i=0;
while((i>=0)&&(password[i++]=getch())!=13)//条件i>=0是用于限制退格的范围
{
if(password[i-1]=='\b')//对退格键的处理
{
printf("%c%c%c",'\b','\0','\b');
i=i-2;
}
else
printf("*");
}
password[--i]='\0';

//已获取密码。验证用户身份
if(!strcmp(username,"zhang")&&!strcmp(password,"8147086"))
{
printf("\n登录成功!");
return 1;
}
else
return 0;

}

void regist()
{
char ch;
student *s,*ptr; //s用来建新结点,ptr用来暂存头结点

do
{

s=(student*)malloc(sizeof(student)); // 新建一个学生结点

printf("\n开始注册..."); //开始注册
printf("\n请输入该学生的学号:");
scanf("%s",s->sno);
printf("\n请输入该学生的姓名:");
scanf("%s",s->sname);
printf("\n请输入该学生的性别:");
scanf("%s",s->sex);
printf("\n请输入该学生的年龄:");
scanf("%s",s->age);
printf("\n请输入该学生的系:");
scanf("%s",s->depart);
printf("\n请输入该学生所在的班:");
scanf("%s",s->classs);
printf("\n请输入该学生所在的年级");
scanf("%s",s->grade);

ptr=head;
head=s;//将新结点插入队头
s->next=ptr;

fflush(stdin);
printf("\n请问是否继续注册?(Y/N)");
scanf("%c",&ch);
}while(ch=='Y'||ch=='y');

return;
}

void ElePrint(char str[]) //输出单个元素
{
if(str==NULL) exit(0);
printf("%s",str);
for(unsigned int i=0;i<12-strlen(str);i++) printf(" ");//为了对齐输出,需插入一些空格
return;
}

int LinePrint(student *ptr) //输出一行
{
if(ptr==NULL) //检查传进来的指针
return 0;

printf("\n");
ElePrint(ptr->sno);
ElePrint(ptr->sname);
ElePrint(ptr->age);
ElePrint(ptr->sex);
ElePrint(ptr->depart);
ElePrint(ptr->classs);
ElePrint(ptr->grade);

return 1;
}

void print() //输出全部学生信息
{
student *ptr=head;
printf("\n学号 姓名 年龄 性别 系 班 年级 ");
while(ptr)
{
LinePrint(ptr);
ptr=ptr->next;
}
printf("\n");
return;
}
void search()//查询模块
{
int method;//查询方式
char no[max],name[max],departm[max],clss[max],grades[max]; //用来接收查询关键字
while(1)
{
printf("\n请选择查询方式");
printf("\n1.按学号查询");
printf("\n2.按姓名查询");
printf("\n3.按所在系查询");
printf("\n4.按所在班级查询");
printf("\n5.按所在年级查询");
printf("\n6.打印全部学生信息");
printf("\n7.返回主菜单\n");

scanf("%d",&method);

student *p=head,*temp;

switch(method)
{
case 1:
printf("\n请输入要查询的学号:");
scanf("%s",no);
while(p)
{
if(!strcmp(p->sno,no))
break;
else
{
temp=p;
p=p->next;
}
}
printf("\n学号 姓名 年龄 性别 系 班 年级 ");
LinePrint(p);
break;
case 2:
printf("\n请输入要查询的姓名:");
scanf("%s",name);
printf("\n学号 姓名 年龄 性别 系 班 年级 ");
while(p)
{
if(!strcmp(p->sname,name))
LinePrint(p);
p=p->next;
}
break;
case 3:
printf("\n请输入学生所在的系:");
scanf("%s",departm);
printf("\n学号 姓名 年龄 性别 系 班 年级 ");
while(p)
{
if(!strcmp(p->depart,departm))
LinePrint(p);
p=p->next;
}
break;
case 4:
printf("\n请输入学生所在的班:");
scanf("%s",clss);
printf("\n请输入学生所在的年级:");
scanf("%s",grades);
printf("\n学号 姓名 年龄 性别 系 班 年级 ");
while(p)
{
if(!strcmp(p->classs,clss)&&!strcmp(p->grade,grades))
LinePrint(p);
p=p->next;
}
break;

case 5:
printf("\n请输入学生所在的年级:");
scanf("%s",grades);
printf("\n学号 姓名 年龄 性别 系 班 年级 ");
while(p)
{
if(!strcmp(p->grade,grades))
LinePrint(p);
p=p->next;
}
break;

case 6:
print();
break;

case 7:
return;
default:
printf("很抱歉,暂无此查询方式!");
break;
}
}

}

void modify()//修改学生信息
{
char num[max];
student *p=head;
printf("\n请输入要修改的学生的学号:");
scanf("%s",num);
while(p)
{
if(!strcmp(p->sno,num))
break;
else
p=p->next;
}
if(p==NULL)
{
printf("\n错误:没有此学生的信息!\n");
return;

}
LinePrint(p);

printf("\n请输入要修改的该学生的信息:");
printf("\n1.姓名");
printf("\n2.性别");
printf("\n3.年龄");
printf("\n4.所在的系");
printf("\n5.所在的班");
printf("\n6.所在的年级");

char name1[max],sex1[max],age1[max],depart1[max],class1[max],grade1[max];
int select;
fflush(stdin);
scanf("%d",&select);
printf("\n请输入新的信息:");

switch(select)
{
case 1:
scanf("%s",name1);
strcpy(p->sname,name1);
break;
case 2:
scanf("%s",sex1);
strcpy(p->sex,sex1);
break;
case 3:
scanf("%s",age1);
strcpy(p->age,age1);
break;
case 4:
scanf("%s",depart1);
strcpy(p->depart,depart1);
break;
case 5:
scanf("%s",class1);
strcpy(p->classs,class1);
break;
case 6:
scanf("%s",grade1);
strcpy(p->grade,grade1);
break;
default:
printf("\nError!");
break;
}

LinePrint(p);
return;
}

void del()// 删除某学生的信息
{
student *p=head,*temp=head,*s;
char num1[max];
printf("\n请输入要删除的学生的学号:");
scanf("%s",num1);
while(p)//查找该学生所在的结点
{
if(!strcmp(p->sno,num1))
break;
else
{
temp=p;
p=p->next;
}

}//while
if(!p)
{
printf("\n不存在此学生的信息.");
return;
}
LinePrint(p);//输出该学生的信息
printf("\n请问真的要删除该学生的信息吗?(Y/N)");
char ch;
fflush(stdin);
scanf("%c",&ch);
if(ch=='Y'||ch=='y')
{
s=p->next;
temp->next=s;
free(p);
printf("\n已经删除该学生的信息.");
}
return;
}

void sort() //排序模块。将学生记录按学号从小到大排列。用起泡排序算法实现
{

student *ptr,*s=head,*p;
int count=0,count1;
while(s)//统计链表结点个数
{
count++;
s=s->next;
}

for(int i=1;i<count;i++)
{
ptr=head;
p=NULL;
count1=count-i; //用来控制每轮起泡排序的终点,即每次把学号最小的结点移到倒数第i个结点
while(ptr&&ptr->next&&(count1--))
{
if(strcmp(ptr->sno,ptr->next->sno)>0)
{
s=ptr->next;
ptr->next=s->next;
if(p==NULL) //ptr处于队头时
head=s;
else
p->next=s;
s->next=ptr;
p=s;
}
else
{
ptr=ptr->next;
if(p==NULL) //ptr处于队头时
p=head;
else
p=p->next;
}
}
}
return;
}

void quit()
{
char ch;
printf("\n真的要退出?(Y/N)");
fflush(stdin);
scanf("%c",&ch);
if(ch=='Y'||ch=='y')
exit(0);
return;
}

int main()
{
int option;

printf("\nCopyright@2005 KongXinCai All rights reserved.");
printf("\n欢迎使用学生信息管理系统!\n");

//登录模块
int icheck=0;
while(icheck<3)
{
if(LogOn()==0)
icheck++;
else
break;

}
if(icheck==3)
{
printf("\n连续登录三次不成功,退出!");
exit(0);
}

//系统界面

while(1)
{
printf("\n\n请选择需要的服务:");
printf("\n1.注册");
printf("\n2.查询");
printf("\n3.修改");
printf("\n4.删除");
printf("\n5.排序");
printf("\n7.求平均");
printf("\n6.退出\n");

scanf("%d",&option);

switch(option)
{
case 1:
regist();
break;
case 2:
search();
break;
case 3:
modify();
break;
case 4:
del();
break;
case 5:
sort();
break;
case 6:
quit();
break;
}

}

return 0;

}

c语言大作业 学生成绩管理系统

#include<stdio.h>
#include<windows.h>
#include<string.h>
#include<stdlib.h>
void caidan();
void denglu()
{
//定义用户名数组为char类型
char mz[20];
//定义密码数组为char类型
char mima[20];
//定义学员初始值为0
int count=0;
do
{
//清空屏幕
system("cls");
printf("\t\t\t\t学员管理系统平台\n");
printf("=============================================================================\n");
printf("\t\t【用户登陆】\n");
printf("\t\t\t\t用户名:");
fflush(stdin);
//存储用户名
scanf("%s",mz);
printf("\t\t\t\t密码:");
fflush(stdin);
//存储密码
scanf("%s",mima);
//如果输入正确,执行菜单功能
if(strcmp(mz,"kkk")==0&&strcmp(mima,"ok")==0)
{
caidan();
break;
}
//如果输不正确,提示登录失败
else
{
printf("登陆失败\n");
count++;
system("pause");
system("cls");
}
//超过三次退出程序
if(count>=3)
{
printf("登陆失败,请稍后再试\n");
exit(5);
}
}while(1);
}
struct student
{
int num;
char name[20];
int fs[3];
int zf;
}stu[50];
//定义登录函数
void danlu(student *p)
{
printf("输入学号:");
scanf("%d",&p->num);
printf("输入姓名:");
fflush(stdin);
scanf("%s",&p->name);
fflush(stdin);
p->zf=0;
//循环输入三门成绩
for(int i=0;i<3;i++)
{
printf("输入第%d门成绩",i+1);
scanf("%d",&p->fs[i]);
p->zf=p->zf+p->fs[i];
}
}
//定义录入函数
int luru(student *p,int n)
{
//int j=0;
do
{
printf("输入第%d个学员的学号:",n+1);
scanf("%d",&(p+n)->num);
fflush(stdin);
printf("输入第%d个学员的姓名:",n+1);
scanf("%s",&(p+n)->name);
fflush(stdin);
(p+n)->zf=0;
for(int i=0;i<3;i++)
{
printf("输入第%d个学员第%d门成绩",n+1,i+1);
scanf("%d",&(p+n)->fs[i]);
(p+n)->zf=(p+n)->zf+(p+n)->fs[i];
}
n++;
printf("继续请按y键");
fflush(stdin);
//如果输入的不是‘y’,就退出
if(getchar()!='y')
break;
else
continue;
}while(1);
return n;
}
//定义排序函数
void paixu(student stu[],int h)
{
//定义一个student类型的结构tt
student tt;
for(int i=0;i<h;i++)
{
for(int j=0;j<h-i;j++)
{
if(stu[j].zf<stu[j+1].zf)
{
tt=stu[j];
stu[j]=stu[j+1];
stu[j+1]=tt;
}
}
}
}
//定义插入函数
void charu(student stu[],int t,student s)
{
int i=0;
for( i=0;i<t;i++)
{
if(stu[i].zf>s.zf)
break;
}
for(int j=t-1;j>=i;j--)
{
stu[j+1] = stu[j];
}
stu[i]=s;
}
int cha(student stu[],int n)
{
//定义变量保存要插入学员的信息
student s;
do{
//录入单个学员信息
danlu(&s);
//把学员信息插入到数组中
charu(stu,n,s);
//学员的总数要加1
n++;
printf("是否继续插入(y/n):");
fflush(stdin);
if(getchar()!='y')
break;
}while(1);
return n;
}
void shucu(student stu[],int k)
{
printf("-----------学员信息如下---------\n");
printf("学号\t姓名\t语文\t数学\t英语\t总分\n");
for(int i=0;i<k;i++)
{
printf("%d\t%s\t%d\t%d\t%d\t%d\n",stu[i].num,stu[i].name,stu[i].fs[0],stu[i].fs[1],stu[i].fs[2],stu[i].zf);
}
}
int shancu(student stu[],int n)
{
int i,xuehao;
printf("输入要删除的学号:");
scanf("%d",&xuehao);
for(i=0;i<n;i++)
{
if(xuehao==stu[i].num)
break;
}
for(int j = i;j<=n-2;j++)
stu[j] = stu[j+1];
return n-1;
}
void chazao(student stu[],int d)
{
int xuehao,i;
printf("输入要查找的学号");
scanf("%d",&xuehao);
for(i=0;i<d;i++)
{
if(xuehao==stu[i].num)
break;
}
printf("-----------该学员信息如下---------\n");
printf("学号\t姓名\t语文\t数学\t英语\t总分\n");
printf("%d\t%s\t%d\t%d\t%d\t%d\n",stu[i].num,stu[i].name,stu[i].fs[0],stu[i].fs[1],stu[i].fs[2],stu[i].zf);
}
void baocun(student stu[],int n)
{
FILE *fp;
fp=fopen("E:\\studentbin.txt","wb");
fwrite(stu,sizeof(struct student),n,fp);
fclose(fp);
printf("保存成功!\n");

}
void read(student stu[])
{
FILE *fp;
int a=0;
fp=fopen("E:\\studentbin.txt","rb");
a=fread(stu,sizeof(struct student),100,fp);
printf("学号\t姓名\t语文\t数学\t英语\t总分\n");
for(int i=0;i<a;i++)
{
printf("%d\t%s\t%d\t%d\t%d\t%d\n",stu[i].num,stu[i].name,stu[i].fs[0],stu[i].fs[1],stu[i].fs[2],stu[i].zf);
}
fclose(fp);

}
void caidan()
{
int i;
student stu[50];
int count=0,s=0;
do{
system("cls");
printf("\t\t\t\t请选择要进行功能菜单:\n");
printf("\t\t\t\t----------------------\n");
printf("\t\t\t\t1.录入单个学员信息。\n");
printf("\t\t\t\t----------------------\n");
Sleep(100);
printf("\t\t\t\t2.显示所有学员信息。\n");
printf("\t\t\t\t----------------------\n");
Sleep(100);
printf("\t\t\t\t3.排序显示所有学员信息。\n");
printf("\t\t\t\t----------------------\n");
Sleep(100);
printf("\t\t\t\t4.插入单个学员信息。\n");
printf("\t\t\t\t----------------------\n");
Sleep(100);
printf("\t\t\t\t5.删除单个学员信息。\n");
printf("\t\t\t\t----------------------\n");
Sleep(100);
printf("\t\t\t\t6.查找单个学员信息。\n");
printf("\t\t\t\t----------------------\n");
Sleep(100);
printf("\t\t\t\t7.读取所有学员信息。\n");
printf("\t\t\t\t----------------------\n");
Sleep(100);
printf("\t\t\t\t8.保存所有学员信息。\n");
printf("\t\t\t\t----------------------\n");
Sleep(100);
printf("\t\t\t\t9.退出系统。\n");
printf("\t\t\t\t----------------------\n");
scanf("%d",&i);
switch(i)
{
case 1:
//录入学员
system("cls");
count = luru(stu,count);
system("pause");
break;
case 2:
//输出学员信息
system("cls");
shucu(stu,count);
system("pause");
break;
case 3:
//排序
system("cls");
paixu(stu,count);
shucu(stu,count);
system("pause");
break;
case 4:
//插入学员信息
system("cls");
count = cha(stu,count);
paixu(stu,count);
shucu(stu,count);
system("pause");
break;
case 5:
//删除学员信息
system("cls");
count = shancu(stu,count);
shucu(stu,count);
system("pause");
break;
case 6:
system("cls");
chazao(stu,count);
system("pause");
break;
case 7:
system("cls");
read(stu);
system("pause");
break;
case 8:
system("cls");
baocun(stu,count);
system("pause");
break;
case 9:
exit(8);
}
}while('0');
}
void main()
{
int m,w,n;
struct student stu[50];
denglu();
caidan();
}

学生成绩管理系统c语言代码

系统说明学生成绩管理系统主要包括以下内容:1、成绩录入:每学期考试结束后,将每个学生的成绩输入到计算机。2、成绩统计:根据录入的绩进行统计,计算出每个学生的总分,平均分,各...

系统说明学生成绩管理系统主要包括以下内容:1、成绩录入:每学期考试结束后,将每个学生的成绩输入到计算机。2、成绩统计:根据录入的绩进行统计,计算出每个学生的总分,平均分,各班每科的平均分,及格率、不及格率各分数段的人数,每班成绩排列名次,由此分析本学期的教学质量和水平。3、成绩查询:根据用户要求查询某个学生的成绩情况。4、成绩打印:打印考试成绩表六、设计要求1、 数据结构: 数学 英语 语文 C语言 平均成绩(每个学生)2、模块分析:1) 系统主模块:以菜单形式提出用户本系统的功能,并能调用各子模块2)录入模块:完成学生成绩的录入3)统计模块:提供以下四种统计:① 每个学生的总分、平均分② 每班各科的平均分、及格率、不及格率③ 各分数段的人数(90分以上、75-89、60-74、60分以下)④ 按学生总分排出各班学生的名次4)查询模块:按用户提供的学号或姓名进行学生成绩的查询5)打印模块:将查询模块的查询结果进行打印打印各班成绩总表 展开

这个成绩统计系统,不是1个小时就能写完的。要占用回答者数小时时间,不多给点金币?或是其它的?

c语言成绩管理系统

课程设计任务1、每一条记录包括一个学生的学号、姓名、5门课成绩、平均成绩、名次;2、输入功能:可以一次完成若干条记录的输入;3、显示功能:完成全部学生记录的显示;4、查找功能:...

课程设计任务
1、每一条记录包括一个学生的学号、姓名、5门课成绩、平均成绩、名次;
2、输入功能:可以一次完成若干条记录的输入;
3、显示功能:完成全部学生记录的显示;
4、查找功能:完成按学号查找学生记录,并显示;
5、排序功能:按学生平均成绩进行排序;
6、插入功能:插入学生的一条记录并按平均分排序;
7、删除功能:根据学号删除一条记录;
8、将学生的信息以链表的方式存储;
9、应提供界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观。 展开

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 10
struct student
{
    char  num[5];
    char name[20];
    int  score;
};
struct student stu[N] = { { "1","张三",90 },{ "2","李四",87 },{ "3","王五",76 },{ "4","赵六",67 },{ "5","刘七",56 } };

int count = 5;

void insert(int i)   //输入学生具体信息的函数
{
    printf("第%d个学生的姓名:", i + 1);

    scanf("%s", stu[i].name);

    printf("\n");

    printf("第%d个学生的分数:", i + 1);

    scanf("%d", &stu[i].score);

    printf("\n");

    count++;
    sprintf(stu[i].num,"%d",count);
}

void input()     //输入数据的函数
{
    system("color 3e");
    void menu();
    void insert(int i);
    int i, j, k, l, r;
    printf("您想输入几个学生的信息? (1-%d) [ ]\b\b", N - 5);
    scanf("%d", &j);
    r = 5 + j;
    for (i = 5; i<r; i++)
    {
        printf("\n输入第%d个学生的信息。\n", i + 1);
        insert(i);
    }
    do
    {
        printf("返回菜单请按1! [ ]\b\b");
        scanf("%d", &k);
        if (k == 1)
        {
            system("cls");
            menu();
        }
        else
            l = 0;
    } while (l == 0);
}





void search()        //查询成绩的函数
{
    void menu();
    void printf_one(int k);
    struct student s;
    int i, k, w0, w1, w2;
    do
    {
        printf("请选择查找的类别:  1.姓名   2.学号   [ ]\b\b");
        scanf("%d", &w1);
        if (w1<1 || w1>2)
        {
            printf("输入错误!请重新输入!\n");
            w2 = 1;
        }
        else
            w2 = 0;
    } while (w2 == 1);
    if (w1 == 1)  //按姓名查找
    {
        do
        {
            k = -1;
            do
            {
                printf("\n请输入您想查找的学生的姓名!\nName:");
                scanf("%s", s.name);
                for (i = 0; i<5; i++)
                    if (strcmp(s.name, stu[i].name) == 0)
                    {
                        k = i;
                        s = stu[i];
                    }
                if (k == -1)  //没有找到
                {
                    int o;
                    printf("\n\n没有这个学生的信息!\n");
                    printf("What do you want to do?\n\t1.继续   2.返回菜单  [ ]\b\b");
                    scanf("%d", &o);
                    if (o == 1)
                    {
                        system("cls");
                        search();   //继续查找
                    }
                    else
                    {
                        system("cls");
                        menu();   //返回菜单
                    }
                }
            } while (k == -1);
            system("cls");
            printf_one(k);     //查找到以后输出这个学生的信息
            printf("\nWhat do you want to do?\n\t1.继续   2.返回菜单   [ ]\b\b");
            scanf("%d", &w0);
        } while (w0 == 1);
        system("cls");
        menu();   //不在查找时返回菜单
    }
    else    //按学号查找
    {
        do
        {
            k = -1;
            do
            {
                printf("\n请输入您想查找的学生的学号!\nNum:");
                scanf("%s", s.num);
                for (i = 0; i<5; i++)
                    if (strcmp(s.num, stu[i].num) == 0)  //找到了
                    {
                        k = i;
                        s = stu[i];
                    }
                if (k == -1)    //没有找到
                {
                    int o;
                    printf("\n\n没有这个学生的信息!\n");
                    printf("What do you want to do?\n\t1.继续   2.返回菜单  [ ]\b\b");
                    scanf("%d", &o);
                    if (o == 1)
                    {
                        system("cls");
                        search();  // 继续查找
                    }
                    else
                    {
                        system("cls");
                        menu();    //返回菜单
                    }
                }
            } while (k == -1);
            system("cls");
            printf_one(k);   //找到后输出这个学生的信息
            printf("\nWhat do you want to do?\n\t1.继续  2.返回菜单   [ ]\b\b");
            scanf("%d", &w0);
        } while (w0 == 1);
        system("cls");
        menu();     //不在查找时返回菜单
    }

}



void xiugai()     //修改学生信息的函数
{
    void menu();
    void printf_one(int k);
    void xiugai_2();
    struct student s;
    int i,n,k,w0=1,w1,w2=0,o;
    do
    {
        k=-1;
        do
        {
            printf("\n请输入您想要修改的学生的姓名!Name:");
            scanf("%s",s.name);
            for(i=0;i<5;i++)
            if(strcmp(s.name,stu[i].name) == 0)  //与其中一个学生匹配
            {
                k = i;
                s = stu[i];
            }
            if(k == -1)   // 没有找到输入的学生
            {                
                printf("\n\n没有这个学生的信息!\n");
                printf("What do you want to do?\n\t1.继续  2.返回菜单  [ ]\b\b");
                scanf("%d",&o);
                if(o == 1)
                {
                    system("cls");
                    //xiugai();    //继续修改
                }
                else
                {
                    system("cls");
                    menu();    //返回菜单
                }
            }

        }while(k == -1);
        system("cls");
        printf("修改这个学生的分数:");

        scanf("%d", &stu[k].score);
        printf("\n");
        printf_one(k);   //输出这个学生的信息
        printf("\nWhat do you want to do?\n\t1.继续  2.返回菜单  [ ]\b\b");
        scanf("%d", &o);
        if (o != 1)
        {
            system("cls");
            menu();    //返回菜单
        }
    }while(1);
}



void printf_all()       //输出所有学生成绩的函数
{
    void menu();
    system("color 4e");
    int i, j, k;
    for (i = 0; i<N; i++)
    {
        printf("学号:%s    姓名:%s    分数:%d\n", stu[i].num, stu[i].name, stu[i].score);
    }
    do
    {
        printf("返回菜单请按1  [ ]\b\b");
        scanf("%d", &j);
        if (j == 1)
        {
            system("cls");
            menu();
        }
        else
        {
            k = 0;
        }
    } while (k == 0);
}



void printf_one(int k)  //输出某一个学生的信息的函数
{
    printf("学号: %s    姓名: %s   分数: %d", stu[k].num, stu[k].name, stu[k].score);
}


void Exit()   //退出系统的函数
{
    exit(0);
}

void menu()       //菜单函数
{
    system("color 2e");
    printf("\n\t\t\t欢迎使用学生学籍管理系统!\n");
    printf("\n");
    int n, m;
    do
    {
        puts("\t\t********************菜单*********************");
        puts("\t\t*********************************************");
        puts("\t\t**************学生学籍管理系统***************");
        puts("\t\t*********************************************");
        puts("\t\t*********************************************");
        puts("\t\t*******        1--输入数据               ****");
        puts("\t\t*******        2--查询成绩               ****");
        puts("\t\t*******        3--修改成绩               ****");
        puts("\t\t*******        4--输出所有学生成绩       ****");
        puts("\t\t*******        5--统计及格和优秀的人数   ****");
        puts("\t\t*******        6--输出所有不及格学生的成绩 **");
        puts("\t\t*******        7--输出所有优秀学生姓名和成绩*");
        puts("\t\t*******        8--退出系统               ****");
        puts("\t\t*********************************************");
        printf("请选择服务种类(1~8): [ ]\b\b");
        scanf("%d", &n);
        if (n<1 || n>8)
        {
            system("cls");
            printf("选择错误! 请重新选择!\n");
            m = 1;
        }
        else
        {
            m = 0;
        }
    } while (m == 1);
    switch (n)
    {
    case 1: system("cls"); input(); break;
    case 2: system("cls"); search(); break;
    case 3: system("cls"); xiugai(); break;
    case 4: system("cls"); printf_all(); break;
        //    case 5: system("cls"); tongji(); break;
        //    case 6: system("cls"); printf_all_bujige() break;
        //    case 7: system("cls"); printf_all_youxiu() break;
    case 8: Exit(); break;
    }
}

int main()
{
    menu();
    return 0;
}

cad线条怎么加粗

水泊梁山108将排名

热门曲谱

Copyright © 2014-2019 曲谱大全(www.qpzxw.com)曲谱自学网版权所有 备案号:皖ICP备2021004734号-1

版权声明:曲谱网所有曲谱及资料均为作者提供或网友推荐收集整理而来,仅供爱好者学习和研究使用,版权归原作者所有。

联系邮箱:qupudaquanhezuo@gmail.com