当前位置:首页 » 编程语言 » c语言信管

c语言信管

发布时间: 2022-09-04 05:46:39

c语言编写学生信息管理系统,不要报错的......

可以输入
输出
查找
排序学生的成绩
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define
N
50
struct
Student
{
long
number;
char
name[20];
int
score;
}stu[N],t;
struct
Student
*p;
int
Num=0;
void
input()
{
char
ch;
for(p=stu+Num;p-stu<N;p++)
{
Num++;
printf("请输入第%d个学生的学号:",Num);
scanf("%ld",&p->number);
printf("请输入第%d个学生的姓名:",Num);
scanf("%s",p->name);
printf("请输入第%d个学生的成绩:",Num);
scanf("%d",&p->score);
if(Num<N)
{
printf("\n已输入%d个学生的信息,是否继续输入(y/n)?",Num);
ch=getchar();
scanf("%c",&ch);
if(ch=='n')
break;
}
else
printf("已输入%d个学生的信息,不能再输入\n",N);
}
}
void
output()
{
char
ch;
for(p=stu;p-stu<Num;p++)
{
printf("学号\t\t\t姓名\t\t\t成绩\n");
printf("%-24ld%-24s%d\n",p->number,p->name,p->score);
}
printf("按回车键继续\n");
ch=getchar();
ch=getchar();
}
void
sort()
{
char
ch;
int
i,j;
for(i=0;i<Num-1;i++)
for(j=i+1;j<Num;j++)
{
if(stu[i].score<stu[j].score)
{
t=stu[i];
stu[i]=stu[j];
stu[j]=t;
}
}
printf("已排序完毕,是否输出排序后学生信息(y/n)?");
ch=getchar();
if(ch=getchar()=='y')
output();
}
void
search()
{
char
nam[20],ch;
int
k=0;
fflush(stdin);
printf("请输入需要查询的学生姓名:");
gets(nam);
for(p=stu;p-stu<Num;p++)
{
if(!strcmp(nam,p->name))
{
printf("学号\t\t\t姓名\t\t\t成绩\n");
printf("%-24ld%-24s%d\n",p->number,p->name,p->score);
k=1;
}
}
if(k==0)
printf
("不存在该学生信息\n");
printf("按回车键继续\n");
ch=getchar();
}
int
menu()
{
int
choice;
printf("\t\t学生信息管理系统\n");
printf("\t1.输入学生的成绩\n\t2.输出学生的成绩\n\t3.排序学生的成绩\n\t4.查找学生的成绩\n\t5.退出系统\n");
printf("\n请输入你的选择(1-5):");
scanf("%d",&choice);
return
choice;
}
main()
{
while(1)
{
switch(menu())
{
case
1:input();break;
case
2:output();break;
case
3:sort();break;
case
4:search();break;
case
5:exit(0);
}
}
}

⑵ 如何用c语言制作一个学生信息管理系统,要求以文件形式保存

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

//链表结点结构体声明

typedef struct subjects

{

char name[20];

float score;

}sub;

typedef struct student

{

int num;

char name[20];

sub subject[3];

struct student* next;

}stu,*pstu;

#define SIZE sizeof(stu)

//函数申明

pstu LoadInfo();

void PrintMenu();

pstu AddStu(pstu );

pstu DeleStu(pstu );

pstu RwrStu(pstu );

void FindStu(pstu , char );

void Count(pstu ,char * ,float ,float );

void Rank(pstu ,char * );

void SaveQuit(pstu );

//创建菜单,进入选择循环

while(1)

