c语言学生成绩管理系统Word格式.docx
- 文档编号:19010358
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:29
- 大小:303.39KB
c语言学生成绩管理系统Word格式.docx
《c语言学生成绩管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《c语言学生成绩管理系统Word格式.docx(29页珍藏版)》请在冰豆网上搜索。
◎inputchoice()教师用主菜单
◎inputchoice_stu()学生用主菜单
◎inputchoice1()教师用信息维护菜单
◎inputchoice2()教师用信息查询菜单
◎Enter()用户登录
◎Modify()密码及用户名修改
◎getlogcount()获取文件记录总数
◎ListAllLog()读取所有信息(教师使用)
◎read_name()按姓名查询信息(教师使用)
◎read_num()按学号查询信息(教师使用)
◎find_stu()个人信息查询(学生使用)
◎Addnewlog()添加学生信息(教师使用)
◎change()修改信息
◎del()删除信息(教师使用)
◎copy()复制账单(教师使用)
◎delet()清空账单信息(教师使用)
◎order()账单信息排序(教师使用)
◎sort()排序关键字选择(教师使用)
◎census1()学生信息统计(教师使用)
◎census()学生信息统计选择菜单(教师使用)
◎choice_user()用户类型选择
◎choice1()信息维护菜单选择操作(教师使用)
◎choice2()信息查询菜单选择操作(教师使用)
◎choice()主菜单选择操作
3.功能模块分析
(1)头文件、结构体定义
#include"
stdio.h"
stdlib.h"
string.h"
windows.h"
#defineM20//学生人数
longsize,Size;
//结构体长度
charch[15];
//保存登陆的学生学号
typedefstructLogData
{charlogid[10];
//记录学号
charname[10];
//姓名
doubleXinhao;
//信号
doubleModian;
//模电
doubleEnglish;
//英语
}ListNode;
typedefstructnode
{charpass[10];
//密码
//用户名
}Node;
(2)菜单选择模块
以信息维护菜单(教师使用)为例:
通过调用函数inputchoice1(),在屏幕上显示
voidinputchoice1()
{
printf("
#####################信息维护菜单##################\n"
"
#0:
退出信息维护#\n"
#1:
返回信息维护菜单#\n"
#2:
添加学生信息#\n"
#3:
修改学生信息#\n"
#4:
删除学生信息#\n"
#5:
复制账单信息#\n"
#6:
清空信息记录#\n"
#####################################################\n\n"
);
}
用switch选择菜单选项,再调用函数
voidchoice2(FILE*fp)
{
intchoice;
while(choice!
=0)
{
请选择信息查询所需功能:
"
scanf("
%d"
&
choice);
switch(choice)
{
case1:
//返回信息查询菜单
inputchoice2();
break;
case2:
//查询文件记录总数
getlogcount(fp);
break;
case3:
//查询所有信息
ListAllLog(fp);
case4:
//按姓名查询信息
read_name(fp);
case5:
//按学号查询信息
read_num(fp);
default:
输入序号错误或则你选择了退出查询功能,程序将自动返回主菜单选择功能!
\n"
inputchoice();
}
(3)用户名及密码模块
此模块有力的保证了系统用户数据的安全性。
用户登录时,密码验证:
printf("
请输入用户名:
%s"
a);
getchar();
请输入密码:
b);
for(intt=0;
t<
10;
t++)
ch[t]=a[t];
//将登录成功的用户名保存在全局变量中
while(success==1||j<
i-1)
m=strcmp(log[j].name,a);
n=strcmp(log[j].pass,b);
j++;
if(m==0&
&
n==0)
success=1;
*s=j;
//保存用户名的位置
if(success==1)
********** 登录成功,进入学生成绩管理系统!
*********\n"
else
*******用户名不存在或密码错误!
请重新登录!
********\n"
密码即用户名修改:
intModify(FILE*fp1,FILE*fp2,intk)
{//密码及用户名修改
inti=0,j=0,success=0;
Nodelog[M];
ints=0;
charname[10];
charpassword[10],password1[10];
charname1[10],password2[10];
if(k==1)//获取教师密码文件信息
if((fp1=fopen("
f1.txt"
"
r"
))==NULL)
{printf("
cannotopenfilef1.txt!
exit(0);
fseek(fp1,Size+4,SEEK_SET);
while(!
feof(fp1))
fscanf(fp1,"
%s%s"
log[i].name,log[i].pass);
i++;
if(k==2)//获取学生密码文件信息
if((fp2=fopen("
f2.txt"
cannotopenfilef2.txt!
fseek(fp2,Size+4,SEEK_SET);
feof(fp2))
fscanf(fp2,"
*********** 正在进入密码修改界面!
****************\n"
********请先输入原用户名及密码再进行修改!
if(Enter(fp1,fp2,k,&
s)!
if(k==1)
if((fp1=fopen("
w"
{printf("
error\n"
}
if(k==2)
if((fp2=fopen("
请输入新的用户名(不超过十个字符,汉字按两个字符计算):
name);
if(k==2)//学生用户只能更改密码
学生用户名只能使用学号,不允许修改!
请输入新的密码(不超过十个字符,汉字按两个字符计算):
password);
请再次输入密码确认:
password1);
if(strcmp(password,password1)==0)//修改成功,写入新用户名及密码
*****************密码输入正确!
****************\n"
{
if(k==1)
log[s-1].name[t]=name[t];
log[s-1].pass[t]=password[t];
fseek(fp1,0,SEEK_SET);
if(k==1)fprintf(fp1,"
用户名密码\n"
if(k==2)fprintf(fp2,"
for(t=0;
i-1;
{if(k==1)
fprintf(fp1,"
%10s%10s\n"
log[t].name,log[t].pass);
fprintf(fp2,"
*****************修改成功!
*******************\n"
success=1;
else//修改失败,写入原用户名及密码
***********修改失败:
两次密码输入不相同!
**********\n"
fputs(name1,fp1);
fputc('
\n'
fp1);
fputs(password2,fp1);
if(fclose(fp1))
{
cannotclosef2.txt!
if(fclose(fp2))
returnsuccess;
(4)信息维护模块
此模块可以添加学生信息、修改学生信息、删除学生信息、复制账单信息以及清空信息记录,是此系统的主要功能模块。
添加的新信息将自动保存在list.txt文件中,复制的信息将自动保存在list1.txt文件中。
添加学生信息:
voidAddnewlog(FILE*cfptr)
ListNodelog;
longlogcount=0;
if((cfptr=fopen("
list.txt"
a"
printf("
cannotopenfilelist.dat!
logcount=getlogcount(cfptr);
--请依次输入姓名学号信号模电英语--\n"
%s%s%lf%lf%lf"
log.name,&
log.logid,&
log.Xinhao,&
log.Modian,&
log.English);
fseek(cfptr,0L,SEEK_END);
fprintf(cfptr,"
%10s%8s%3.1lf%3.1lf%3.1lf\n"
log.name,log.logid,log.Xinhao,log.Modian,log.English);
fclose(cfptr);
*********************信息添加成功*********************\n"
修改学生信息:
voidchange(FILE*cfptr)
intsuccess=0;
chara[20];
intb;
r+"
################欢迎进入修改信息界面###############\n"
退出信息修改#\n"
按姓名修改信息#\n"
按学号修改信息#\n"
请按上述提示选择您所需的操作;
scanf("
if(choice==0)
您选择了退出信息修改功能,程序自动返回信息维护界面!
return;
elseif(choice==1)
请输入姓名:
scanf("
elseif(choice==2)
请输入学号:
您输入的指令符错误,程序自动返回信息维护界面!
longcount=getlogcount(cfptr);
fseek(cfptr,size,SEEK_SET);
while(count>
0&
success==0)
count--;
fscanf(cfptr,"
if((strcmp(log.name,a)==0&
choice==1)||(strcmp(log.logid,a)==0&
choice==2))
******************修改前的信息****************\n"
姓名学号信号模电英语\n"
%10s%10s%3.1lf%3.1lf%3.1lf\n"
0.修改所有关键字,,修改语文,修改数学,修改英语"
b);
if(b==1)
{
printf("
请输入修改后的信号成绩:
%lf"
log.Xinhao);
}
elseif(b==2)
请输入修改后的模电成绩:
log.Modian);
}
elseif(b==3)
请输入修改后的英语成绩:
elseif(b==0)
请输入修改后的信息\n"
printf("
return;
fseek(cfptr,-size+1,SEEK_CUR);
success=1;
*********************信息修改成功********************\n"
if(success=0)
*********************信息修改失败********************\n"
删除学生信息:
voiddel(FILE*fp)
FILE*fp1;
longcount,n;
inti=0,j=0;
chara[20],b[100]={"
};
ListNodelog[M];
charc;
intm=0;
if((fp=fopen("
cannotopenfilelist.txt!
copy.txt"
while(!
feof(fp))
c=fgetc(fp);
fputc(c,fp1);
fclose(fp);
fclose(fp1);
count=getlogcount(fp1);
n=count;
fseek(fp1,size,SEEK_SET);
i<
M)
{count--;
log[i].name,&
log[i].logid,&
log[i].Xinhao,&
log[i].Modian,&
log[i].English);
i++;
请输入要删除的姓名或学号:
a);
while(b[j]!
='
\0'
)
c=b[j];
fputc(c,fp);
for(i=0;
n;
i++)
if(strcmp(log[i].name,a)!
=0&
strcmp(log[i].logid,a)!
fprintf(fp,"
log[i].name,log[i].logid,log[i].Xinhao,log[i].Modian,log[i].English);
m++;
if(m<
n)
******************%s信息删除成功*****************\n"
删除失败,文件中不存在%s的信息!
if(fclose(fp))
cannotclosethefile!
fp1=fopen("
//清空辅助文件copy.txt
(5)信息查询模块
此模块可以获取文件记录总数、查询所有信息、按姓名查询信息、按学号查询信息,可以方便教师迅速的查到学生的各科成绩。
查询全部信息:
voidListAllLog(FILE*cfptr)
longcount;
------------------所有学生信息-----------------------\n"
count=getlogcount(cfptr);
fs
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学生 成绩管理系统