本文目录一览:
c语言程序学生成绩管理系统源代码
头文件:::
#ifndef H_STUDENT_HH
#define H_STUDENT_HH
#include "stdio.h"
#include "string.h"
#include "malloc.h"
#define LEN sizeof(struct message_student) /*一个结构体数组元素的长度*/
#define numsubs 5 /*学科数目*/
typedef struct message_student /*结构体定义*/
{
char number[6];
char name[20];
char sex[4];
float subject[numsubs];
float score;
float average;
int index;
}student;
extern int numstus; /*学生数目*/
extern student *pointer; /*指向结构体数组*/
extern int lens;
int menu_select(); /*函数声明*/
int openfile(student stu[]);
int findrecord(student stud[]);
int writetotext(student stud[]);
void welcome();
void display1();
void showtable();
void sort(student stu[]);
void deleterecord(student stu[],int i);
void addrecord(student stud[]);
void display(student stud[],int n1,int n2);
void amendrecord(student stud[]);
void count(student stud[]);
void sortnum(student stud[]);
void sortnum2(student stud[]);
void sortname(student stud[]);
void sortname2(student stud[]);
void sortcount(student stud[]);
void sortcount2(student stud[]);
void statistic(student stud[]);
void display1();
#endif
#include "head.h"
int menu_select()
{
char c;
printf("\n\n");
printf(" | 1. 增加学生记录 5.统计信息 |\n");
printf(" | 2. 查询学生记录 6.打开文件 |\n");
printf(" | 3. 修改学生记录 7.保存文件 |\n");
printf(" | 4. 学生纪录排序 8.显示记录 |\n");
printf(" | 0.退出系统 |\n");
printf("\n\n");
printf("请选择(0-8):");
c=getchar();
getchar();
return (c-'0');
}
#include "head.h"
int findrecord(student stud[]) /*查找信息*/
{
char str[2];
int i,num;
if(numstus==0)
{
printf("没有可被查找的记录\n");
return -1;
}
else
{
printf("以何种方式查找?\n1.学号\t2.姓名\t3.名次\n");
gets(str);
if(str[0]=='1') /*按学号查找*/
{
printf("请输入学号:");
gets(str);
for(i=0;i=numstus;i++)
if(strcmp(str,stud[i].number)==0)
{
display(stud,i,i);
break;
}
else continue;
}
else if(str[0]=='2') /*按姓名查找*/
{
printf("请输入姓名:");
gets(str);
for(i=0;i=numstus;i++)
if(strcmp(str,stud[i].name)==0)
{
display(stud,i,i);
break;
}
else continue;
}
else if(str[0]=='3') /*按名次查找*/
{
printf("请输入名次:");
scanf("%d",num);
getchar();
for(i=0;i=numstus;i++)
if(num==stud[i].index)
{
display(stud,i,i);
break;
}
else continue;
}
if(inumstus)
{
printf("没有查找所要的信息。\n");
return -1;
}
return i;
}
}
#include"head.h"
int openfile(student stu[])
{
int i=0,j;
FILE *fp;
char filename[20],str[2];
if(numstus!=0)
{
printf("已经有记录存在,是否保存?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
writetotext(stu);
}
printf("请输入文件名:");
gets(filename);
numstus=0;
if((fp=fopen(filename,"rb+"))==NULL)
{
printf("无法打开该文件\n");
return(-1);
}
fscanf(fp,"%d",numstus);
fgetc(fp);
while(inumstus)
{
fscanf(fp,"%s",stu[i].number);
fscanf(fp,"%s",stu[i].name);
fscanf(fp,"%s",stu[i].sex);
for(j=0;jnumsubs;j++)
fscanf(fp,"%f",stu[i].subject[j]);
fscanf(fp,"%f",stu[i].score);
fscanf(fp,"%f",stu[i].average);
fscanf(fp,"%d",stu[i].index);
i++;
}
fclose(fp);
printf("文件读取成功\n");
printf("是否显示纪录?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
display(stu,0,numstus-1);
return(0);
}
#include "head.h"
void sort(student stud[])
{
int i,j=0;
char str[5];
student *p;
p=stud;
if(numstus==0)
{
printf("没有可供查询的记录!");
}
while(1)
{
for(i=0;;i++)
{
printf(" 请输入查询方式:");
printf("(直接输入回车则结束查询操作)\n");
printf("1.按照学号\t");
printf("2.按照姓名\t");
printf("3.按照名次\n");
gets(str);
if(strlen(str)==0) break;
if(str[0]=='1')
{
printf("请输入排序次序:\n");
printf("1.升序排列\t");
printf("2.降序排列\n");
gets(str);
if(str[0]=='1')
sortnum2(p);
else
sortnum(p);
display(stud,0,numstus-1);
}
else if(str[0]=='2')
{
printf("请输入排序次序:\n");
printf("1.升序排列\t");
printf("2.降序排列\n");
gets(str);
if(str[0]=='1')
sortname2(p);
else
sortname(p);
display(stud,0,numstus-1);
}
else if(str[0]=='3')
{
printf("请输入排序次序:\n");
printf("1.升序排列\t");
printf("2.降序排列\n");
gets(str);
if(str[0]=='1')
sortcount2(p);
else
sortcount(p);
display(stud,0,numstus-1);
}
else printf("请输入1~3");
printf("是否退出排序?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y') break;
}
return;
}
}
void sortnum(student stud[])
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;inumstus;i++)
for(j=0;jnumstus-i-1;j++)
{
if(strcmp(stud[j+1].number,stud[j].number)0)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
void sortnum2(student stud[])
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;inumstus;i++)
for(j=0;jnumstus-i-1;j++)
{
if(strcmp(stud[j].number,stud[j+1].number)0)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
void sortname(student stud[])
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;inumstus;i++)
for(j=0;jnumstus-i-1;j++)
{
if(strcmp(stud[j+1].name,stud[j].name)0)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
void sortname2(student stud[])
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;inumstus;i++)
for(j=0;jnumstus-i-1;j++)
{
if(strcmp(stud[j].name,stud[j+1].name)0)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
void sortcount(student stud[])
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;inumstus;i++)
for(j=0;jnumstus-i-1;j++)
{
if(stud[j+1].indexstud[j].index)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
void sortcount2(student stud[])
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;inumstus;i++)
for(j=0;jnumstus-i-1;j++)
{
if(stud[j].indexstud[j+1].index)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
#include"head.h"
void statistic(student stud[]) /*新增功能,输出统计信息*/
{
int i,j=0,k=0;
char c1,str[2];
float average[numsubs],sum=0;
if(numstus==0)
printf("没有可被查找的记录\n");
else
{
while(1)
{
printf("下面将统计考试成绩\n");
printf("请选择你要统计哪科的成绩 1.A\t2.B\t3.C\t4.D\t5.E\n");
c1=getchar();
printf("\t一共有个%d记录\n",numstus); /*总共记录数*/
switch(c1)
{
case '1':
for(i=0;inumstus;i++) /*循环输入判断*/
{
sum+=stud[i].subject[0];
if(stud[k].subject[0]stud[i].subject[0]) k=i;
if(stud[j].subject[0]stud[i].subject[0]) j=i;
}
average[0]=sum/numstus;
printf("\t科目A的最高分:\n"); /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[0]);
printf("\t科目A的最低分是:\n"); /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[0]);
printf("\t科目A的平均分是 %5.2f\n",average[0]); /*平均分*/
break;
case '2':
for(i=0;inumstus;i++) /*循环输入判断*/
{
sum+=stud[i].subject[1];
if(stud[k].subject[1]stud[i].subject[1]) k=i;
if(stud[j].subject[1]stud[i].subject[1]) j=i;
}
average[1]=sum/numstus;
printf("\t科目B的最高分:\n"); /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[1]);
printf("\t科目B的最低分是:\n"); /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[1]);
printf("\t科目B的平均分是 %5.2f\n",average[1]); /*平均分*/
break;
case '3':
for(i=0;inumstus;i++) /*循环输入判断*/
{
sum+=stud[i].subject[2];
if(stud[k].subject[2]stud[i].subject[2]) k=i;
if(stud[j].subject[2]stud[i].subject[2]) j=i;
}
average[2]=sum/numstus;
printf("\t科目C的最高分:\n"); /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[2]);
printf("\t科目C的最低分是:\n"); /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[2]);
printf("\t科目C的平均分是 %5.2f\n",average[2]); /*平均分*/
break;
case '4':
for(i=0;inumstus;i++) /*循环输入判断*/
{
sum+=stud[i].subject[3];
if(stud[k].subject[3]stud[i].subject[3]) k=i;
if(stud[j].subject[3]stud[i].subject[3]) j=i;
}
average[3]=sum/numstus;
printf("\t科目D的最高分:\n"); /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[3]);
printf("\t科目D的最低分是:\n"); /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[3]);
printf("\t科目D的平均分是 %5.2f\n",average[3]); /*平均分*/
break;
case '5':
for(i=0;inumstus;i++) /*循环输入判断*/
{
sum+=stud[i].subject[4];
if(stud[k].subject[4]stud[i].subject[4]) k=i;
if(stud[j].subject[4]stud[i].subject[4]) j=i;
}
average[4]=sum/numstus;
printf("\t科目E的最高分:\n"); /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[4]);
printf("\t科目E的最低分是:\n"); /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[4]);
printf("\t科目E的平均分是 %5.2f\n",average[4]); /*平均分*/
break;
default:printf("输入错误!请输入1~5之间的数\n");
}
sum=0;
getchar();
printf("是否继续进行统计?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y') ;
else break;
}
}
}
#include"head.h"
int writetotext(student stud[]) /*将所有记录写入文件*/
{
int i=0,j;
FILE *fp;
char filename[20];
printf("输入文件名称:");
gets(filename);
fp=fopen(filename,"w");
fprintf(fp,"%d\n",numstus);
while(inumstus)
{
fprintf(fp,"%s %s %s ",stud[i].number,stud[i].name,stud[i].sex);
for(j=0;jnumsubs;j++)
fprintf(fp,"%f ",stud[i].subject[j]);
fprintf(fp,"%f %f %d ",stud[i].score,stud[i].average,stud[i].index);
i++;
}
fclose(fp);
printf("已成功存储!\n");
display(stud,0,numstus-1);
numstus=0;
return 0;
}
#include"head.h"
void welcome()
{
printf("\t*************************************************************\n");
printf("\t\t\t\t这是一个学生成绩管理系统\n\t\t\t\t 倾情奉献 欢迎使用!\n");
printf("\t*************************************************************\n");
}
void showtable()
{
printf("---------------------------------------------------------------------------------------\n");-学生管理系统源代码
printf("学号\t姓名\t性别\tA\tB\tC\tD\tE\t总分\t平均分\t名次\n");
printf("---------------------------------------------------------------------------------------\n");-学生管理系统源代码
}
void display(student stud[],int n1,int n2)
{
int i;
showtable(); /*显示表头*/
for(i=n1;i=n2;i++)
printf("%s\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%d\t\n",stud[i].number,stud[i].name,stud[i].sex,stud[i].subject[0],stud[i].subject[1],stud[i].subject[2],stud[i].subject[3],stud[i].subject[4],stud[i].score,stud[i].average,stud[i].index); -学生管理系统源代码
/*通过循环输出数据*/
}
void display1()
{
printf("\t\t本系统由计应精英一组亲情制作\n\n");
printf("\t\t制作人员列表: (按比划)\n");
printf("\t\t王庆斌\t\t\t张威\n\t\t李智\t\t\t周在峰\n\t\t杨凯\t\t\t胡杨\n");
printf("\n\n");
getchar();
}
#include"head.h"
#includestring.h
void amendrecord(student stud[])
{
char str[5]; /*供用户输入*/
int i=-1,j;
if(numstus==0) /*没有记录返回*/
printf("没有可供修改的记录!");
while(i0)
{
i=findrecord(stud);
if(i=0)
{
printf("要删除这个学生的信息吗?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
{
deleterecord(stud,i);
count(stud);
}
else
{
printf("确定要修改这个学生的信息吗?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
{
printf("下面请重新输入学生的信息:\n");
printf("请输入学号:");
gets(stud[i].number);
printf("请输入姓名:");
gets(stud[i].name);
printf("请输入性别(男/女 1/0):");
gets(str);
if(str[0]=='0')
strcpy(stud[i].sex,"女");
else
strcpy(stud[i].sex,"男");
stud[i].score=0;
printf("请按顺序输入成绩:");
for(j=0;jnumsubs;j++)
{
scanf("%f",stud[i].subject[j]);
stud[i].score+=stud[i].subject[j];
}
getchar();
stud[i].average=stud[i].score/numsubs;
}
count(stud);
}
display(stud,0,numstus-1);
}
printf("是否继续进行其他修改?(y/n)\n");
gets(str);
if(str[0]=='y'||str[0]=='Y')
i=-1;
else i=1;
}
}
void deleterecord(student stu[],int i) /*删除信息*/
{
int j;
while(i=0)
{
for(j=i;jnumstus;j++)
stu[j]=stu[j+1];
numstus--;
printf("删除成功!\n");
}
}
void count(student stud[])
{
int i,j;
for(i=0;inumstus;i++)
{
stud[i].index=1;
for(j=0;jnumstus;j++)
if(stud[j].scorestud[i].score)
stud[i].index++;
}
}
#include "head.h"
void addrecord(student stud[])
{
int i=0,j,num;
char str[5];
if(numstus!=0)
{
printf("已有记录存在是否覆盖?(y/n)\n");
gets(str);
if(str[0]=='Y'||str[0]=='y')
i=0;
else i=numstus;
}
printf("请输入增加的学生信息条目数:");
scanf("%d",num);
if(i==0)
numstus=num;
else numstus+=num;
if(numstuslens)
{
lens+=50;
pointer=(student *)realloc(pointer,lens*LEN);
}
printf("请输入学生信息:\n");
for(;inumstus;i++)
{
getchar();
printf("请输入学号:");
gets(pointer[i].number);
printf("请输入姓名:");
gets(pointer[i].name);
printf("请输入性别(男/女 1/0):");
gets(pointer[i].sex);
if(pointer[i].sex[0]=='0') strcpy(pointer[i].sex,"女");
else strcpy(pointer[i].sex,"男");
printf("请输入各科成绩:(按ABCDE的顺序):");
stud[i].score=0;
for(j=0;jnumsubs;j++)
{
scanf("%f",stud[i].subject[j]); /*计算总分*/
stud[i].score+=stud[i].subject[j];
}
stud[i].average=stud[i].score/numsubs; /*计算平均分*/
}
count(stud); /*附名次*/
display(stud,0,numstus-1);
getchar();
}#include "head.h"
int numstus;
int lens;
student *pointer;
void main()
{
int i=1;
char str[2];
lens=100;
pointer=(student *)malloc(lens*LEN); /*分配内存*/
numstus=0;
welcome(); /*欢迎界面*/
while(i0)
{
i=menu_select(); /*控制菜单*/
switch(i)
{
case 1:addrecord(pointer);break; /*增加学生信息*/
case 2:findrecord(pointer);break; /*查询学生信息*/
case 3:amendrecord(pointer);break; /*修改学生信息*/
case 4:sort(pointer);break; /*学生信息排序*/
case 5:statistic(pointer);break; /*统计信息*/
case 6:openfile(pointer);break; /*打开文件*/
case 7:writetotext(pointer);break; /*保存文件*/
case 8:display(pointer,0,numstus-1);break; /*显示记录*/
case 0:
if(numstus!=0) printf("是否保存当前记录?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
writetotext(pointer);
i=-1;break; /*退出系统*/
default:printf("请输入数字0~8:\n");i=1; /*输入错误*/
}
}
printf("\t\t欢迎再次使用本系统。\n\n");
display1();
}
自己一改就能用,给我加分哈!
急用,C++学生成绩管理系统源代码,感谢
/*#includestdio.h
#includestdlib.h
#includestring.h
//函数的声明,扩展作用域
//能够储存的成绩个数
#define SIZE 10
//菜单函数
void ment(void);
//添加成绩函数
void chengji(int p[]);
//输出所有成绩函数
void sccj(int p[]);
//选择函数
int chse(int num);
//删除成绩函数
void dloe(int p[]);
//修改成绩
void cger(int p[]);
//查询成绩函数
void scere(int p[]);
//求平均分函数
void aser(int p[]);
//求最高分函数
void mascer(int p[]);
//求最低分函数
void miscer(int p[]);
int len=0;
int name[24];
int p[10];
int main(void)
{
//定义相关变量
//选择菜单的序号
int sent = 0;
//存放结果
int rese = 0;
char name[15];
int i=0;
for(i=0;i4;i++)
{
printf("\n请输入您的名字:");
scanf("%s",name);
if(strcmp(name,"张浪浪")==0)
{
printf("欢迎使用成绩管理系统!\n");
break;
}
else
{
printf("输出错误!!\n");
printf("请重新输入!!\n");
printf("你只有三次机会,当前为%d次\n",i+1);
if(i+1==3)
{
printf("\n账号已锁定!!\n");
return 0;
}
}
}
while(1)
{
ment();//调用菜单函数
printf("\n====请输入您选择的序号:");
scanf("%d",sent);
while(sent0 || sent8)
{
printf("\n输入错误!请输入0-8!\n");
scanf("%d",sent);
}
//调用选择函数
rese = chse(sent);
if(rese == -1) break;
}
system("pause");
return 0;
}
//菜单函数
void ment(void)
{
printf("\n=====成绩管理系统=====\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("====0:退出管理系统====\n");
}
//选择函数
int chse(int num)
{
//定义相关变量
int sun = 0;//存放返回值
//利用开关函数实现函数的调用
switch(num)
{
//添加成绩
case 1:
chengji(p);
break;
//删除成绩
case 2:
dloe(p);
break;
//修改成绩
case 3:
cger(p);
break;
//查询成绩
case 4:
scere(p);
break;
//求平均分
case 5:
aser(p);
break;
//求最高分
case 6:
mascer(p);
break;
//求最低分
case 7:
miscer(p);
break;
//输出所有成绩
case 8:
sccj(p);
break;
//退出程序
case 0:
sun= -1;
break;
}
return sun;
}
//添加成绩函数
void chengji(int p[])
{
//判断是否已存满
if (len == SIZE)
{
printf("容量已满,添加失败!\n");
//退出函数,中断函数执行
return ;
}
else
{
printf("请输入要添加的成绩");
//把最新的数据存放在最后一个元素那里
scanf("%d",p[len]);
//len++;成绩个数+1
len++;
printf("成绩添加成功!\n");
}
}
//输出所有成绩函数
void sccj(int p[])
{
int i = 0;
if(len == 0)
printf("当前没有任何成绩!\n");
else
{
printf("所有成绩为:");
//对当前所有成绩进行遍历输出
for(i = 0 ; i len ; i++)
{
printf("%d",p[i]);
}
printf("\n");
}
}
//删除成绩函数
void dloe(int p[])
{
int i=0;
int idx=0;
printf("请输入同学要删除成绩的序号(第一个序号为0);");
scanf("%d",idx);
if(idx0||idxlen-1||len==0)
{
printf("找不到需要删除的成绩序号\n");
//退出函数
return;
}
//从需要删除的元素开始,后面一个元素的数据依次增加
for(i=idx;ilen-1;i++)
{
p[i]=p[i+1];
}
p[i]=0;
len=len-1;
printf("成绩删除成功\n");
}
//修改成绩函数
void cger(int p[])
{
int value=0;
int index=0;
printf("请输入要修改成绩的序号(第-一个序号为0);");
scanf("%d",index) ;
if (index0||indexlen-1l||len==0)
{
printf("找不到需要修改的成绩序号!\n");
return;
}
printf("请输入修改后的成绩:");
scanf("%d",value);
//修改成绩
p[index]=value;
printf ("成绩修改成功!\n");
}
//查询成绩函数
void scere(int p[])
{
int index=0;
printf("请输入要查询成绩的序号(第一个序号为0);");
scanf("%d",index);
if(index0|| indexlen-1||len==0)
{
printf("找不到需要查询的成绩序号!\n");
return;
}
printf("要查询的成绩为:%d分\n",p[index]);
}
//求平均分函数
void aser(int p[])
{
double avg = 0;//定义一个变量来存储平均值
int i =0,j=0;
if(len == 0)
{
printf("%s同学当前还没添加成绩!!!\n",name);
}
else
{
for(i=0;ilen;i++)
{
avg+=p[j++]/(len*1.0);
}
printf("%s同学当前成绩的平均分为:%.2f\n",name,avg);
}
}
//求最高分函数
void mascer(int p[])
{
int max = 0;
int i = 0,j = 0;
if(len == 0)
{
printf("%s同学当前还没添加成绩!!!\n",name);
}
else
{
for(i=0;ilen;i++)
{
if(p[j++] max)
max = p[j-1];
}
printf("%s同学当前成绩的最高分为:%d\n",name,max);
}
}
//求最低分函数
void miscer(int p[])
{
int min = p[0];
int i = 0,j = 0;
if(len == 0)
{
printf("%s同学当前还没添加成绩!!!\n",name);
}
else
{
for(i=0;ilen;i++)
{
if(p[j++] min)
min = p[j-1];
}
printf("%s同学当前成绩的最低分为:%d\n",name,min);
}
}
*/
/*#includestdio.h
#includestdlib.h
#define SIZE 10
int len = 0;
void addscore(int p[])
{
int index;
int i = 0;
int score = 0;
printf("请输入需要添加的位置(当前已有%d个数,第一个位置为0):",len);
scanf("%d",index);
printf("请输入添加的数据:");
scanf("%d",score);
for(i=len;iindex;i--)
{
p[i]=p[i-1];
}
p[index]=score;
len++;
}
int main(void)
{
int arr[SIZE] = {10,20,30,40};
int i = 0;
len = 4;
addscore(arr);
printf("当前数组中的数为:");
for(;ilen;)
{
printf("%d\t",arr[i++]);
}
printf("\n");
system("pause");
}
*/
/*
int j =0 ;//统计素数的个数
void fun(int *a)
{
int i = 0;
int z = 0;
for(i=2;i=100;i++)
{
for(z=2;z=i;z++)
{
if(i%z == 0)
break;
}
if(i=z)
{
*(a+j)=i;
j++;
}
}
}
int main(void)
{
int arr[100];//存放素数
int i = 0;
fun(arr);
printf("arr数组中共有%d个素数,分别是:",j);
for(;ij;i++)
{
printf("%d\t",*(arr+i));
}
printf("\n");
return 0;
}
/*
int max = 0;
int min = 0;
int fun(int *a)
{
int i = 0;
int j = 0;
max = *a;
min = *a;
for(i=0,j=0;i10;i++)
{
if(max*(a+j++))
max = *(a+j-1);
}
for(i=0,j=0;i10;i++)
{
if(min*(a+j++))
min = *(a+j-1);
}
}
int main(void)
{
int arr[10] = {10,20,30,40,50,60,70,80,90,100};
fun(arr);
printf("最大值为:%d\n最小值为:%d\n",max,min);
return 0;
}
*/
学生基本信息管理系统C++源代码
#include iostream
#include iomanip
#include string
using namespace std;
typedef struct student {
unsigned m_id;
string m_name;
unsigned m_age;
string m_sex;
string m_address;
string m_contact;
string m_dormitory;
struct student *m_next;
}student;
class CStudent {
private :
student *head;
public :
CStudent() {
head = new student;
head-m_id = 0;
head-m_name = "noname";
head-m_next = NULL;
}
~CStudent() {
student *p = head,*q;
while(p) {
q = p;
p = q-m_next;
delete q;
}
}
student readdata(int model); // model = 1:不读取学号,2:不读取姓名,其他,读取所有信息
void entering();
bool insert(const student astu);
student *findid(unsigned id) const;
student *findname(const string name) const;
student *findsex(const string sex) const;
student *finddormitory(const string dormitory) const;
unsigned boys() const;
unsigned girls() const;
unsigned headcount() const;
bool eraseid();
bool erasename();
bool modifyid();
bool modifyname();
void Show() const;
void query() const;
void friend statistics(const CStudent aclss);
void friend erase(CStudent aclss);
void friend modify(CStudent aclss);
};
string readstring() {
string str;
while(cin.get() != '\n');
cin str;
return str;
}
student CStudent::readdata(int model) {
student tmp;
if(model != 1) { cout "学 号: "; cin tmp.m_id; }
if(model != 2) { cout "姓 名: "; tmp.m_name = readstring(); }
cin tmp.m_age;
cout "性 别: ";
tmp.m_sex = readstring();
cout "住 址: ";
tmp.m_address = readstring();
cout "联系方式: ";
tmp.m_contact =readstring();
cout "寝 室: ";
tmp.m_dormitory = readstring();
return tmp;
}
void CStudent::entering() {
student tmp;
cout "学号(0 to return): ";
cin tmp.m_id;
while(tmp.m_id) {
if(findid(tmp.m_id) == NULL) {
cout "姓 名: ";
tmp.m_name = readstring();
cout "年 龄: ";
cin tmp.m_age;
cout "性 别: ";
tmp.m_sex = readstring();
cout "住 址: ";
tmp.m_address = readstring();
cout "联系方式: ";
tmp.m_contact = readstring();
cout "寝 室: ";
tmp.m_dormitory = readstring();
insert(tmp);
}
else cout "重复的学号:" tmp.m_id endl;
cout "学号(0 to return): ";
cin tmp.m_id;
}
}
student *CStudent::findid(unsigned id) const {
student *p;
for(p = head; p-m_next; p = p-m_next)
if(p-m_next-m_id == id) return p;
return NULL;
}
student *CStudent::findname(const string name) const {
student *p;
for(p = head; p-m_next; p = p-m_next)
if(p-m_next-m_name == name) return p;
return NULL;
}
student *CStudent::findsex(const string sex) const {
student *p;
for(p = head; p-m_next; p = p-m_next)
if(p-m_next-m_sex == sex) return p;
return NULL;
}
student *CStudent::finddormitory(const string dormitory) const {
student *p;
for(p = head; p-m_next; p = p-m_next)
if(p-m_next-m_dormitory == dormitory) return p;
return NULL;
}
bool CStudent::insert(const student astu) {
student *newnode,*p = head;
if(p-m_next == NULL) {
p-m_next = new student(astu);
p-m_next-m_next = NULL;
return true;
}
while(p-m_next) {
if(p-m_next-m_id == astu.m_id) {
cout "重复的学号,插入失败!\n";
return false;
}
if(p-m_next-m_id astu.m_id) {
newnode = new student(astu);
newnode-m_next = p-m_next;
p-m_next = newnode;
return true;
}
p = p-m_next;
}
p-m_next = new student(astu);
p-m_next-m_next = NULL;
return true;
}
unsigned CStudent::boys() const {
unsigned cnt = 0;
student *p;
for(p = head-m_next; p; p = p-m_next)
if(p-m_sex == "男") ++cnt;
return cnt;
}
unsigned CStudent::girls() const {
unsigned cnt = 0;
student *p;
for(p = head-m_next; p; p = p-m_next)
if(p-m_sex == "女") ++cnt;
return cnt;
}
unsigned CStudent::headcount() const {
unsigned cnt = 0;
student *p;
for(p = head-m_next; p; p = p-m_next,++cnt);
return cnt;
}
bool CStudent::eraseid() {
student *q,*p;
unsigned id;
cout "输入要删除的学号:";
cin id;
p = findid(id);
if(p == NULL) {
cout "没有找到学号是\"" id "\"的学生,删除失败!\n";
return false;
}
q = p-m_next;
p-m_next = q-m_next;
delete q;
return true;
}
bool CStudent::erasename() {
student *q,*p;
string name;
cout "输入要删除人的姓名:";
name = readstring();
p = findname(name);
if(p == NULL) {
cout "没有找到姓名是\"" name "\"的学生,删除失败!\n";
return false;
}
q = p-m_next;
p-m_next = q-m_next;
delete q;
return true;
}
bool CStudent::modifyid() {
student tmp,*p;
unsigned id;
cout "输入要修改的学号:";
cin id;
p = findid(id);
if(p == NULL) {
cout "没有找到学号是\"" id "\"的学生,修改失败!\n";
return false;
}
tmp = readdata(1);
tmp.m_id = id;
*p = tmp;
return true;
}
bool CStudent::modifyname() {
student *p,tmp;
string name;
cout "输入要修改人的姓名:";
name = readstring();
p = findname(name);
if(p == NULL) {
cout "没有找到姓名是\"" name "\"的学生,修改失败!\n";
return false;
}
tmp = readdata(2);
tmp.m_name = name;
*p = tmp;
return true;
}
int menu() {
int choice;
do {
system("cls");
cout "\t****************************\n";
cout "\t* 学生基本信息管理系统 *\n";
cout "\t*==========================*\n";
cout "\t* 1、录入学生信息 *\n";
cout "\t* 2、显示学生信息 *\n";
cout "\t* 3、查询学生信息 *\n";
cout "\t* 4、添加学生信息 *\n";
cout "\t* 5、统计学生信息 *\n";
cout "\t* 6、删除学生信息 *\n";
cout "\t* 7、修改学生信息 *\n";
cout "\t* 0、退出管理系统 *\n";
cout "\t****************************\n";
cout "\n\t请选择:";
cin choice;
}while(choice 0 || choice 7);
return choice;
}
void show(student *p) {
cout p-m_id " " p-m_name " " p-m_age " ";
cout p-m_sex " " p-m_address " ";
cout p-m_contact " " p-m_dormitory endl;
}
void CStudent::Show() const {
student *p;
cout "----------------------------------------------------------\n";
for(p = head-m_next; p; p = p-m_next) show(p);
cout "----------------------------------------------------------\n";
system("pause");
}
void CStudent::query() const {
int select;
unsigned id;
string name;
student *p;
cout "1、按学号查询\n2、按姓名查询\n0、返回\n";
cin select;
switch(select) {
case 1 : cout "请输入学号:"; cin id;
if(p = findid(id)) show(p-m_next);
break;
case 2 : cout "请输入姓名:"; name = readstring();
if(p = findname(name)) show(p-m_next);
break;
case 0 : return;
default : cout "选择错误。\n";
}
system("pause");
}
void statistics(const CStudent a) {
unsigned total = a.headcount();
unsigned boys = a.boys();
unsigned girls = a.girls();
cout "学生总数:" total "人。\n";
cout "其中,男生:" boys "名。";
cout "女生:" girls "名。\n";
system("pause");
}
void erase(CStudent a) {
int select;
unsigned id;
string name;
student *p,*q;
cout "1、按学号删除\n2、按姓名删除\n0、返回\n";
cin select;
switch(select) {
case 1 : cout "请输入学号:"; cin id;
if(p = a.findid(id)) {
q = p-m_next;
p-m_next = q-m_next;
delete q;
cout "成功删除 " id " 的信息。\n";
}
break;
case 2 : cout "请输入姓名:"; name = readstring();
if(p = a.findname(name)) {
q = p-m_next;
p-m_next = q-m_next;
delete q;
cout "成功删除 " name " 的信息。\n";
}
break;
case 0 : return;
default : cout "选择错误。\n";
}
system("pause");
}
void modify(CStudent a) {
int select;
cout "1、按学号修改\n2、按姓名修改\n0、返回\n";
cin select;
switch(select) {
case 1 : if(a.modifyid()) cout "修改成功。\n"; break;
case 2 : if(a.modifyname()) cout "修改成功。\n"; break;
case 0 : return;
default : cout "选择错误。\n";
}
system("pause");
}
int main() {
CStudent a;
int an;
do {
an = menu();
switch(an) {
case 1 : a.entering(); break;
case 2 : a.Show(); break;
case 3 : a.query(); break;
case 4 : a.entering(); break;
case 5 : statistics(a); break;
case 6 : erase(a); break;
case 7 : modify(a); break;
case 0 : break;
default : cout "选择错误。\n"; break;
}
}while(an);
return 0;
}