问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

VC++设计:学生学籍管理系统

发布网友 发布时间:2022-06-06 02:03

我来回答

3个回答

热心网友 时间:2022-07-10 01:05

我这有一个
不过功能没你的这个全
你可以自己修改修改
你要就拿去吧,不要就算啦

# include <stdio.h>
# include <stdlib.h>
# include <string.h>
# include <conio.h>
# define N 20

/*********************自定义函数声明部分**************************/
void showheader(); //声明显示表头部分
int menu(); //声明主菜单函数
int menu3(); //声明插入功能子菜单函数
int menu4(); //声明删除功能子菜单函数
int menu5(); //声明查找功能子菜单函数
int quanxian(); //声明用户权限管理函数
void SavePass();
struct student shuru(); //声明学生信息录入函数
void display(struct student); //声明显示函数
void sort(struct student stu[N],int); //声明排序函数
void charu(struct student stu[N],int); //声明插入函数
int del1(struct student stu[N],int); //声明按照学号删除函数
int del2(struct student stu[N],int); //声明按照姓名删除函数
void chazhao1(struct student stu[N],int i); //声明按照学号查找函数
void chazhao2(struct student stu[N],int i); //声明按照姓名查找函数

/*********定义结构体************/
struct student
{
int ID;
char name[15];
char sex;
float score[3];
char *getSex() //构造结构成员
{
if(sex=='g')
return "女";
else
return "男";
}

float Ave() //构造结构成员
{

return (score[0]+score[1]+score[2])/3;

}
student() //构造函数
{
score[0]=0;
score[1]=0;
score[2]=0;
}

};

/****************************主函数开始**************************/
void main()
{
struct student stu[N];
int count=0,m=0,j;
char ch,ch1;
int choice,choice3,choice4,choice5; //菜单选项及子菜单选项
int user;
do //此循环体控制用户信息输入错误后是否重输
{

user=quanxian(); //调用拥护权限函数
system("cls");
if(user==1) //此条件结构判断用户权限输入是否正确
{
do //此循环体控制返回主菜单
{ ch1='n'; //如果用户将主菜单选择错误,可用此变量控制是否重输
choice=menu();
system("cls");
switch(choice) //此条件结构控制选择菜单功能后的操作
{
case 1: //输入学生信息
{
do //此循环体控制是否继续输入
{ printf("****************************** 学员信息录入 **********************************\n");
printf("\n\n请输入第%d个学员的成绩:\n\n",count+1);
stu[count]=shuru(); //调用输入函数
printf("\n\n是否继续(y/n)");
fflush(stdin);
ch=getchar();
count++;
system("cls");
}while(ch=='y');
//system("pause");
break;
}

case 2: //显示排序好的学生信息
{
printf("****************************** 学员信息显示 **********************************\n");
printf("\n\n排序后的成绩如下:\n");

sort(stu,count); //调用排序函数
showheader();

for(j=0;j<count;j++)
{
display(stu[j]); //调用显示函数
}

system("pause");
system("cls");
break;
}

case 3://插入功能
{
while(choice3!=3) //此循环体控制是否退出子菜单
{
system("cls");
choice3=menu3(); //调用子菜单函数
system("cls");
if(choice3==1) //此条件结构控制子菜单选项
{
do //此循环体判断是否继续插入
{ printf("****************************** 学员信息插入 **********************************\n");
charu(stu,count); //调用插入函数
count++;

printf("是否继续插入?(y/n)");
fflush(stdin);
ch=getchar();
system("cls");
}while(ch=='y');
}
if (choice3==2) //此条件结构控制子菜单选项
{
printf("\n\n插入学生信息后如下:\n");
showheader();
for(j=0;j<count;j++)
{
display(stu[j]); //调用显示函数
}
system("pause");
}
//
}
break;
}
case 4://删除功能
{
while(choice4!=4) //此循环体控制是否退出子菜单
{
int num;
system("cls");
choice4=menu4(); //调用子菜单函数
system("cls");

if(choice4==1) //此条件结构控制子菜单按照学号删除选项

{
do //此循环体控制是否继续删除
{ printf("*********************** 按照学号删除学员信息 ************************\n");
num=del1(stu,count);//调用删除函数
//system("cls");
if(num==1)
count--;
printf("\n是否继续删除?(y/n)");
fflush(stdin);
ch=getchar();
system("cls");
}while(ch=='y');
}
if(choice4==2) //此条件结构控制子菜单按照姓名删除选项

{
do //此循环体控制是否继续删除
{ printf("************************** 按照姓名删除学员信息 ******************************\n");
num=del2(stu,count);//调用删除函数
if(num==1)
count--;
printf("\n是否继续删除?(y/n)");
fflush(stdin);
ch=getchar();
system("cls");
}while(ch=='y');
}

if(choice4==3) //此条件结构控制子菜单显示删除后的信息选项
{
printf("\n\n删除学生信息后如下:\n");
showheader();
for(j=0;j<count;j++)
{
display(stu[j]); //调用显示函数
}
system("pause");
}

}
break;
}
case 5://查找功能
{
while(choice5!=3) //控制是否继续查找
{
system("cls");
choice5=menu5(); //调用查找子菜单函数
system("cls");
if(choice5==1) //控制按照学号查找
{
chazhao1(stu,count);//调用按照学号查找的函数
system("cls");
}
if(choice5==2) //控制按照姓名查找
{
chazhao2(stu,count);//调用按照姓名查找的函数
system("cls");
}
system("pause");
}
break;
}
case 6://退出
{
printf("确认退出?(y/n)"); //让用户确认是否退出
fflush(stdin);
ch=getchar();
break;
}
default:
{
printf("\a\a警告:您输入错误,是否重输!(y/n)");
fflush(stdin);
ch1=getchar();
system("cls");
break;
}
}
}while(ch=='n'|| ch1=='y');//控制是否要退出系统
}
if(user==0)
{
printf("\a\a警告:您的用户名或密码输入有误!是否重输?(y/n)");
}
fflush(stdin);
ch=getchar();
system("cls");

}while(ch=='y');
}

