《C语言课设之学生学籍管理系统.doc》由会员分享,可在线阅读,更多相关《C语言课设之学生学籍管理系统.doc(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、题目:学生学籍管理系统 目录:一.个人简介。二.报告摘要。三.报告目录。四.报告正文。 1、系统需求分析 2、系统总体设计 3、系统详细设计六.总结。 二.报告摘要 这个C语言课程设计是关于学生学籍管理系统的设计,题目要求能够录入数据,查询,删除和排序的功能。报告依次以主函数板块、数据录入板块、查询板块、删除板块、排序板块的顺序进行。 三.报告目录 1 主函数 2 数据录入 3 查询 4 删除 5 排序 四.报告正文 1 系统需求分析 根据题目需求,在程序中要求浏览学生的信息,应该提供数据录入、查询、删除、排序的操作。题目要求实得成绩、实得学分根据条件自动运算,应该提供求综合成绩和实得学分的算
2、法,另外还应该提供键盘式选择菜单实现功能选择。 2 系统总体设计 数据录入数据查询删除数据数据排序 学生学籍管理系统 3 系统详细设计 (1)主函数 负责提供输入、处理和输出部分的函数调用,其中各功能模块用菜单方式选择。 程序: void menu() int n,w; do puts(tt*MENU*nn);puts(tttt1.enter new data-student);puts(tttt2.search by name);puts(tttt3.search by learn number);puts(tttt4.delete data);puts(tttt5.insert data)
3、;puts(tttt6.enter new data-sorce);puts(tttt6.exit);puts(nntt*n);printf(choice your number(1-9):bb);scanf(%d,&n);if(n9)w1=1;getchar(); else w1=0;while(w1=1);switch(n)case 1:enter();breakcase 2:search by name();break;case 3:search by learn number();break;case 4:del();break;case 5:insert():break;case 6
4、:exit(0);break;main()menu(); (2)数据录入板块 数据信息中学号、姓名等是字符型,采用字符型数组,分数、号码、等为整数,可以采用整型数组,实得学分可能为小数,采用实型。采用结构体数组存放学生数据信息到文件。程序:/*/#define N 10struct student int num; char name20; char sex; char tel20; char domi3;stuN;viod enter new data-student()int i,n;printf(hou many students(0-%d)?:,n-1);for(n=1;n10;n+)
5、printf(n enter data nownn);for(i=0;in;i+)printf(n input%dth student record.n,i+1);input(i);if(i!=0) save(n);printf_back();#define N 10struct course int num; int course_num; char coursename; int normalsorce int normal;平时成绩 int lab;实验成绩 int text;考试成绩 int ture;综合成绩 float act;实得学分couNvoid enter new data
6、-sorce()int i,n,z,c; float s; printf(how many num(0-%d)?: N-1); for(n=1;n10;n+) printf(n enter data nownn); for(i=0;in;i+) print(n input%dth record.n,i+1); input(i); if(i!=0) save(n); printf_back(); if(cou1.lab=-1) cou1.true=cou1.normal*0.3+cou1.text*0.7; else cou1.true=cou1.lab*0.15+cou1.normal*0.1
7、5+cou1.text*0.7; if(c=100) s=cou1.normalsorce*1; else c=cou1.text/10; switch(c) case 10: case 9:s=cou1.normalsorce*0.9;break; case 8:s=cou1.normalsorce*0.8;break; case 7:s=cou1.normalsorce*0.75;break; case 6:s=cou1.normalsorce*0.6;break; case 5: case 4: case 3: case 2: case 1: case 0:s=0;break; defa
8、ult:printf(errorn); coui.act=s; (3)数据查询 这个模块要求a.输入一个学号或姓名查讯学生的基本信息并显示输出;输入一个宿舍号码,可查出本室所有学生的基本信息并显示输出; c.输入一个学号时,查出此学生所有课程情况。程序:/*/Search()int i,n,k; Struct student s; Struct course c; n=load(); do do k=-1; printf(nnenter name that you want to search! name:); scanf(%s,s.name); printf _face(); do n=-1
9、; Printf(nnenter domi that you want to search! domi:) scanf(%d,s.domi); printf_ face(); do i=-1; printf(nnenter 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 co
10、urse c; FILE*fp; int i,n,k w0=1,w1,w2=0; n=load(); do k=-1; printf_face(); for(i=0,in;i+)if(i!=0)&(i%10=0) printf(nnremember no. which needed delete.Pass any key to contiune.); getch() puts(nn); printf_one(i); do printf(nnenter no. That you want to delete! no.); scanf(%s,s.num); for(i=0;in;i+) if(st
11、rcmp(s.num,stui.mum=0) k=i; s=stui; for(i=0,in,i+) if(strcmp(coui=stui) if(k=-1)printf(nnno exist!Please again); while(k=-1); printf_face();printf_one(k); w1=delete_data(k,n); if(w1=1) Printf(nsuccessful !nnare you delete another ?nnt1)yes 2)back with savetbb); scanf(%d,&w0); w2=1;else w0=0; if(w2=1
12、) stuk=sif(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;i9;i+) k=i;for(j=i+1;jcouk.true) k=j;s=coui.true;coui.true=couj.true;couj.true=s;for(m=0;m9;m+) p=m for(n=m+1;ncou.Actp)p=n; c= cou
13、.actm;cou.actm=cou.atcn;cou.actn=c; (6)公共函数/*void printf_face1() /每次要输出文件1数据的时候用到(打印到数据的第一排,提示作用) printf(n 学号 姓名 性别 宿舍号码 电话号码n); /*void printf_face() /每次要输出文件2数据的时候用到(打印到数据的第一排,提示作用) printf(n 学号 课程编号 课程名称 学分 平时成绩 实验成绩 卷面成绩 综合成绩 实得分数n); /*void printf_back() /返回函数 int w; printf(nnt数据输入成功_nn); printf(选
14、择需要实现的功能nnt1).浏览输入的数据t2).返回主菜单: bb); 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 filen); return NULL; for(i=0;i9)puts(Input error!Only be made up of(0-9).Please reinput!n); w1=1;break; if(w1!=1) for(k
15、=0;k 正否号入/)+= ;0 ;= ; 正是及在据数/ , *0 ) ) )!),) ( ( )= ( ) 0( ; ) ) .( ; ; 文 据入保/ *;) ;( = )& % ; :主回 数的浏)的实选 )成据 函回 ) *;)实 合绩成绩实绩分 程编程号 用作,的数打用据件文每/ *;)码号码舍 姓学 用示排一到(用据 文次 ( */共 . ; .= ; ) . .() 0;+= =+ ( = ; = ; ) ) ( + 0( ,( *序据据序排升分或综按实 排据 ( )= )( = =) 00 =) % ) ) =() )( ) _ ) ) ( =( ) = ()+ , ) )+
16、 ;=() ( ). ! ) ) ( ). . ( 0=% 0!+ , ) = ) 0 , , * ( *序除删息信 ,息一 .在目题 数删) ;) , , % ) - ;) _ ) . : ! ; ) ., ) ! = )( ( *序况程所此查学一. 输并的生室查码舍一出显信的查姓个输 块这 查数) . ; 0 . . . = ;. . = * = : ) 0 = . = ( 0 +. +0 0 . . . . = () )( ! ) )+,. +;0() ( +; ) ) ( ( - 学实; 成综 成成 成成 成平; ) ) )!) )+,. +; ) +0; ()-)%0 ,( - *序
17、件到信生存数采实,为可实数型以整、数组用型是姓号中 板录数()( 0 : : ; : ) ()= 0= ; |() ):( ) * ) . ( ) . ) ) . () ( ) ) )* * ( 序择式单模各其用的输处、提 主 设详 系管生 统管生 排数查录 统系 择能实择盘键还外算分绩成提应动自据实绩求目操排删查入据该信学览中,需根 析求统 正报 排排 删 查查 录数 函函 目告行序块排块、询块录、数以告报的除询据入求题计统管学于设课个 摘摘结设细、 设体系 分需系 文正录目要摘介人录统理籍生籍籍人要文 系设、摘课于计入询报数录排行告 数查 排 析,学该查排实据提分外择能 数生统 管 详主 输其各序 * ) ( ) ) (. *) )( ; ( ) ; 0 (数板中是数、数为实数信* -, 0)0+ ); .+! 成 ; ;+ )0 ,) ) . + =. = ) . . ; 数这输查显舍室的输查所* ) ) ; ! _) )数题 ,息序*( * , ) % ) ) ( ) )= ) ) ) )= 排 按排据* , ( ( ! ( ; =;(& 是 ;(
限制150内