1、 题目:学生学籍管理系统 目录: 一、个人简介。 二、报告摘要。 三、报告目录。 四、报告正文。 1、系统需求分析 2、系统总体设计 3、系统详细设计 六、总结。 二、报告摘要 这个C语言课程设计就是关于学生学籍管理系统得设计,题目要求能够录入数据,查询,删除与排序得功能。报告依次以主函数板块、数据录入板块、查询板块、删除板块、排序板块得顺序进行。 三、报告目录 1 主函数 2 数据录入 3 查询 4 删除 5 排序
2、 四、报告正文 1 系统需求分析 根据题目需求,在程序中要求浏览学生得信息,应该提供数据录入、查询、删除、排序得操作。题目要求实得成绩、实得学分根据条件自动运算,应该提供求综合成绩与实得学分得算法,另外还应该提供键盘式选择菜单实现功能选择。 2 系统总体设计 数据录入 数据查询 删除数据 数据排序 学生学籍管理系统 3 系统详细设计 (1)主函数 负责提供输入、处理与输出部分得函数调用,其中各功能模块用菜单方式选择。 程序: void me
3、nu() {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 n
4、ew 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;
5、case 3:search by learn number();break; case 4:del();break; case 5:insert():break; case 6:exit(0);break; } } main() {menu(); } (2)数据录入板块 数据信息中学号、姓名等就是字符型,采用字符型数组,分数、号码、等为整数,可以采用整型数组,实得学分可能为小数,采用实型。采用结构体数组存放学生数据信息到文件。 程序: /*************************************************/ #def
6、ine 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
7、 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
8、 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+c
9、ou[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;
10、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、输入一个学号时,查出此学生所有课程情况。 程序:
11、/*******************************************************/ 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
12、 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中一
13、个学生信息时,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 14、eeded 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 15、)
{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",&w 16、0);
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; 17、
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;
}
18、
(6)公共函数//***********************************************************************
void printf_face1() //每次要输出文件1数据得时候用到(打印到数据得第一排,提示作用)
{ printf("\n 学号 姓名 性别 宿舍号码 电话号码\n");
}
//***********************************************************************
void printf_face() //每次要输出文件2数据得时候用到(打印到数 19、据得第一排,提示作用)
{ printf("\n 学号 课程编号 课程名称 学分 平时成绩 实验成绩 卷面成绩 综合成绩 实得分数\n");
}
//***********************************************************************
void printf_back() //返回函数
{ int w;
printf("\n\n\t数据输入成功^_^\n\n");
printf("选择需要实现得功能\n\n\t1)、浏览输入得数据\t2)、返回主菜单: [ ]\b\b");
20、 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; }
fo 21、r(i=0;i 22、
{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);
}