/*************************主函数结束*************************/

/*自定义输入函数*/
struct student shuru()
{
struct student stu;
printf("\n\n学号:");
scanf("%d",&stu.ID);
printf("\n姓名:");
scanf("%s",stu.name);

printf("\n性别(g/b):");
fflush(stdin);
scanf("%c",&stu.sex);

printf("\n语文成绩:");
scanf("%f",&stu.score[0]);
printf("\n数学成绩:");
scanf("%f",&stu.score[1]);
printf("\n英语成绩:");
scanf("%f",&stu.score[2]);

return stu;
}

/*自定义显示函数*/
void display(struct student stu)
{
int j;

printf("\t%d\t",stu.ID);
printf("%s\t",stu.name);
printf("%s\t",stu.getSex());
for(j=0;j<3;j++)
{
printf("%.2f\t",stu.score[j]);
}

printf("%.2f\t",stu.Ave());
putchar('\n');
}

/*自定义排序函数*/
void sort(struct student stu[N],int i)
{

int j,k;
struct student temp;
for(j=0;j<i;j++)
{
for(k=0;k<i-j-1;k++)
{
if((stu[k].Ave())<(stu[k+1].Ave()))
{
temp=stu[k];
stu[k]=stu[k+1];
stu[k+1]=temp;
}
}
}

}

/*自定义插入函数*/
void charu(struct student stu[N],int k)
{
int i,l;
struct student in ;

in=shuru();//调用输入函数
for(i=0;i<k;i++)
{
if(in.Ave()>stu[i].Ave())
break;
}
for(l=k;l>i;l--)
{
stu[l]=stu[l-1];
}
stu[i]=in;
}

