学生成绩管理系统设计
一问题描述
某班有30个学生,每个学生的只要信息包含学号、姓名、各科(计算机、英语、数学等)成绩。要求通过计算机对这些数据信息进行管理,设计出一个学生成绩管理系统。
二实验目的
1、掌握线性表的基本运算(插入、删除、修改等)。
2、进一步学习C语言程序设计方法与技巧。
三实验内容与要求
学生信息表如下
学号 |
姓名 |
计算机 |
英语 |
数学 |
98032001 |
李华 |
85 |
65 |
97 |
98032002 |
王平 |
87 |
70 |
90 |
98032003 |
张小娟 |
76 |
76 |
88 |
98032004 |
赵静 |
95 |
85 |
76 |
…… |
…… |
…… |
…… |
…… |
98032030 |
王海 |
89 |
90 |
78 |
1、 要求同学们首先建立学生的姓名、学号、课程表,将每个学生的姓名、学号录入,成绩下来后根据学号将录入每人的成绩;
2、 班上若有退学或留级的,将删除该学生的信息;
3、 若有新插入本班的则将该学生的信息加到该表中;
4、 日常可能由于各种原因需要浏览所有学生的成绩信息,也有可能修改学生信息。
5、 以上所有的功能都是随机的。需要设计一个合理的输入输出界面或者功能菜单。
四. 对系统的评价
该学生成绩管理系统的亮点在于具有足够的合理性检验,对用户可能的错误输入进行判断和检验,并给出提示,很大程度上避免了用户由于操作失误造成的错误。各个模块之间的关系通过设置标志位作为条件,使整个系统显得紧凑而不失灵活性。在编程的始终,尽可能的使界面人性化。在这里感谢我的朋友对系统进行的测试,对系统的改进起了很大作用。
但是,还是有缺点的,很大一部分原因是时间问题,各个模块没有在细分,没有将数据存盘,界面怎么做也没有VB的界面华丽,其实不是不可以,但水平有限,不过预见在不久的将来有所成。
附录
/*
♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀
♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂
● Date : 2011-11-05
● Author :laodaren
● Description : This program privide a plat to keep memory of the student's preformance in school subject.
● subscribe: 该系统设有初始密码:需要输入正确密码(asdf)才可进入该系统进行操作。
● Introduction:初始化——将每个学生的姓名、学号录入。
● 录入成绩——成绩下来后根据学号将录入每人的成绩
● 插 入——若有新插入本班的则将该学生的信息加到该表中
● 删 除——若有新插入本班的则将该学生的信息添加
● 修 改——成绩录入错误可以进行修改修改
● 显 示——按位置浏览学生信息
● 汇 总——计算平均分 和 单科排名
● 退 出——退出系统
♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀♀
♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂♂
*/
//----------------包含头文件---------------------------------
//#include "stdafx.h"
#include"stdio.h"
#include "stdlib.h"
#include "string.h"
//=----------------定义常量-----------------------------------
#define MaxLen 100 //======定义一个常量来约束线性表的存储空间
//----------------自定义数据类型-----------------------------
typedef struct student{//======定义一个结构体变量类型的变量“型elemtype
char name[15],no[15];
int math,eng,comp;
}elemtype;
typedef struct{ //======定义一个顺序存储结构的线性表 “型sqList存储学生信息
elemtype stu[MaxLen]; // 表中元素data[i]为elemtype“型的结构体
int length; //线性表的实际长度
}sqList;
//-----------------全局变量定义-------------------------------
int init_flag=0;
math_input_flag=0;//math输入完毕标志
eng_input_flag=0;//eng输入完毕标志
comp_input_flag=0;//comp输入完毕标志
math_sort_flag=0;
eng_sort_flag=0;
comp_sort_flag=0;
//--------------变量定义-------------------------------------
sqList Stu_L;
//--------------基本函数声明---------------------------------
//1初始化顺序表initlist(Stu_L)
//2求线性表长度Getlen(Stu_L)
//3按序号取元素Getelem(Stu_L,i)
//4查找运算locate(Stu_L,x)//两种不同的查找位置方式
int Locate(sqList *Stu_L,char t[10]);
int Locate1(sqList *Stu_L,char t[10]);
//5顺序表的插入算法inselem(Stu_L,i,x)
void Inselem(sqList *Stu_L,int position,elemtype x);
//6顺序表的删除运算Delelem(Stu_L,i)
int Delete_L(sqList *Stu_L,int pos);
//-------------函数声明---------------------------------------
void Init_Fcn(void);//初始化
void Input_information(void);
void Add_Student(void);
void Delete_Student(void);
void Show_Information(void);
int Delete_L(sqList *Stu_L,int pos);
void Modify_Information(void);
void Huizong(void);
void Average(void);
void Sort(void);
//###################################################### main
{
int sel,i=4;
char code[8];
printf("\n>>请输入密码>> ");
scanf("%s",&code);i--;
while(strcmp(code,"asdf")!=0)
{
if(i<=0)
{
printf("\n!警告:您输入的次数超过限定次数,系统将自动记录此信息,并退出\n");
return 0;
}
printf("\nXXXXX密码错误!!!!,您还有%d次机会 请输入密码>> ",i);//密码验证
scanf("%s",&code);i--;
getchar();
}
do{
printf("*******************************************************\n");
printf("* 主菜单 #\n");
printf("* ◎ <1>-----------→ 初始化 (输入学生人数) #\n");
printf("* ● <2>-----------→ 录入成绩 (录入单科成绩) #\n");
printf("* ◎