本篇文章给大家谈谈学生管理信息系统设计,以及学生管理信息系统设计毕业书对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
# includeiostream.h
# includestring.h
# includestdio.h
# includestdlib.h
# includefstream.h
//*****定义一个学生原子的的数据结构*****//
struct stuatom
{
char *name;
int id;
char sex;
float math, eng, comp, totll, aver;
void show();
void setup();
};
//*********定义一系列对学生的操作**********//
class student
{
private:
stuatom ob[100];
int stulen;
public:
student();
void input();
void order();
void save();
void Query();
void read();
void add();
void del();
};
//********对学生数据的初始化(类的构造函数)**********//
student::student()
{
//用for循环对全部数组中的数据初始化
for(int i=0;i100;i++)
{
ob[i].math=ob[i].eng=ob[i].comp =ob[i].totll =ob[i].aver =0;
ob[i].id =0;
ob[i].sex =' ';
ob[i].name =NULL;
}
this-stulen =0;
}
//********输入学生的数据,并判断是否在规定数据域内*******//
void stuatom::setup()
{
char n[20]; char s;
int b;
//如果输入学好在数据域内,跳出循环并且赋值。
//如果不再数据域内,一直循环到输入数据符合数据域为止
do {
cout" 学号: ";
cinb;
if(b1020||b1001)
cout"Bad data input!!"endlendl;
}while (b1001||b1020);
id=b;
//如果输入学好在数据域内,跳出循环并且赋值。
//如果不再数据域内,一直循环到输入数据符合数据域为止
do{
name=new char[strlen(n)+1];
cout" 姓名: ";
cinn;
if( strlen(n)6 || strlen(n)4 )
cout"Bad data input!!"endlendl;
}while ( strlen(n)6 strlen(n)4 );
strcpy(name,n);
cout" 性别(m/f):" ;
cins;
//如果输入学好在数据域内,跳出循环并且赋值。
//如果不再数据域内,一直循环到输入数据符合数据域为止
while (s!='m' s!='f')
{
cout"Bad data input!!"endlendl;
cout" 性别(m/f):";
cins;
}
sex=s;
float m, e, co;
cout" 数学: ";
cinm;
//如果输入学好在数据域内,跳出循环并且赋值。
//如果不再数据域内,一直循环到输入数据符合数据域为止
while (m0 || m100)
{
cout"Bad data input!!"endlendl;
cout" 数学: ";
cinm;
}
math=m;
cout" 英语: ";
cine;
//如果输入学好在数据域内,跳出循环并且赋值。
//如果不再数据域内,一直循环到输入数据符合数据域为止
while (e0 || e100)
{
cout"Bad data input!!"endlendl;
cout" 英语: ";
cine;
}
eng=e;
cout" 计算机: ";
cinco;
//如果输入学好在数据域内,跳出循环并且赋值。
//如果不再数据域内,一直循环到输入数据符合数据域为止
while (co0 || co100)
{
cout"Bad data input!!"endlendl;
cout" 计算机: ";
cinco;
}
comp=co;
totll=math+eng+comp;
aver=(math+eng+comp)/3;
}
//*******按照规定格式把该学生的数据显示在屏幕上******//
void stuatom::show()
{
cout.setf(ios::left);
cout.width(6);
cout""id" ";
cout.width(8);
coutname;
cout.width(10);
coutsex;
cout.width(9);
coutmath;
cout.width(9);
couteng;
cout.width(11);
coutcomp;
cout.width(10);
couttotllaverendl;
}
//**************输入学生的数据***********************//
void student::input()
{
int n;
coutendl"输入将要录入的学生数目: ";
cinn;
int j;
//通过循环输入要求输入学生个数的学生的数据。
for(j=0; jn; j++)
{
cout" 输入学生信息 "jendl;
ob[j].setup();
}
this-stulen=n; //学生个数赋值
//学生数据显示格式
system("cls");
coutendl"----------------------------- 学生信息表 ------------------------------------"endl;
coutendl" 学号 姓名 性别 数学 英语 计算机 总分 平均分"endl;
//通过循环输出所有学生数据。
for(j=0; jn; j++)
{
ob[j].show();
}
coutendl;
cout" 是否保存? (Y/N): ";
char Y;
cinY;
system("cls");
}
//**************按照一定格式显示所要查询学生的信息。**************//
void student::Query()
{
int x , i;
coutendl" 输入要查询学生的学号: ";
cinx;
coutendl" 学号 姓名 性别 数学 英语 计算机 总分 平均分"endl;
for(i=0;i=this-stulen ;i++)
{ if (x==ob[i].id)
{
cout.setf(ios::left);
cout.width(6);
cout""ob[i].id" ";
cout.width(8);
coutob[i].name;
cout.width(10);
coutob[i].sex;
cout.width(9);
coutob[i].math;
cout.width(9);
coutob[i].eng;
cout.width(11);
coutob[i].comp;
cout.width(10);
coutob[i].totllob[i].averendl;
}
}
getchar();
}
//*******************保存学生数据**************************//
void student::save()
{
int i;
ofstream outfile;
outfile.open("list.txt",ios::trunc);
if(!outfile)
{
cout"Cannot open output file!\n,";
}
//通过循环把所有的学生数据保存在list.txt里边。
for(i=0; ithis-stulen; i++)
{
outfileob[i].id" "ob[i].name" "ob[i].sex" "
ob[i].math" "ob[i].eng" "ob[i].comp" "ob[i].totll" "ob[i].averendl;
}
outfile.close();
}
//*************显示所有学生数据*********************//
void student::read()
{
int i;
system("cls");
coutendl"----------------------------- 学生信息表 ------------------------------------"endl;
coutendl" 学号 姓名 性别 数学 英语 计算机 总分 平均分"endl;
for(i=0; ithis-stulen; i++)
{
ob[i].show();
}
getchar();
}
//*******************一个学生的数据****************//
void student::add()
{
int i, d=this-stulen ;
cout"输入要添加学生的信息:"endl;
ob[d].setup();
coutendl"----------------------------- 学生信息表 ------------------------------------"endl;
coutendl" 学号 姓名 性别 数学 英语 计算机 总分 平均分"endl;
for(i=0; i=d; i++)
{
ob[i].show();
}
ofstream fout("list.txt",ios::app);
if(!fout)
{
cout"Cannot open output file!\n,";
}
//把添加的学生数据添加到list.txt里边去。
foutob[d].id" "ob[d].name" "ob[d].sex" "
ob[d].math" "ob[d].eng" "ob[d].comp" "ob[d].totll" "ob[d].averendl;
fout.close();
getchar();
}
//*********************删除指定名字学生的数据*******************//
void student::del()
{
int i,p; char x[8];
cout" 输入要删除学生名字:"endl;
cinx;
//通过for循环查找要删除学生的姓名
for(i=0; istulen; i++)
{
if(strcmp(ob[i].name,x)==0)
{
p=i;
coutendl"学号 姓名 性别 数学 英语 计算机 总成绩 平均成绩"endl;
coutob[i].id" "ob[i].name" "ob[i].sex" "ob[i].math" "ob[i].eng" "ob[i].comp" "ob[i].totll" "ob[i].averendl;
break;
}
else
continue;
}
coutendl"----------------------------- 学生信息表 ------------------------------------"endl;
coutendl" 学号 姓名 性别 数学 英语 计算机 总分 平均分"endl;
//删除了之后,应该把后面的数据往前移,把要删除的数据覆盖,并且学生长度减1
stulen--;
for(i;istulen;i++)
{
ob[i]=ob[i+1];
}
this-read ();
cout" 删除成功!"endl;
getchar();
}
//***********把学生成绩排序******************//
void student::order()
{
int k,j;
float t; char n[20];
//排序算法。
for(j = 0; j=(2-1); j++)
{
for(k=1; k=(2-j); k++)
{
if(ob[k].totll ob[k + 1].totll)
{
t = ob[k].totll;
ob[k].totll = ob[k+1].totll;
ob[k+1].totll = t;
strcpy(n, ob[k].name);
strcpy(ob[k].name, ob[k+1].name);
strcpy(ob[k+1].name, n);
}
cout" 成绩排名:"endl;
cout" 姓名 总成绩 名次"endl;
for(k=0; k=stulen; k++)
{
cout" ";
cout.setf(ios::left);
cout.width(9);
coutob[k].name;
cout.width(9);
coutob[k].totllkendl;
}
getchar();
}
}
}
//********************选择菜单。*****************//
void menu()
{
cout"\n\n";
cout"------------------ 学生成绩系统 -----------------"endlendl;
cout"\t\t1.录入与保存学生信息.\n";
cout"\t\t2.读取学生信息.\n";
cout"\t\t3.删除学生信息.\n";
cout"\t\t4.追加学生信息.\n";
cout"\t\t5.查询学生信息.\n";
cout"\t\t6.显示成绩名次.\n";
cout"\t\t7.退出系统......\n\n\n";
cout"\t\t请选择功能项: ";
}
//---------------------------------------------------------------------------------------
void main()
{
student a;
while(1)
{
int SEL;
system("cls");
menu();
cinSEL;
switch(SEL)
{
case 1:
system("cls"); a.input();a.save();break;
case 2:
system("cls"); a.read(); break;
case 3:
system("cls"); a.del(); break;
case 4:
system("cls"); a.add();break;
case 5:
system("cls"); a.Query();break;
case 6:
system("cls"); a.order();break;
case 7:
coutendl" 按任意键退出.... "endl;
getchar();
exit(0);
default:
cout"Bad input!!\n";
break;
}
}
}
在百度没有表态说可以将分数以1分/100RMB的时候,建议楼主这道题还是别发了,没有人会帮你做的,而且还是c/c++,更加的没有人会帮你做,楼主自己努力吧,你是学这个的,自己动手比较有实际意义。
百度吧, 很多的
《 总体设计说明书 》
1. 前言
2. 摘要
3. 需求分析
3.1. 学校学籍管理概况
3.2. 学校学籍管理目标及方法
3.3. 实施需求
3.4. 实施目标
3.5. 实施约束
3.6. 实施功能要求
3.7. 实施信息要求
3.8. 实施性能要求
4. 总体方案与结构
4.1. 制定总体结构的出发点
4.2. 体系结构
4.3. 应用系统结构
4.4. 支撑系统结构
4.5. 信息分类编码体系
5. 系统说明
5.1. 结构模型
5.1.1. 系统/功能分解树
5.1.2. 构件图
5.2. 动态模型
5.2.1. 事件流程图
5.2.2. 事件汇总图
5.2.3. 工作案例图
5.2.4. 典型事件跟踪图
5.3. 功能模型
5.3.1. 数据流程图
5.3.2. 数据汇总图
5.3.3. 功能调用图
6. 资源需求
7. 系统配置
7.1. 配置原则
7.2. 硬件配置
7.3. 软件配置
8. 接口
8.1. 内部接口
8.2. 外部接口
9. 组织机构及人员配置
9.1. 现行组织机构
9.2. 开发运行的组织机构
9.3. 人员配置与培训
10. 关键技术
10.1. 关键技术的提出
10.2. 关键技术的一般说明
10.3. 关键技术的实现方案
11. 方案实施的技术路线和实施计划
11.1. 实施的技术路线
11.2. 实施计划
12. 投资概算及资金规划
12.1. 投资概算
12.2. 资金规划
13. 经济分析
13.1. 经济效益分析
13.2. 财务评价分析
13.3. 社会效益、战略效益分析
13.4. 经济评价的结论和建议
14. 缩写词表
15. 参考文献
《 详细设计说明书 》
1. 前言
2. 摘要
3. 系统详细需求分析
3.1. 详细需求分析
3.1.1. 详细功能需求分析
3.1.2. 详细性能需求分析
3.1.3. 详细信息需求分析
3.1.4. 详细资源需求分析
3.1.5. 详细组织需求分析
3.1.6. 详细系统运行环境及限制条件需求分析
3.1.7. 信息要求
3.1.8. 性能要求
3.2. 接口需求分析
3.2.1. 系统接口需求分析
3.2.2. 现有软、硬件资源接口需求分析
3.2.3. 引进软、硬件资源接口需求分析
4. 总体方案设计
4.1. 系统总体结构
4.1.1. 系统组成、逻辑结构
4.1.2. 应用系统结构
4.1.3. 支撑系统结构
4.1.4. 系统集成
4.1.5. 系统工作流程
4.2. 分系统详细界面划分
4.2.1. 应用分系统与支撑分系统的详细界面划分
4.2.2. 应用分系统之间的界面划分
5. 应用分系统详细设计
5.1. XX分系统详细需求分析
5.1.1. 功能详细需求分析
5.1.2. 性能详细需求分析
5.1.3. 信息详细需求分析
5.1.4. 限制条件详细分析
5.2. XX分系统结构设计及子系统划分
5.3. XX分系统功能详细设计
5.4. 分系统界面设计
5.4.1. 外部界面设计
5.4.2. 内部界面设计
5.4.3. 用户界面设计
6. 数据库系统设计
6.1. 设计要求
6.2. 信息模型设计
6.3. 数据库设计
6.3.1. 数据访问频度和流量
6.3.2. 数据库选型
6.3.3. 异构数据库的连接与数据传递方式
6.3.4. 逻辑结构设计
6.3.5. 数据共享方式设计
6.3.6. 数据安全性及保密设计
6.3.7. 数据字典设计
7. 网络通信系统设计
7.1. 设计要求
7.2. 网络结构设计
7.2.1. 网络选型
7.2.2. 网络互连设计
7.2.3. 网络协议
7.2.4. 信息载体和硬件配置
7.3. 网络布局设计
7.3.1. 网络的物理布局设计
7.3.2. 网络实施要求
8. 信息编码设计
8.1. 代码结构设计
8.2. 代码编制
9. 关键技术
9.1. 关键技术的提出
9.2. 关键技术的一般说明
9.3. 关键技术的实现方案
10. 系统配置
10.1. 硬件配置
10.2. 软件配置
11. 限制
12. 组织机构及人员配置
12.1. 机构调整与确认
12.2. 组织机构的任务和职责
12.3. 人员配置方案
12.4. 培训计划
13. 工程实施计划
13.1. 分期实施内容
13.2. 进度计划
13.3. 实施条件
13.4. 测试与验收
14. 投资预算
15. 参考和引用资料
16. 术语
#include stdio.h
#include malloc.h
#include string.h
#include io.h
#define NULL 0
#define LEN sizeof(struct student)
#define FILE_DATA_PATH "c:\student.txt"
struct student
{
long int num;
char name[20];
int age;
char sex[4];
char birthday[10];
char address[30];
long int tele_num;
char E_mail[20];
struct student *next;
};
int TOTAL_NUM = 0;
struct student *head = NULL;
void welcome();
void mainmenu();
void record();
void insert(struct student *stu);
void display(struct student *stu);
void displayAll();
void query();
void query_by_num();
void query_by_name();
void readData();
void writeData();
void freeAll();
void del();
void change();
void devise(struct student *p);
int main()
{
char userName[9];
char userPWD[7];
int i;
welcome();
for(i = 0; i 3; i++)
{
printf("\n管理员初始用户名和密码均为admin\n");
printf("请输入您的用户名:");
scanf("%s", userName);
printf("\n请输入您的密码:");
scanf("%s", userPWD);
if ((strcmp(userName,"admin")==0) (strcmp(userPWD,"admin")==0))
{
//用户名和密码正确,显示主菜单
mainmenu();
break;
}
else
{
if (i 2)
{
//用户名或密码错误,提示用户重新输入
printf("用户名或密码错误,请重新输入!");
}
else
{
//连续3次输错用户名或密码,退出系统。
printf("您已连续3次将用户名或密码输错,系统将退出!");
}
}
}
return 0;
}
//显示欢迎信息
void welcome()
{
printf("+---------------------------+\n");
printf("| |\n");
printf("| 欢迎使用学生信息管理系统 |\n");
printf("| |\n");
printf("+---------------------------+\n");
}
//系统主菜单
void mainmenu()
{
int choice;
choice = -1;
readData();
printf("\n温馨提示:为保证您的操作得到保存,请按正常顺序退出系统^_^\n");
do
{
printf("\n\n\n");
printf("\t\t\t--------------------------------\n");
printf("\t\t\t+ 学生信息管理系统 |\n");
printf("\t\t\t--------------------------------\n");
printf("\t\t\t+ [1]----录入学生信息 |\n");
printf("\t\t\t+ [2]----浏览学生信息 |\n");
printf("\t\t\t+ [3]----查询学生信息 |\n");
printf("\t\t\t+ [4]----删除学生信息 |\n");
printf("\t\t\t+ [5]----修改学生信息 |\n");
printf("\t\t\t+ [0]----退出系统 |\n");
printf("\t\t\t+*·*·*·*·*·*·*·*·*·*·|\n");
printf("\t\t\t--------------------------------\n");
printf("请输入您的选择:");
scanf("%d", choice);
switch(choice)
{
case 0:
writeData();
freeAll();
exit(0);
case 1:
record();
break;
case 2:
displayAll();
break;
case 3:
query();
break;
case 4:
del();
break;
case 5:
change();
break;
default:
printf("\n无效选项!");
break;
}
}
while(choice != 0);
}
//录入学生信息
void record()
{
struct student *p0;
p0 = (struct student *)malloc(LEN);
printf("请输入学生的学号:");
scanf("%ld",p0-num);
printf("请输入学生的姓名:");
scanf("%s",p0-name);
printf("请输入学生的年龄:");
scanf("%d",p0-age);
printf("请输入学生的性别:");
scanf("%s",p0-sex);
printf("请输入学生的出生年月:");
scanf("%s",p0-birthday);
printf("请输入学生的地址:");
scanf("%s",p0-address);
printf("请输入学生的电话:");
scanf("%ld",p0-tele_num);
printf("请输入学生的E-mail:");
scanf("%s",p0-E_mail);
insert(p0);
printf("该学生的信息为:\n");
printf("-------------------------------------------------------------------------------");
printf("学号\t姓名\t年龄\t性别\t出生年月\t\t地址\t电话\tE-mail\n");
display(p0);
}
void insert(struct student *stu)
{
struct student *p0, *p1, *p2;
p1 = head;
p0 = stu;
if(head == NULL)
{
head = p0;
p0-next = NULL;
}
else
{
while((p0-num p1-num)(p1-next != NULL))
{
p2 = p1;
p1 = p1-next;
}
if(p0-num = p1-num)
{
if(head == p1)
head = p0;
else
p2-next = p0;
p0-next = p1;
}
else
{
p1-next = p0;
p0-next = NULL;
}
}
TOTAL_NUM++;
}
void display(struct student *p)
{
printf("%ld\t%s\t%d\t%s\t%s\t%s\t%ld\t%s\n", p-num, p-name, p-age, p-sex, p-birthday, p-address, p-tele_num, p-E_mail);
}
//浏览学生信息
void displayAll()
{
struct student *p;
printf("学生总数:%d\n", TOTAL_NUM);
p = head;
if(head != NULL)
{
printf("\n学号\t姓名\t年龄\t性别\t出生年月\t地址\t电话\tE-mail\n");
printf("-------------------------------------------------------------------------------");
do
{
display(p);
p = p-next;
}
while(p != NULL);
}
printf("\n");
}
//查询学生信息
void query()
{
int choice;
choice = -1;
do
{
printf("\n");
printf("+--------------------+\n");
printf("| 按学号查询 请按 1 |\n");
printf("| 按姓名查询 请按 2 |\n");
printf("| 取消 请按 0 |\n");
printf("+--------------------+\n");
printf("请输入您的选择:");
scanf("%d", choice);
switch(choice)
{
case 0:
return;
case 1:
query_by_num();
break;
case 2:
query_by_name();
break;
default:
printf("\n无效选项!");
break;
}
}
while(choice != 0);
}
//按学号查询学生信息
void query_by_num()
{
int num;
struct student *p1;
printf("请输入学生的学号:");
scanf("%ld", num);
if(head==NULL)
{
printf("无学生记录!\n");
return;
}
p1=head;
while(num!=p1-num p1-next!=NULL)
p1=p1-next;
if(num == p1-num)
{
printf("\n学号\t姓名\t年龄\t性别\t出生年月\t地址\t电话\tE-mail\n");
printf("-------------------------------------------------------------------------------");
display(p1);
}
else
printf("没有该学生记录,请核对!");
}
//按姓名查询学生信息
void query_by_name()
{
char name[20];
struct student *p1;
printf("请输入学生的姓名:");
scanf("%s", name);
if(head==NULL)
{
printf("无学生记录!\n");
return;
}
p1=head;
while(strcmp(name, p1-name) p1-next!=NULL)
p1=p1-next;
if(!strcmp(name, p1-name))
{
printf("\n学号\t姓名\t年龄\t性别\t出生年月\t地址\t电话\tE-mail\n");
printf("-------------------------------------------------------------------------------");
display(p1);
}
else
printf("没有该学生记录,请核对!");
}
//写入文件
void writeData()
{
FILE* fp;//文件指针
struct student *p;
fp = fopen(FILE_DATA_PATH, "w");
if (!fp)
{
printf("文件打开错误!");
return;
}
fprintf(fp,"%d\n", TOTAL_NUM);
for(p = head; p!= NULL; p= p-next)
{
fprintf(fp,"%ld\t%s\t%d\t%s\t%s\t%s\t%ld\t%s\n",
p-num, p-name, p-age, p-sex, p-birthday, p-address, p-tele_num, p-E_mail);
}
fclose(fp);
}
void freeAll()
{
struct student *p1, *p2;
p1=p2=head;
while(p1)
{
p2=p1-next;
free(p1);
p1=p2;
}
}
//读取文件
void readData()
{
FILE* fp;//文件指针
struct student *p1, *p2;
fp = fopen(FILE_DATA_PATH, "r");
if (!fp)
{
printf("文件打开错误!");
return 0;
}
fscanf(fp,"%d\n", TOTAL_NUM);
head = p1 = p2 = (struct student *)malloc(LEN);
fscanf(fp,"%ld\t%s\t%d\t%s\t%s\t%s\t%ld\t%s\n",
p1-num, p1-name, p1-age, p1-sex, p1-birthday, p1-address, p1-tele_num, p1-E_mail);
while(!feof(fp))
{
p1 = (struct student *)malloc(LEN);
fscanf(fp,"%ld\t%s\t%d\t%s\t%s\t%s\t%ld\t%s\n",
p1-num, p1-name, p1-age, p1-sex, p1-birthday, p1-address, p1-tele_num, p1-E_mail);
p2-next = p1;
p2 = p1;
}
p2-next = NULL;
fclose(fp);
}
//删除学生信息
void del()
{
struct student *p1, *p2;
long int num;
if(head == NULL)
{
printf("无学生记录!\n");
return;
}
printf("请输入您要删除的学生的学号:");
scanf("%ld", num);
p1 = head;
while(num != p1-num p1-next != NULL)
{
p2 = p1;
p1 = p1-next;
}
if(num == p1-num)
{
if(p1 == head)
head = p1-next;
else p2-next = p1-next;
free(p1);
TOTAL_NUM--;
}
else
printf("没有该学生记录,请核对!\n");
}
//修改学生信息
void change()
{
struct student *p1, *p2;
long int num;
if(head == NULL)
{
printf("无学生记录!\n");
return;
}
printf("请输入您要修改的学生的学号:");
scanf("%ld", num);
p1 = head;
while(num != p1-num p1-next != NULL)
{
p2 = p1;
p1 = p1-next;
}
if(num == p1-num)
devise(p1);
else
printf("没有该学生记录,请核对!\n");
}
void devise(struct student *p)
{
int choice;
choice = -1;
do
{
printf("请选择您要修改的学生的信息内容:\n");
printf("+----------------------+\n");
printf("| 姓名 请按 1 |\n");
printf("| 年龄 请按 2 |\n");
printf("| 性别 请按 3 |\n");
printf("| 出生年月 请按 4 |\n");
printf("| 地址 请按 5 |\n");
printf("| 电话 请按 6 |\n");
printf("| E-mail 请按 7 |\n");
printf("| 取消 请按 0 |\n");
printf("+----------------------+\n");
printf("请输入您的选择:");
scanf("%d", choice);
switch(choice)
{
case 0:
return;
case 1:
printf("请输入新姓名:");
scanf("%s", p-name);
break;
case 2:
printf("请输入新年龄:");
scanf("%d", p-age);
break;
case 3:
printf("请输入新性别:");
scanf("%s", p-sex);
break;
case 4:
printf("请输入新出生年月:");
scanf("%s", p-birthday);
break;
case 5:
printf("请输入新地址:");
scanf("%s", p-address);
break;
case 6:
printf("请输入新电话:");
scanf("%ld", p-tele_num);
break;
case 7:
printf("请输入新E-mail:");
scanf("%s", p-E_mail);
break;
default:
printf("\n无效选项!");
break;
}
}
while(choice != 0);
}
#include #include #include #define MAX 1000 /*定义学生成绩信息结构*/ struct stu { char id[8]; char name[8]; double Chinese; double Math; double English; double average; double total; }; /*学生结构数组,用于存储学生成绩信息*/ struct stu students[MAX]; /*当前学生人数*/ int current; void input() { int i; printf("请输入学生人数:"); scanf("%d", current); for (i = 0; i current; i++) { printf("\n请输入学生学号,最多为7位数: "); scanf("%s", students[i].id); printf("请输入学生姓名:"); scanf("%s", students[i].name); printf("请输入语文成绩:"); scanf("%lf", students[i].Chinese); printf("请输入数学成绩:"); scanf("%lf", students[i].Math); printf("请输入英语成绩:"); scanf("%lf", students[i].English); students[i].total = students[i].Chinese + students[i].Math + students[i].English; students[i].average = students[i].total / 3; } } /*排名次,即对学生结构数组排序*/ void sort(struct stu array[], int n) { int i, j; struct stu temp; for (i = 0; i n; i++) { for (j = i+1; j n; j++) { if (array[i].average - array[j].average 1e-16) { temp = array[i]; array[i] = array[j]; array[j] = temp; } } } } /*统计平均成绩,并输出各分数段的人数*/ void print_score(struct stu array[], int n) { int i; double ave = 0; int sum1 = 0, sum2 = 0, sum3 = 0, sum4 = 0; for (i = 0; i n; i++) { ave += array[i].average; switch ((int)(array[i].average / 10)) { case 10: case 9: sum1++; break; case 8: sum2++; break; case 7: case 6: sum3++; break; default: sum4++; } } printf("全班的平均分为:%.1f\n", ave/n); printf("平均分在90分以上的人数为:%d\n", sum1); printf("平均分在80~89的人数为:%d\n", sum2); printf("平均分在60~79的人数为:%d\n", sum3); printf("平均分在60分以下的人数为:%d\n", sum4); } /*输出不及格科目及学生名单*/ void print_unreach(struct stu array[], int n) { int i; printf("科目\t学号\t名字\n"); for (i = 0; i n; i++) { if (array[i].Chinese 60) { printf("语文\t%s\t%s\n", array[i].id, array[i].name); } if (array[i].Math 60) { printf("数学\t%s\t%s\n", array[i].id, array[i].name); } if (array[i].English 60) { printf("英语\t%s\t%s\n", array[i].id, array[i].name); } } } /*打印优等生名单*/ void print_good(struct stu array[], int n) { int i; char mark = 0; if (n 3) { n = 3; } printf("学号\t姓名\t语文\t数学\t英语\t平均分\t名次\n"); for (i = 0; i n; i++) { if ((array[i].Chinese 60) (array[i].Math 60) (array[i].English 60)) { if (array[i].average 90) mark = 1; else if (array[i].average 85) { if (array[i].Chinese == 100) mark = 1; if (array[i].Math == 100) mark = 1; if (array[i].English == 100) mark = 1; if (array[i].Chinese 95 array[i].English 95) mark = 1; if (array[i].Chinese 95 array[i].Math 95) mark = 1; if (array[i].Math 95 array[i].English 95) mark = 1; } if (mark == 1) { printf("%s\t%s\t", array[i].id, array[i].name); printf("%.f\t%.f\t%.f\t%.1f\t", array[i].Chinese, array[i].Math, array[i].English, array[i].average); printf("%d\n", i+1); } } } } /*按学生姓名查询成绩*/ void search_name(struct stu array[], int n, char* name) { int i; char mark = 1; for (i = 0; i n; i++) { if (strcmp(name, array[i].name) == 0) { printf("学生姓名:%s\n", name); printf("学生学号:%s\n", array[i].id); printf("语文:%.f\n", array[i].Chinese); printf("数学:%.f\n", array[i].Math); printf("英语:%.f\n", array[i].English); printf("平均分:%.1f\n", array[i].average); mark = 0; } } if (mark == 1) puts("不存在该学生记录"); } /*按学生学号查询成绩*/ void search_id(struct stu array[], int n, char* id) { int i; char mark = 1; for (i = 0; i n; i++) { if (strcmp(id, array[i].id) == 0) { printf("学生姓名:%s\n", array[i].name); printf("学生学号:%s\n", array[i].id); printf("语文:%.f\n", array[i].Chinese); printf("数学:%.f\n", array[i].Math); printf("英语:%.f\n", array[i].English); printf("平均分:%.1f\n", array[i].average); mark = 0; break; } } if (mark == 1) puts("不存在该学生记录"); } void print_menu() { system("cls"); printf("1.输入学生信息\n"); puts("2.统计全班学生成绩"); puts("3.按学号查询学生成绩"); puts("4.按姓名查询学生成绩"); puts("5.输出不及格情况"); puts("6.输出优等生名单"); puts("0.退出本程序"); printf("\n\n 请输入你的选择:"); } int main(int argc, char **argv) { char ch = 0; char id[8], name[8]; while (ch != '0') { print_menu(); ch = getchar(); switch (ch) { case '1': { system("cls"); input(); sort(students, current); break; } case '2': { system("cls"); print_score(students, current); break; } case '3': { system("cls"); printf("请输入学号:"); scanf("%s", id); search_id(students, current, id); break; } case '4': { system("cls"); printf("请输入姓名:"); scanf("%s", name); search_name(students, current, name); break; } case '5': { system("cls"); print_unreach(students, current); break; } case '6': { system("cls"); print_good(students, current); break; } case '0': exit(0); } printf("\n\n按任意键返回主菜单……"); getchar(); getchar(); } return 0; }
关于学生管理信息系统设计和学生管理信息系统设计毕业书的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件至举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签: #学生管理信息系统设计
相关文章