C语言学生管理系统文档格式.docx
《C语言学生管理系统文档格式.docx》由会员分享,可在线阅读,更多相关《C语言学生管理系统文档格式.docx(36页珍藏版)》请在冰豆网上搜索。
![C语言学生管理系统文档格式.docx](https://file1.bdocx.com/fileroot1/2022-11/16/05818964-b02c-4977-b1d9-cef32e117b62/05818964-b02c-4977-b1d9-cef32e117b621.gif)
算法设计合理性
用户界面设计
报告书写认真程度
内容详实程度
文字表达熟练程度
回答问题准确度
简短评语
教师签名:
年月日
评分等级
备注
评分等级有五种:
优秀、良好、中等、及格、不及格
一.设计题目
学生成绩管理系统:
*C题目二:
学生管理系统(限最多4人完成)
使用下面的数据,用C/C++设计一个简单的学籍管理系统,实现出最基本的功能。
学生基本信息文件(A.TXT)及其内容:
A.TXT文件不需要编程录入数据,可用文本编辑工具直接生成
学号姓名性别宿舍号码电话号码
01张成成男50187732111
02李成华女10187723112
03王成凤女10187723112
04张明明男50287734333
05陈东男50187732111
06李果男50287734333
07张园园女10287756122
……...…………..
学生成绩基本信息文件(B.TXT)及其内容:
学号课程编号课程名称学分平时成绩实验成绩卷面成绩综合成绩实得学分
01A01大学物理3667882
02B03高等数学478-190
01B03高等数学445-188
02C01VF3657666
…….……….....…
(
(二)其它要求:
(1)只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读
(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)
(3)学生可自动增加新功能模块(视情况可另外加分)
二.课程设计目的
了解软件工程中的一些系统分析,模块分析,代码设计的概念,利用WIN-TC实现学生成绩管理系统的录入、查询、删除、统计等基本操作,使用单链表结构实现学生成绩管理,了解数据库管理的基本功能,掌握C语言中的结构体、指针、函数(系统函数、自定义函数)、文件操作等知识。
通过对系统的分析和设计,进一步巩固C语言的学习,以提高对开发环境的进一步认识和综合编程能力。
三、需求分析(格式:
宋体,4号,加粗,两端对齐)
一)功能要求及说明:
(1)数据录入功能:
对B.TXT进行数据录入,只录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据.综合成绩、学分由程序根据条件自动运算。
综合成绩的计算:
如果本课程的实验成绩为-1,则表示无实验,综合成绩=平时成绩*30%+卷面成绩*70%;
如果实验成绩不为-1,表示本课程有实验,综合成绩=平时成绩*15%+实验成绩*.15%+卷面成绩*70%.
实得学分的计算:
采用等级学分制.
综合成绩在90-100之间,应得学分=学分*100%综合成绩在80-90之间,应得学分=学分*80%
综合成绩在70-80之间,应得学分=学分*75%综合成绩在60-70之间,应得学分=学分*60%
综合成绩在60以下,应得学分=学分*0%
(2)查询功能:
分为学生基本情况查询和成绩查询两种
A:
学生基本情况查询:
A1----输入一个学号或姓名(可实现选择),查出此生的基本信息并显示输出。
A2---输入一个宿舍号码,可查询出本室所有的学生的基本信息并显示输出。
B:
成绩查询:
B1:
输入一个学号时,查询出此生的所有课程情况,格式如下:
学号:
xx姓名:
xxxxx
课程编号:
xxx课程名称:
xxxxx综合成绩:
xxxx实得学分:
xx
………………………
共修:
xx科,实得总学分为:
xxx
(3)删除功能:
当在A.TXT中删除一个学生时,自动地在B.TXT中删除此人所有信息。
(4)排序功能:
能实现选择按综合成绩或实得学分升序或降序排序并显示数据。
在该部分中叙述每个模块的功能要求
四、概要设计
(用文件直接进行初始化)
(先查找,再删除)
︱
我主要负责程序的信息查询和信息统计工作。
五、源程序代码(格式:
/*charch;
//******
students;
FILE*fp;
fp=fopen("
D:
\\B.TXT.txt"
"
wb+"
);
if(!
fp)
{
printf("
filecannotbeopened!
"
return
(1);
}
printf("
Enterrecords:
\n"
do
another(y/n)?
ch=getchar();
getchar();
if(ch=='
n'
)
break;
number:
"
gets(s.number);
name:
gets(s.name);
score:
(按大物、高数、VF次序输入)"
gets(s.chengji);
fwrite(&
student,sizeof(student),1,fp);
}while
(1);
fclose(fp);
return0;
*/
#defineH_STUDENT_HH
#include<
stdlib.h>
stdio.h>
string.h>
malloc.h>
#defineLENsizeof(structmessage_student)/*一个结构体数组元素的长度*/
/*学科数目*/
#definenumsubs3
typedefstructmessage_student/*结构体定义,定义一个学生结构体,里面是学生的基本成绩信息变量以及科目等成员*/
{
charnumber[10];
//xuehao
charnumber1[2];
floatxuefen;
floatusual;
floatjuanmian;
floatshiyan;
charname[20];
charsex[4];
floatsubject[numsubs];
floatscore;
floataverage;
intindex;
intchengji[4];
}
student;
intmenu_select();
/*函数声明*/
intopenfile(studentstu[]);
//打开文件
intfindrecord(studentstud[]);
//查找,通过字符串的比较来查询,并显示查询的结果
intwritetotext(studentstud[]);
//保存到文件
doubleqiufen(intx,inty,intz,doublem);
求学分
voidwelcome();
表头函数
voiddisplay1();
voidshowtable();
voidsort(studentstu[]);
排序
voiddeleterecord(studentstu[],inti);
删除函数,先查找,然后用修改的方式覆盖掉原有记录,并同时删除掉A.TXT里面的学生基本信息记录。
voidaddrecord(studentstud[]);
增加记录
voiddisplay(studentstud[],intn1,intn2);
显示查询到的记录
voidamendrecord(studentstud[]);
voidcount(studentstud[]);
voidsortnum(studentstud[]);
voidsortnum2(studentstud[]);
voidsortname(studentstud[]);
voidsortcount(studentstud[]);
voidsortcount2(studentstud[]);
排序函数,按学号、分数等,以及升降序排序,采用的是冒泡法排序
voidstatistic(studentstud[]);
doubleqiufen(intx,inty,intz,doublem)//m为课程的学分,xyz分别对应平时,卷面,实验成绩。
{
doublezh,xf;
intzho;
if((x<
0)||(y<
0)||(z<
0)||(m<
0))
plesaeretryenterscores!
else
if(z==-1)
zh=0.3*x+0.7*y;
zh=0.15*x+0.7*y+0.15*z;
zho=zh;
switch(zho/10)
case10:
case9:
xf=m;
break;
case8:
xf=0.8*m;
case7:
xf=0.75*m;
case6:
xf=0.6*m;
case5:
case4:
case3:
case2:
case1:
case0:
xf=0;
return(xf);
intmenu_select()
charc;
printf("
\n\n"
|1.增加学生记录5.统计信息|\n"
|2.查询学生记录6.打开文件|\n"
|3.修改学生记录7.保存文件|\n"
|4.学生纪录排序8.显示记录|\n"
|0.退出系统|\n"
pri