C语言课设之学生学籍管理系统Word格式文档下载.docx
《C语言课设之学生学籍管理系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言课设之学生学籍管理系统Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。
负责提供输入、处理和输出部分的函数调用,其中各功能模块用菜单方式选择。
程序:
voidmenu()
{intn,w;
do
{
puts("
\t\t****************MENU******************\n\n"
);
\t\t\t\t1.enternewdata-student"
\t\t\t\t2.searchbyname"
\t\t\t\t3.searchbylearnnumber"
\t\t\t\t4.deletedata"
\t\t\t\t5.insertdata"
\t\t\t\t6.enternewdata-sorce"
\t\t\t\t6.exit"
\n\n\t\t************************************\n"
printf("
choiceyournumber(1-9):
[]\\b\b"
scanf("
%d"
&
n);
if(n<
1||n>
9)
{w1=1;
getchar();
}
elsew1=0;
}while(w1==1);
switch(n)
{case1:
enter();
break
case2:
searchbyname();
break;
case3:
searchbylearnnumber();
case4:
del();
case5:
insert():
case6:
exit(0);
main()
{menu();
(2)数据录入板块
数据信息中学号、姓名等是字符型,采用字符型数组,分数、号码、等为整数,可以采用整型数组,实得学分可能为小数,采用实型。
采用结构体数组存放学生数据信息到文件。
程序:
/*************************************************/
#defineN10
structstudent
{
intnum;
charname[20];
charsex;
chartel[20];
chardomi[3];
}stu[N];
viodenternewdata-student()
{inti,n;
printf("
houmanystudents(0-%d)?
:
"
n-1);
for(n=1;
n<
10;
n++)
\nenterdatanow\n\n"
for(i=0;
i<
n;
i++)
{printf("
\ninput%dthstudentrecord.\n"
i+1);
input(i);
if(i!
=0)save(n);
printf_back();
structcourse
intcourse_num;
charcoursename[];
intnormalsorce[]
intnormal;
\\平时成绩
intlab;
\\实验成绩
inttext;
\\考试成绩
intture[];
\\综合成绩
floatact[];
\\实得学分
}cou[N]
voidenternewdata-sorce()
{inti,n,z,c;
floats;
howmanynum(0-%d)?
"
N-1);
for(n=1;
printf(\nenterdatanow\n\n"
for(i=0;
{print("
\ninput%dthrecord.\n"
input(i);
}
if(i!
printf_back();
if(cou[1].lab==-1)cou[1].true=cou[1].normal*0.3+cou[1].text*0.7;
elsecou[1].true=cou[1].lab*0.15+cou[1].normal*0.15+cou[1].text*0.7;
if(c=100)s=cou[1].normalsorce*1;
elsec=cou[1].text/10;
switch(c)
{case10:
case9:
s=cou[1].normalsorce*0.9;
case8:
s=cou[1].normalsorce*0.8;
case7:
s=cou[1].normalsorce*0.75;
case6:
s=cou[1].normalsorce*0.6;
case5:
case4:
case3:
case2:
case1:
case0:
s=0;
default:
error\n"
cou[i].act=s;
(3)数据查询
这个模块要求a.输入一个学号或姓名查讯学生的基本信息并显示输出;
输入一个宿舍号码,可查出本室所有学生的基本信息并显示输出;
c.输入一个学号时,查出此学生所有课程情况。
/*******************************************************/
Search()
{inti,n,k;
Structstudents;
Structcoursec;
n=load();
{
do{k=-1;
\n\nenternamethatyouwanttosearch!
name:
%s"
s.name);
printf_face();
do{n=-1;
Printf("
\n\nenterdomithatyouwanttosearch!
domi:
)
s.domi);
printf_face();
do{i=-1;
\n\nenternumthatyouwanttosearch!
num"
%d%c%d%f"
c.num,c.coursename,c.ture,c.act);
printf_face();
(4)删除数据
题目要求在删除A.TXT中一个学生信息时,B.TXT中相应的信息也要被删除。
/*********************************************************/
voiddel()
{structstudents
sturctcoursec;
FILE*fp;
inti,n,kw0=1,w1,w2=0;
k=-1;
for(i=0,i<
=0)&
&
(i%10==0)
{printf("
\n\nrememberno.whichneededdelete.Passanykeytocontiune..."
getch()
\n\n"
printf_one(i);
do
\n\nenterno.Thatyouwanttodelete!
no."
s.num);
i++)
if(strcmp(s.num,stu[i].mum==0))
{k=i;
s=stu[i];
[for(i=0,i<
n,i++)
{if(strcmp(cou[i]==stu[i]))
if(k==-1)printf("
\n\nnoexist!
Pleaseagain"
}
while(k==-1);
printf_one(k);
w1=delete_data(k,n);
if(w1==1)
\nsuccessful!
\n\nareyoudeleteanother?
\n\n\t1)yes2)backwithsave\t\b\b"
w0);
w2=1;
else
{w0=0;
if(w2==1)
stu[k]=s
if(w0!
=1&
w2==1)
save(n);
while(w0==1);
menu()
(5)数据排序
能实现选择按综合成绩或实得学分升序或降序排序并显示数据。
/*************************************************************/
voidorder()
{inti,j,k;
intm,n,p;
structcourses;
structcoursec;
9;
for(j=i+1;
j<
j++)if(cou[j].true>
cou[k].true)k=j;
s=cou[i].true;
cou[i].true=cou[j].true;
cou[j].true=s;
for(m=0;
m<
m++)
{p=m
for(n=m+1;
n++)if(cou.act[n]>
cou.Act[p])p=n;
c=cou.act[m];
cou.act[m]=cou.atc[n];
cou.act[n]=c;
(6)公共函数//***********************************************************************
voidprintf_face1()//每次要输出文件1数据的时候用到(打印到数据的第一排,提示作用)
{printf("
\n学号姓名性别宿舍号码电话号码\n"
//***********************************************************************
voidprintf_face()//每次要输出文件2数据的时候用到(打印到数据的第一排,提示作用)
\n学号课程编号课程名称学分平时成绩实验成绩卷面成绩综合成绩实得分数\n"
voidprintf_back()//返回函数
{intw;
\n\n\t数据输入成功^_^\n\n"
选择需要实现的功能\n\n\t1).浏览输入的数据\t2).返回主菜单:
[]\b\b"
w);
if(w==1)browse();
elsemenu();
intsave(intn)//保存输入的数据到txt文档
{FILE*fp;
inti;
if((fp=fopen("
Pro.txt"
"
wb"
))==NULL)
\nCannotopenfile\n"
returnNULL;
if(course[i].num!
=0)
if(fwrite(&
course[i],sizeof(structcourse),1,fp)!
=1)printf("
filewriteerror\n"
fclose(fp);
return0;
}
voidno_input(inti,intn)//检查输入数据是否存在以及编号是否正确
{intj,k,w1;
{w1=0;
for(j=0;
course[i].num[j]!
='
\0'
;
j++)//判断输入编号格式是否正确
if(course[i].num[j]>
'
9'
)
{puts("
Inputerror!
Onlybemadeupof(0-9).Pleasereinput!
\n"
w1=1;
if(w1!
=1)
for(k=0;
k<
k++)if(k!
=i&
strcmp(course[k].num,course[i].num)==0)//判断此编号是否存在
Thisrecordisexist.pleasereinput!
}while(w1==1);