/*自定义按照学号删除函数*/
int del1(struct student stu[N],int i)
{
int dele,j,k;
char ch;
printf("请选择学号:");
scanf("%d",&dele);

for(j=0;j<i;j++)
{
if(dele==stu[j].ID)
{
break;
}
}
if(j<i)
{
printf("这是您要删除的学生信息\n");
showheader();
display(stu[j]);
printf("确认删除?(y/n)");
fflush(stdin);
ch=getchar();
if(ch=='y')
{
for(k=j+1;k<i;k++)
{
stu[k-1]=stu[k];
}
printf("删除成功");
return 1;
}
else
{
return 0;
}
}
else
{
printf("不存在您要删除的信息");
return 0;
}

}

/*自定义按照姓名删除函数*/
int del2(struct student stu[N],int i)
{
int j,k;
char name[15],ch;
printf("请输入姓名:");
scanf("%s",&name);

for(j=0;j<i;j++)
{
if(strcmp(name,stu[j].name)==0)
{
break;
}
}
if(j<i)
{
printf("这是您要删除的学生信息\n");
showheader();
display(stu[j]);
printf("确认删除?(y/n)");
fflush(stdin);
ch=getchar();

if(ch=='y')
{
for(k=j+1;k<i;k++)
{
stu[k-1]=stu[k];
}
printf("删除成功");
return 1;
}
else
{
return 0;
}
}
else
{
printf("不存在您要删除的信息");
return 0;
}
}

/*自定义主菜单函数*/
int menu()
{ int choice;
printf("\t\t****************************************************\n\n\t\t\t 欢迎进入学生成绩管理系统 (GLY 1.0版)\n\n\t\t****************************************************\n\n");
printf("\t\t\t***************主菜单***************\n\n");
printf("\t\t\t\t1> 学生信息录入\n\n");
printf("\t\t\t\t2> 学生信息显示\n\n");

printf("\t\t\t\t3> 插入学生信息\n\n");
printf("\t\t\t\t4> 删除学生信息\n\n");
printf("\t\t\t\t5> 查找学生信息\n\n");

printf("\t\t\t\t6> 退出\n");
printf("\n\n请选择功能选项:");
scanf("%d",&choice);

return choice;
}

/*自定义插入功能子菜单函数*/
int menu3()
{ printf("\t*******************这里显示的是插入功能子菜单*******************\n\n");
printf("\t\t\t\t1、插入学生信息\n\n");
printf("\t\t\t\t2、显示插入后的学生信息\n\n");
printf("\t\t\t\t3、退出子菜单,返回上一级菜单\n\n");

printf("\n\n请选择功能选项:");
int choice3;
scanf("%d",&choice3);
return choice3;
}

/*自定义删除功能子菜单函数*/
int menu4()
{
printf("\t*******************这里显示的是删除功能子菜单*******************\n\n");
printf("\t\t\t\t1、按照学号删除学生信息\n\n");
printf("\t\t\t\t2、按照姓名删除学生信息\n\n");
printf("\t\t\t\t3、显示删除后的学生信息\n\n");
printf("\t\t\t\t4、退出子菜单,返回上一级菜单\n\n");

printf("\n\n请选择功能选项:");
int choice4;
scanf("%d",&choice4);
return choice4;
}

/*自定义按照学号查找函数*/
void chazhao1(struct student stu[N],int i)
{
int select,j;
char ch;
printf("\t*******************您选择的是按照学号查找:*******************\n\n");
do
{
printf("\n\n请输入学号:");
scanf("%d",&select);
for(j=0;j<i;j++)
{
if(select==stu[j].ID)
{

break;
}

}
if(j<i)
{
showheader();
display(stu[j]);
}
else
{
printf("你查找的信息不存在\n");
}
printf("是否继续查找?(y/n)");
fflush(stdin);
ch=getchar();
system("cls");
}while(ch=='y');
}

