📄 8.c
字号:
* 软件课程设计 -> 学生成绩管理程序
通信工程01 级 02 班 姓名: 罗宁 学号:01072054 完成
日期:04.05.22
┄┈┄┈┄┈┄┈┄┈┄┈┄┈┄┈┄┈┄┈┄┈┄┈┄┈┄┈┄┈┄┈┄┈┄┈┄┈┄
┈┄┈┄┈┄┈┄┈┄┈┄┈
<实验目的>
1、复习大一时学过的 C 语言,与目前学习的 C++ 语言作比较,了解他们各自的优缺点;
2、培养查找资料,互相协作的精神。
<实验参考资料>
1、《C++程序设计教程》 钱能 主编 清华大学出版社;
2、《C++语言程序设计》 郑丽 傅仕星 编著 清华大学出版社;
3、《C程序设计》第二版 谭浩强 清华大学出版社;
<实验框架图>
<运行环境>
本程序在 CPU:AMD Athlon 1700+ 主板:微星 KT3V 内存:现代兼容内存256M DDR 操
作系统:Windows XP professional +SP1
下成功运行。
<实验心得>
1、 通过这次程序设计,我对C++有了一个新的认识。然而,从编程思想面的向过程转变到
面向对象,不是短时间内可以做到的,因此,本程序中还是以 C 语言为主,以 C++ 语言为
辅;
2、 程序设计中用到了链表等新的知识,而这些知识过去在课堂上没有学过,因此带来了一
定的困难。我通过到图书馆、Internet查资料,以及请问同学,基本上得到了解决;
3、 团结协作的精神在开发程序中至关重要。一个人冥思苦想,不如把问题告诉身边的同学
,大家一起来想。往往眼前的一个小小的错误,自己怎么都找不到,而身边的同学瞄一眼就能
发现。经过这次软件设计,我深刻的明白了 1+1>2 的道理。
*/
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream.h>
#include <stdio.h>
#include <iomanip.h>
#define M 1000 //允许学生档案最大值
#define N 5 //学科数
typedef struct
{char name[9];
char number[10];
float score[N];
float aves;
}FROMTO;
void menu() //定义系统主菜单
{
cout<<endl<<endl
<<" SoQool 学生成绩管理系统 "<
<endl<<endl
<<" ┄┈┄┈┄┈┄┈┄┈┄┈┄┈┄┈┄┈┄┈┄┈┄┈┄┈┄┈┄┈┄┈ "<
<endl<<endl
<<" ① 新增学生档案 ★★ ★★ "<
<endl
<<" ★ ★ ★ "<
<endl
<<" ② 学生成绩排序 和 及格率统计 ★★ ★ ★ "<
<endl
<<" ★ ★ ★ ★ "<
<endl
<<" ③ 查看学生成绩 ★★ ★★ "<
<endl
<<" "<
<endl
<<" ④ 导入学生档案 ☆☆ ☆☆ ☆☆ ☆ "<
<endl
<<" ☆ ☆ ☆ ☆ ☆ ☆ ☆ "<
<endl
<<" ⑤ 学生成绩存档 ☆ ☆ ☆ ☆ ☆ ☆ ☆ "<
<endl
<<" ☆ ☆ ☆ ☆ ☆ ☆ ☆ "<
<endl
<<" ⑥ 关于本 系 统 ☆ ☆ ☆ ☆ ☆ ☆ ☆ "<
<endl
<<" ☆ ☆ ☆ ☆ ☆ ☆ ☆ "<
<endl
<<" ⑦ 删除学生档案 ☆ ☆ ☆ ☆ ☆ ☆ ☆ "<
<endl
<<" ┄★┄┄★ ★ ┄ ★┄★┄┄★ ★┄┄ "<
<endl
<<" 0 退 出 系 统 ☆ ☆☆ ☆ ☆ ☆ ☆ ☆ "<
<endl
<<" ☆☆ ☆ ☆☆ ☆☆ ☆☆☆☆☆☆ "<
<endl
<<endl<<endl;
}
char *st(int n)
{
char *ps,start[10];
ps=start;
switch(n)
{
case 0: ps=" ◆ 单 片 机";break;
case 1: ps=" ◆ 通信原理";break;
case 2: ps=" ◆ 锁相技术";break;
case 3: ps=" ◆ 光纤通信";break;
case 4: ps="◆ C++程序设计";break;
default :ps="为之科目";
}
return ps;
}
//新增学生成绩
void input(FROMTO *p,int *n)
{int i=0,j;
char t_str[20];
if(*n) i=*n;
for(;i<M;i++)
{ if (i>0)
{
cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl
<<" ╔══════════════════════╗"<<endl
<<" ║ 要继续增加新的成绩档案吗?(Y/N)? ║"<<endl
<<" ╚══════════════════════╝"
<<endl<<endl<<endl<<endl<<endl<<endl<<endl
<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl;
if (getch()!=121) break;}
cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl
<<" ┏━━━━━━━━━━━━━━━━━━━━━━┓"<<endl
<<" ┃ 正在增加第"<<setw(2)<<i+1<<"条成绩档案
┃"<<endl
<<" ┗━━━━━━━━━━━━━━━━━━━━━━┛"
<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<
endl<<endl<<endl;
printf(" ◆ 请输入学生[%d]的姓名 : ",i);
gets(p[i].name);
printf(" ◆ 请输入学生<%s>的学号 : ",p[i].name);
gets(p[i].number);
for(j=0;j<N;j++)
{
printf(" %s:",st(j));
gets(t_str);
p[i].score[j]=(float)atoi(t_str);
}
}
*n=i;
cout<<endl<<" ▼▽按任意键返回主菜单▽▼"<<endl;
}
void averdata(FROMTO *p,float *p1,int n) //求平均成绩
{
int i,j;
float s_num;
float t[N]={0};
if (!n);
else
{
for(i=0;i<n;i++)
{
s_num=0.0;
for(j=0;j<N;j++)
{
s_num+=p[i].score[j];
t[j]+=p[i].score[j];
}
p[i].aves=s_num/N;
}
for(i=0;i<N;i++)
p1[i]=t[i]/n;
cout<<" ";
}
}
void potiscore(FROMTO *p,int n) //名次排序
{
int i,j,k;
FROMTO temp;
if(!n)
cout<<" ▲△ >非法操作< 没有任何数据,按任意键返回△▲"<<endl;
else
{
for(i=0;i<n;i++)
{k=i;
for(j=i+1;j<n;j++)
if(p[j].aves>p[i].aves) k=j;
temp=p[k];p[k]=p[i];p[i]=temp;
}
cout<<endl
<<" █━━━━━━━━━━━━━━━━━━━━━█"<<endl
<<" ┃┄┄┄┄┄┄ 学生成绩排名 ┄┄┄┄┄┄┄┃"<<endl
<<" ┃ ┃"<<endl;
for(i=0;i<n;i++)
cout<<" ┃"<<setw(16)<<p[i].name<<" : "<<setw(10)<<p[i].aves
<<" ┃"<<endl;
}
}
void statdata(FROMTO *p,int n) //统计及格程序
{
int i,a=0,b=0,c=0,d=0;
if(!n);
else
{
for(i=0;i<n;i++)
{
switch((int)(p[i].aves/10))
{
case 10:a++;break;
case 9:a++;break;
case 8:b++;break;
case 7:c++;break;
case 6:c++;break;
default:d++;break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -