文章目录:
- 1、学生信息管理系统最简单源代码。
- 2、求学生学籍管理系统的源代码
- 3、学生信息管理系统源代码
- 4、求学生成绩管理系统的源代码
- 5、学生管理系统源代码c++
- 6、java学生管理系统源码用什么软件打开
学生信息管理系统最简单源代码。
方法一:
1、创建一个c语言项目。然后右键头文件,创建一个Stu的头文件。
2、然后编写头文件的代码。再将数据结构的增删改查和结构体写入头文件。
3、然后在源文件中创建main源文件和Stu源文件。再main文件中写入intmian()代码。
4、然后在mian主函数中,写入while语句无限循环。再写入Init函数。
5、在Stu源文件的Init函数用printf语句,将学生管理系统输出。再创建链表的头节点head。
6、然后用switch函数对操作进行判断。再执行数据结构的增删改查功能。这样一个学生管理系统的基本框架就完成了。
方法二:
1、新建一个学生实体类,用于存放学生的各项信息。
2、新建一个链表节点类,每个节点存放一个学生信息及下一个节点的引用。
3、添加一个主操作类,并添加本系统的菜单方法。
4、定义链表的头节点,当前最后一个节点,以及主控制逻辑信息。
5、使用io流逐行读取存有学生信息的文本文件,对每行字符串,采用\t分割后得到一个字符串数组,数据各项即为一个学生的具体信息。然后新建一个节点加入到链表。
6、运行结果:
求学生学籍管理系统的源代码
这种问题就得去网站上查看你想用哪个版本的工具.里面就会有说明.你看哪一个适合你.就可以了
学生信息管理系统源代码
void Sort(student *head, char type,char maxOrMin)
{
/*参数说明:
type=='1' 按 语文 排列
type=='2' 按 数学 排列
type=='3' 按 英语 排列
type=='4' 按 总分 排列
type=='5' 按 平均分 排列
type=='6' 按 座号 排列
*/
student *pHead,*pH;
pHead=pH=head;
int len=GetLength(head);
float *array=new float[len];
int i;
int x=0;
float num=0;
while(head)
{
Count(head);
if(type=='1')
{
num=head-chinaNum;
}
else if(type=='2')
{
num=head-mathNum;
}
else if(type=='3')
{
num=head-englishNum;
}
else if(type=='4')
{
num=head-result;
}
else if(type=='5')
{
num=head-average;
}
else if(type=='6')
{
num=head-num;
}
array[x]=num;
x++;
head=head-next;
}
head=pHead;
if(maxOrMin=='1')
{
for( i=1; ilen; i++)
{
for(int j=0; jlen-i; j++)
{
if(array[j]array[j+1])
{
float num;
num=array[j];
array[j]=array[j+1];
array[j+1]=num;
}
}
}
}
else
{
for( i=1; ilen; i++)
{
for(int j=0; jlen-i; j++)
{
if(array[j]array[j+1])
{
float num;
num=array[j];
array[j]=array[j+1];
array[j+1]=num;
}
}
}
}
int pos=1;
for(i=0; ilen; i++)
{
head=pHead;
while(head)
{
if(type=='1')
{
num=head-chinaNum;
}
else if(type=='2')
{
num=head-mathNum;
}
else if(type=='3')
{
num=head-englishNum;
}
else if(type=='4')
{
num=int(head-result);
}
else if(type=='5')
{
num=int(head-average);
}
else if(type=='6')
{
num=int(head-num);
}
int n=0;
if(int(array[i])==int(num))
{
if(int(array[i])!=int(array[i+1]))
{
if(n==0)
{
n=pos;
}
head-pos=pos;
pos++;
}
else
{
head-pos=n;
}
}
head=head-next;
}
}
head=pH;
delete []array;
}
void Count(student *head)
{
head-result=head-chinaNum+head-englishNum+head-mathNum;
head-average=head-result/3;
}
void DeleteAll(student* head)
{
student *cp,*np;
cp=head;
while(cp)
{
np=cp-next;
delete cp;
cp=np;
}
head=NULL;
}
void ChaXun(string str,student *head)
{
Sort(head,'4','1');
cout"欢迎使用查询功能"endlendl;
cout"请输入你要按什么查询 1-一般查询 2-查找最多 3-查找最少"endl;
string s;
cins;
while(s[0]!='1's[0]!='2's[0]!='3')
{
cout"你输入错误,请重新输入."endl;
cins;
}
if(s[0]=='1')
{
cout"按什么查询?"endl;
cout"1-姓名 2-座号 3-语文成绩 4-数学成绩 "
"5-英语成绩 6-总分 7-平均分 8-排名"endl;
cinstr;
while(str[0]!='1' str[0]!='2'
str[0]!='3' str[0]!='4'
str[0]!='5' str[0]!='6'
str[0]!='7' str[0]!='8' )
{
cout"你输入错误,请重新输入."endl;
cinstr;
}
char findStr[30];
cout"请输入要查找的关键字或关键数:"endl;
cinfindStr;
switch(str[0])
{
case '1':
Find(head,findStr,'1');
break;
case '2':
Find(head,findStr,'2');
break;
case '3':
Find(head,findStr,'3');
break;
case '4':
Find(head,findStr,'4');
break;
case '5':
Find(head,findStr,'5');
break;
case '6':
Find(head,findStr,'6');
break;
case '7':
Find(head,findStr,'7');
break;
case '8':
Find(head,findStr,'8');
break;
}
}
else if(s[0]=='2')
{
cout"请输入要按什么查询?"endl;
cout"1-语文成绩 2-数学成绩 "
"3-英语成绩 4-总分 5-平均分 6-排名"endl;
string s;
cins;
switch(s[0])
{
case '1':
FindMaxOrMin(head,'1','1');
break;
case '2':
FindMaxOrMin(head,'2','1');
break;
case '3':
FindMaxOrMin(head,'3','1');
break;
case '6':
FindMaxOrMin(head,'6','1');
break;
case '5':
FindMaxOrMin(head,'5','1');
break;
default:
FindMaxOrMin(head,'4','1');
break;
}
}
else if(s[0]=='3')
{
cout"请输入要按什么查询?"endl;
cout"1-语文成绩 2-数学成绩 "
"3-英语成绩 4-总分 5-平均分 6-排名"endl;
string s;
cins;
switch(s[0])
{
case '1':
FindMaxOrMin(head,'1','2');
break;
case '2':
FindMaxOrMin(head,'2','2');
break;
case '3':
FindMaxOrMin(head,'3','2');
break;
case '6':
FindMaxOrMin(head,'6','2');
break;
case '5':
FindMaxOrMin(head,'5','2');
break;
default:
FindMaxOrMin(head,'4','2');
break;
}
}
}
void ZengJia(string str, student* head)
{
student *pNew=new student;
cout"欢迎使用增加功能"endlendl;
cout"请输入新学生的名字 :"endl;
cinpNew-name;
cout"请输入新学生的座号 :"endl;
cinpNew-num;
cout"请输入他的语文分数 :"endl;
cinpNew-chinaNum;
cout"请输入他的数学分数"endl;
cinpNew-mathNum;
cout"请输入他的英语分数"endl;
cinpNew-englishNum;
cout"插入记录的 (1-最前面 2-最后面)"endl;
cinstr;
while(str[0]!='1' str[0]!='2')
{
cout"你输入错误,请重新输入."endl;
cout"插入记录的 (1-最前面 2-最后面)"endl;
cinstr;
}
if(str[0]=='1')
{
InsertFront(head,pNew);
}
else if(str[0]=='2')
{
InsertRear(head,pNew);
}
cout"新学生增加成功."endl;
}
void ShanChu(string str, student *head)
{
char delStr[30];
cout"欢迎使用删除功能"endlendl;
cout"1-查询删除 2-全部删除"endl;
cinstr;
while(str[0]!='1' str[0]!='2')
{
cout"输入错误,请重新输入."endl;
cinstr;
}
if(str[0]=='1')
{
cout"请输入要删除的关键字"endl;
cindelStr;
cout"1-删除第一条找到的记录 2-删除所有找到的记录"endl;
cinstr;
while(str[0]!='1'str[0]!='2')
{
cout"你输入错误,请重新输入."endl;
cinstr;
}
cout"你真的要删除吗? 1-删除 2-取消"endl;
string s;
cins;
if(str[0]=='1')
{
if(str[0]=='1')
{
Delete(head,delStr,1);
}
else
{
Delete(head,delStr,2);
}
}
else
{
cout"你已经取消删除了."endl;
}
}
else
{
cout"你真的要删除全部数据吗?这样会使你的数据全部丢失哦."endl;
cout"1-全部删除 2-取消删除"endl;
cinstr;
if(str[0]=='1')
{
DeleteAll(head);
}
else
{
cout"你已经取消删除了."endl;
}
}
}
void PaiMing(string str, student* head)
{
string s;
cout"欢迎使用排名功能"endlendl;
cout"排名选择: 1-升序 2-降序"endl;
cins;
cout"请输入要按什么排名?"endl;
cout"1-语文成绩 2-数学成绩 3-英语成绩 "
"4-总分 5-平均分 6-座号"endl;
cinstr;
while(str[0]!='1' str[0]!='2'
str[0]!='3' str[0]!='4'
str[0]!='5' str[0]!='6' )
{
cout"你输入错误,请重新输入."endl;
cinstr;
}
cout"姓名:"setw(8)"座号:"setw(10)
"语文分数:"setw(10) "数学分数:"
setw(10)"英语分数:"setw(8)"总分数:"
setw(8)"平均分:"setw(6)"名次:"endlendl;
if(s[0]=='2')
{
switch(str[0])
{
case '1':
Sort(head,'1','1');
break;
case '2':
Sort(head,'2','1');
break;
case '3':
Sort(head,'3','1');
break;
case '4':
Sort(head,'4','1');
break;
case '5':
Sort(head,'5','1');
break;
case '6':
Sort(head,'6','1');
break;
}
}
else
{
switch(str[0])
{
case '1':
Sort(head,'1','2');
break;
case '2':
Sort(head,'2','2');
break;
case '3':
Sort(head,'3','2');
break;
case '4':
Sort(head,'4','2');
break;
case '5':
Sort(head,'5','2');
break;
case '6':
Sort(head,'6','2');
break;
}
}
ShowList(head);
return ;
}
void XianShi(string str, student *head)
{
Sort(head,'4','1');
string s;
cout"欢迎使用显示功能"endl;
cout"1-显示全部记录 2-显示记录数目"endl;
cins;
if(s[0]=='2')
{
cout"记录的数目是:"GetLength(head)endl;
}
else
{
ShowList(head);
}
}
void XuiGai(string str, student *head)
{
string s;
student *std;
cout"欢迎使用修改功能"endl;
cout"请输入你要按什么查询"endl;
cout"1-姓名 2-座号 3-语文成绩 4-数学成绩 "
"5-英语成绩 "endl;
cinstr;
while(str[0]!='1' str[0]!='2'
str[0]!='3' str[0]!='4'
str[0]!='5' )
{
cout"你输入错误,请重新输入."endl;
cinstr;
}
char findStr[30];
cout"请输入要查找的关键字或关键数:"endl;
cinfindStr;
switch(str[0])
{
case '1':
std=Find(head,findStr,'1');
Reword(std);
break;
case '2':
std=Find(head,findStr,'2');
Reword(std);
break;
case '3':
std=Find(head,findStr,'3');
Reword(std);
break;
case '4':
std=Find(head,findStr,'4');
Reword(std);
break;
case '5':
std=Find(head,findStr,'5');
Reword(std);
break;
}
Write(head);
if(std!=NULL)
{
cout"修改成功."endl;
}
}
int Run()
{
bool isLoad=false;
student* head=NULL;
student *pNew=new student;
head=Read();
SetTitle(false);
if(head!=NULL)
{ Sort(head,'5','1');
Count(head);
}
string str;
SetTitle(false);
cout" 欢迎使用学生管理系统 "endlendl;
cout" 1-用户登陆 2-退出程序 "endl;
cinstr;
if(str[0]=='2')
{
AboutMe();
return 0;
}
else
{
isLoad=Enter('1');
system("cls");
if(isLoad==true)
{
SetTitle(true);
cout" 恭喜,您输入的密码正确.可以对本系统的进行任何操作."endl;
}
else
{
cout" Sorry,您输入的密码错误.你不能修改本系统的任何内容."endl;
}
}
begin:
coutendlendl;
cout" 欢迎使用学生管理系统 "endlendl;
cout" 1-增加功能 2-查询功能"endl;
cout" 3-删除功能 4-排名功能"endl;
cout" 5-显示功能 6-修改功能"endl;
cout" 7-用户设置 8-退出程序"endl;
cout"请输入您的选择: "endl;
cinstr;
while(str[0]!='8')
{
if(isLoad==true head!=NULL)
{
coutendlendl;
if(str[0]=='1')
{
ZengJia(str, head);
Sort(head,'4','1');
Write(head);
}
else if(str[0]=='2')
{
ChaXun(str,head);
}
else if(str[0]=='3')
{
ShanChu(str,head);
Sort(head,'4','1');
Write(head);
}
else if(str[0]=='4')
{
PaiMing(str,head);
}
else if(str[0]=='5')
{
XianShi(str,head);
}
else if(str[0]=='6')
{
XuiGai(str,head);
Write(head);
}
else if(str[0]=='7')
{
cout"欢迎使用用户修改功能"endl;
isLoad=Enter('2');
}
else if(str[0]=='8')
{
AboutMe();
return 0;
}
else
{
cout"你输入错误,请重新输入."endl;
goto begin;
}
}
else if(isLoad==false head!=NULL)
{
if(str[0]=='2')
{
ChaXun(str,head);
}
else if(str[0]=='4')
{
PaiMing(str,head);
}
else if(str[0]=='5')
{
XianShi(str,head);
}
else
{
cout"你不是管理员,不能进行此项功能."endl;
cout"你只能进行 查询功能 显示功能 排名功能"endl;
}
}
else if( head==NULL isLoad==true)
{
cout"系统检查到你没有任何记录,不能进行任何操作,只能增加记录."endl;
ZengJia(str, head);
Write(head);
head=Read();
}
else if( head==NULL isLoad==false)
{
cout"因为你没有登陆,系统又检查到你没有任何记录,你不能进行任何操作."endl;
}
coutendlendl;
cout"按任何键继续进行操作."endl;
getchar();
getchar();
system("cls");
goto begin;
}
AboutMe();
return 0;
}
void SetTitle(bool isLoad)
{
HWND hwnd=GetForegroundWindow();
if(isLoad==false)
{
SetWindowText(hwnd," 学生管理系统(没有登陆)");
}
else
{
SetWindowText(hwnd," 学生管理系统(已经登陆)");
}
system("color a");
}
void AboutMe()
{
char*pStr= " ┃ \n"
" ┃ \n"
" ┏━━━━┻━━━━┓ \n"
" ┃ 关于作者 ┃ \n"
" ┏━━━━┻━━━━━━━━━┻━━━━┓\n"
" ┃ ┃\n"
" ┃ Aauthor:********** ┃\n"
" ┃ QQ: ********* ┃\n"
" ┃ E-mail:********@**.com ┃\n"
" ┃ ┃\n"
" ┗━━━━━━━━━━━━━━━━━━━┛\n";
system("cls");
srand(time(0));
for(int i=0; istrlen(pStr); i++)
{
if(pStr[i]!=' ')
{
Sleep(20);
}
coutpStr[i];
}
cout"Good-bye ."endl;
coutendlendlendlendl;
}
int main()
{
Run();
return 0;
}
求学生成绩管理系统的源代码
#include stdio.h
#include stdlib.h
#define FILENAME "student.dat"
typedef enum{MAN, WOMAN} SEX;
typedef struct tagStudent
{
int num; //学生的编号
char name[20]; //学生的姓名
SEX sex; //学生的性别
int age; //学生的年龄
char major[20]; //学生的专业
struct tagStudent *next;//下一个节点的指针
}STUDENT, *PSTUDENT;
STUDENT g_head; //头节点
//1.显示菜单
void ShowMenu();
//2.获取用户选择的菜单的编号
int GetMenuChoose();
//3.创建一个节点,它会返回一个新创建的学生信息节点的指针
PSTUDENT CreateStudent();
//4.把学生信息节点加入到链表中
int AddStudent(PSTUDENT pstu);
//5.返回指定编号学生节点的上一个节点的指针
PSTUDENT GetPrevAddr(int num);
//6.显示所有学生信息
void ShowAll();
//7.显示信息数量
int ShowStudentCount();
//8.修改学生信息,参数为要修改的学生的编号
void ModityStudent(int num);
//9.获取用户的选择
int Question(const char *pstr);
//10.获取用户输入的学生的编号
int GetInputNum();
//11.删除编号为num的学生信息
void DelStudent(int num);
//12.删除所有的学生信息
void DelAll();
//13.把学生信息保存到文件当中
void SaveToFile();
//14.从文件中读取学生信息
void LoadFromFile();
int main()
{
int running = 1;
while(running)
{
switch(GetMenuChoose())
{
case 0:
running = 0;
break;
case 1:
// printf("你选择了菜单1\n");
AddStudent(CreateStudent());
break;
case 2:
// printf("你选择了菜单2\n");
DelStudent(GetInputNum());
break;
case 3:
printf("你选择了菜单3\n");
break;
case 4:
// printf("你选择了菜单4\n");
ModityStudent(GetInputNum());
break;
case 5:
// printf("你选择了菜单5\n");
DelAll();
break;
case 6:
// printf("你选择了菜单6\n");
ShowAll();
break;
case 7:
// printf("你选择了菜单7\n");
ShowStudentCount();
break;
case 8:
// printf("你选择了菜单8\n");
LoadFromFile();
break;
case 9:
// printf("你选择了菜单9\n");
SaveToFile();
break;
}
system("pause");
}
return 0;
}
//1.显示菜单
void ShowMenu()
{
system("cls");
printf("-----------------------------学生管理系统--------------------------------\n");
printf("\n\t1.添加学生信息 2.删除某个学生信息 3.显示某个学生信息\n");
printf("\t4.修改学生信息 5.删除所有学生信息 6.显示所有学生信息\n");
printf("\t7.显示信息数量 8.读取文件学生信息 9.保存学生信息至文件\n");
printf("\t0.退出系统\n");
printf("\n-------------------------------------------------------------------------\n");
}
//2.获取用户选择的菜单的编号
int GetMenuChoose()
{
int num;//保存用户选择的菜单编号
ShowMenu();
printf("请选择菜单(0 ~ 9):");
while(1 != scanf("%d", num) || num 0 || num 9)
{
ShowMenu();
printf("选择菜单错误,请重新选择(0 ~ 9):");
fflush(stdin);//清空输入缓冲区
}
return num;
}
//3.创建一个节点,它会返回一个新创建的学生信息节点的指针
PSTUDENT CreateStudent()
{
int sex;
PSTUDENT pstu = (PSTUDENT)malloc(sizeof(STUDENT));//在堆内存申请空间,存储学生信息
if(!pstu)
{
printf("申请内存空间失败!\n");
return NULL;
}
printf("请输入学生的编号(整型):");
while(1 != scanf("%d", pstu-num) || GetPrevAddr(pstu-num))
{
printf("学生编号输入错误或已经存在,请重新输入学生的编号(整型):");
fflush(stdin);
}
printf("请输入学生的姓名(小于20字符):");
scanf("%20s", pstu-name);//(*pstu).name
printf("请选择学生的性别(1.男 2.女):");
while(1 != scanf("%d", sex) || sex 1 || sex 2)
{
printf("性别选择错误,请重新选择学生的性别(1.男 2.女):");
fflush(stdin);
}
if(1 == sex)
pstu-sex = MAN;
else
pstu-sex = WOMAN;
printf("请输入学生的年龄(10 ~ 40):");
while(1 != scanf("%d", pstu-age) || pstu-age 10 || pstu-age 40)
{
printf("年龄输入错误!请重新输入学生的年龄(10 ~ 40):");
fflush(stdin);
}
printf("请输入学生的专业(小于20字符):");
scanf("%20s", pstu-major);
pstu-next = NULL;
return pstu;
}
//4.把学生信息节点加入到链表中
int AddStudent(PSTUDENT pstu)
{
PSTUDENT ps = g_head;
if(!pstu)
{
return 0;
}
//判断一下该学生信息是不是已经存在
if(GetPrevAddr(pstu-num))
{
printf("编号为%d的学生信息已经存在!\n", pstu-num);
free(pstu);//释放该节点内存空间
return 0;
}
//while循环的作用是找到当前链表的最后一个节点
while(ps-next)
ps = ps-next;
//把新节点加入到最后那个节点的后面
ps-next = pstu;
pstu-next = NULL;
return 1;
}
//5.返回指定编号学生节点的上一个节点的指针
PSTUDENT GetPrevAddr(int num)
{
PSTUDENT pstu = g_head;
while(pstu-next)
{
if(pstu-next-num == num)
return pstu;
pstu = pstu-next;
}
return NULL;
}
//6.显示所有学生信息
void ShowAll()
{
PSTUDENT pstu = g_head;
printf("--------------------------------------------------------------------\n");
printf(" 编号 姓名 性别 年龄 专业\n");
printf("--------------------------------------------------------------------\n");
while(pstu-next)
{
printf(" %-8d ", pstu-next-num);
printf("%-20s", pstu-next-name);
printf("%-6s", pstu-next-sex == MAN ? "男" : "女");
printf("%4d", pstu-next-age);
printf("%20s\n", pstu-next-major);
pstu = pstu-next;//让指针指向下一个节点
}
printf("--------------------------------------------------------------------\n");
}
//7.显示信息数量
int ShowStudentCount()
{
int count = 0;
PSTUDENT pstu = g_head;
while(pstu-next)
{
++count;
pstu = pstu-next;
}
printf("\n当前共有%d位学生信息。\n", count);
return count;
}
//8.修改学生信息,参数为要修改的学生的编号
void ModityStudent(int num)
{
PSTUDENT pstu = GetPrevAddr(num);//获取要修改的学生节点的上一个节点
int choose;
if(!pstu)
{
printf("没有编号为%d的学生信息。\n", num);
return;
}
pstu = pstu-next;//将要修改的学员节点的指针改为指向自己的
printf("当前学生的姓名为%s,", pstu-name);
if(Question("确定要修改吗?"))
{
printf("请输入学生的姓名(小于20字符):");
scanf("%20s", pstu-name);
}
printf("当前学生的性别为%s,", pstu-sex == MAN ? "男" : "女");
if(Question("确定要修改吗?"))
{
printf("请输入学生的性别(1.男 2.女):");
while(1 != scanf("%d", choose) || choose 1 || choose 2)
{
printf("输入错误,请重新输入学生的性别(1.男 2.女):");
fflush(stdin);
}
if(1 == choose)
pstu-sex = MAN;
else
pstu-sex = WOMAN;
}
printf("当前学生的年龄为%d,", pstu-age);
if(Question("确定要修改吗?"))
{
printf("请输入学生的年龄(10 ~ 40):");
while(1 != scanf("%d", pstu-age) || pstu-age 10 || pstu-age 40)
{
printf("年龄输入错误!请重新输入学生的年龄(10 ~ 40):");
fflush(stdin);
}
}
printf("当前学生的专业为%s,", pstu-major);
if(Question("确定要修改吗?"))
{
printf("请输入学生的专业(小于20字符):");
scanf("%20s", pstu-major);
}
printf("修改完毕!\n");
}
//9.获取用户的选择
int Question(const char *pstr)
{
char answer;
printf("%s请选择(y or n):", pstr);
while(1 != scanf(" %c", answer) || (answer != 'y' answer != 'n'))
{
printf("输入错误!%s请重新选择(y or n):", pstr);
fflush(stdin);//清空输入缓冲区,C库函数
}
if('y' == answer)
return 1;
else
return 0;
}
//10.获取用户输入的学生的编号
int GetInputNum()
{
int num;
printf("请输入学生的编号(整型):");
while(1 != scanf("%d", num))
{
printf("编号输入错误!请重新输入学生的编号(整型):");
fflush(stdin);
}
return num;
}
//11.删除编号为num的学生信息
void DelStudent(int num)
{
PSTUDENT pstu, ptmp;
if(pstu = GetPrevAddr(num))
{
if(!Question("确定要删除该学生信息吗?"))
{
return;
}
ptmp = pstu-next;
pstu-next = ptmp-next;
free(ptmp);
printf("删除了编号为%d的学生信息。\n", num);
}
else
{
printf("没有找到编号为%d的学生信息。\n", num);
}
}
//12.删除所有的学生信息
void DelAll()
{
PSTUDENT pstu = g_head.next, ptmp;
int count = 0;
if(!Question("确定要删除当前所有的学生信息吗?"))
{
return;
}
while(pstu)
{
ptmp = pstu;
pstu = pstu-next;
free(ptmp);
++count;
}
printf("共删除了%d位学生信息。\n", count);
g_head.next = NULL;
}
//13.把学生信息保存到文件当中
void SaveToFile()
{
FILE *pf = fopen(FILENAME, "wb");
PSTUDENT pstu = g_head;
int i = 0, count = ShowStudentCount();
if(!pf)
{
printf("打开待写入的文件失败!\n");
return;
}
if(!Question("确定要将当前学生信息保存到文件中吗?"))
{
fclose(pf);
return;
}
fwrite(count, 1, sizeof(count), pf);//把学生信息的数量先写入到文件头
while(pstu-next)
{
fwrite(pstu-next, 1, sizeof(STUDENT), pf);//把每位学生信息写入文件
++i;
pstu = pstu-next;
}
fclose(pf);
if(i == count)
{
printf("成功的写入了%d条学生信息。\n", count);
}
else
{
printf("应写入%d条学生信息,实际写入%d条学生信息。\n", count, i);
}
}
//14.从文件中读取学生信息
void LoadFromFile()
{
int i, count = 0, repeat = 0;
FILE *pf;
PSTUDENT pstu;
printf("提示:从文件中读取学生信息会询问是否清空当前学生信息(不清空表示合并所有信息)。\n");
if((pf = fopen(FILENAME, "rb")) == NULL)
{
printf("文件还没有创建,请手工输入学生信息并保存吧!\n");
return;
}
DelAll();//删除之前的所有学生信息,然后从文件中读取
fread(count, 1, sizeof count, pf);//获取学生信息的数量
for(i = 0; i count; ++i)
{
pstu = (PSTUDENT)malloc(sizeof(STUDENT));
fread(pstu, 1, sizeof(STUDENT), pf);
if(!AddStudent(pstu))
{
++repeat;//保持有多少个和当前链表中相重复的学生信息
}
}
fclose(pf);
printf("文件读取完毕!新增学生信息%d条。\n", count - repeat);
}
这个累死我了,我要财富值。。。为了这个不容易啊
学生管理系统源代码c++
#include iostream.h
#include string.h
#include "h1.h"
void menu();
void clear()
{
cin.clear();
cin.ignore();
}
void stu::init_name_grade() //输入学生姓名、班级
{
cout"请输入学生姓名:";
cinname;
clear();
cout"请输入学生班级号:";
cingrade;
clear();
}
void stu::init_first() //输入学生第一学期成绩
{
cout"学生"name"第一学期成绩"endl;
cout"请输入英语成绩:";
cinfirst.english;
clear();
cout"请输入数学成绩:";
cinfirst.math;
clear();
first.total=first.english+first.math;
first.aver=first.total/2;
}
void stu::init_second() //输入学生第二学期成绩
{
cout"学生"name"第二学期成绩"endl;
cout"请输入英语成绩:";
cinsecond.english;
clear();
cout"请输入数学成绩:";
cinsecond.math;
clear();
second.total=second.english+second.math;
second.aver=second.total/2;
}
void stu::show_first() //显示学生第一学期成绩
{
cout"学生姓名:"nameendl;
cout"学生班级:"gradeendl;
cout"学生第一学期英语成绩:"first.englishendl;
cout"学生第一学期数学成绩:"first.mathendl;
cout"学生第一学期总成绩:"first.totalendl;
cout"学生第一学期平均成绩:"first.averendl;
}
void stu::show_second() //显示学生第二学期成绩
{
cout"学生姓名:"nameendl;
cout"学生班级:"gradeendl;
cout"学生第二学期英语成绩:"second.englishendl;
cout"学生第二学期数学成绩:"second.mathendl;
cout"学生第二学期总成绩:"second.totalendl;
cout"学生第二学期平均成绩:"second.averendl;
}
void stu::show_grade() //显示学生所有学期成绩
{
cout"学生姓名:"nameendl;
cout"学生班级:"gradeendl;
cout"学生第一学期英语成绩:"first.englishendl;
cout"学生第一学期数学成绩:"first.mathendl;
cout"学生第一学期总成绩:"first.totalendl;
cout"学生第一学期平均成绩:"first.averendl;
cout"学生第二学期英语成绩:"second.englishendl;
cout"学生第二学期数学成绩:"second.mathendl;
cout"学生第二学期总成绩:"second.totalendl;
cout"学生第二学期平均成绩:"second.averendl;
}
stu_info::stu_info() //stu_info的构造函数
{
num=0;
}
void stu_info::add_name_grade() //添加学生信息(班级、姓名)到数组中
{
int choose;
do
{
per[num].init_name_grade();
num++;
cout"继续输入学生信息吗?(0:退出,任意数字键继续...)";
cinchoose;
clear();
}while(choose!=0);
}
void stu_info::add_first(int gra) //添加第一学期成绩
{
for(int i=0;inum;i++)
{
if(per[i].grade==gra)
{
per[i].init_first();
}
}
}
void stu_info::add_second(int gra) //添加第二学期成绩
{
for(int i=0;inum;i++)
{
if(per[i].grade==gra)
{
per[i].init_second();
}
}
}
void stu_info::query_aver(int gra,int term) //按班级、学期及平均分排序显示学生成绩
{
stu temp[100];
stu t;
int sum=0;
for(int i=0;inum;i++)
{
if(per[i].grade==gra)
{
temp[sum]=per[i];
sum++;
}
}
for(int j=0;jsum-1;j++)
{
for(int k=sum-1;kj;k--)
{
if(term==1)
{
if(temp[k].first.avertemp[k-1].first.aver)
{
t=temp[k];
temp[k]=temp[k-1];
temp[k-1]=t;
}
}
else if(term==2)
{
if(temp[k].second.avertemp[k-1].second.aver)
{
t=temp[k];
temp[k]=temp[k-1];
temp[k-1]=t;
}
}
else
{
cout"该学期不存在!"endl;
return;
}
}
}
for( i=0;isum;i++)
{
if(term==1)
{
temp[i].show_first();
}
else
{
temp[i].show_second();
}
}
}
void stu_info::modify(int gra,char name[10]) //按班级、姓名查询学生信息并修改学生信息
{
for(int i=0;inum;i++)
{
if(per[i].grade==grastrcmp(per[i].name,name)==0)
{
per[i].init_name_grade();
per[i].init_first();
per[i].init_second();
return;
}
else
{
cout"该学生不存在!"endl;
}
}
}
void stu_info::query(int gra,char name[10]) //按班级、姓名查询学生信息并输出
{
for(int i=0;inum;i++)
{
if(per[i].grade==grastrcmp(per[i].name,name)==0)
{
per[i].show_grade();
return;
}
else
{
cout"该学生不存在!"endl;
}
}
}
void stu_info::query_grade(int gra) //按班级输出该班全部学生成绩
{
coutgra"班级学生的成绩如下:"endl;
for(int i=0;inum;i++)
{
if(per[i].grade==gra)
{
per[i].show_grade();
}
}
}
void stu_info::show_fail(int grade,int term,int course)
{
cout"不及格名单如下:"endl;
for(int i=0;inum;i++)
{
if(per[i].grade==grade)
{
if(term==1)
{
if(course==1)
{
if(per[i].first.english60)
{
coutper[i].nameendl;
}
}else if(course==2)
{
if(per[i].first.math60)
{
coutper[i].nameendl;
}
}
}
else if(term==2)
{
if(course==1)
{
if(per[i].second.english60)
{
coutper[i].nameendl;
}
}else if(course==2)
{
if(per[i].second.math60)
{
coutper[i].nameendl;
}
}
}
else
{
cout"该学期不存在!"endl;
return;
}
}
}
}
void main()
{
stu_info people;
int grade;
int term;
int choose;
int course;
char name[10];
while(1)
{
menu();
cinchoose;
clear();
switch(choose)
{
case 1:
people.add_name_grade();break;
case 2:
cout"请输入班级号:";
cingrade;
clear();
cout"请输入学期:";
cinterm;
clear();
if(term==1)
people.add_first(grade);
else
people.add_second(grade);
break;
case 3:
cout"请输入班级号:";
cingrade;
clear();
cout"请输入学生姓名:";
cinname;
clear();
people.modify(grade,name);
break;
case 4:
cout"请输入班级号:";
cingrade;
clear();
cout"请输入学期:";
cinterm;
clear();
people.query_aver(grade,term);
break;
case 5:
cout"请输入班级号:";
cingrade;
clear();
people.query_grade(grade);
break;
case 6:
cout"请输入班级号:";
cingrade;
clear();
cout"请输入学期:";
cinterm;
clear();
cout"请输入课程号(1:english,2:math):";
cincourse;
people.show_fail(grade,term,course);
break;
case 7:
cout"请输入班级号:";
cingrade;
clear();
cout"请输入学生姓名:";
cinname;
clear();
people.query(grade,name);
break;
case 8:return;
default:cout"选择错误,请重新选择!"endl;
}
}
}
void menu()
{
cout" 请选择操作"endl;
cout"-------------------------------------------------------------"endl;
cout" 1、输入学生姓名、班级"endl;
cout" 2、按学期、班级录入学生成绩"endl;
cout" 3、修改学生成绩"endl;
cout" 4、按班级平均分对学生成绩排序"endl;
cout" 5、按班级输出学生的成绩单"endl;
cout" 6、按科目输出不及格学生名单"endl;
cout" 7、查询学生成绩单"endl;
cout" 8、退出系统"endl;
}
这上面是实现功能,下面是类的定义和声明 希望对你有用
struct term
{
int english;
int math;
int aver;
int total;
};
class stu
{
char name[10];
int grade;
struct term first;
struct term second;
public:
friend class stu_info;
void init_name_grade();
void init_first();
void init_second();
void show_grade();
void show_first();
void show_second();
};
class stu_info
{
stu per[100];
int num;
public:
stu_info();
void add_name_grade();
void add_first(int gra);
void add_second(int gra);
void query_aver(int gra,int term);
void modify(int gra,char name[10]);
void query(int gra,char name[10]);
void query_grade(int gra);
void show_fail(int grade,int term,int course);
};
java学生管理系统源码用什么软件打开
源码本身也是文本文件,可以直接用记事本打开,也可以将项目导入到eclipse或
myeclipse
去看,如果是编译后的.
class文件
,可以去网上找找查看.class文件的工具。
); break; case '2': FindMaxOrMin(head,'2','2'); break; case '3': FindMaxOrMin(head,'3','2'); break; case '6':
为你没有登陆,系统又检查到你没有任何记录,你不能进行任何操作."endl; } coutendlendl; cout"按任何键继续进行操作."endl;