/*自定义按照姓名查找函数*/
void chazhao2(struct student stu[N],int i)
{
int j;
char name[15];

char ch;
printf("\t*******************您选择的是按照姓名查找:*******************\n\n");
do
{
printf("\n\n请输入姓名:");
scanf("%s",name);

for(j=0;j<i;j++)
{
if(strcmp(name,stu[j].name)==0)
{
break;
}
}
if(j<i)
{
showheader();
display(stu[j]);
}
else
{
printf("你查找的信息不存在\n");
}

printf("是否继续查找?(y/n)");
fflush(stdin);
ch=getchar();
system("cls");
}while(ch=='y');
}

/*自定义查找功能子菜单函数*/
int menu5()
{
printf("\t*******************这里显示的是查找功能子菜单*******************\n\n");
printf("\t\t\t\t1、按照学号查找\n\n");
printf("\t\t\t\t2、按照姓名查找\n\n");
printf("\t\t\t\t3、退出子菜单,返回上一级菜单\n\n");

printf("\n\n请选择功能选项:");
int choice5;
scanf("%d",&choice5);
return choice5;
}

/*自定义用户权限函数*/
char chrPass[20];
int quanxian()
{
char user[15];
printf("\t\t*****************************************\n\n\t\t 欢迎您访问学生成绩管理系统 (GLY 1.0版)\n\n\t\t*****************************************\n\n");
printf("\n\n\t\t\t提示 用户名:hehe 密码:1982");
printf("\n\n\t\t\t用户名:");
scanf("%s",user);

printf("\n\nt\t\t\t密 码:");
SavePass();

if((strcmp(chrPass,"1982")==0)&&(strcmp(user,"hehe")==0))
return 1;
else
return 0;
}

/*密码显示为"*"的函数*/
void SavePass()
{
char chr;
int count;
count = 0;
while((chr=getch())!=13)
{
chrPass[count] = chr;
printf("*");
count++;
}
chrPass[count+1] = '\0';
}

/*自定义表头函数*/
void showheader()
{ printf("\n\n\t*********************************************************\n");
printf("\t学号\t姓名\t性别\t语文\t数学\t英语\t平均成绩\n");
printf("\t*********************************************************\n");
}

热心网友 时间:2022-07-10 01:06

//来啦来啦

#include <iostream>
using namespace std;
#include <stdlib.h>
double avg=0;//统计总分和加平均分权
const int mathp=4;//数学学分
const int cppp=5;//C++学分
const sum=70;//设置总学分

class Student
{
private:
int num;
char *name;
char *sex;
char *phone;
char *rphone;
double math;
double cpp;
Student* next;
public:
Student()
{next=NULL;}
~Student();
void Push(Student **refhead,int num,char *name,char *sex,char *phone,char *rphone,double math,double cpp);
void Delete(Student *head,int data);
Student* Find(Student* head,int data);
void Display(Student* head);
int Length(Student* head);
void Math(Student* head,int data);
void Update(Student* head,int data);
void Insert();
};
Student* head=new Student;//带头结点的头指针

