用C语言程序书写学生信息管理系统
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C语言程序书写学生信息管理系统相关的知识,希望对你有一定的参考价值。
学生信息管理系统
(1)录入学生基本信息:学号、姓名、性别、出生地、所在班级、语文成绩、数学成绩、英语成绩、总学分;
(2) 可使用“学号”或“姓名”对已存有的学生资料进行查询,查找成功后,将其信息显示在屏幕上,也可对学生信息进行修改。
我这个是原版,但差别不大,修改结构体的成员就可以了,我就不修改了!
我的劳动成果啊。请采纳啊!!!!!!!!!
#include<stdio.h>
#include<string.h>
#define M 100
static int N=0,I=0;
struct student
char name[20];
char num[20];
char qq[20];
char type[10];
stu[M];
void menu();
void add();
void find();
void alter();
void Delete();
void list();
void input();
void output();
int quit();
int Find(char []);
int Find_num(char []);
int Find_qq(char []);
int Find_type(char []);
void main()
int op;
menu();
while(1)
printf("\t\n\t\t 请选择功能(1-8):");
scanf("%d",&op);
getchar();
switch(op)
case 1:
printf("\n\t1.***********新增记录****************\n");
add();
break;
case 2:
printf("\n\t2.**********查找通讯录***************\n");
find();
break;
case 3:
printf("\n\t3.**********修改通讯录***************\n");
alter();
break;
case 4:
printf("\n\t4.**********删除通讯录***************\n");
Delete();
break;
case 5:
printf("\n\t5.**********显示通讯录***************\n");
list();
break;
case 6:
printf("\n\t6.*******从内存导出文件中************\n");
output();
break;
case 7:
printf("\n\t7.*******从文件导入内存中************\n");
input();
break;
break;
case 8:
printf("\n\t8.*************退出******************\n");
op=quit();
break;
default:
printf("\tNot have the function!\n");
break;
if(op==8)
printf("\n\t感谢您的使用,已退出程序!\n\t");
break;
else
continue;
void menu()
printf("\n");
printf("\t************通讯录管理菜单***********\n");
printf("\t\t1.增加新的记录\n");
printf("\t\t2.查找通讯录\n");
printf("\t\t3.修改通讯录\n");
printf("\t\t4.删除通讯录\n");
printf("\t\t5.显示全部通讯录\n");
printf("\t\t6.把通讯录导出到文件\n");
printf("\t\t7.从文件导入通讯录\n");
printf("\t\t8.退出\n");
printf("\t*************************************\n");
//1实现新增
void add()
struct student stud;
while(1)
printf("\n\t当前共存在%d条记录,请输入下一条:",N);
if(N==0)
printf("\n\t请输入姓名:");
scanf("%s",stu[N].name);
printf("\t请输入电话号码:");
scanf("%s",stu[N].num);
printf("\t请输入QQ号:");
scanf("%s",stu[N].qq);
printf("\t请输入类别(小学、初中、高中、大学):");
scanf("%s",stu[N].type);
N++;
printf("\n\t是否输入下一条(Y)?按任意键返回主菜单:");
if(getchar()=='Y'||getchar()=='y')
continue;
break;
printf("\n\t请输入姓名:");
scanf("%s",&stud.name);
printf("\t请输入电话号码:");
scanf("%s",&stud.num);
printf("\t请输入QQ号:");
scanf("%s",&stud.qq);
printf("\t请输入类别(小学、初中、高中、大学):");
scanf("%s",&stud.type);
if(!Find(stud.name))
printf("\n\t发现通讯录中存在该记录,确认新增吗(Y)?其它任意键将覆盖:");
if(getchar()=='Y'||getchar()=='y')
stu[N]=stud;
N++;
else
stu[I]=stud;
printf("\n\t操作成功!\n");
else
stu[N]=stud;
N++;
printf("\n\t是否输入下一条(Y)?按任意键返回主菜单:");
if(getchar()=='Y'||getchar()=='y')
continue;
break;
menu();
//2 实现查找
void find()
char s[20],ch,ch1;
while(1)
printf("\n\t****选择查找方式****");
printf("\n\t1.按姓名查找:");
printf("\n\t2.按电话号码查找:");
printf("\n\t3.按QQ查找:");
printf("\n\t4.按类别查找:");
printf("\n\t*******************\n");
printf("\n\t请输入查找方式(1-4):");
ch=getchar();
getchar();
switch(ch)
case '1':
printf("\n\t请输入姓名:");
gets(s);
if(Find(s))
printf("\n\t查找失败,请确认是否输入有误或不存在该记录!\n");
break;
case '2':
printf("\n\t请输入电话号码:");
gets(s);
if(Find_num(s))
printf("\n\t查找失败,请确认是否输入有误或不存在该记录!\n");
break;
case '3':
printf("\n\t请输入QQ号码:");
gets(s);
if(Find_qq(s))
printf("\n\t查找失败,请确认是否输入有误或不存在该记录!\n");
break;
case '4':
printf("\n\t请输入类别:");
gets(s);
if(Find_type(s))
printf("\n\t查找失败,请确认是否输入有误或不存在该记录!\n");
break;
default:
printf("\tHave not the function!");
printf("\t\n");
break;
printf("\n\t继续查找吗(Y)?,按任意键返回主菜单:");
ch1=getchar();
getchar();
if(ch1=='Y'||ch1=='y')
continue;
break;
menu();
//3 实现修改
void alter()
char ch,ch1,ch2,s[20];
printf("\n\t请输入要修改的姓名:");
gets(s);
if(Find(s))
printf("\n\t查找失败,请确认是否输入有误或不存在该记录!");
else
printf("\n\t*****请选择修改方式*****:");
printf("\n\t1.覆盖修改(重新输入全部信息)");
printf("\n\t2.部分修改");
printf("\n\t************************\n");
printf("\n\t请选择修改的方式(1-2):");
ch=getchar();
getchar();
switch(ch)
case '1':
printf("\n\t请输入姓名:");
scanf("%s",stu[I].name);
printf("\t请输入电话号码:");
scanf("%s",stu[I].num);
printf("\t请输入QQ:");
scanf("%s",stu[I].qq);
printf("\t请输入类别(小学、初中、高中、大学):");
scanf("%s",stu[I].type);
printf("\n\t修改成功! 修改后记录为:\n");
printf("\n\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
printf("\n\t姓名\t电话号码\tQQ\t\t类别");
printf("\n\t%-8s%-16s%-16s%-8s",stu[I].name,stu[I].num,stu[I].qq,stu[I].type);
break;
case '2':
while(1)
printf("\n\t**请选择要修改的项目:***");
printf("\n\t1.姓名");
printf("\n\t2.电话号码:");
printf("\n\t3.QQ:");
printf("\n\t4.类别:");
printf("\n\t************************\n");
printf("\n\t请输入要修改的项目(1-4):");
ch1=getchar();
getchar();
switch(ch1)
case '1':
printf("\n\t请输入修改后的姓名:");
scanf("%s",s);
break;
case '2':
printf("\n\t请输入修改后的电话号码:");
scanf("%s",stu[I].num);
break;
case '3':
printf("\n\t请输入修改后的QQ:");
scanf("%s",stu[I].qq);
break;
case '4':
printf("\n\t请输入修改后的类别(小学、初中、高中、大学):");
scanf("%s",stu[I].type);
break;
getchar();
printf("\n\t修改成功! 修改后记录为:\n");
printf("\n\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
printf("\n\t姓名\t电话号码\tQQ\t\t类别");
printf("\n\t%-8s%-16s%-16s%-8s",stu[I].name,stu[I].num,stu[I].qq,stu[I].type);
printf("\n\t继续修改(Y)?按任意键返回主菜单:");
ch2=getchar();
getchar();
if(ch2=='Y'||ch2=='y')
continue;
break;
break;
menu();
//4 实现删除
void Delete()
char s[20],ch;
while(1)
printf("\n\t请输入要删除的姓名:");
scanf("%s",s);
getchar();
if(Find(s))
printf("\n\t不存在该条记录,请确认是否输入有误或不存在该记录!\n");
break;
else
printf("\n\t确认删除该条记录吗(Y)?按任意键保留原纪录并返回主菜单:");
ch=getchar();
if(ch=='Y'||ch=='y')
for(I;I<N-1;I++)
stu[I]=stu[I+1];
printf("\n\t删除成功!\n");
N-=1;
break;
printf("\n\t已保留原纪录!\n");
break;
menu();
//5 实现全部显示
void list()
int c=0;
for(int i=0;i<N;i++)
if(c==0)
printf("\n\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
printf("\n\t姓名\t电话号码\tQQ\t\t类别");
printf("\n\t%-8s%-16s%-16s%-8s",stu[i].name,stu[i].num,stu[i].qq,stu[i].type);
c++;
printf("\n\t\t\t\t当前记录共有%d条!",i);
menu();
//6实现导出
void output()
FILE *fp;
if((fp=fopen("tongxunlu.txt","w"))==NULL)
printf("\n\tcan not open the file!");
for(int i=0;i<N;i++)
fwrite(&stu[i],sizeof(struct student),1,fp);
fclose(fp);
printf("\n\t导出成功!\n");
menu();
//7实现导入
void input()
FILE *fp;
struct student stud1;
if((fp=fopen("tongxunlu.txt","r"))==NULL)
printf("\n\tcan not open the file!");
printf("\t姓名\t电话号码\tQQ\t\t类别\n");
for(int i=0;i<N;i++)
fread(&stud1,sizeof(struct student),1,fp);
printf("\n\t%-8s%-16s%-16s%-8s",stud1.name,stud1.num,stud1.qq,stud1.type);
fclose(fp);
printf("\n\t导入成功!\n");
menu();
//8实现程序退出
int quit()
char ch;
printf("\n\t确定退出吗(Y)?按任意键返回主菜单:");
ch=getchar();
if(ch=='Y'||ch=='y')
return(8);
else
return(1);
//用于名字查找
int Find(char s[])
int i,c,c1=0;
for(i=0;i<N;i++)
while(1)
if((strcmp(stu[i].name,s))==0)
I=i,c=0;
if(c1==0)
printf("\n\t查找成功:");
printf("\n\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
printf("\n\t姓名\t电话号码\tQQ\t\t类别");
printf("\n\t%-8s%-16s%-16s%-8s",stu[i].name,stu[i].num,stu[i].qq,stu[i].type);
c1++;
break;
else
break;
if(c==0)
return(c);
else
return(1);
int Find_num(char s[])
int i,c,c1=0;
for(i=0;i<N;i++)
while(1)
if((strcmp(stu[i].num,s))==0)
I=i,c=0;
if(c1==0)
printf("\n\t查找成功:");
printf("\n\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
printf("\n\t姓名\t电话号码\tQQ\t\t类别");
printf("\n\t%-8s%-16s%-16s%-8s",stu[i].name,stu[i].num,stu[i].qq,stu[i].type);
c1++;
break;
break;
if(c==0)
return(c);
else
return(1);
int Find_qq(char s[])
int i,c,c1=0;
for(i=0;i<N;i++)
while(1)
if((strcmp(stu[i].qq,s))==0)
I=i,c=0;
if(c1==0)
printf("\n\t查找成功:");
printf("\n\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
printf("\n\t姓名\t电话号码\tQQ\t\t类别");
printf("\n\t%-8s%-16s%-16s%-8s",stu[i].name,stu[i].num,stu[i].qq,stu[i].type);
c1++;
break;
break;
if(c==0)
return(c);
else
return(1);
int Find_type(char s[])
int i,c,c1=0;
for(i=0;i<N;i++)
while(1)
if((strcmp(stu[i].type,s))==0)
I=i,c=0;
if(c1==0)
printf("\n\t查找成功:");
printf("\n\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
printf("\n\t姓名\t电话号码\tQQ\t\t类别");
printf("\n\t%-8s%-16s%-16s%-8s",stu[i].name,stu[i].num,stu[i].qq,stu[i].type);
c1++;
break;
break;
if(c==0)
return(c);
else
return(1);
参考技术A #include<iostream>
using namespace std;
void main()
void avsco(int stunum,float *,float *);
void good(int stunum,char course[5][10],int num[],float *pscore ,float aver[]);
int i,j,stunum,*pnum,num[100];
float score[100][5],aver[100],*pscore,*paver;
char course [5][10],(*pcourse)[10];
cout<<"input student number:"<<endl;
cin>>stunum;
cout<<"input course:"<<endl;
pcourse=course;
for(i=0;i<5;i++)
cin>>course[i];
cout<<"input NO.and score"<<endl;
cout<<"NO.";
for(i=0;i<5;i++)
cout<<","<<course[i]<<endl;
pscore=&score[0][0];
pnum=&num[0];
for(i=0;i<stunum;i++)
cin>>*(pnum+i);
for(j=0;j<5;j++)
cin>>*(pscore+5*i+j);
paver=&aver[0];
cout<<endl;
avsco(stunum,pscore,paver);
good(stunum,pcourse,pnum,pscore,paver);
void avsco(int stunum,float*pscore,float*paver)//求平均成绩的函数
int i,j;
float sum,average;
for(i=0;i<stunum;i++)
sum=0.0;
for(j=0;j<5;j++)
sum=sum+(*(pscore+5*i+j));
average=sum/5;
*(paver+i)=average;
void good(int stunum,char course[100][10],int num[100],float *pscore,float aver[100] )
int i,j,k,n;
cout<<"Students whose score is good"<<endl;
cout<<"NO. ";
for(i=0;i<5;i++)
cout<<course[i]<<" ";
cout<<" average"<<endl;
for(i=1;i<stunum;i++)
n=0;
for(j=0;j<stunum;j++)
if(*(pscore+5*i+j)>85.0) n++;
if((n==5)||(aver[i]>=90))
cout<<num[i]<<" ";
for(k=0;k<5;k++)
cout<<*(pscore+5*i+k)<<" ";
cout<<" "<<aver[i]<<endl;
参考技术B 我会用ACCESS,但C不太懂,VC只能帮你作个界面和表
以上是关于用C语言程序书写学生信息管理系统的主要内容,如果未能解决你的问题,请参考以下文章