设计一个学生管理系统能够添加和查询学生信息

设计一个学生管理系统能够添加和查询学生信息,第1张

#include <time.h>//这个也可以

#include<stdio.h>

#include<conio.h>

#include <stdlib.h>

#include<string.h>

#define MAX 80

void input()

void sort()

void display()

void insert()

void del()

void average()

void find()

void save()

void read()

void del_file()

void average()

void modify()

int now_no=0

struct student

{

int no

char name[20]

char sex[4]

float score1

float score2

float score3

float sort

float ave

float sum

}

struct student stu[MAX],*p

main()/*主函数*/

{

int as

start: printf("\n\t\t\t欢迎使用学生成绩管理系统\n")

/*一下为功能选择模块*/

do

{

printf("\n\t\t\t\t1.录入学员信息\n\t\t\t\t2.显示学员信息\n\t\t\t\t3.成绩排序信息\n\t\t\t\t4.添加学员信息\n\t\t\t\t5.删除学员信息\n\t\t\t\t6.修改学员信息\n\t\t\t\t7.查询学员信息\n\t\t\t\t8.从文件读入学员信息\n\t\t\t\t9.删除文件中学员信息\n\t\t\t\t10.保存学员信息\n\t\t\t\t11.退出\n")

printf("\t\t\t\t选择功能选项:")

fflush(stdin)

scanf("%d",&as)

switch(as)

{

case 1:system("cls")input()break

case 2:system("cls")display()break

case 3:system("cls")sort()break

case 4:system("cls")insert()break

case 5:system("cls")del()break

case 6:system("cls")modify()break

case 7:system("cls")find()break

case 8:system("cls")read()break

case 9:system("cls")del_file()break

case 10:system("cls")save()break

case 11:system("exit")exit(0)

default:system("cls")goto start

}

}while(1)

/*至此功能选择结束*/

}

void input()/*原始数据录入模块*/

{

int i=0

char ch

do

{

printf("\t\t\t\t1.录入学员信息\n输入第%d个学员的信息\n",i+1)

printf("\n输入学生编号:")

scanf("%d",&stu[i].no)

fflush(stdin)

printf("\n输入学员姓名:")

fflush(stdin)

gets(stu[i].name)

printf("\n输入学员性别:")

fflush(stdin)

gets(stu[i].sex)

printf("\n输入学员成绩1:")

fflush(stdin)

scanf("%f",&stu[i].score1)

printf("\n输入学员成绩2:")

fflush(stdin)

scanf("%f",&stu[i].score2)

printf("\n输入学员成绩3:")

fflush(stdin)

scanf("%f",&stu[i].score3)

printf("\n\n")

i++

now_no=i

printf("是否继续输入?(Y/N)")

fflush(stdin)

ch=getch()

system("cls")

}

while(ch!='n'&&ch!='N')

system("cls")

}

void sort()/*排序数据函数*/

{

struct student temp

int i,j

average()

for(i=1i<now_noi++)

{

for(j=1j<=now_no-ij++)

{

if(stu[j-1].ave<stu[j].ave)

{

temp=stu[j]

stu[j]=stu[j-1]

stu[j-1]=temp

}

}

}

}

void display()/*显示数据函数*/

{

int i

char as

average()

do

{

printf("\t\t\t班级学员信息列表\n")

printf("\t编号\t姓名\t性别\t成绩1\t成绩2\t成绩3\t平均值\n")

for(i=0i<now_no&&stu[i].name[0]i++)printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave)

printf("\t\t按任意键返回主菜单.")

fflush(stdin)

as=getch()

}

while(!as)

system("cls")

}

void insert()/*插入数据函数*/

