学生成绩管理系统Word文档格式.docx
- 文档编号:17207755
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:25
- 大小:86.14KB
学生成绩管理系统Word文档格式.docx
《学生成绩管理系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统Word文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
(3)增加学生成绩界面
输入学生的基本信息。
(4)删除学生成绩界面
删除学生的基本信息。
(5)修改学生成绩界面
按学号选择需要修改的学生信息。
(6)查找学生成绩界面
①查找已经保存了的学生信息。
②按照学号查找。
(7)统计学生成绩界面
①按学号、按课程号求平均分、各分数段的人数与百分比。
②按学号求不及格的门数。
③按课程号求不及格的人数。
2.4.2总体设计
最初的规划只是说明它的可行性,不要求制定函数的具体实现,甚至不需要考虑数原型。
完成规划后,按照各个模块的功能连接描述。
1要求使用多个文件方式实现设计;
2要求在个各文件内实现结构化设计;
3每个文件作为单独的C文件,分别说明每个函数的功能和实现方法。
2.4.3函数设计
下面分别描述一些函数,建立它们的原型。
1保存函数
函数原型:
structstudent_type*saveDate(structstudent_type*head)
功能:
保存学生信息
参数:
struct
工作方式:
保存输入的学生信息
要求:
保存在文件里
2查找函数
structstudent_type*find(structstudent_type*head,longnum)
查找学生信息
查找输入的学生信息
只对储存内容进行查找
3增加函数
structstudent_type*add(structstudent_type*head)
增加学生信息
工作方式:
输入学生的信息
要求:
按顺序输入
4浏览函数
voidbrowse
浏览保存的学生信息
void
浏览学生的信息
只能浏览保存的学生信息
5修改函数
voidchangeDate(structstudent_type*head)
修改保存的学生信息
只能修改保存的学生信息
6统计函数
structstudent_type*stat(structstudent_type*head)
按学号、按课程号求平均分、各分数段的人数与百分比;
按课程号求不及格的人数
统计学生的信息
只能统计输入的学生信息
7删除函数
structstudent_type*delDate(structstudent_type*head)
删除学生的信息
删除学生的信息
只能删除保存的学生信息
8身份验证系统
voidmain()
验证用户的身份
验证身份
只能验证设置好的用户身份
9主函数
控制程序
管理菜单命令
10头函数
stdio.h
声明函数原型、包含文件、自定义及数据结构
报告是否能正常打开文件执行存入操作及存入记录的条数
2.5源程序
//sixStuMakeAdmin.cpp:
Definestheentrypointfortheconsoleapplication.
/*
a)用结构体形式实现对学生成绩的描述,结构体成员包括:
学号,姓名,语文,数学,英语;
b)能够进行数据记录的增加、查询、修改、统计、删除、保存;
c)能够将学生的基本信息存放在文件中,系统可以再次从文件中读出保存的数据;
d)定义一个操作命令集,例如
H----帮助
A----增加
R----浏览
M----修改
B----统计
D----删除
S----保存
F----查找
Q----退出
C----清除所有记录
*/
#include"
stdio.h"
malloc.h"
#include<
string.h>
windows.h>
stdlib.h>
conio.h>
#defineNULL0
#defineLENsizeof(structstudent_type)
#defineLEN_Ssizeof(structstudent)
#defineNAME_LEN10
#defineFILENAME"
score.dat"
#defineTEST0//0表示不输出测试信息,1表示输出
voidhomepage();
voidquit();
//退出界面
voidmain()
{
inti,k=0,j;
charusername[15],pwd[6];
system("
color3f"
);
printf("
\n\n"
\t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"
\t┃**********************************************************┃\n"
\t┃***┏━━━━━━━━━━━━━━━━━━━━━━━━┓***┃\n"
\t┃***┃************************************************┃***┃\n"
\t┃***┃*******┃***┃\n"
\t┃***┃***欢迎使用学生成绩管理系统****┃***┃\n"
\t┃***┃***电信七班刘萍****┃***┃\n"
\t┃***┃***2008.6.23****┃***┃\n"
\t┃***┗━━━━━━━━━━━━━━━━━━━━━━━━┛***┃\n"
\t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"
for(i=0;
i<
3;
i++)
{
\n请输入用户名:
"
gets(username);
\n请输入6位密码:
for(j=0;
(pwd[j]=getch())!
=13;
j++)
{
*"
if(j>
20)
break;
}
pwd[j]=0;
if((strcmp(username,"
0605020703"
)==0)&
&
(strcmp(pwd,"
123456"
)==0))
\n您已经成功登录\n"
k=1;
20;
."
Sleep(100);
}
cls"
homepage();
else
\n用户名或密码无效请重新输入:
\n"
continue;
if(k==0)
\n连续输入错误3次将退出程序\n"
Sleep(2000);
//quit();
}
structstudent{
longnum;
//学号
charname[NAME_LEN];
//姓名
floatchinese;
//语文成绩
floatmath;
//数学成绩
floatenglish;
//英语成绩
};
structstudent_type{
structstudentstu;
structstudent_type*next;
intn;
//学生个数
intnum_change=0;
//改动的记录还没有保存的个数
//输出测试信息
voidtestprint(char*message){
if(TEST)
printf("
%s\n"
message);
//将文件中的数据读入到链表中,返回指向链表的头指针
structstudent_type*readDate(){
FILE*fp;
if((fp=fopen(FILENAME,"
rb"
))==NULL){
can'
topenfile\n"
structstudentstud;
structstudent_type*head;
structstudent_type*p1,*p2;
n=0;
//p1=p2=(structstudent_type*)malloc(LEN);
head=NULL;
while(fread(&
stud,LEN_S,1,fp)==1){
n++;
//p1负责开辟新空间
p1=(structstudent_type*)malloc(LEN);
p1->
stu.num=stud.num;
for(inti=0;
NAME_LEN;
stu.name[i]=stud.name[i];
stu.chinese=stud.chinese;
stu.math=stud.math;
stu.english=stud.english;
next=NULL;
if(n==1){
p2=p1;
head=p2;
else{
//p2保存p1之前的数据
p2->
next=p1;
fclose(fp);
return(head);
//S----保存
structstudent_type*saveDate(structstudent_type*head){
if(num_change==0){
printf("
****当前没有改动需要保存!
****\n"
return(head);
structstudent_type*p;
p=head;
if((fp=fopen(FILENAME,"
wb"
return(head);
n=0;
//重新对记录条数记数
if(TEST)
saveDate(head)>
%d\n"
p);
if(head!
=NULL)
do{
if(fwrite(p,LEN_S,1,fp)!
=1){
filewriteerror\n"
}
else
n++;
p=p->
next;
}while(p!
=NULL);
fclose(fp);
num_change=0;
//保存了所有的记录,未保存数归零
保存成功!
共记%d条记录\n"
n);
//R----浏览
voidbrowse(){
FILE*fp;
structstudentstud;
\ncan'
if(n==0)
****没有记录****\n"
else{
\n学生成绩表\n"
==================================================\n"
学号姓名语文数学英语\n"
while(fread(&
--------------------------------------------------\n"
%8ld%-10s%-8.1f%-8.1f%-8.1f\n"
stud.num,stud.name,stud.chinese,
stud.math,stud.english);
//F----查找(查找学号为num的记录,返回指向那条记录的指针)
structstudent_type*find(structstudent_type*head,longnum){
if(head==NULL)//没有记录或学号为负了,学号应不小于为0
returnNULL;
structstudent_type*p1;
p1=head;
while(num!
=p1->
stu.num&
next!
=NULL){
//如果没找到所要的结点,并且没有到最后一下结点,p1后移一个结点
p1=p1->
if(num==p1->
stu.num){//找到了
return(p1);
returnNULL;
//A----增加
structstudent_type*add(structstudent_type*head){
structstudent_type*newstudent;
structstudent_type*p;
chart;
longnumstu;
//输入的学号
你将增加1条记录\n"
//不允许输入相同的学号
学号:
scanf("
%ld"
&
numstu);
if(numstu<
0){
输入错误!
学号应该不小于零!
\n增加记录失败!
intboolean=0;
//0-false,1-true(有重复学号出现)
boolean=0;
//文件中没有记录,即没有重复学号
structstudent_type*f=find(head,numstu);
if(f!
boolean=1;
else
if(boolean){
学号不能与库文件中的记录的学号相同!
\n可删除或修改已有记录。
newstudent=(structstudent_type*)malloc(LEN);
newstudent->
stu.num=numstu;
姓名:
%s"
newstudent->
stu.name);
%c"
t);
//接收回车
语文:
%f"
stu.chinese);
数学:
stu.math);
英语:
stu.english);
p=head;
head=newstudent;
next=p;
num_change++;
//增加没有保存的记录条数
增加了1条记录\n"
请输入S命令立即保存,否则会造成数据丢失!
//B----统计
#defineM4
#defineN3
{
floatstudent[M][N];
floataverage[M]={0};
inti,j;
M;
i++)
请输入学号为%d学生3门课的成绩"
i+1);
j<
N;
j++)
scanf("
student[i][j]);
average[i]+=student[i][j];
}
学号为%d个学生的平均成绩为%.2f\n"
i+1,average[i]/N);
return0;
//D----删除
structstudent_type*delDate(structstudent_type*head){
//删除可能删掉头指针,所以要返回头指针
if(head==NULL){
没有数据记录\n"
你将删除1条记录\n"
structstudent_type*p1,*p2;
longnum_s;
要删除的学生的学号:
num_s);
if(num_s<
\n删除记录失败!
p1=head;
while(num_s!
p2=p1;
p1=p1->
if(num_s==p1->
stu.num){
//显示查到的要删除的学生的信息
****将要删除的学生的信息****\n"
学号姓名语文数学英语\n"
p1->
stu.num,p1->
stu.name,p1->
stu.chinese,p1->
stu.math,p1->
if(p1==head){
head=p1->
p2->
next=p1->
删除了1条记录\n"
查无此人!
//M----修改
voidchangeDate(structstudent_type*head){
****没有数据!
return;
你将修改1条记录\n"
longnum_s,numstu;
//修改前的学号 , 修改后的学号
要作修改的学生的学号:
\n修改记录失败!
return;
if(n!
=0)
p=find(head,num_s);
//查找要修改的记录
if(n==0||p==NULL){
//显示查到的学生的信息
p->
stu.num,p->
stu.name,p->
stu.chinese,p->
stu.math,p->
*****修改:
*
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统