c语言程序---学生成绩管理系统(2)
printf("\n\t请选择: ");
scanf("%d",&op);
if(op == 0)
{
break;
}
switch(op)
{
case 1:
insertById(1); //按学号插入
break;
case 2:
insertById(2); //按平均分插入
break;
default:
printf("\n\t您输入的选项无效!!!按任意键重新输入...\n");
fflush(stdin);
getch();
}
}while(1); //死循环
}
//插入学生数据
void insertById(int id)
{
int i;
struct student s = input(); //调用函数,接收要插入的信息
//(1) 查找要插入的数组中的下标位置
for(i=0;i<count;i++)
{
if(id==1) //按学号插入
{
if(s.stuNo<stu[i].stuNo)
break;
}
else if(id==2) //按平均分的降序插入
{
if(s.avgScore > stu[i].avgScore)
break;
}
}
//(2) 循环平移操作---->为要出入的元素预留空间
int j;
for(j=count-1;j>=i;j--)
{
stu[j+1] = stu[j];
}
//(3) 将要插入的元素放入该位置
stu[i] = s;
//(4) 将当前学生人数++
count++;
printf("\n\t学生数据插入完成,按任意键继续...\n");
fflush(stdin);
getch();
}
//删除功能
void del()
{
char ans;
int i;
int sno;//学号
do
{
system("cls");//清屏
printf("主界面>>>删除界面\n");
printf("\n\t*******************************************\n");
printf("\n\t\t请输入需要删除的学号: ");
scanf("%d",&sno);
//1) 查找被删除的学生的学号是否已存在,如果不存在,i即其下标
for(i=0;i<count;i++)
{
if(stu[i].stuNo == sno)
break;
}
//2) 判断是否找到
if(i<count) //找到了
{
//显示需要删除的学生的信息
printf("\n\t需要删除的学生信息如下:\n");
printf("\n\t\t学号\t姓名\tC
\tJava\tSQL\t总分\t平均分\n");
printf("\n\t------------------------------------------------\n");
printf("\n\t\t%d\t%s\t%5.2f\t%
5.2f\t%5.2f\t%5.2f\t%5.2f\n",
stu[i].stuNo,stu[i].name,stu[i].cScore,stu[i].javaScore,
stu[i].sqlScore,stu[i].sumScore,stu[i].avgScore);
//提示是否正确删除
printf("\n\t确认删除该学生信息吗?<y|n>:");
fflush(stdin);
ans = getchar();
if(ans == 'y' || ans =='Y')
{
//如果确认删除,则执行相应的删除操作
int j;
for(j = i;j>count-1 ; j++)
{stu[j] = stu[j+1];}
//将当前学生人数 --
count--;
printf("\n\t\t\t删除操作完成,按任意键继续...");
fflush(stdin);
getch();
}
}
else //没有找到
{
printf("\n\t\tSorry,没有找到对应的学号,无法删除...\n");
fflush(stdin);
getch();
}
//是否继续删除
printf("\n\n\t\t\t是否继续执行删除操作?<y|n>:");
fflush(stdin);
ans = getchar();
if(ans == 'y'||ans == 'Y')
continue; //继续提示删除的学号
else
break; //跳出循环,回到主界面
}while(1);
}
//保存文件
void writeFile()
{
FILE *fp; //定义文件指针变量
fp = fopen("stu.dat","wb"); //以创建文件形式关联
int i;
for(i=0;i<count;i++)
{
//循环将结构数组stu中的记录写入到fp所指向的文件中去
fwrite(&stu[i],sizeof(struct student),1,fp);
}
fclose(fp);//关闭文件
printf("\n\t\t\t文件保存完毕,按任意键继续...\n");
printf("\n");
fflush(stdin);
getch();
}
//读取文件
void readFile()
{
FILE *fp; //定义文件指针
fp = fopen("stu.dat","rb"); //以读取文件形式关联
if(fp==NULL)
{
printf("\n\t\t\tSorry,您要打开的文件不存在。按任意键继续\n");
fflush(stdin);
getch();
}
else //文件存在时
{
//将文件指针移到文件末尾
fseek(fp,0,2);
//计算文件中的记录数
count= ftell(fp)/sizeof (struct student);
//将文件指针移到文件开始,便于读取文件
rewind(fp);
int i;
for(i=0;i<count;i++)
{
fread(&stu[i],sizeof(struct student),1,fp);
}
fclose(fp); //关闭文件
printf("\n\t\t\t文件打开完成,按任意键返回...\n");
printf("\n");
fflush(stdin);
getch();
}
}
//分页显示
void dispByPage()
{
char op;
int i;
int size = 5; //每页显示的记录数 size--->5
int sumPages; //总页数 sumPage
// sumPage = count%size==0 ? count/size : count/size+1;
int p=1; //当前的页码 ---> p--> 1
sumPages = count/size;
if(count%size!=0)
{
sumPages++;
}
do
{
system("cls");//清屏
printf("\n\t\t ===分页显示===\n");
printf("\n\t***************************************************\n");
printf("\n\t学号\t姓名\tC\tJava\tSQL\t总分\t平均分\n");
printf("\t-----------------------------------------------------\n");
for(i=5*(p-1);i<5*p && i<
;count ;i++)
{
printf("\t%d\t%s\t%5.2f\t%5.2f\t%5.2f\t%5.2f\t%5.2f\n",
stu[i].stuNo,stu[i].name,stu[i].cScore,stu[i].javaScore,stu[
i].sqlScore,
stu[i].sumScore,stu[i].avgScore);
}
printf("\t====================================================\n");
printf("\t\t\t 第【 %d 】页\n",p);
printf("\n 1.首页 2.上一页 3.下一页 4.末页 0.退出");
fflush(stdin);
op = getch();
if(op=='0')
break;
switch(op)
{
case '1':
p=1;
break;
case 2:
p--;
if(p<1)
{
printf("\n\n\t\t\t当前已经是第一页了...");
p++;
fflush(stdin);
getch();
}
break;
case 3:
p++;
if(p>sumPage
s)
{
printf("\n\n\t\t当前已经是最后一页
…… 此处隐藏:1869字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [教育文库]夜场KTV服务员的岗位职责及工作流程[1]
- [教育文库]企划、网络、市场绩效考核方案
- [教育文库]学党史、知党情、强党性--“党的基本理
- [教育文库]2016年高考物理大一轮总复习(江苏专版
- [教育文库]干部廉洁自律自查自纠的报告
- [教育文库]2010年北京大学心理学系拟录取硕士研究
- [教育文库]资金时间价值练习题及答案
- [教育文库]保护环境的心得体会
- [教育文库]英语角内容:英语趣味小知识
- [教育文库]档案收集与管理工作通知
- [教育文库]劳动规章制度范本范本
- [教育文库]高考物理一轮复习课后限时作业1运动的
- [教育文库]机械工艺夹具毕业设计195推动架设计说
- [教育文库]通用技术教学比赛说课稿2
- [教育文库]2018年四年级英语下册 Module 7 Unit 2
- [教育文库]第2章 宽带IP网络的体系结构
- [教育文库]九年级化学第五单元课题3《根据化学方
- [教育文库]小学英语六年级情态动词用法归纳
- [教育文库]甲级单位编制窑井盖项目可行性报告(立
- [教育文库]2016-2021年中国城市规划行业全景调研
- 高考英语听力十大场景词汇总结
- 全省领导班子思想政治建设座谈会会议精
- 人教版新课标高一英语提优竞赛试题 下
- 江西省2014年生物中考试题
- 长沙镇食品药品安全事故应急预案
- 《金刚石、石墨和C60》片段教学设计
- 福州教育学院(王旭东)
- 基于EDA音乐播放器的设计
- 9、古诗两首《夜书所见》《九月九日忆
- 小学语文课外阅读有效策略探讨
- 贵州文化产业发展成支柱产业的问卷调查
- 膀胱类癌的诊治体会(附3例报告)
- 发动机积碳产生的原因
- Configuring Code Composer Studio for
- 学生良好的心理素质如何培养点滴谈
- 46 电沉积法制备锂离子电池用硅-锂薄膜
- 美舍雅阁公司管理中各部门职责
- 去壳剥皮的小妙招
- 六自由度运动平台的仿真研究
- Pride and Prejudice(傲慢与偏见)