{

char ch

do

{

printf("\n\t\t输入新插入学员队信息\n")

printf("\n输入学生编号:")

scanf("%d",&stu[now_no].no)

fflush(stdin)

printf("\n输入学员姓名:")

fflush(stdin)

gets(stu[now_no].name)

printf("\n输入学员性别:")

fflush(stdin)

gets(stu[now_no].sex)

printf("\n输入学员成绩1:")

fflush(stdin)

scanf("%f",&stu[now_no].score1)

printf("\n输入学员成绩2:")

fflush(stdin)

scanf("%f",&stu[now_no].score2)

printf("\n输入学员成绩3:")

fflush(stdin)

scanf("%f",&stu[now_no].score3)

printf("\n\n")

now_no=now_no+1

sort()

printf("是否继续输入?(Y/N)")

fflush(stdin)

ch=getch()

system("cls")

}

while(ch!='n'&&ch!='N')

}

void del()/*删除数据函数*/

{

int inum,i,j

printf("输入要删除学员的编号:")

fflush(stdin)

scanf("%d",&inum)

for(i=0i<now_noi++)

{

if(stu[i].no==inum)

{

if(i==now_no)now_no-=1

else

{

stu[i]=stu[now_no-1]

now_no-=1

}

sort()

break

}

}

system("cls")

}

void save()/*保存数据函数*/

{

FILE *fp

int i

char filepath[20]

printf("输入要保存的文件路径:")

fflush(stdin)

gets(filepath)

if((fp=fopen(filepath,"w"))==NULL)

{

printf("\n保存失败!")

exit(0)

}

for(i=0i<now_noi++)

{

stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3

stu[i].ave=stu[i].sum/3

fprintf(fp,"\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave)

}

fclose(fp)

printf("学生信息已保存在%s中!\n",filepath)

system("pause")

system("cls")

}

void find()/*查询函数*/

{

int i

char str[20],as

do

{

printf("输入要查询的学生姓名:")

fflush(stdin)

gets(str)

for(i=0i<now_noi++)

if(!strcmp(stu[i].name,str))

{

printf("\t编号\t姓名\t性别\t成绩1\t成绩2\t成绩3\t平均值\n")

printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave)

}

printf("\t\t按任意键返回主菜单.")

fflush(stdin)

as=getch()

}

while(!as)

system("cls")

}

void average()/*求平均数*/

{

int i

for(i=0i<now_noi++)

{

stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3

stu[i].ave=stu[i].sum/3

}

}

void modify()/*修改数据函数*/

{

int i

char str[20],as

printf("输入要修改的学生姓名:")

fflush(stdin)

gets(str)

for(i=0i<now_noi++)

if(!strcmp(stu[i].name,str))

{

system("cls")

printf("\n\t\t输入新插入学员队信息\n")

printf("\n输入学生编号:")

fflush(stdin)

scanf("%d",&stu[i].no)

printf("\n输入学员性别:")

fflush(stdin)

gets(stu[i].sex)

printf("\n输入学员成绩1:")

fflush(stdin)

scanf("%f",&stu[i].score1)

printf("\n输入学员成绩2:")

fflush(stdin)

scanf("%f",&stu[i].score2)

printf("\n输入学员成绩3:")

fflush(stdin)

scanf("%f",&stu[i].score3)

printf("\n\n")

sort()

break

}

system("cls")

}void read()

{

FILE *fp

int i

char filepath[20]

printf("输入要读入的文件路径:")

fflush(stdin)

gets(filepath)

if((fp=fopen(filepath,"r"))==NULL)

{

printf("找不到%s文件!\n",filepath)

system("pause")

exit(0)

}

now_no=0

for(i=0i<MAX&&!feof(fp)i++)

{

fscanf(fp,"\t%d\t%s\t%s\t%f\t%f\t%f\t%f\n",&stu[i].no,stu[i].name,stu[i].sex,&stu[i].score1,&stu[i].score2,&stu[i].score3,&stu[i].ave)

now_no++

}

fclose(fp)

printf("保存的在文件%s中的所有信息已经读入!\n",filepath)

system("pause")

system("cls")

}void del_file()

{

FILE *fp

char filepath[20]

printf("输入要删除的文件路径:")

fflush(stdin)

gets(filepath)

fp=fopen(filepath,"w")

fclose(fp)

printf("保存的在文件%s中的所有信息已经删除!\n",filepath)

system("pause")

system("cls")

}

