帮忙写一份C语言设计的《学生信息管理系统》

作者&投稿:针风 (若有异议请与网页底部的电邮联系)
帮忙设计一个C语言的学生信息管理系统~

#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "conio.h"

struct subject{ //科目信息结构体
float Chinese; //语文
float Math; //数学
float English; //英语
};

struct student{
int no; //学号
char name[20]; //姓名
char sex; //性别
char address[20]; //地址
char telephone[20];//电话
subject score; //3门科目的成绩
float avg; //3门平均成绩
}stud[50]; //结构体数组

int count=0; //计数变量,记录学生人数

void add(){ //增加学生信息函数
student a; //临时结构体变量a
char x,j; //Yes or No输入字符变量

//循环输入学生信息
for(int i=0;i<50;i++){
system("cls"); //清屏函数
int t=0;
printf("请输入学生的学号:");
scanf("%d",&a.no);

//寻找学号是否已存在
for(int k=0;k<count;k++){
if(stud[k].no==a.no){
t=1;
}
}

//存在与否,分别输出
if(t==1)
printf("输入的学号已存在,请重新输入
");
else{
printf("请输入学生的姓名:");
scanf("%s",a.name);
printf("请输入学生的性别(m代表男,f代表女):");
scanf("%c",&a.sex);
scanf("%c",&a.sex);
printf("请输入学生的地址:");
scanf("%s",a.address);
printf("请输入学生的电话:");
scanf("%s",a.telephone);
printf("请输入学生的语文成绩:");
scanf("%f",&a.score.Chinese);
printf("请输入学生的数学成绩:");
scanf("%f",&a.score.Math);
printf("请输入学生的英语成绩:");
scanf("%f",&a.score.English);
a.avg=(a.score.Chinese+a.score.English+a.score.Math)/3;

//判定是否要增加该记录
printf("确定要增加该记录吗?(y/n)");
scanf("%c",&x);
scanf("%c",&x);
if(x=='y'){
stud[count]=a;
count++;
}
}

//判定是否要继续增加记录
printf("要继续增加记录吗?(y/n)");
scanf("%c",&j);
scanf("%c",&j);
if(j=='n')
break;
}
printf("
按任意键返回主菜单:");
getch(); //从键盘接收任意一个字符就返回
}

void show(){ //显示所有学生信息函数
system("cls");
//循环显示
for(int i=0;i<count;i++){
printf("学号:%-8d姓名:%-16s性别:%c
",stud[i].no,stud[i].name,stud[i].sex);
printf("地址:%s
电话:%s
",stud[i].address,stud[i].telephone);
printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f
",stud[i].score.Chinese,
stud[i].score.Math,stud[i].score.English,stud[i].avg);
printf("---------------------------------------------------------------------
");
}
printf("
按任意键返回主菜单:");
getch();
}

void sort(){ //根据学生的学号由小到大进行排序
system("cls");
//冒泡排序法
for(int i=0;i<count-1;i++){
for(int j=0;j<count-1-i;j++){
if(stud[j].no>stud[j+1].no){
student t=stud[j];
stud[j]=stud[j+1];
stud[j+1]=t;
}
}
}
printf("排序已完成,按任意键返回主菜单:");
getch();
}

void query1(){ //根据学号查询并显示单个学生信息
int x; //输入学生学号整型变量
char k; //Yes or No输入字符变量
while(true){
system("cls");
int t=-1; //要查询的学生学号所对应的数组下标,-1代表在数组中没对应下标
printf("请输入要查询的学生学号:");
scanf("%d",&x);

//循环寻找结构体数组中符合变量x的数据,并把该数据所在的下标值赋给变量t
for(int i=0;i<count;i++){
if(stud[i].no==x)
t=i;
}

//判定信息是否存在,分别输出
if(t==-1)
printf("您所查询的学生信息不存在,");
else{
printf("学号:%-8d姓名:%-16s性别:%c
",stud[t].no,stud[t].name,stud[t].sex);
printf("地址:%s
电话:%s
",stud[t].address,stud[t].telephone);
printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f
",stud[t].score.Chinese,
stud[t].score.Math,stud[t].score.English,stud[t].avg);
printf("---------------------------------------------------------------------
");
}

//判定是否要继续查询
printf("是否继续查询?(y/n)");
scanf("%c",&k);
scanf("%c",&k);
if(k=='n')
break;
}
printf("
按任意键返回主菜单:");
getch();
}

void query2(){ //根据姓名查询并显示单个学生信息
char x[20]; //输入学生姓名字符串变量
char k; //Yes or No输入字符变量
while(true){
system("cls");
student a[50]; //要查询的学生姓名所对应的数组下标,-1代表在数组中没对应下标
int t=0;
printf("请输入要查询的学生姓名:");
scanf("%s",x);

//循环寻找结构体数组中符合变量x的数据,并把该数据所在的下标值赋给变量t
for(int i=0;i<count;i++){
if(strcmp(stud[i].name,x)==0){
a[t]=stud[i];
t++;
}
}

//判定信息是否存在,分别输出
if(t==0)
printf("您所查询的学生信息不存在,");
else{
for(int i=0;i<t;i++){
printf("学号:%-8d姓名:%-16s性别:%c
",a[i].no,a[i].name,a[i].sex);
printf("地址:%s
电话:%s
",a[i].address,a[i].telephone);
printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f
",a[i].score.Chinese,
a[i].score.Math,a[i].score.English,a[i].avg);
printf("---------------------------------------------------------------------
");
}
}

//判定是否要继续查询
printf("是否继续查询?(y/n)");
scanf("%c",&k);
scanf("%c",&k);
if(k=='n')
break;
}
printf("
按任意键返回主菜单:");
getch();
}

void good(){ //显示平均成绩和单科成绩最高的学生资料
system("cls");

//寻找平均成绩中的最高值
float max1=stud[0].avg;
for(int i=1;i<count;i++)
if(stud[i].avg>max1)
max1=stud[i].avg;

//输出平均成绩中最高值的学生信息
for(int i=0;i<count;i++){
if(max1==stud[i].avg){
printf("平均成绩最高的学生信息:

");
printf("学号:%-8d姓名:%-16s性别:%c
",stud[i].no,stud[i].name,stud[i].sex);
printf("地址:%s
电话:%s
",stud[i].address,stud[i].telephone);
printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f
",stud[i].score.Chinese,
stud[i].score.Math,stud[i].score.English,stud[i].avg);
printf("---------------------------------------------------------------------
");
}
}

//寻找语文成绩中的最高值
float max2=stud[0].score.Chinese;
for(int i=1;i<count;i++)
if(stud[i].score.Chinese>max2)
max2=stud[i].score.Chinese;

//输出语文成绩中最高值的学生信息
for(int i=0;i<count;i++){
if(max2==stud[i].score.Chinese){
printf("语文成绩最高的学生信息:

");
printf("学号:%-8d姓名:%-16s性别:%c
",stud[i].no,stud[i].name,stud[i].sex);
printf("地址:%s
电话:%s
",stud[i].address,stud[i].telephone);
printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f
",stud[i].score.Chinese,
stud[i].score.Math,stud[i].score.English,stud[i].avg);
printf("---------------------------------------------------------------------
");
}
}

//寻找数学成绩中的最高值
float max3=stud[0].score.Math;
for(int i=1;i<count;i++)
if(stud[i].score.Math>max3)
max3=stud[i].score.Math;

//输出数学成绩中最高值的学生信息
for(int i=0;i<count;i++){
if(max3==stud[i].score.Math){
printf("数学成绩最高的学生信息:

");
printf("学号:%-8d姓名:%-16s性别:%c
",stud[i].no,stud[i].name,stud[i].sex);
printf("地址:%s
电话:%s
",stud[i].address,stud[i].telephone);
printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f
",stud[i].score.Chinese,
stud[i].score.Math,stud[i].score.English,stud[i].avg);
printf("---------------------------------------------------------------------
");
}
}

//寻找英语成绩中的最高值
float max4=stud[0].score.English;
for(int i=1;i<count;i++)
if(stud[i].score.English>max4)
max4=stud[i].score.English;

//输出英语成绩中最高值的学生信息
for(int i=0;i<count;i++){
if(max4==stud[i].score.English){
printf("英语成绩最高的学生信息:

");
printf("学号:%-8d姓名:%-16s性别:%c
",stud[i].no,stud[i].name,stud[i].sex);
printf("地址:%s
电话:%s
",stud[i].address,stud[i].telephone);
printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f
",stud[i].score.Chinese,
stud[i].score.Math,stud[i].score.English,stud[i].avg);
printf("---------------------------------------------------------------------
");
}
}
printf("
按任意键返回主菜单:");
getch();
}

void update(){
int x; //输入学生学号整型变量
student a; //临时结构体变量a
char k,j; //Yes or No输入字符变量

while(true){
system("cls");
int t=-1; //要查询的学生学号所对应的数组下标,-1代表在数组中没对应下标
printf("请输入要修改的学生学号:");
scanf("%d",&x);

//循环寻找结构体数组中符合变量x的数据,并把该数据所在的下标值赋给变量t
for(int i=0;i<count;i++){
if(stud[i].no==x)
t=i;
}

//判定信息是否存在,分别输出
if(t==-1)
printf("您所要修改的学生信息不存在,");
else{
//输出要修改学生的原信息
printf("学号:%-8d姓名:%-16s性别:%c
",stud[t].no,stud[t].name,stud[t].sex);
printf("地址:%s
电话:%s
",stud[t].address,stud[t].telephone);
printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f
",stud[t].score.Chinese,
stud[t].score.Math,stud[t].score.English,stud[t].avg);
printf("---------------------------------------------------------------------
");

//判定是否要修改
printf("确定要修改该记录吗?(y/n)");
scanf("%c",&k);
scanf("%c",&k);

//确定要修改后,输入新信息
if(k=='y'){
printf("请输入新的学生的学号:");
scanf("%d",&a.no);
printf("请输入新的学生的姓名:");
scanf("%s",a.name);
printf("请输入新的学生的性别:");
scanf("%c",&a.sex);
scanf("%c",&a.sex);
printf("请输入新的学生的地址:");
scanf("%s",a.address);
printf("请输入新的学生的电话:");
scanf("%s",a.telephone);
printf("请输入新的学生的语文成绩:");
scanf("%f",&a.score.Chinese);
printf("请输入新的学生的数学成绩:");
scanf("%f",&a.score.Math);
printf("请输入新的学生的英语成绩:");
scanf("%f",&a.score.English);
a.avg=(a.score.Chinese+a.score.English+a.score.Math)/3;
stud[t]=a;
printf("修改成功,");
}
}

//判定是否继续
printf("是否继续修改?(y/n)");
scanf("%c",&j);
scanf("%c",&j);
if(j=='n')
break;
}
printf("
按任意键返回主菜单:");
getch();
}

void del(){
int x; //输入学生学号整型变量
char k,j; //Yes or No输入字符变量
while(true){
system("cls");
int t=-1; //要查询的学生学号所对应的数组下标,-1代表在数组中没对应下标
printf("请输入要删除的学生学号:");
scanf("%d",&x);

//循环寻找结构体数组中符合变量x的数据,并把该数据所在的下标值赋给变量t
for(int i=0;i<count;i++){
if(stud[i].no==x)
t=i;
}

//判定信息是否存在,分别输出
if(t==-1)
printf("您所要删除的学生信息不存在,");
else{
//输出要删除学生的原信息
printf("学号:%-8d姓名:%-16s性别:%c
",stud[t].no,stud[t].name,stud[t].sex);
printf("地址:%s
电话:%s
",stud[t].address,stud[t].telephone);
printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f
",stud[t].score.Chinese,
stud[t].score.Math,stud[t].score.English,stud[t].avg);
printf("---------------------------------------------------------------------
");

//判定是否删除
printf("确认要删除吗?(y/n)");
scanf("%c",&k);
scanf("%c",&k);

//确定要删除后,删除该信息
if(k=='y'){
for(int i=t;i<count-1;i++)
stud[i]=stud[i+1];
printf("删除成功,");
count--;
}
}

//判定是否继续
printf("是否继续删除?(y/n)");
scanf("%c",&j);
scanf("%c",&j);
if(j=='n')
break;
}
printf("
按任意键返回主菜单:");
getch();
}

void grt(){
system("cls");
printf("顾韧霆制作
2008年12月13日
");
printf("
按任意键返回主菜单:");
getch();
}

void grt1()
{
int choice=0; //保存用户输入的选择项
do{
system("cls"); //清屏函数
printf("----------------学生信息管理系统----------------

");
printf("在菜单中选择以下的操作类型
");
printf("1.增加记录
2.显示所有学生信息
3.信息排序
4.根据学号查询单个学生信息
5.根据姓名查询单个学生信息
");
printf("6.平均成绩和单科成绩最高的学生资料
7.修改记录
8.删除记录
9.退出程序
0.制作人
");
printf("请输入你的选择:");
scanf("%d",&choice);
switch(choice)
{
case 1:
add();
break;
case 2:
show();
break;
case 3:
sort();
break;
case 4:
query1();
break;
case 5:
query2();
break;
case 6:
good();
break;
case 7:
update();
break;
case 8:
del();
break;
case 0:
grt();
break;
}
}while(choice!=9);
}

void main()
{
char x[10];
printf("----------------学生信息管理系统----------------

");
for(int i=3;i>0;i--){
printf("请输入密码:");
scanf("%s",&x);
if(strcmp(x,"123456")==0){
grt1();
break;
}
else
printf("输入错误,你还有%d次机会
",i-1);
}

}

定义
学生信息管理系统是针对学校学生处的大量业务处理工作而开发的管理软件,主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化、科学化、规范化和自动化,其主要任务是用计算机对学生各种信息进行日常管理,如查询、修改、增加、删除,另外还考虑到学生选课,针对这些要求设计了学生信息管理系统。推行学校信息管理系统的应用是进一步推进学生学籍管理规范化、电子化、控制辍学和提高教育水平的重要举措。

产生背景
学生信息档案的管理对于学校的管理者来说至关重要,学生信息是高等学校非常重要的一项数据资源,是一个教育单位不可缺少一部分。特别是近几年来,国家政策的调整,我国高等院校大规模的扩招,给高等院校的教学管理、学生管理、后勤管理等方面都带来不少的冲击。其包含的数据量大,涉及的人员面广,而且需要及时更新,故较为复杂,难以单纯地依*人工管理,而且传统的人工管理方式既不易于规范化,管理效率也不高,目前我国各类高等院校中还有相当一部分学生档案管理还停留在纸介质的基础上,尤其是中、小学对学生档案的管理更是落后,这样的管理机制已经不能适应时代发展的要求,其管理方法将浪费许多人力和物力。随着科学技术的不断提高,计算机科学与技术日渐成熟,计算机应用的普及已进入人类社会生活的各个领域,并发挥着越来越重要的作用。这种传统的手工管理模式必然被以计算机为物质基础的信息管理方法所取代。 作为计算机应用的一部分,使用计算机对学生档案进行管理,有着手工管理所无法比拟的优点,如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生档案管理的效率,也是学校向科学化、正规化管理发展的必要条件,更是各个高等院校与世界接轨的重要条件。

开发意义
系统针对学校学生信息的特点以及管理中实际需要而设计,能够有效地实现学生信息管理的信息化,减轻管理人员的工作负担,高效率、规范化地管理大量的学生信息,并避免人为操作的错误和不规范行为。

基本功能
奖学金管理:支持学生成绩绩点、任职分值、荣誉分值、综合分值等计算、统计和分析。实现自动排名、审计奖学金,公示奖学金评审结果等功能。 困难生认定管理:学生申请,教师审批,申请发放各项资助。有助于加强学校对困难生的服务和管理,简化困难生资助申请的繁琐过程,给困难生提供更加简洁、方便的服务渠道,确保资助准确、及时的发放。 勤工岗位申请管理:岗位设定、学生申请、教师审批。提高了勤工岗位服务和管理的效率性和科学性。  科技项目申报管理:科技项目发布、学生申请、教师审批。实现了对学生科技项目执行情况的监督、检查、项目验收鉴定和经费管理等工作流程化、规范化的管理。 就业信息管理:以“服务学生就业”理念为依托,构建一个针对性强,实时、方便的数据采集、分析和管理平台,逐步实现对学生就业信息的更好管理,提高信息化管理水平 , 为相关决策提供支持。 党员管理:支持以支部为核心的党员管理方式,加强和改进党员的管理,有助于党员能够及时参加党的组织生活,接受党组织的教育、管理和监督,更好的发挥先锋模范作用。 消息管理:意见反馈,处理。搭建师生沟通平台,保证各项事务公平、公正、公开处理。

/*
(1)编写主菜单,包括1输入、2插入、3排序、4查找、5删除、6输出、7退出等7个功能的菜单项,程序执行则首先显示这7个菜单项目,
当用户按下功能序号时可以执行相应的功能。
(2)每一个功能编写一个相应的空函数,名称为input、insert、sort、find、delete、output、quit,由主函数来调用。
(3)为了测试调用成功与否,每个空函数里加上语句显示当前被调用的函数的名称
(4)每执行完一次某个菜单功能后,还要返回主菜单,等待用户再选择菜单项。(可以使用循环控制。)
*/

/*(1)输入:函数input把20学生的学号、姓名、性别、年龄、四科成绩以及平均成绩和总成绩放在一个结构体数组中,学生的学号、姓名、四科成绩由键盘输入,
然后计算出平均成绩和总成绩放在结构体对应的域中,并把原始数据放入student.dat。(第8周周二 张琴)
(2)输出:函数output 输出全部学生的记录,从文件中读出学生的信息,并从屏幕上输出。(第8周周二 张琴)
(3)插入:insert 函数输入一个学生的记录,按学号的先后顺序插入该学生的全部内容。(第8周周三 殷玉法)
(4)删除:delete函数输入一个学生的学号或姓名,找到该学生并删除该学生的全部内容。(第8周周三 殷玉法)
(5)排序:sort函数对所有学生按要求排序(1.学号 2.总成绩 ),并输出。(第8周周四 张琴)
(6)查找:find函数输入一个学生的学号或姓名,找到该学生并输出该学生的全部内容。要求能查询多次。(第8周周四 张琴)
(7)综合调试,完成项目,检查并评定成绩(第8周周五 上午李环宇 下午殷玉法、张琴)
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 100
#define M 3
FILE *fp;
int n=0;

struct student
{
char name[20],sex[20];
int num,age,score[4],sum;
float ave;
}t,q,stu[N];

void input(); //输入函数
void calculate(); //计算各同学的总成绩与平均分
void insert(); //插入一同学的信息
void sort(); //对原有同学的信息根据要求排序
void find(); //查找特定同学的信息
void delet(); //删除特定同学的信息
void output(); //输出各同学的信息
void quit(); //退出菜单
//,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,主函数
void main()
{
int a;
char b[20];
for(;;)
{
printf("********************************菜单开始\n");
printf("\t1、输入学生信息\n");
printf("\t2、插入一学生信息\n");
printf("\t3、排序(从低到高)\n");
printf("\t4、查找指定学生信息\n");
printf("\t5、删除指定学生信息\n");
printf("\t6、输出学生信息\n");
printf("\t7、退出程序\n");
printf("********************************菜单结束\n");

printf("输入数a通过a执行菜单中的程序块:");
scanf("%s",b);
a=atoi(b);

switch(a)
{
case 1:input();break;
case 2: insert();break;
case 3:sort();break;
case 4:find();break;
case 5:delet();break;
case 6:output();break;
case 7:quit();break;
default:printf("输入错误请重新输入(1-7)的数!!!\n");
}
}
}
//,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,输入函数
void input()
{
int i,j;
printf("输入%d个同学的信息\n",M);
for(i=0;i<M;i++)
{
printf("输入第%d个同学的num,name,sex,age:",i+1);
scanf("%d%s%s%d",&stu[i].num,stu[i].name,stu[i].sex,&stu[i].age);
printf("输入第%d个同学的四门课成绩:",i+1);
for(j=0;j<4;j++)
scanf("%d",&stu[i].score[j]);
}
calculate();
printf("输入结束!\n");
if((fp=fopen("student.dat","w"))==NULL)
{
printf("can't open file!\n");
return;
}
if(fwrite(stu,sizeof(struct student),N,fp)!=N)
printf("write error!\n");
fclose(fp);

}
//,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,计算函数
void calculate()
{
for(int i=0;i<M+n;i++)
{
stu[i].sum=0;
for(int j=0;j<4;j++)
stu[i].sum+=stu[i].score[j];
stu[i].ave=stu[i].sum/4.0;
}
}
//,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,插入函数
void insert()
{
FILE *fp;
student xue;
int i,j,m=1;
if((fp=fopen("student.dat","w"))==NULL)
{
printf("can't open file!\n");
return;
}
while(m)
{
for(i=0;i<M+n;i++)
for(j=0;j<M+n-j;j++)
if(stu[j].num>stu[j+1].num)
{
t=stu[j];
stu[j]=stu[j+1];
stu[j+1]=t;
}
xue=q;
printf("输入要插入学生的num,name,sex,age:");
n=n+1;
scanf("%d%s%s%d",&xue.num,xue.name,xue.sex,&xue.age);
printf("输入要插入学生的四门课成绩:");
for(j=0;j<4;j++)
scanf("%d",&xue.score[j]);
for(i=0;i<M+n;i++)
{
if(xue.num<stu[i].num)
{
for(j=M+n-1;j>i;j--)
stu[j]=stu[j-1];
stu[i]=xue;break;
}
}
printf("插入第%d个成功\n",n);
calculate();
printf("是否继续插入?是,输入任意数;否,输入0\n");
scanf("%d",&m);
}
if(fwrite(stu,sizeof(struct student),N,fp)!=N)
printf("write error!\n");
fclose(fp);
}

//,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,排序函数
void sort()
{
int i,j,b;
if((fp=fopen("student.dat","w"))==NULL)
{
printf("can't open file!\n");
return;
}

printf("\t1、按学号排序\t2、按总成绩排序\n");
printf("请输入选择类型:");
scanf("%d",&b);

if(b==1)
{
for(i=0;i<M+n;i++)
for(j=0;j<M+n-j;j++)
if(stu[j].num>stu[j+1].num)
{
t=stu[j];
stu[j]=stu[j+1];
stu[j+1]=t;
}
}

else if(b==2)
{
for(i=0;i<M+n-1;i++)
for(j=0;j<M+n-1-j;j++)
if(stu[j].sum>stu[j+1].sum)
{
t=stu[j];
stu[j]=stu[j+1];
stu[j+1]=t;
}
}

else
{
printf("输入错误请重新输入!\n");
return;
}

printf("排序成功!!!\n");
fclose(fp);

}
//,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,查找函数
void find()
{
int a,i,j,m,k;
char b[20];

printf("这是查找函数!!!\n");
if((fp=fopen("student.dat","r"))==NULL)
{
printf("can't open file!\n");
return;
}
m=1;
while(m)
{

printf("输入要查询学生的姓名或学号\n\t1、学号\t2、姓名\n");
scanf("%d",&a);
switch(a)
{
case 1:
{
printf("输入要查询学生的学号:\n");
scanf("%d",&k);
for(i=0;i<M+n;i++)
if(stu[i].num==k)
{
j=i;
printf("输出查找同学的信息:\n");
printf("num\tname\tsex\tage\tscore0\tscore1\tscore2\tscore3\tsum\tave\n");
printf("%d\t%s\t%s\t%d\t",stu[j].num,stu[j].name,stu[j].sex,stu[j].age);
for(i=0;i<4;i++)
printf("%d \t",stu[j].score[i]);
printf("%d\t%f\n",stu[j].sum,stu[j].ave);
}break;
printf("该学生不存在\n");break;
}
case 2:
{
printf("输入要查询学生的姓名:\n");
scanf("%s",b);
for(i=0;i<M+n;i++)
if(strcmp(stu[i].name,b)==0)
{
j=i;
printf("输出查找同学的信息:\n");
printf("num\tname\tsex\tage\tscore0\tscore1\tscore2\tscore3\tsum\tave\n");
printf("%d\t%s\t%s\t%d\t",stu[j].num,stu[j].name,stu[j].sex,stu[j].age);
for(i=0;i<M;i++)
printf("%d \t",stu[j].score[i]);
printf("%d\t%f\n",stu[j].sum,stu[j].ave);
}break;
printf("该学生不存在\n"); break;
}
default:printf("输入错误请重新输入(1-2)的数!!!\n");return;
}
printf("想要查找输入任意数,否则输入0\n");
scanf("%d",&m);

}

fclose(fp);
}
//,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,删除函数
void delet()
{
int a,b,i,j;
char m[20];
printf("这是删除函数!!!\n");
if((fp=fopen("student.dat","w"))==NULL)
{
printf("can't open file!\n");
return;
}

printf("输入要删除学生的姓名或学号\n");
printf("\t1、学号\t2、姓名\n");
printf("输入选择类型\n");
scanf("%d",&a);
calculate();

if(a==1)
{
printf("输入要删除学生的学号:\n");

scanf("%d",&b);
for(i=0;i<M+n;i++)
if(stu[i].num==b)
{
//stu[i]=q;
for(j=i;j<M+n-1;j++)
stu[j]=stu[j+1];
printf("删除成功\n");
n--;
}return;
printf("该学生不存在\n");return;

}
else if(a==2)
{
printf("输入要删除学生的姓名:\n");
scanf("%s",m);
for(i=0;i<M+n;i++)
if(strcmp(stu[i].name,m)==0)
{
//stu[i]=q;
for(j=i;j<M+n-1;j++)
stu[j]=stu[j+1];
printf("删除成功\n");
n--;
}return;
printf("该学生不存在\n");return;
}
else printf("输入错误\n");
fclose(fp);
}
//,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,输出函数
void output()
{
int i,j;
if((fp=fopen("student.dat","r"))==NULL)
{
printf("can't open file!\n");
return;

}
printf("输出文件中的信息为:\n");
printf("n=%d\n",n);
printf("num\tname\tsex\tage\tscore0\tscore1\tscore2\tscore3\tsum\tave\n");
for(i=0;i<M+n;i++)
{
printf("%d\t%s\t%s\t%d\t",stu[i].num,stu[i].name,stu[i].sex,stu[i].age);
for(j=0;j<4;j++)
printf("%d \t",stu[i].score[j]);
printf("%d\t%f\n",stu[i].sum,stu[i].ave);
}
fclose(fp);
}
//,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,退出函数
void quit()
{
printf("这是退出函数!!!\n");
exit(0);
}

#include <stdio.h>
#include <stdlib.h>
#define NULL 0
typedef struct student
{
char clas[20];
char name[20];
char number[20];
int math;
int english;
int computer;
float sum;
float ave;
struct student *next;
}XSSJ;
void freerecord(XSSJ *p)
{
XSSJ *q;
while(p!=NULL)
{
q=p;
p=p->next;
free(q);
}
}
XSSJ *addrecord(XSSJ *p)
{
XSSJ head,*q;
head.next=p;
p=&head;
while(p->next!=NULL)
p=p->next;
while(1)
{
char text[80];
q=(XSSJ *)malloc(sizeof(XSSJ));
if(q==NULL)
return(head.next);
q->next=NULL;
printf("\n请输入学生的班级、姓名、学号和数学、英语、计算机成绩:");
gets(text);
if(text[0]=='\0')
break;
sscanf(text,"%s%s%s%d%d%d",&q->clas,&q->name,&q->number,&q->math,&q->english,&q->computer);

p->next=q;
p=q;
}
return(head.next);
}
XSSJ *createrecord(XSSJ *p)
{
freerecord(p);
return(addrecord(NULL));
}
XSSJ *deleterecord(XSSJ *p)
{
char number[10];
XSSJ *q,head;
printf("\n请输入你要删除的学生学号:\n");
gets(number);
for(head.next=p,q=&head;p!=NULL;p=p->next)
{
if(strcmp(p->number,number)!=0)
q=p;
else
{
q->next=p->next;
free(p);
printf("\n学号为%s的学生成绩已经删除。\n",number);
return(head.next);
}
}
printf("\n没有学号为%s的学生成绩。\n",number);
return(head.next);
}
void searchrecord(XSSJ *p)
{
char number[10];
printf("\n请输入你要查询的学生学号\n");
gets(number);
for(;p!=NULL;p=p->next)
{
if(strcmp(p->number,number)==0)
{
printf("\n班级%s\t姓名%s\t学号%s\t数学%d\t英语%d\t计算机%d\n",p->clas,p->name,p->number,p->math,p->english,p->computer);

}
}
printf("\n没有你要查询的成绩\n");
}
void displayrecord(XSSJ *p)
{
printf("\n班级\t姓名\t学号\t数学\t英语\t计算机\t\n");
for(;p!=NULL;p=p->next)
printf("\n%s\t%s\t%s\t%d\t%d\t%d\n",p->clas,p->name,p->number,p->math,p->english,p->computer);
printf("\n");
}

void displaymenu() //显示菜单
{
printf("\n\n______________菜单___________________\n");
printf("1:创建新纪录\t");
printf("2:添加新纪录\n");
printf("3:删除纪录 \t");
printf("4:查询纪录 \n");
printf("5:显示纪录 \t");
printf("0:退出系统 \n");
printf("\n请选择:");
}

int choiceitem(void)
{
int choice;
char line[80];
do
{
displaymenu();
gets(line);
choice=atoi(line);
}
while(choice<0||choice>6);
return(choice);
}
void main()
{
XSSJ *head=NULL;
int choice;
do
{
choice=choiceitem();
switch(choice)
{
case 1: head=createrecord(head);
break;
case 2: head=addrecord(head);
break;
case 3: head=deleterecord(head);
break;
case 4: searchrecord(head);
break;
case 5: displayrecord(head);
break;
}
}
while(choice!=0);
printf("\n\nEND!");
freerecord(head);
}
hhxy 11tx 06(这个是我的标 不是程序)
这个是我做的 没有名次排序的功能 我没有做出来呢 我也刚学这个 希望对你有帮助

你太没诚意了,那玩意不是一天能写好的


C语言高手帮个忙,设计一个选数字程序,数字为 1 -10 ,10个数字,随机筛选...
include<stdio.h>#includeint main(){ int i=1,j=0; int a[10]={1,2,3,4,5,6,7,8,9,10}; srand(time(NULL)); while(i<=10) { j=rand()%10; if(a[j]!=0) { printf("第%d个数为:%d\\n",i,a[j]); a[j]=0; i++; } ...

简单c语言设计,求大神帮一下忙...
以前java写过,拿去改一改输入输出还有函数就好了 public class function2fen {public static void main(String[] args){new function2fen(0, 2, 1E-15);}public function2fen(double a, double b, double delta) {double x1 = a;double x2 = b;while(x2 - x1 > delta){double diff =...

c语言中忙标志位是什么?在程序中如何应用?最好通俗易懂详细一点。谢谢...
应用就比如说单片机的中断吧:中断如果满足条件是随时都可以进入程序的,不管你正在干什么!这样就麻烦了,有的时候我们一定要把这个事情做完才能中断,那么怎么办呢?我们就需要把设一个忙标志位,我们忙的时候就不让你中断,做完了再让你有中断的可能。(只是打一个比方,在事实上是不需要设标志位的只...

【急】!C语言C++编程题,帮忙编一下源程序
1.从键盘上输入若干字符,直到输入’#”结束。统计英文字母、数字、空格、其他字符的个数并输出。include "stdio.h"main(){ char c;int letter,number,space,other;letter=number=space=other=0;printf("\\nPlease input some characters:(end of '#')\\n");while((c=getchar())!='#'){ ...

用C语言如何编写一个石头剪子布的程序
用C语言编写一个石头剪子布的程序石头=1;剪子=2;布=3先是人输入一个数放在变量ren了然后是程序随机产生三个数(1,2,3)放在变量ji里if(ren==ji) printf("REPLAY!");esle if(ren==1&&ji==2) printf("YOU WIN");else if(ren==2&&ji==3) printf("YOU WIN");else if(ren==3&&ji==1) printf...

C语言课程设计
include "stdio.h"include "stdlib.h"include "string.h"include "conio.h"include "mem.h"include "ctype.h"include "alloc.h"struct score {int mingci;char xuehao[8];char mingzi[20];float score[6];} data,info[1000];int i,j,k=0;char temp[20],ch;FILE *fp,*fp1;void ...

求《班级学生成绩管理系统》C语言设计
include include<stdio.h> include<conio.h> include <stdlib.h> define MAX 50 void input();void sort();void display();void insert();void del();void average();int now_no=0;struct student { int no;char name[20];char sex[4];float score1;float score2;float score3;float so...

设计C语言程序,由键盘输入任意三个数,按降序将其输出,,,谢谢啦帮个忙...
include <stdio.h> void main(){int a,b,c,t;printf("请输入三个数:");scanf("%d%d%d",&a,&b,&c);if(a>b)t=a,a=b,b=t;if(b>c)t=b,b=c,c=t;if(a>b)t=a,a=b,b=t;printf("从小到大顺序为:%d<%d<%d",a,b,c);} ...

C语言程序设计循环结构,刚刚学
依次除a { b=a%i; if(b==0) c=c+1;\/*c表示除1和自己以外的因数个数,如果a整除i,就给c加一个数 *\/ } if(c==0) \/\/如果没有其他因数,就把a加到素数数组中去 { j=j+1; s[j]=a; printf("%d\\n",s[j]); } else c=0; }return 0...

帮个忙,用C语言编个程序
不好意思啊!!自己思考吧!include<stdio.h> void main(){ int i,j;for(i=1;i<=4;i++){for(j=___;j<___;j___)printf("*");printf("\\n");} for(i=5;i<=7;i++){for(j=___;j<___;j___:)printf("*");printf("\\n");} ...

京口区15364654130: 用C语言编写一个学生信息管理系统
佐影普爱: #include "stdio.h" #include "stdlib.h" #include "string.h" #include "conio.h" jiemian();struct student { char name[50]; char sex[5]; int age; char num[50]; float score1; float score2; float score3; float sum; float ave;}stu[50],del; void gn1() {int...

京口区15364654130: C语言编写一个学生信息管理系统,求原代码谢谢
佐影普爱: #include <iostream> #include "conio.h" #include "malloc.h" #include "windows.h" using namespace std; typedef struct { char name[20]; int stunum; int score; }StuElem;class StuList { private: StuElem *StuElem1; int Length; int MaxContine; ...

京口区15364654130: 用C语言编写 简单学生信息管理
佐影普爱: 懒得写了,给你个差不多可以参考的吧.. #include <iostream.h> #include <vector> #include <fstream> using namespace std; struct StudentInfo { int Age; double Number; char Name[15]; char Addr[20]; char Phone[15]; char Mail[20]; }; class ...

京口区15364654130: C语言 学生信息管理系统 课程设计 -
佐影普爱: #include"stdio.h"#include"conio.h"#include"string.h"#include"stdlib.h" void look(); /*声明查看函数*/ void save(); /*声明保存函数*/ void search_name(); /*声明按姓名查看函数*/ void search_number(); /*声明按学号查看...

京口区15364654130: C语言 学生信息管理系统设计 -
佐影普爱: 呵呵~~ 我也找了很久哦~~ 第一种: #include<stdio.h> #include<stdlib.h> #include<conio.h> #include<string.h> struct student{ int id; char name[10]; int age; char sex[10]; char birthady[20]; int tel; char nativeplace[50]; }st[50]; int i=0; void shuru() { ...

京口区15364654130: c语言编写学生信息管理系统 -
佐影普爱: #include"stdio.h" #define SIZE 100000 #include"string.h" #include"stdlib.h" #include"conio.h" struct student {int n; int num; char name[10]; int C; int Maths; int En; float ave; }stu[SIZE]; /*录入数据*/ void finput() { FILE *fp; int i,p; fp=fopen(...

京口区15364654130: 如何用C语言编写学生信息管理系统 -
佐影普爱: 参考如下学生信息管理系统的C源代码吧.#include <stdio.h>#include <string.h>/*定义学生结构体*/ struct Student { char ID[20]; char Name[20]; float Mark1; float Mark2; float Mark3; float Average; };/*声明学生数组及学生数量*/ struct Student ...

京口区15364654130: c语言学生信息管理系统 -
佐影普爱: #include #include struct student{int no;char name[20];float score[2];float avg;};struct student input(); //单个学员信息录入void display(struct student [],int); //显示所有学员信息void sort(struct student [],int); //排序int find(struct student[],int,int); ...

京口区15364654130: C语言程序设计 学生信息管理系统 求啊 ..... -
佐影普爱: #include <stdio.h>#include<string.h>#include<malloc.h>//全局变量 struct student { int num; char name[20]; char kecheng[20]; float score; struct student *next; }; struct student *head=NULL;//界面、调用函数声明 void cover0();//主界面 void cover...

京口区15364654130: 用C语言编写学生信息管理程序(给出五个主要函数就OK啦!) -
佐影普爱: /*本人的作品,去年应付期末考试的*/ /*在Microsoft Visual C++ 6.0下完成调试*/ /**** 实验题目: 输入一个班10个学生的学号和每个学生考试三门功课(数学、英语、计算机基础)的成绩.编程计算出每个学生的总分和平均分,并按学生成绩优劣...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网