资源描述
题目:学生学籍管理系统
目录:
一、个人简介。
二、报告摘要。
三、报告目录。
四、报告正文。
1、系统需求分析
2、系统总体设计
3、系统详细设计
六、总结。
二、报告摘要
这个C语言课程设计就是关于学生学籍管理系统得设计,题目要求能够录入数据,查询,删除与排序得功能。报告依次以主函数板块、数据录入板块、查询板块、删除板块、排序板块得顺序进行。
三、报告目录
1 主函数
2 数据录入
3 查询
4 删除
5 排序
四、报告正文
1 系统需求分析
根据题目需求,在程序中要求浏览学生得信息,应该提供数据录入、查询、删除、排序得操作。题目要求实得成绩、实得学分根据条件自动运算,应该提供求综合成绩与实得学分得算法,另外还应该提供键盘式选择菜单实现功能选择。
2 系统总体设计
数据录入
数据查询
删除数据
数据排序
学生学籍管理系统
3 系统详细设计
(1)主函数
负责提供输入、处理与输出部分得函数调用,其中各功能模块用菜单方式选择。
程序:
void menu()
{int n,w;
do
{
ﻩputs("\t\t****************MENU******************\n\n");
puts("\t\t\t\t1、enter new data-student");
puts("\t\t\t\t2、search by name");
ﻩputs("\t\t\t\t3、search by learn number");
puts("\t\t\t\t4、delete data");
ﻩputs("\t\t\t\t5、insert data");
ﻩputs("\t\t\t\t6、enter new data-sorce");
puts("\t\t\t\t6、exit");
ﻩputs("\n\n\t\t************************************\n");
ﻩprintf("choice your number(1-9):[]\\b\b");
ﻩscanf("%d",&n);
ﻩif(n<1||n>9)
ﻩ{w1=1;getchar();}
else w1=0;
}while(w1==1);
switch(n)
{case 1:enter();break
case 2:search by name();break;
case 3:search by learn number();break;
case 4:del();break;
case 5:insert():break;
case 6:exit(0);break;
}
}
main()
{menu();
}
(2)数据录入板块
数据信息中学号、姓名等就是字符型,采用字符型数组,分数、号码、等为整数,可以采用整型数组,实得学分可能为小数,采用实型。采用结构体数组存放学生数据信息到文件。
程序:
/*************************************************/
#define N 10
struct student
{
int num;
char name[20];
char sex;
char tel[20];
char domi[3];
}stu[N];
viod enter new data-student()
{int i,n;
printf("hou many students(0-%d)?:",n-1);
for(n=1;n<10;n++)
printf("\n enter data now\n\n");
for(i=0;i<n;i++)
{printf("\n input%dth student record、\n",i+1);
input(i);
}
if(i!=0) save(n);
printf_back();
}
#define N 10
struct course
{
int num;
int course_num;
char coursename[];
int normalsorce[]
int normal;\\平时成绩
int lab;\\实验成绩
int text;\\考试成绩
int ture[];\\综合成绩
float act[];\\实得学分
}cou[N]
void enter new data-sorce()
{int i,n,z,c;
float s;
printf("how many num(0-%d)?: "N-1);
for(n=1;n<10;n++)
printf(\n enter data now\n\n");
for(i=0;i<n;i++)
{print("\n input%dth record、\n",i+1);
input(i);
}
if(i!=0) save(n);
printf_back();
if(cou[1]、lab==-1) cou[1]、true=cou[1]、normal*0、3+cou[1]、text*0、7;
else cou[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;
else c=cou[1]、text/10;
switch(c)
{case 10:
case 9:s=cou[1]、normalsorce*0、9;break;
case 8:s=cou[1]、normalsorce*0、8;break;
case 7:s=cou[1]、normalsorce*0、75;break;
case 6:s=cou[1]、normalsorce*0、6;break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:s=0;break;
default:printf("error\n"); }
cou[i]、act=s;
}
(3)数据查询
这个模块要求a、输入一个学号或姓名查讯学生得基本信息并显示输出;输入一个宿舍号码,可查出本室所有学生得基本信息并显示输出; c、输入一个学号时,查出此学生所有课程情况。
程序:
/*******************************************************/
Search()
{int i,n,k;
Struct student s;
Struct course c;
n=load();
do
{
do {k=-1;
printf("\n\nenter name that you want to search! name:");
scanf("%s",s、name);
printf _face();}
do {n=-1;
Printf("\n\nenter domi that you want to search! domi:")
scanf("%d",s、domi);
printf_ face();}
do {i=-1;
printf("\n\nenter num that you want to search! num ");
scanf("%d%c%d%f",c、num,c、coursename,c、ture,c、act);
printf_face();}
}
}
(4)删除数据
题目要求在删除A、TXT中一个学生信息时,B、TXT中相应得信息也要被删除。
程序:
/*********************************************************/
void del()
{struct student s
sturct course c;
;
int i,n,k w0=1,w1,w2=0;
n=load();
do
{
k=-1;
printf_face();
for(i=0,i<n;i++)
if(i!=0)&&(i%10==0)
{printf("\n\nremember no、 which needed delete、Pass any key to contiune、、、");
getch()
puts("\n\n");
}
printf_one(i);
}
do
{printf("\n\nenter no、 That you want to delete! no、");
scanf("%s",s、num);
for(i=0;i<n;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\nno exist!Please again");
}
while(k==-1);
printf_face();printf_one(k);
w1=delete_data(k,n);
if(w1==1)
Printf("\nsuccessful !\n\nare you delete another ?\n\n\t1)yes 2)back with save\t\b\b");
scanf("%d",&w0);
w2=1;
}
else
{w0=0;
if(w2==1)
stu[k]=s
}
if(w0!=1&&w2==1)
save(n);
}
while(w0==1);
menu()
}
(5)数据排序
能实现选择按综合成绩或实得学分升序或降序排序并显示数据。
程序:
/*************************************************************/
void order()
{int i,j,k;
int m,n,p;
struct course s;
struct course c;
for(i=0;i<9;i++)
{k=i;
for(j=i+1;j<10;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<9;m++)
{p=m
for(n=m+1;n<10;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)公共函数//***********************************************************************
void printf_face1() //每次要输出文件1数据得时候用到(打印到数据得第一排,提示作用)
{ printf("\n 学号 姓名 性别 宿舍号码 电话号码\n");
}
//***********************************************************************
void printf_face() //每次要输出文件2数据得时候用到(打印到数据得第一排,提示作用)
{ printf("\n 学号 课程编号 课程名称 学分 平时成绩 实验成绩 卷面成绩 综合成绩 实得分数\n");
}
//***********************************************************************
void printf_back() //返回函数
{ int w;
printf("\n\n\t数据输入成功^_^\n\n");
printf("选择需要实现得功能\n\n\t1)、浏览输入得数据\t2)、返回主菜单: [ ]\b\b");
scanf("%d",&w);
if(w==1) browse();
else menu();
}
//***********************************************************************
int save(int n) //保存输入得数据到txt文档
{FILE *fp;
int i;
if((fp=fopen("Pro、txt","wb"))==NULL)
{printf("\nCannot open file\n");
return NULL; }
for(i=0;i<n;i++)
if(course[i]、num!=0)
if(fwrite(&course[i],sizeof(struct course),1,fp)!=1) printf(" error\n");
fclose(fp); return 0;
}
//***********************************************************************
void no_input(int i,int n) //检查输入数据就是否存在以及编号就是否正确
{int j,k,w1;
do
{w1=0;
for(j=0;course[i]、num[j]!='\0';j++) //判断输入编号格式就是否正确
if(course[i]、num[j]>'9')ﻩ
{puts("Input error!Only be made up of(0-9)、Please reinput!\n");
w1=1;break; }
if(w1!=1)
for(k=0;k<n;k++) if(k!=i&&strcmp(course[k]、num,course[i]、num)==0) //判断此编号就是否存在
{puts("This record is exist、please reinput!\n"); }
} while(w1==1);
}
展开阅读全文