#include<iostream.h>

#include<iomanip.h>

#include<windows.h>

#include <conio.h>

void back()//返回开始菜单

void out()//输出信息

int w=1//用于记录学生人数,全局变量

class Data//日期类

{public:

double Year,Month,Day

Data()

{ Year=0Month=0Day=0 }

}

class student //学生类

{

public:

char name[10]//姓名

char sex[5]//性别

char jiguan[10]//籍贯

int num,age//学号,年龄

char adr[30]//住址

Data year

friend class Data//date作为student的友元 //定义一个日期类

void operator=(student s)//=重载

int operator == (student s)//==重载

}stu[100]

void main()

{

system("cls")//清屏 DOC调用

system("color f4")//颜色 同样是调用doc

int i

void comp()

void input()

void find()

void alt()

void del()

void exit()

void show()

cout<<setw(53)<<"欢迎进入学生管理系统!"<<endl

cout<<setw(55)<<"1 添加学生信息 2 查询学生信息"<<endl<<endl

cout<<setw(55)<<"3 删除学生信息 4 修改学生信息"<<endl<<endl

cout<<setw(55)<<"5 比较学生信息 6 显示学生信息"<<endl<<endl

cout<<setw(45)<<"0 推出系统"<<endl

cout<<"请选择:"

cin>>i

if(i>6||i<0)

{

cout<<"输入有误!"<<endl

back()

}

switch(i)

{

case 1:input()break

case 2:find()break

case 3:del()break

case 4:alt()break

case 5:comp()break

case 6:show()break

case 0:exit()break

default:cout<<"你的输入有误!\n"

}

}

void input() //添加学生

{

system("color 84")//颜色 同样是调用doc

system("cls")//清屏

int n

cout<<"请输入要添加的学生个数:\n"

cin>>n

if(n>=100||n<=0)

{cout<<"输入有误!<<endl"

main()}

else

{

for(n>0w++,n--)

{

cout<<"请输入姓名、性别、籍贯,年龄,学号,住址:"<<endl

cin>>stu[w].name>>stu[w].sex>>stu[w].jiguan>>stu[w].age >>stu[w].num>>stu[w].adr

cout<<"请输入该生生日(年 月 日)"<<endl

cin>>stu[w].year.Year

cin>>stu[w].year.Month

cin>>stu[w].year.Day

}

out()

}

cout<<"添加完毕2秒后返回"<<endl

Sleep(2000)//延时2秒

main()

}

void find() //按学号查找学生

{

system("color f4")//颜色 同样是调用doc

system("cls")

int i,id,j=0//j是用以记录是否有信息被找到

cout<<"请输入你要查找学生的学号:"

cin>>id

for(i=1i<wi++)

if(stu[i].num ==id)

{

cout<<i<<" "<<stu[i].name<<" "<<stu[i].sex<<" "<<stu[i].jiguan<<" "<<stu[i].age<<" "<<stu[i].num<<" "<<stu[i].year.Year<<" "<<stu[i].year.Month<<" "<<stu[i].year.Day<<stu[i].adr<<endl

j++

}

if(j==0)

cout<<"没有你要查找的信息"

back()

}

void del()//删除指定学号学生信息

{

system("color f4")//颜色 同样是调用doc

int i,a,y=0

char x

cout<<"请输入要删除的学生学号"

cin>>a

for(i=1i<wi++)

if(stu[i].num==a)

{

cout<<"该生情况:"<<endl

cout<<i<<" "<<stu[i].name<<" "<<stu[i].sex<<""<<stu[i].jiguan<<" "<<stu[i].age<<" "<<stu[i].num<<" "<<stu[i].year.Year<<" "<<stu[i].year.Month<<" "<<stu[i].year.Day<<" "<<stu[i].adr<<endl

cout<<"是否确认删除?(Y/N)"<<endl

cin>>x

if(x=='Y'||x=='y')

{

y++

for(i<w-1i++)

stu[i]=stu[i+1]

w--//每删除一个对总是减少一个

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11836512.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存