void Student::Push(Student **refhead,int num,char *name,char *sex,char *phone,char *rphone,double math,double cpp)
{
Student* newnode=new Student;//新增加结点
newnode->num=num;
newnode->name=name;
newnode->sex=sex;
newnode->phone=phone;
newnode->rphone=rphone;
newnode->math=math;
newnode->cpp=cpp;
newnode->next=*refhead;
*refhead=newnode;//重置表头
}
//遍历
void Student::Display(Student* head)
{
Student* temp;
temp=head;
if(temp->next==NULL)//判断空表
cout<<"没有学生!";
else
{while(temp!=NULL)//
{
cout<<"学号:"<<temp->num<<"姓名:"<<temp->name<<"性别:"<<temp->sex<<"手机:"<<temp->phone<<"宿舍电话:"<<temp->rphone<<"数学成绩:"<<temp->math<<"C++成绩:"<<temp->cpp<<endl;
temp=temp->next;
}
}
return;
}
//人数
int Student::Length(Student* head)
{
Student* cur;
cur=head;
int count=0;
while(cur!=NULL)
{
count++;//通过累加统计人数
cur=cur->next;
}
return count;
}
//查找
Student* Student::Find(Student* head,int data)
{
Student* cur=head;
bool bo=false;
while(cur!=NULL)
{
if(cur->num=data)
{
bo=true;//如果找到则改变bo的值
cout<<"学号:"<<cur->num<<"姓名:"<<cur->name<<"性别:"<<cur->sex<<"手机:"<<cur->phone<<"宿舍电话:"<<cur->rphone<<"数学成绩:"<<cur->math<<"C++成绩:"<<cur->cpp<<endl;
break;
}
cur=cur->next;
}
if(bo==false)//通过判断bo的值判断找到与否
cout<<"没有这个人!"<<endl;
return cur;
}
//删除
void Student::Delete(Student* head,int data)
{
Student *bef,*cur;
bef=cur=head;
while(cur!=NULL)
{
if(cur->num==data)
break;
else
{bef=cur;cur=cur->next;}
}
if(cur==head)//如果是头结点则删除头结点
{
head=cur->next;
delete cur;
}
else
{
bef->next=cur->next;
delete cur;
}
}
//修改
void Student::Update(Student* head,int data)
{
Student* cur=head;
bool bo=false;
while(cur!=NULL)
{
if(cur->num==data)
{
bo=true;
int a,b;
char *c;
double d;
for(;;) //找到后提供各字段的修改
{ cout<<"1修改学号|2修改姓名|3修改性别|4修改手机号|5修改宿舍电话号|6修改数学成绩|7修改C++成绩|8退出\n";
cin>>a;
switch(a)
{
case 1:cout<<"输入新学号:";
cin>>b;
cur->num=a;
break;
case 2:cout<<"输入新姓名:";
cin>>c;
cur->name=c;
break;
case 3:cout<<"输入新性别:";
cin>>c;
cur->sex=c;
break;
case 4:cout<<"输入新手机号:";
cin>>c;
cur->phone=c;
break;
case 5:cout<<"输入新宿舍电话号:";
cin>>c;
cur->rphone=c;
break;
case 6:cout<<"输入新数学成绩:";
cin>>d;
cur->math=d;
break;
case 7:cout<<"输入C++成绩:";
cin>>d;
cur->cpp=d;
break;
case 8:exit(1);
break;
default:cout<<"操作错误";
break;
}
}
break;
}
}
if(bo==false)
cout<<"没有这个人!"<<endl;
return;
}
//统计
void Student::Math(Student* head,int data)
{
Student* cur=head;
bool bo=false;
while(cur!=NULL)
{
if(cur->num=data)
{
bo=true;
avg=cur->math*(mathp/sum)+cur->cpp*(cppp/sum);//计算总分和加平均分权的公式
break;
}
cur=cur->next;
}
if(bo==false){
cout<<"没有这个人!"<<endl;
return;
}
cout<<"该生的总分和加平均分权="<<avg<<endl;
return;
}
//录入
void Student::Insert()
{
head=NULL;
int num;
char name[8];
char sex[4];
char phone[11];
char rphone[7];
double math;
double cpp;
cout<<"请输入基本信息:\n";
cout<<"学号:";
cin>>num;
cout<<"姓名:";
cin>>name;
cout<<"性别:";
cin>>sex;
cout<<"手机号:";
cin>>phone;
cout<<"宿舍电话:";
cin>>rphone;
cout<<"数学成绩:";
cin>>math;
cout<<"C++成绩:";
cin>>cpp;
Push(&head,num,name,sex,phone,rphone,math,cpp);//调用函数Push建立有序链表
}
//用释构函数逐个释放空间
Student::~Student()
{
while(head!=NULL)
{
delete head;
head=head->next;
}
}
//程序主入口
void main()
{
for(;;)
{
head=NULL;
Student s;
int x;
int data;
cout<<"|1录入|2查找|3删除|4修改|5统计|6退出|\n";
cout<<"请作选择:\n";
cin>>x;
switch(x)
{
case 1:
start:
s.Insert();
cout<<"继续吗?[Y/N]";
char ch;
cin>>ch;
if(ch=='y' || ch=='Y')
goto start;
s.Display(head);
int l;
l=s.Length(head);
cout<<"一共有"<<l<<"个学生。"<<endl;
break;
case 2:
cout<<"请输入你要查找的学生的学号:";
cin>>data;
s.Find(head,data);
break;
case 3:
cout<<"请输入你要删除的学生的学号:";
cin>>data;
s.Delete(head,data);
break;
case 4:
cout<<"请输入你要修改的学生的学号:";
cin>>data;
s.Update(head,data);
break;
case 5:
cout<<"请输入你要统计的学生的学号:";
cin>>data;
s.Math(head,data);
break;
case 6:
exit(1);
break;
default:cout<<"操作错误!"<<endl;
break;
}
}
}

