请问一下 学生作业成绩管理程序的课设你有源代码吗
- 教育综合
- 2023-07-10 17:44:25
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[nums求学生成绩管理系统的源代码
#include
#include
#defineFILENAME"student.dat"
typedefenum{MAN,WOMAN}SEX;
typedefstructtagStudent
{
intnum; //学生的编号
charname[20]; //学生的姓名
SEX sex; //学生的性别
intage; //学生的年龄
charmajor[20]; //学生的专业
structtagStudent*next;//下一个节点的指针
}STUDENT,*PSTUDENT;
STUDENTg_head; //头节点
//1.显示菜单
voidShowMenu();
//2.获取用户选择的菜单的编号
intGetMenuChoose();
//3.创建一个节点,它会返回一个新创建的学生信息节点的指针
PSTUDENTCreateStudent();
//4.把学生信息节点加入到链表中
intAddStudent(PSTUDENTpstu);
//5.返回指定编号学生节点的上一个节点的指针
PSTUDENTGetPrevAddr(intnum);
//6.显示所有学生信息
voidShowAll();
//7.显示信息数量
intShowStudentCount();
//8.修改学生信息,参数为要修改的学生的编号
voidModityStudent(intnum);
//9.获取用户的选择
intQuestion(constchar*pstr);
//10.获取用户输入的学生的编号
intGetInputNum();
//11.删除编号为num的学生信息
voidDelStudent(intnum);
//12.删除所有的学生信息
voidDelAll();
//13.把学生信息保存到文件当中
voidSaveToFile();
//14.从文件中读取学生信息
voidLoadFromFile();
intmain()
{
intrunning=1;
while(running)
{
switch(GetMenuChoose())
{
case0:
running=0;
break;
case1:
// printf("你选择了菜单1\n");
AddStudent(CreateStudent());
break;
case2:
// printf("你选择了菜单2\n");
DelStudent(GetInputNum());
break;
case3:
printf("你选择了菜单3\n");
break;
case4:
// printf("你选择了菜单4\n");
ModityStudent(GetInputNum());
break;
case5:
// printf("你选择了菜单5\n");
DelAll();
break;
case6:
// printf("你选择了菜单6\n");
ShowAll();
break;
case7:
// printf("你选择了菜单7\n");
ShowStudentCount();
break;
case8:
// printf("你选择了菜单8\n");
LoadFromFile();
break;
case9:
// printf("你选择了菜单9\n");
SaveToFile();
break;
}
system("pause");
}
return0;
}
//1.显示菜单
voidShowMenu()
{
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.获取用户选择的菜单的编号
intGetMenuChoose()
{
intnum;//保存用户选择的菜单编号
ShowMenu();
printf("请选择菜单(0~9):");
while(1!=scanf("%d",&num)||num<0||num>9)
{
ShowMenu();
printf("选择菜单错误,请重新选择(0~9):");
fflush(stdin);//清空输入缓冲区
}
returnnum;
}
//3.创建一个节点,它会返回一个新创建的学生信息节点的指针
PSTUDENTCreateStudent()
{
intsex;
PSTUDENTpstu=(PSTUDENT)malloc(sizeof(STUDENT));//在堆内存申请空间,存储学生信息
if(!pstu)
{
printf("申请内存空间失败!\n");
returnNULL;
}
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;
returnpstu;
}
//4.把学生信息节点加入到链表中
intAddStudent(PSTUDENTpstu)
{
PSTUDENTps=&g_head;
if(!pstu)
{
return0;
}
//判断一下该学生信息是不是已经存在
if(GetPrevAddr(pstu->num))
{
printf("编号为%d的学生信息已经存在!\n",pstu->num);
free(pstu);//释放该节点内存空间
return0;
}
//while循环的作用是找到当前链表的最后一个节点
while(ps->next)
ps=ps->next;
//把新节点加入到最后那个节点的后面
ps->next=pstu;
pstu->next=NULL;
return1;
}
//5.返回指定编号学生节点的上一个节点的指针
PSTUDENTGetPrevAddr(intnum)
{
PSTUDENTpstu=&g_head;
while(pstu->next)
{
if(pstu->next->num==num)
returnpstu;
pstu=pstu->next;
}
returnNULL;
}
//6.显示所有学生信息
voidShowAll()
{
PSTUDENTpstu=&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.显示信息数量
intShowStudentCount()
{
intcount=0;
PSTUDENTpstu=&g_head;
while(pstu->next)
{
++count;
pstu=pstu->next;
}
printf("\n当前共有%d位学生信息。\n",count);
returncount;
}
//8.修改学生信息,参数为要修改的学生的编号
voidModityStudent(intnum)
{
PSTUDENTpstu=GetPrevAddr(num);//获取要修改的学生节点的上一个节点
intchoose;
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.获取用户的选择
intQuestion(constchar*pstr)
{
charanswer;
printf("%s请选择(yorn):",pstr);
while(1!=scanf("%c",&answer)||(answer!='y'&&answer!='n'))
{
printf("输入错误!%s请重新选择(yorn):",pstr);
fflush(stdin);//清空输入缓冲区,C库函数
}
if('y'==answer)
return1;
else
return0;
}
//10.获取用户输入的学生的编号
intGetInputNum()
{
intnum;
printf("请输入学生的编号(整型):");
while(1!=scanf("%d",&num))
{
printf("编号输入错误!请重新输入学生的编号(整型):");
fflush(stdin);
}
returnnum;
}
//11.删除编号为num的学生信息
voidDelStudent(intnum)
{
PSTUDENTpstu,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.删除所有的学生信息
voidDelAll()
{
PSTUDENTpstu=g_head.next,ptmp;
intcount=0;
if(!Question("确定要删除当前所有的学生信息吗?"))
{
return;
}
while(pstu)
{
ptmp=pstu;
pstu=pstu->next;
free(ptmp);
++count;
}
printf("共删除了%d位学生信息。\n",count);
g_head.next=NULL;
}
//13.把学生信息保存到文件当中
voidSaveToFile()
{
FILE*pf=fopen(FILENAME,"wb");
PSTUDENTpstu=&g_head;
inti=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.从文件中读取学生信息
voidLoadFromFile()
{
inti,count=0,repeat=0;
FILE*pf;
PSTUDENTpstu;
printf("提示:从文件中读取学生信息会询问是否清空当前学生信息(不清空表示合并所有信息)。\n");
if((pf=fopen(FILENAME,"rb"))==NULL)
{
printf("文件还没有创建,请手工输入学生信息并保存吧!\n");
return;
}
DelAll();//删除之前的所有学生信息,然后从文件中读取
fread(&count,1,sizeofcount,pf);//获取学生信息的数量
for(i=0;i{
pstu=(PSTUDENT)malloc(sizeof(STUDENT));
fread(pstu,1,sizeof(STUDENT),pf);
if(!AddStudent(pstu))
{
++repeat;//保持有多少个和当前链表中相重复的学生信息
}
}
fclose(pf);
printf("文件读取完毕!新增学生信息%d条。\n",count-repeat);
}
这个累死我了,我要财富值。。。为了这个不容易啊
学生成绩管理系统,C++源代码
#includeC语言学生成绩管理程序,可以分析一下思路,或者有源代码么
看你要做多好了。简单的就是成绩录入与查询,角色大概分为教师、学生、管理员。想做NB的,不仅是成绩录入与输出,还可以做查询统计报表,对各个成绩段、年级段、时间段等条件进行统计,生成柱状图饼状图,对于老师成绩上传发出过期提醒等等人性化操作。。求一个用java写的学生成绩管理信息系统的源代码,要求有界面,能实现
以下方法实现了用户界面登陆 import java.awt.*; import java.awt.event.*; public class DengLuJieMian extends Frame implements ActionListener { Label username=new Label("用户名:");//使用文本创建一个用户名标签 TextField t1=new TextField();//创建一个文本框对象 Label password=new Label("密码:");//创建一个密码标签 TextField t2=new TextField(); Button b1=展开全文阅读
下一篇
返回列表