题目:学生学籍管理系统
目录:
一.个人简介。 二.报告摘要。 三.报告目录。 四.报告正文。
1、系统需求分析 2、系统总体设计 3、系统详细设计 六.总结。
二.报告摘要
这个C语言课程设计是关于学生学籍管理系统的设计,题目要求能够录入数据,查询,删除和排序的功能。报告依次以主函数板块、数据录入板块、查询板块、删除板块、排序板块的顺序进行。
三.报告目录 1 主函数 2 数据录入 3 查询 4 删除 5 排序
四.报告正文
1 系统需求分析
整理为word格式
根据题目需求,在程序中要求浏览学生的信息,应该提供数据录入、查询、删除、排序的操作。题目要求实得成绩、实得学分根据条件自动运算,应该提供求综合成绩和实得学分的算法,另外还应该提供键盘式选择菜单实现功能选择。
2 系统总体设计
学生学籍管理系统
数据排序 删除数据 数据查询 数据录入
3 系统详细设计 (1)主函数
负责提供输入、处理和输出部分的函数调用,其中各功能模块用菜单方式选择。 程序: void menu() {int n,w; do {
puts(\"\\****************MENU******************\\n\\n\"); puts(\"\\\\1.enter new data-student\"); puts(\"\\\\2.search by name\"); puts(\"\\\\3.search by learn number\"); puts(\"\\\\4.delete data\"); puts(\"\\\\5.insert data\");
puts(\"\\\\6.enter new data-sorce\"); puts(\"\\\\6.exit\");
puts(\"\\n\\n\\************************************\\n\"); printf(\"choice your number(1-9):[]\\\\b\\b\"); scanf(\"%d\ if(n<1||n>9) {w1=1;getchar();}
整理为word格式
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)?:\ for(n=1;n<10;n++)
整理为word格式
printf(\"\\n enter data now\\n\\n\"); for(i=0;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 if(i!=0) save(n); 整理为word格式 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 { 整理为word格式 do {k=-1; printf(\"\\n\\nenter name that you want to search! name:\"); scanf(\"%s\ printf _face();} do {n=-1; Printf(\"\\n\\nenter domi that you want to search! domi:\") scanf(\"%d\ printf_ face();} do {i=-1; printf(\"\\n\\nenter num that you want to search! num \"); scanf(\"%d%c%d%f\ printf_face();} } } (4)删除数据 题目要求在删除A.TXT中一个学生信息时,B.TXT中相应的信息也要被删除。 程序: /*********************************************************/ void del() {struct student s sturct course c; FILE*fp; int i,n,k w0=1,w1,w2=0; n=load(); do { k=-1; printf_face(); for(i=0,i {printf(\"\\n\\nremember no. which needed delete.Pass any key to contiune...\"); 整理为word格式 getch() puts(\"\\n\\n\"); } printf_one(i); } do {printf(\"\\n\\nenter no. That you want to delete! no.\"); scanf(\"%s\ for(i=0;i [for(i=0,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\1)yes 2)back with save\\\b\\b\"); scanf(\"%d\ w2=1; } else {w0=0; if(w2==1) stu[k]=s } if(w0!=1&&w2==1) save(n); } 整理为word格式 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数据的时候用到(打印到数据的第一排,提示作用) 整理为word格式 { printf(\"\\n 学号 课程编号 课程名称 学分 平时成绩 实验成绩 卷面成绩 综合成绩 实得分数\\n\"); } //*********************************************************************** void printf_back() //返回函数 { int w; printf(\"\\n\\n\数据输入成功^_^\\n\\n\"); printf(\"选择需要实现的功能\\n\\n\1).浏览输入的数据\2).返回主菜单: [ ]\\b\\b\"); scanf(\"%d\ if(w==1) browse(); else menu(); } //*********************************************************************** int save(int n) //保存输入的数据到txt文档 {FILE *fp; int i; if((fp=fopen(\"Pro.txt\ {printf(\"\\nCannot open file\\n\"); return NULL; } for(i=0;i fclose(fp); return 0; } 整理为word格式 //*********************************************************************** 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 友情提示:本资料代表个人观点,如有帮助请下载,谢谢您的浏览! 整理为word格式 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务