{

PrintMenu();

printf("请输入您的选择编号:");

scanf("%d",&n);

getchar();

switch(n)

{

case 1:

{

system("cls");

j=0;

while(4!=j)

{

printf("欢迎进入信息管理版块! ");

printf("25 1、添加学生 ");

printf("25 2、删除学生 ");

printf("25 3、修改学生信息 ");

printf("25 4、返回 ");

printf("请输入您的选择编号: ");

scanf("%d",&j);

getchar();

if ( 1 == j) head = AddStu(head);

else if( 2 == j) head = DeleStu(head);

else if( 3 == j) head = RwrStu(head);

else if( 4 == j) ;

else printf("输入有误,请重新输入! ");

}

case 2:

{

//信息查询

system("cls");

printf("欢迎进入信息查询版块! ");

printf("请输入要查询的学生编号:");

scanf("%d",&j);

getchar();

//printf("%d ",j); //检测输入是否成功,调试程序用

FindStu(head,j); //查询并输出

printf(" 请输入回车键返回主菜单!");

getchar();

system("cls");

break;

}

(2)c语言信管扩展阅读:

C语言包含的各种控制语句仅有9种,关键字也只有32 个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简。

实际上,语句构成与硬件有关联的较少,且C语言本身不提供与硬件相关的输入输出、文件管理等功能,如需此类功能,需要通过配合编译系统所支持的各类库进行编程,故c语言拥有非常简洁的编译系统。

⑶ 用c语言编写学生信息管理系统

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#define N 200
int input(struct Student stu[N]);
void save(struct Student stu[N],int n);
int load(struct Student stu[N]);
void output(struct Student stu[N],int n);
int insert(struct Student stu_save[],int n);
void sort(struct Student stu_save[],int n);
void find(struct Student stu_save[],int n);
int delete_stu(struct Student stu_save[],int n);
typedef struct Student
{
char num[20];
char name[20];
char sex;
int age;
float score[3];
float tolscore;
float ave;
}STU;
int main()
{
int total=0,a;
STU stu[N];
printf("☆☆☆☆☆学籍管理系统☆☆☆☆☆\n\n");
do{
printf("\n**********************************\n");
printf("1-导入学生信息\n2-加载学生信息\n3-保存学生信息\n4-按学号插入学生\n5-给学生排序\n6-查找学生\n7-删除学生\n8-输出当前学生数据\n9-退出\n");
printf("**********************************\n");
printf("请按键选择:");
scanf("%d",&a);
switch(a)
{
case 1:

total=input(stu);
break;
case 2: total=load(stu);break;
case 3:save(stu,total);break;
case 4: total+=insert(stu,total);break;
case 5:sort(stu,total);break;
case 6:find(stu,total);break;
case 7:total-=delete_stu(stu,total);break;
case 8:output(stu,total);break;
case 9:exit(0);break;
default:printf("输入错误,请重新输入!\n");break;
}
//system("cls");
}while(1);
}
int input(struct Student stu[])
{
int i,j,n;
float sum;
printf("请输入要导入的学生人数\n");
scanf("%d",&n);
printf("请输入学生的学号、姓名、性别、年龄及三门课成绩\n");
for(i=0;i<n;i++)
{

scanf("%s",stu[i].num);
scanf("%s",stu[i].name);
scanf(" %c",&stu[i].sex); //%c前的空格用于接收上一个字符串后的空格、回车、制表符,etc
scanf("%d",&stu[i].age);
sum=0;
for(j=0;j<3;j++)
{
scanf("%f",&stu[i].score[j]);
sum+=stu[i].score[j];
}
stu[i].tolscore=sum;
stu[i].ave=sum/3.0f;
}

return (n);
}

void save(struct Student stu[],int n)
{
FILE *fp;
int i;
char filename[20];
printf("请输入文件名:");
scanf("%s",filename);
if(strchr(filename,'.')==NULL)
strcat(filename,".dat");
if((fp=fopen(filename,"wb"))==NULL)
{
printf("Cannot open this file\n");
system("pause");
return;
}
fwrite(&n,sizeof(int),1,fp);
for(i=0;i<n;i++)
fwrite(&stu[i],sizeof(struct Student),1,fp);
fclose(fp);
printf("保存成功!");
system("pause");
return;
}
int load(struct Student stu_save[])
{
FILE *fp;
int i,n;
char filename[20];
printf("请输入要加载的文件名: ");
//getchar();
scanf("%s",filename);
// gets(filename);
if(strchr(filename,'.')==NULL)
strcat(filename,".dat");
if((fp=fopen(filename,"rb"))==NULL)
{
printf("Cannot open this file\n");
system("pause");
return 0;
}
fread(&n,sizeof(int),1,fp);
for(i=0;i<n;i++)
fread(&stu_save[i],sizeof(struct Student),1,fp);
fclose(fp);
system("cls");
printf("文件加载成功!数据如下");
output(stu_save,n);
return n;
}
void output(struct Student stu_save[],int n)
{
int i,j;
// system("cls");
printf("\n学号\t姓名\t性别\t年龄\t成绩一\t成绩二\t成绩三\t总分\t平均分\n");
for(i=0;i<n;i++)
{
printf("%s\t",stu_save[i].num);
printf("%s\t",stu_save[i].name);
printf("%c\t",stu_save[i].sex);
printf("%d\t",stu_save[i].age);
for(j=0;j<3;j++)
printf("%g\t",stu_save[i].score[j]);
printf("%g\t",stu_save[i].tolscore);
printf("%.2f",stu_save[i].ave);
putchar(10);
}
system("pause");
return;
}
int insert(struct Student stu_save[],int n)
{
int i,j,num=0;
float sum=0;
struct Student s;
char flag;
if(n>200)
{
printf("空间已满,无法插入!\n");
return 0;
}
// load(stu_save,n-1);
do{

printf("\n请依次输入学号、姓名、性别、年龄及三门课成绩\n");
scanf("%s",s.num);
scanf("%s",s.name);
scanf(" %c",&s.sex); //%c前的空格用于接收上一个字符串后的空格、回车、制表符,etc
scanf("%d",&s.age);
for(j=0;j<3;j++)
scanf("%f",&s.score[j]);
sum=0;
for(j=0;j<3;j++)
sum+=s.score[j];
s.tolscore=sum;
s.ave=sum/3;
num++;
for(i=n+num-1;strcmp(stu_save[i-1].num,s.num)>0&&i>0;i--)
stu_save[i]=stu_save[i-1];
stu_save[i]=s;
printf("插入成功!");

fflush(stdin);
do
{
printf("继续插入?(y/n)");

flag=getch();
}while(flag!='y'&&flag!='n');
}while(flag=='y');

system("pause");
//save(stu_save,n);
return num;
}
void sort(struct Student stu_save[],int n)
{
int a,i,j;
struct Student t;
system("cls");
printf("\n1-按序号排序\n2-按成绩排序\n请选择:");
scanf("%d",&a);
while(a!=1&&a!=2)
{
printf("输入有误,请重新输入!\n");
scanf("%d",&a);
}
//load(stu_save,n);
if(a==1)
{
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
{
if(strcmp(stu_save[j].num,stu_save[j+1].num)>0)
{
t=stu_save[j];
stu_save[j]=stu_save[j+1];
stu_save[j+1]=t;
}
}
}
else
{
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
{
if(stu_save[j].ave<stu_save[j+1].ave)
{
t=stu_save[j];
stu_save[j]=stu_save[j+1];
stu_save[j+1]=t;
}
}
}
// save(stu_save,n);
printf("排序成功!\n");
output(stu_save,n);
return;
}
void find(struct Student stu_save[],int n)
{
char ch;
do{
int i,j,w=1;
char search[20];
//load(stu_save,n);
printf("请输入学生的学号或姓名");
scanf("%s",search);
for(i=0;i<n;i++)
{
if(strcmp(stu_save[i].num,search)==0||strcmp(stu_save[i].name,search)==0)
{
printf("查找成功,该学生的信息为:\n");
printf("%s\t",stu_save[i].num);
printf("%s\t",stu_save[i].name);
printf("%c\t",stu_save[i].sex);
printf("%d\t",stu_save[i].age);
for(j=0;j<3;j++)
printf("%g\t",stu_save[i].score[j]);
printf("%g\t",stu_save[i].tolscore);
printf("%.2f",stu_save[i].ave);
putchar(10);
w=0;
break;
}
}
if(w)
printf("查找失败\n");

do
{
printf("\n按Y继续查找,按N返回上级菜单\n");
ch=getch();
}while(ch!='y'&&ch!='n');
if(ch=='n')
return;
}while(ch=='y');
}
int delete_stu(struct Student stu_save[],int n)
{
int i,w=1;
char search[20];
// load(stu_save,n);
printf("\n请输入要删除学生的姓名或学号\n");
scanf("%s",search);
for(i=0;i<n;i++)
if(strcmp(stu_save[i].num,search)==0||strcmp(stu_save[i].name,search)==0)
{
w=0;
break;
}
if(w)
{
printf("无此学生!\n");
return 0;
}
for(;i<n-1;i++)
stu_save[i]=stu_save[i+1];
printf("删除成功!\n");
// save(stu_save,n-1);
return 1;
}

之前随便写的 忘了有没有调试 有问题再私信找我 采纳哦~~

⑷ C语言学生信息管理系统程序设计

如果多找几个人,我倒是有兴趣加入一起做,毕竟这个程序还是挺大的,代码量也大,不是说一个人一两天就能完成的。

⑸ C语言编写学生信息管理系统,这个怎么弄

/////////////////////////简单的学生管理系统///////////////////
#include<iostream>
#define max 5
using namespace std;
struct student//////////定义数组结构体
{
int xuehao; //学号
char name[10]; //姓名
char sex; //性别
int age; //年龄
}stu[max];

//////定义数型
char a; //全局函数a(操作数)
int i; //全局函数i(循环操作数)

//////////函数列表
void display(); //屏显函数
void init(); //数组结构体初始化函数
void xuanze(); //选择操作数函数
void sys(char a); //根据操作数执行函数
void addf(); //增加数据的函数
void delf(); //删除数据的函数
void inqf(); //查询数据的函数

//////////////////////屏显
void display()
{
cout<<" ==========Welcome to Student Manager System!=========="<<endl;
cout<<endl;
cout<<" A: Add new student"<<endl;
cout<<" D: Delete a student"<<endl;
cout<<" I: Inquiry a student"<<endl;
cout<<" Q: Quit"<<endl;
cout<<endl;
xuanze();
}

/////////////////////////////信息初始化
void init()
{
for(i=0;i<max;i++)
{
stu[i].name[10]='\0';
stu[i].sex='\0'; //初始化所有的sex为'\0'
stu[i].age=0;
}
}

////////////////////////操作选择
void xuanze()
{
cout<<"input your choose:"<<endl;
cin>>a;
if(a=='A'||a=='D'||a=='I'||a=='Q')
sys(a); //选择相应的操作数执行函数
else
{
cout<<"Error chooseing!"<<endl;
cout<<endl;
display();
}
}

/////////////////////相应操作数对应函数
void sys(char a)
{
switch(a)
{
case 'A':addf();
case 'D':delf();
case 'I':inqf();
case 'Q':exit(0); //退出
}
}

/////////////添加数据的函数
void addf()
{
int k=0,j,g;
for(i=0;i<max;i++)
{
if(stu[i].sex=='\0')k++;
}
cout<<"剩余 "<<k<<" 个记录可以添加!"<<endl; //输出剩余的可添加记录数目
if(k!=0)
{
cout<<"请输入你要添加的记录的个数,但是记录个数不能超过 "<<k<<endl;
cin>>j;
if(j>k)
{
cout<<"Error number!"<<endl;
cout<<endl; //显示美观需要
display();
}
else
{
for(i=0;i<j;i++)
{
for(int h=0;h<max;h++)
{
if(stu[h].sex=='\0') //判断sex是否为'\0' 如果是则执行写入操作
{
cout<<"input the NO"<<i+1<<" 's xuehao:"<<endl;
cin>>stu[h].xuehao;
///判断数据非法与否
for(g=0;g<max;g++)
{
if((stu[g].xuehao==stu[h].xuehao)&&g!=h)
{
cout<<"Duplicate number!"<<endl;
cout<<endl;
display();
}
}/////////判断学号是否相同
if(stu[h].xuehao<1||stu[h].xuehao>10000)
{
cout<<"Error number!"<<endl;
cout<<endl;
display();
}
cout<<"input the NO"<<i+1<<" 's name:"<<endl;
cin>>stu[h].name;
cout<<"input the NO"<<i+1<<" 's sex:('f' for female,'m' for male)"<<endl;
cin>>stu[h].sex;
///判断数据非法与否
if(stu[h].sex!='f'&&stu[h].sex!='m')
{
stu[h].sex='\0'; //恢复sex的初始值,以便下次写入产生遗漏
cout<<"Error sex!"<<endl;
cout<<endl;
display();
}
cout<<"input the NO"<<i+1<<" 's age:(1-100)"<<endl;
cin>>stu[h].age;
///判断数据非法与否
if(stu[h].age<1||stu[h].age>100)
{
stu[h].sex='\0'; //恢复sex的初始值,以便下次写入产生遗漏
cout<<"Error age!"<<endl;
cout<<endl;
display();
}
break; //跳出本层循环
}
}
}
display(); //返回
}
}
else
{
cout<<"No space to add new student!"<<endl;
cout<<endl;
display();
}
}

////////////////删除数据的函数
void delf()
{
int d,s=0;
cout<<"Please input the number of the student you want to delete:"<<endl;
cin>>d;
if(d<1||d>10000)
{
cout<<"Error number!"<<endl;
cout<<endl;
display();
}
else
{
for(i=0;i<max;i++)
{
if(stu[i].xuehao==d)
{
s++; //是否实行删除的标志位
stu[i].xuehao=-1;
stu[i].name[10]='\0';
stu[i].sex='\0';
stu[i].age=0;
cout<<"Delete successfully!"<<endl;
cout<<endl;
display();
}
}
if(s==0)
{
cout<<"Not exist!"<<endl;
cout<<endl;
display();
}
}

}

/////////////查询数据的函数
void inqf()
{
int d,s=0;
cout<<"Please input the number of the student you want to inquiry(0 for all):"<<endl;
cin>>d;
cout<<endl;
if(d==0)
{
for(i=0;i<max;i++)
{
if(stu[i].sex!='\0')
cout<<stu[i].xuehao<<","<<stu[i].name<<","<<stu[i].sex<<","<<stu[i].age<<endl;
}
cout<<endl;
display();
}
else
{
if(d<1||d>10000)
{
cout<<"Error number!"<<endl;
cout<<endl;
display();
}
else
{
for(i=0;i<max;i++)
{
if(stu[i].xuehao==d)
{
s++; //是否存在该数字的标志
cout<<stu[i].xuehao<<","<<stu[i].name<<","<<stu[i].sex<<","<<stu[i].age<<endl;
display();
}
}
if(s==0)
{
cout<<"Not exist!"<<endl;
cout<<endl;
display();
}
}
}
}//ingf

//////////////主函数
void main()
{
init(); //初始化
display(); //屏显(主界面)
}

⑹ 信管学c语言有前途吗

还是有的,你在学校参加全国性的比赛时,很多时候用的编程语言都是C,,毕业设计时如果你学的好,也可以用这个啊

⑺ 信管专业考c语言还是考office

建议考office,以后工作了ppt word excel会经常用。
c语言是计算机专业课的基础,仅仅是基础,对飞此专业的人来说,用处不大。

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

代码如下:

#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(" ★★考生报名管理程序★★ ---------------------------------------- ");
menu(L);
return 0;
}

//创建一个带头结点的空表
List
make_empty( List L)
{
L = ( List ) malloc (sizeof( Node ));
if(NULL == L)
{
printf("内存分配失败");
exit( 1 );
}
L->next = NULL;
//printf("空表创建成功。 ");
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("报名成功 ");
}
else
{
printf("修改成功 ");
}
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("您要查找的考生信息: ");
printf("准考证号:%s 姓名:%s 性别:%s 年龄:%hd 报考科目:%s ",p->data.examno,p->data.name,p->data.sex,p->data.age,p->data.examtype);
}
else
{
printf("没有您要找的学生。 ");
}

}

