C语言 学生成绩c语言学籍管理系统统 求高手帮忙按要求做一个在线等!

122168人阅读
C++报告提交(84)
项目实训(9)
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称: 学生成绩管理系统
* 作 者: 刘江波
* 完成日期: 2012 年 6 月 23 日
* 版 本 号: v.623
* 对任务及求解方法的描述部分
* 程序头部的注释结束
#include &stdio.h&
#include&string&
/*定义学生结构体*/
struct Student
char ID[20];
char Name[20];
float Mark1;
float Mark2;
float Mark3;
/*声明学生数组及学生数量*/
struct Student students[1000];
int num=0;
/*求平均值*/
float Avg(struct Student stu)
return (stu.Mark1+stu.Mark2+stu.Mark3)/3;
/*通过学号返回数组下标*/
int Student_SearchByIndex(char id[])
for (i=0;i&i++)
if (strcmp(students[i].ID,id)==0)
return -1;
/*通过姓名返回数组下标*/
int Student_SearchByName(char name[])
for (i=0;i&i++)
if (strcmp(students[i].Name,name)==0)
return -1;
/*显示单条学生记录*/
void Student_DisplaySingle(int index)
printf(&%10s%10s%8s%8s%8s%10s\n&,&学号&,&姓名&,&成绩&,&成绩&,&成绩&,&平均成绩&);
printf(&-------------------------------------------------------------\n&);
printf(&%10s%10s%8.2f%8.2f%8.2f%10.2f\n&,students[index].ID,students[index].Name,
students[index].Mark1,students[index].Mark2,students[index].Mark3,students[index].Average);
/*插入学生信息*/
void Student_Insert()
printf(&请输入学号:&);
scanf(&%s&,&students[num].ID);
getchar();
printf(&请输入姓名:&);
scanf(&%s&,&students[num].Name);
getchar();
printf(&请输入成绩:&);
scanf(&%f&,&students[num].Mark1);
getchar();
printf(&请输入成绩:&);
scanf(&%f&,&students[num].Mark2);
getchar();
printf(&请输入成绩:&);
scanf(&%f&,&students[num].Mark3);
getchar();
students[num].Average=Avg(students[num]);
printf(&是否继续?(y/n)&);
if (getchar()=='n')
/*修改学生信息*/
void Student_Modify()
//float mark1,mark2,mark3;
char id[20];
printf(&请输入要修改的学生的学号:&);
scanf(&%s&,&id);
getchar();
index=Student_SearchByIndex(id);
if (index==-1)
printf(&学生不存在!\n&);
printf(&你要修改的学生信息为:\n&);
Student_DisplaySingle(index);
printf(&-- 请输入新值--\n&);
printf(&请输入学号:&);
scanf(&%s&,&students[index].ID);
getchar();
printf(&请输入姓名:&);
scanf(&%s&,&students[index].Name);
getchar();
printf(&请输入成绩:&);
scanf(&%f&,&students[index].Mark1);
getchar();
printf(&请输入成绩:&);
scanf(&%f&,&students[index].Mark2);
getchar();
printf(&请输入成绩:&);
scanf(&%f&,&students[index].Mark3);
getchar();
students[index].Average=Avg(students[index]);
printf(&是否继续?(y/n)&);
if (getchar()=='n')
/*删除学生信息*/
void Student_Delete()
char id[20];
printf(&请输入要删除的学生的学号:&);
scanf(&%s&,&id);
getchar();
index=Student_SearchByIndex(id);
if (index==-1)
printf(&学生不存在!\n&);
printf(&你要删除的学生信息为:\n&);
Student_DisplaySingle(index);
printf(&是否真的要删除?(y/n)&);
if (getchar()=='y')
for (i=i&num-1;i++)
students[i]=students[i+1];//把后边的对象都向前移动
getchar();
printf(&是否继续?(y/n)&);
if (getchar()=='n')
/*按姓名查询*/
void Student_Select()
char name[20];
printf(&请输入要查询的学生的姓名:&);
scanf(&%s&,&name);
getchar();
index=Student_SearchByName(name);
if (index==-1)
printf(&学生不存在!\n&);
printf(&你要查询的学生信息为:\n&);
Student_DisplaySingle(index);
printf(&是否继续?(y/n)&);
if (getchar()=='n')
/*按平均值排序*/
void Student_SortByAverage()
for (i=0;i&i++)
for (j=1;j&num-i;j++)
if (students[j-1].Average&students[j].Average)
tmp=students[j-1];
students[j-1]=students[j];
students[j]=
/*显示学生信息*/
void Student_Display()
printf(&%10s%10s%8s%8s%8s%10s\n&,&学号&,&姓名&,&成绩&,&成绩&,&成绩&,&平均成绩&);
printf(&-------------------------------------------------------------\n&);
for (i=0;i&i++)
printf(&%10s%10s%8.2f%8.2f%8.2f%10.2f\n&,students[i].ID,students[i].Name,
students[i].Mark1,students[i].Mark2,students[i].Mark3,students[i].Average);
/*将学生信息从文件读出*/
void IO_ReadInfo()
if ((fp=fopen(&Database.txt&,&rb&))==NULL)
printf(&不能打开文件!\n&);
if (fread(&num,sizeof(int),1,fp)!=1)
for(i=0;i&i++)
fread(&students[i],sizeof(struct Student),1,fp);
fclose(fp);
/*将学生信息写入文件*/
void IO_WriteInfo()
if ((fp=fopen(&Database.txt&,&wb&))==NULL)
printf(&不能打开文件!\n&);
if (fwrite(&num,sizeof(int),1,fp)!=1)
printf(&写入文件错误!\n&);
for (i=0;i&i++)
if (fwrite(&students[i],sizeof(struct Student),1,fp)!=1)
printf(&写入文件错误!\n&);
fclose(fp);
/*主程序*/
void main()
IO_ReadInfo();
/*主菜单*/
printf(&\n------ 学生成绩管理系统------\n&);
printf(&1. 增加学生记录\n&);
printf(&2. 修改学生记录\n&);
printf(&3. 删除学生记录\n&);
printf(&4. 按姓名查询学生记录\n&);
printf(&5. 按平均成绩排序\n&);
printf(&6. 退出\n&);
printf(&请选择(1-6):&);
scanf(&%d&,&choice);
getchar();
switch(choice)
Student_Insert();
Student_Modify();
Student_Delete();
Student_Select();
Student_SortByAverage();
Student_Display();
IO_WriteInfo();
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:481118次
积分:4930
积分:4930
排名:第4890名
原创:155篇
评论:228条
文章:18篇
阅读:261995
(9)(1)(3)(3)(10)(16)(23)(8)(3)(7)(13)(15)(18)(3)(26)c语言学生成绩管理系统
一 实验内容:
1.实验名称:学生成绩管理。
2.试验目的:
&利用所学的三种程序基本结构以及数组、用户自定义函数进行一个简单管理系统的设计,进一步理解和掌握C语言的语法以及三种基本程序结构的综合应用。&
通过程序中涉及到的排序、查找、求和等操作加深对算法、程序设计思路、常用程序设计技巧的理解与掌握,逐步培养学生的程序开发能力。
3.试验要求:设某班有n位同学,每位同学的数据包括以下内容:
学号(字符串)姓名(字符串)、数学成绩(整型)、程序设计成绩(整型)。设计&&&&&&&&&&&&&&&&&&&
程序完成以下五项功能:新建数据档案、添加数据、删除数据、对输入的数据进行排序和查询。
1)输入数据时,要求学号不能相同,姓名可以相同。
2)在学习“结构体”和“文件”之前也可进行本项程序设计,采用多个数组存储数据,&&&&&
同一学生信息对应的数组元素应下标相同。
实验具体设计要求
(一)程序运行时,首先显示主菜单如下:
1.新建数据
2.添加数据
3.删除数据
屏幕提示:请输入序号选择相应操作。
要求当用户输入任一序号后,程序都能进行相应操作。
(二)在主菜单中选择序号4,弹出子菜单选择排序方式,子菜单如下:
& 1.数学成绩排序
2.程序设计成绩排序
3.总分排序。
4.返回主菜单
请按序号选择相应操作。
选择子菜单的序号后,程序能正确运行并在屏幕上显示按要求排序后的相关信息。
(三)在主菜单中选择序号5,弹出子菜单选择查询方式,子菜单如下:
1.学号查询
2.姓名查询
3.数学成绩查询
4.程序设计成绩查询
5.总分查询
6.返回主菜单
请按序号选择相应操作。&
& 在子菜单中选择序号后,程序按以下方式工作:
1)学号查询:输入学号后,若该学号存在则显示与其相关的所有信息,否则显示找不到的提示信息;(提示:查询到满足条件的结果后,查询即可结束)
2)姓名查询:输入姓名后,若该姓名存在则显示与其相关的所有信息,否则显示找不到的提示信息;(提示:使用字符串比较函数进行比较)
3)按科目查询:输入指定分数,程序运行后显示该科目中考试成绩大于等于指定分数的同学的学号、姓名以及该科成绩并统计满足条件的人数;
4)总分查询:输入指定分数,程序运行后显示总分成绩大于等于指定分数的同学的学号、姓名以及各科成绩并统计满足条件的人数。
&二.算法说明
选择你想要做的操作序号。1.新建数据2.添加数据3.删除数据
4.排序5.查询6.退出
1.选1为新建数据:信息会提示你需要输入的学生的相关信息,包括你需要输入的学生的个数,学生的学号,姓名,数学成绩,程序设计成绩。之后程序会返回主菜单。
2.选2为添加数:如果在之前你有创建新的数据,则你添加的数据会在原有的数据基础上加入,如果没有新建,则程序相当于创建新的数据,同样的程序会提示你要输入的信息,在输入完一个学生的信息后程序提示是否继续,跟据需要选择。添加完后自动输出全部学生信息并返回主菜单。
3.选3为删除数:信息提示需要输入想要删除的学生的学号,系统自动输出删除该生后的其他学生的信息。系统自动返回主菜单。
4.选4为排序:系统出现子菜单(1.数学成绩排序,2.程序设计程序排序,3.总分排序,4.返回主菜单)选择1或2或3后,系统输出排序后的学生信息并返回主菜单,选四则返回主菜单。
5.选5为查询:系统出现子菜单(1.学号查询,2.姓名查询,3.数学成绩查询,4.程序设计成绩查询,5.总分查询,6.返回主菜单)选择1或2或3,输入相关信息后输出你所查找的学生的信息并返回主菜单,注意的是数学成绩和程序设计成绩查询还有总分查询输入分数后输出的是大于该分数的学生和人数。
6.选6为退出系统。
三.程序清单
#include&stdio.h&
#include&string.h&
struct student
&& char num[10];
&& char name[10];
//全局变量
void main()
&void creat_data();
&void add();
&void delet();
&void sort_stu();
&void search();
printf("\t\t\t主菜单\n");
printf("\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("\t\t\t1.新建数据\n") ;
printf("\t\t\t2.添加数据\n");
printf("\t\t\t3.删除数据\n");
printf("\t\t\t4.排序\n");
printf("\t\t\t5.查询\n");
printf("\t\t\t6.退出\n");
printf("\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("请输入序号选择相应操作:");
scanf("%d",&n);
case 1:creat_data();
case 2:add();
case 3:delet();
case 4:sort_stu();
case 5:search();
case 6:printf("欢迎使用\n");
default: printf("输入错误");
}while(n!=6);
void sum_stu() //分数总和
for(i=1;i&=t;i++)
stu[i].sum=stu[i].math+stu[i].
void print()
&printf("\t\t学号&&
数学成绩&&
程序设计成绩&& 总分\n");
printf("\t\t---------------------------------------------------\n");
for(i=1;i&=t;i++)
printf("\t\t%s&&&&
%d&&&&&&&&
%d&&&&&&&&&&&
%d\n",stu[i].num,stu[i].name,stu[i].math,stu[i].proj,stu[i].sum);
printf("\t\t---------------------------------------------------\n\n");
void creat_data() //新建数据
printf("The number of students you want to creat: ");
scanf("%d",&t);
for(i=1;i&=t;i++)
&&&&&&&&&&
printf("\n请输入学生学号:");
&&&&&&&&&&
scanf("%s",stu[i].num); printf("\n");
&&&&&&&&&&
printf("请输入学生姓名:");
&&&&&&&&&&
scanf("%s",stu[i].name); printf("\n");
&&&&&&&&&&
printf("请输入学生数学成绩:");
&&&&&&&&&&
scanf("%d",&stu[i].math); printf("\n");
&&&&&&&&&&
printf("请输入学生程序设计成绩:");
&&&&&&&&&&
scanf("%d",&stu[i].proj); printf("\n");
sum_stu();
&void add()& //添加数据
printf("\n请输入学生学号:");
scanf("%s",stu[t+1].num); printf("\n");
printf("请输入学生姓名:");
scanf("%s",stu[t+1].name); printf("\n");
printf("请输入学生数学成绩:");
scanf("%d",&stu[t+1].math); printf("\n");
printf("请输入学生程序设计成绩:");
scanf("%d",&stu[t+1].proj); printf("\n");
printf("是否继续添加y/n:");
getchar();
ch=getchar();
printf("\n");
}while(ch=='y');
sum_stu();
void delet()//删除数据
&char num1[10];
&int i,j,count=0;
&printf("输入想要删除的学生的学号");
&scanf("%s",num1);
&for (i=1;i&=t;i++)
if(strcmp(num1,stu[i].num)==0)
for(j=i;j&t+1;j++)
stu[j]=stu[j+1];
&&&count++;
&& if(count==0)
printf("没有该生信息!");
void sort_stu()& //排序
&&& struct
printf("\t\t----------------------------------\n");
printf("\t\t\t1.数学成绩排序\n");
printf("\t\t\t2.程序设计成绩排序\n");
printf("\t\t\t3.总分排序\n");
printf("\t\t\t4.返回主菜单\n");
printf("\t\t----------------------------------\n");
printf("请按序号选择相应操作:");
scanf("%d",&k);
for(i=1;i&t;i++)
for(j=i+1;j&=t;j++)
&&&&&&&&&&&&
if(stu[i].math&stu[j].math)
&&&&&&&&&&&&&&
{temp=stu[i];stu[i]=stu[j];stu[j]=}
else& if(k==2)
for(i=1;i&t;i++)
for(j=i+1;j&=t;j++)
&&&&&&&&&&&&
if(stu[i].proj&stu[j].proj)
&&&&&&&&&&&&&&
{temp=stu[i];stu[i]=stu[j];stu[j]=}
else& if(k==3)
for(i=1;i&t;i++)
for(j=i+1;j&=t;j++)
&&&&&&&&&&&&
if(stu[i].sum&stu[j].sum)
&&&&&&&&&&&&&&
{temp=stu[i];stu[i]=stu[j];stu[j]=}
else main();
void search_num()
m[10];int i, count=0;
printf("输入学号:");
scanf("%s",m);
for(i=1;i&=t;i++)
&&&&&&&&&&
if(strcmp(m,stu[i].num)==0)
{printf("%s&&
%d\n",stu[i].num,stu[i].name,stu[i].math,stu[i].proj,stu[i].sum);count++;}
if (count==0) printf("没有相关信息!\n");
&void search_name()
m[10];int& i,count=0;
printf("输入姓名:");
scanf("%s",m);
for(i=1;i&=t;i++)
&&&&&&&&&&
if(strcmp(m,stu[i].name)==0)
{printf("%s&&
%d\n",stu[i].num,stu[i].name,stu[i].math,stu[i].proj,stu[i].sum);count++;}
&&if (count==0)
printf("没有相关信息!\n");
&void search_math()
m,i,count=0;
printf("输入数学成绩:");
scanf("%d",&m);
for(i=1;i&=t;i++)
&&&&&&&&&&
if(m&=stu[i].math)
{printf("%s&&
%d\n",stu[i].num,stu[i].name,stu[i].math,stu[i].proj,stu[i].sum);count++;}
printf("人数:%d\n",count);
&&if(count=0)
printf("没有大于该分数的同学!\n");
&void search_proj()
m,i,count=0;
printf("输入程序设计成绩:");
scanf("%d",&m);
for(i=1;i&=t;i++)
&&&&&&&&&&
if(m&=stu[i].proj)
{printf("%s&&
%d\n",stu[i].num,stu[i].name,stu[i].math,stu[i].proj,stu[i].sum);count++;}
printf("人数:%d\n",count);
&&if(count==0)
printf("没有大于该分数的同学!\n");
&void search_sum()
m,i,count=0;
printf("输入分数:");
scanf("%d",&m);
for(i=1;i&=t;i++)
&&&&&&&&&&
if(m&=stu[i].sum)
{printf("%s&&
%d\n",stu[i].num,stu[i].name,stu[i].math,stu[i].proj,stu[i].sum);count++;}
printf("人数:%d\n",count);
&&if(count==0)
printf("没有大于该分数的同学!\n");
void search() //查询
printf("\t\t--------------------------------------------\n");
printf("\t\t\t1.学号查询\n");
printf("\t\t\t2.姓名查询\n");
printf("\t\t\t3.数学成绩查询\n");
printf("\t\t\t4.程序设计成绩查询\n");
printf("\t\t\t5.总分查询\n");
printf("\t\t\t6.返回主菜单\n");
printf("\t\t---------------------------------------------\n");
printf("请按序号选择相应操作:");
scanf("%d",&k);
case 1:search_num();
case 2:search_name();
case 3:search_math();
case 4:search_proj();
case 5:search_sum();
case 6:main();
default: printf("输入错误");
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 c语言学籍管理系统 的文章

 

随机推荐