热心网友 时间:2022-07-10 01:06

是我们软件学院的吧,现在正在做这个呢
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
mrna转录试剂盒 windows7应用程序损坏或丢失怎么办? 联想windows7怎么恢复不小心删除的应用 Win7电脑图标不见了如何恢复解决Win7电脑图标丢失问题的有效方法_百 ... 美女主播软件有哪些 什么软件看美女直播? 什么视频直播软件可以免费看女神直播? 钣金工业设计 钣金灰本段用途 关于刮胡子的相关问题 拉筋锻炼法的拉筋锻炼法 - 由来 VC 如何向字符串中添加指定个数的空格 学过VB 想学C 求C中与VB中相对应的这些函数 VC中MFC的IP地址框判断为空应该要怎么写? 拉筋锻炼法的介绍 VC中,怎样让字符串换行?(点击查看详细的问题信息) 用VC怎么编登录界面 VB 中的 CHR$(H1B) VC++怎么表示 买了大店头黑茶,有谁知道黑茶储存应注意哪些方面吗? 国之梦黑砖茶如何储存? 重庆对外经贸学院大三在哪个校区 以《在告别中成长》为题的作文 作文 懂得失去是一种成长的开头 不要在乎失去,要专心成长的作文 失去也是一种幸福作文 初三作文,失去后的成长,重点成长,比赛没得奖后积蓄力量,从中成长... 感谢失去伴我成长作文800字 得与失中成长初中作文400字 有没有不用弹钢琴呢幼儿园音乐活动教案啊? 贝多芬《孩子的梦》钢琴教案怎么写? 有好的拉筋方法吗 锻炼怎么拉筋? 怎么用VC实现PC串口输出16位数据啊? VC 将CreateProcess 隐藏的窗口重新显示 vb 中怎么让字符串中的两个数交换位置 如何将3dmax中的模型在VC中调用! 求一首劲爆歌曲 什么看图软件和浏览器好用? 印度的达罗毗荼人是黑种人吗? 印度的达罗毗荼人属于哪个人种 达罗毗荼人的文明成就 达罗毗荼人的组成分布 印度达罗毗荼人有婆罗门阶级吗 印度土著达罗毗荼人是黑人吗?我看不是白人也是不黄种人,是否早期东非智 ... 达罗毗荼人的名称 路由器要不要每天重启?多亏宽带师傅提醒,快叮嘱家人,长个记性 初党考试有什么用 ...方法绘制?有哪些软件可以?是否可以提供免费软件? 胡莱三国2历史战役讨伐董卓会出现甄姬吗 胡莱三国2战役攻略赵云怎么获得