//循环创建考生信息
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 姓名:%s 性别:%s 年龄:%hd 报考科目:%s ",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("现无考生报名! ");
}
else
{
position p=L->next;
while( p != NULL )
{
printf("准考证号:%s 姓名:%s 性别:%s 年龄:%hd 报考科目:%s ",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("你要删除的考生不存在 ");
return 0;
}
else
{
q = p->next;
p->next = q->next;
printf("删除成功。 删除的考生信息为: ");
printf("准考证号:%s 姓名:%s 性别:%s 年龄:%hd 报考科目:%s ",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 姓名:%s 性别:%s 年龄:%hd 报考科目:%s ",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(" a. 考生报名入口 ");
printf(" b. 查询考生信息 ");
printf(" c. 修改考生信息 ");
printf(" d. 删除考生信息 ");
printf(" e. 全部考生信息 ");
printf(" f. 程序作者信息 ");
printf(" g. 退出程序 ");
char n='h';

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

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

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

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

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

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

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

(8)c语言信管扩展阅读:

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语言编写学生信息管理系统

稍微用了点c++(你给的分太低)
如下图所示:
studf.txt
操作日志文件:

⑽ 用C语言编写学生信息管理程序(给出五个主要函数就OK啦!)

/*接上一楼*/
struct
Student
*create()
/*create函数定义,此函数实现创建单向动态链表*/
{
struct
Student
*head=NULL,*p1,*p2;
/*head,链表的头指针;*p1,*p2,中间指针变量*/
puts("\n现在请输入学院名:");
scanf("%s",college);
puts("\n年级:");
scanf("%s",grade);
puts("\n专业和班级:");
scanf("%s",classname);
puts("\n下面请按提示依次输入数据:\n(如果要结束输入,请输入学号0)");
p1=p2=(struct
Student
*)malloc(LEN);
puts("输入第一个学生的学号:");
scanf("%ld",&p1->num);
puts("输入此学生成绩:\n英语:");
scanf("%f",&p1->score.english);
puts("数学:");
scanf("%f",&p1->score.math);
puts("计算机:");
scanf("%f",&p1->score.computer);
total_and_aver(p1);/*计算总分和平均分*/
p1->grade=mark_grade(p1);
for(;p1->num!=0;)
{
len++;
if(len==1)
head=p1;
else
p2->next=p1;
p2=p1;
p1=(struct
Student
*)malloc(LEN);
puts("输入下一个学生的学号:");
scanf("%ld",&p1->num);
puts("输入此学生成绩:\n英语:");
scanf("%f",&p1->score.english);
puts("数学:");
scanf("%f",&p1->score.math);
puts("计算机:");
scanf("%f",&p1->score.computer);
total_and_aver(p1);/*计算总分和平均分*/
p1->grade=mark_grade(p1);
}
p2->next=NULL;
return
(head);
}
struct
Student
*del(struct
Student
*head,long
del_num)
/*del函数定义,此函数实现从现有链表中删除一个结点*/
{
struct
Student
*p1,*p2;
if(head==NULL)
puts("空表,没有任何数据记录。\n");
else
{
for(p1=head;!(del_num==p1->num||p1->next==NULL);p2=p1,p1=p1->next);
if(del_num==p1->num)
{
if(p1==head)head=p1->next;
else
p2->next=p1->next;
printf("学号为%ld学生的数据删除成功。\n",del_num);
--len;
}
else
printf("未找到学号为%ld学生的记录。\n",del_num);
}
return
(head);
}
struct
Student
*insert(struct
Student
*head,struct
Student
*new_student)
/*insert函数定义,此函数实现向现有链表中插入一个结点或覆盖相同学号的数据*/
{
struct
Student
*p0=new_student,*p1=head,*p2;
char
control;
if(head==NULL)
{
head=p0;
p0->next=NULL;
puts("数据插入成功。\n");
}
else
{
for(;((*p0).num>(*p1).num)&&(p1->next!=NULL);p2=p1,p1=p1->next);
if((*p0).num==(*p1).num)
{
printf("已经存在一个学号为%ld的学生的数据,要覆盖原有数据吗?\n输入
Y
=覆盖原有数据\n输入其它=保留原有数据\n",p0->num);
FFLUSH;
scanf("%c",&control);
FFLUSH;
switch
(control)
{
case
'Y':
case
'y':if(p1==head){head=p0;p0->next=p1->next;}
else
{p2->next=p0;p0->next=p1->next;}
puts("数据已经更新\n");break;
default:break;
}
len--;
}
else
if((*p0).num<(*p1).num)
{
if(p1==head)head=p0;
else
p2->next=p0;
p0->next=p1;
puts("数据插入成功。\n");
}
else
{
p1->next=p0;
p0->next=NULL;
puts("数据插入成功。\n");
}
}
++len;
return
(head);
}
struct
Student
*sort(struct
Student
*head)
/*sort函数定义,此函数实现对链表中的数据按照平均分高低排序*/
{
struct
Student
*p1,*p2;
for(p1=head;p1->next!=NULL;p1=p1->next)
for(p2=p1->next;p2!=NULL;p2=p2->next)
{
if(p1->score.average<p2->score.average)
{
SWAP(p1->num,p2->num);
SWAP(p1->grade,p2->grade);
SWAP(p1->score.english,p2->score.english);
SWAP(p1->score.math,p2->score.math);
SWAP(p1->score.computer,p2->score.computer);
SWAP(p1->score.total,p2->score.total);
SWAP(p1->score.average,p2->score.average);
}
}
return
head;
}
/*接下一楼*/

热点内容
应缴费档次配置异常怎么回事 发布:2025-01-15 13:20:34 浏览:617
成都php招聘 发布:2025-01-15 13:12:16 浏览:380
怎么调用服务器数据库 发布:2025-01-15 13:06:25 浏览:656
人人网设置访问权限 发布:2025-01-15 13:02:06 浏览:563
崩坏学园2脚本 发布:2025-01-15 12:58:43 浏览:459
我的世界服务器等级如何升 发布:2025-01-15 12:45:55 浏览:689
c语言程序填空题 发布:2025-01-15 12:45:53 浏览:545
怎么配置氯化钠浓度 发布:2025-01-15 12:34:06 浏览:206
4000除以125简便算法 发布:2025-01-15 12:27:41 浏览:464
源码商用 发布:2025-01-15 12:26:54 浏览:75