庞大的反义词-bully什么意思

C
语言学生学习成绩管理系统实验报告
学生学习成绩管理系统
1.
课程设计的目的
1
.对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。
2
.掌握
自顶而下的设计方法,将大问题进行模块化,领会结构化程序设计的方法。
3
.熟练掌握
C
语言的基本语法,灵活运用各种数据类型。
4
.进一步掌握在集成环境下如何调试程序(单步调试,设置断点、观察
表达式,分块调试)和修改程序。
2.
课程设计的要求
1
.程序在运行时,均以菜单形式提供选择界面,并提供一定的数据安全
和提示具有良好的交互功能。
2
.设计中的每一个小功能均由子函数来完成
3
.提前编制下次调试的程序,对于难点问题要积极查阅相关教材、资料,计划好每次上
机的内
,高效、独立地完成这次设计任务
4
.在硬盘上建立自 己的目录,将程序文件存储到该目录下,即有利于调试文件,又保证
了文件的安全性。
3.
课程设计报告内容
3.1
任务定义
本系统主要应用数据结构 的设计思想,在
TC
环境下运用
C
语言进行编程设计一个学生成
绩管 理系统,该系统主要实现对学生的学号、姓名等自然信息以及学生成绩信息进行创建、
增加、删除、查询 、插入、显示的功能以及计算所有学生总成绩的总分,并依照学生各类
信息高低进行排名的功能。系统给 用户提供了一个简单的人机界面,使用户可以根据提示
输入操作项,调用系统提供的管理功能。
3.2
系统运行环境
操作系统:
Windows 98/2000/XP
运行软件:
TC
3.3
功能需求(问题分析)
学生成绩管理系统为教师和学生提供了一个对 学生自然信息和学科成绩进行管理和查看的
平台,给用户提供了一个简单友好的用户接口,功能需求分析 描
(
1
)编写菜单函数,为用户提供一个友好的操作选择界面。
(
2
)学生信息输入:用户根据提示输入学生的学号、姓名、各科成绩,可一次
性输入多条学生的成绩信息记录;当要停止输入并退回主菜单时,只须输入
0
符号 回车
即可。
(
4
)学生信息删除:提示用户输入要删除的学生学号 或姓名,如果输入的学号
不存在,系统会立即提示不存在该学号的学生请先添加。
(
6
)学生信息添加(插入):使用户可以根据提示在原有的学生成绩表中的任何
位置添加新的学生信息记录。
(
7
)学生信息查询:根据系 统提示输入要查找的学生名字或学号回车后,即可
显示已找到的学生信息记录。
(
8
)学生成绩计算:系统能够自动计算所有学生的总成绩。
(< br>9
)学生成绩排序:按照
系统提示选择项目进行从高分到低分排序。
(
10
)学生信息清单显示:系统显示所有学生的信息情况,包括学生学号、姓名、各科
成绩、个人总成绩。
(
11
)系统退出:实现用户退出本系统的功能。
3.4
程序设计步骤
1.
大体结构图
2.
主程序模块分析
整个系统功能共分八个功能
: dent
学生信息添加
udent
学生信息修改
dent
信息清单删除
udent
学生信息排序
udent
学生成绩查找
udent
载入文件信息
udent
学生信息保存
系统退出
以上八个功能就是本系统模块的主要功能,根据需求分析,对其进行功能逻辑设计:
(
1
)定义数据结构
typedef struct student{ ??}stu;
。以下分别要用到的函数为:菜单函数
void showmenu()
的函数,定位链表中符合要求的接点
stu* Locate(stu *s,char find[],int k)
用于插入和查找功能,删除记录函数
status delstudent(stu *s)
,显示所有记录的函数
void
show(stu *s,int k)
,显示学号对应的姓名
void showid(stu *s))
,排序函数
status list(stu
*s,int k),
添加记录函数
status addstudent(stu *s),
查询函数
status findstudent(stu *s)
载入
文件信息
status loadstudent(stu *s),
保存学生
status savestudent(stu *s),
关闭
exit(0);
(
2
)学生信息输入:实现可以输入学生的学号、姓名、 各科成绩的功能。首先定义指向
结构体的指针,动态申请空间;用
if(k == 0) br eak;
实现当学号首字符为
0
则结束输入的
功能;在
for
循环中嵌套
while{}{}
,实现
N
门课程循环
N
次 和成绩正确输入
,
接着用到了
数据结构的新结点插入的知识。
(< br>3
)学生信息删除:实现输入要删除的学生学号,执行后就可以删除该学生所有信息。
该 功能用到
status delstudent(stu *s)
删除记录的函数
,< br>先定义
p
为查找到要删除的结点指
针
,
如果还没信息则显示添 加,函数返回到
Locate
,否则通过
while(r->next != p) r = r-
>next; r->next = p->next; free(p)
;确定要删除的项目。
(
4
)学生信息清单显示: 系统显示所有学生的信息情况,包括学生编号、学号、姓名、
各科成绩、个人总成绩。这里用到显示函数 实现输出链表中结点信息的功能。
(
5
)学生信息查询:根据系统提示输入 要查找的学生名字或学号回车后,即可以排列的
形式显示已找到的学生信息记录,接着自动跳到主菜单。 用到
status
findstudent(stu *s)
查找函数。
(
6
)学生成绩计算:利用
allscore=mscore+escore+cscore
求得
.
(
7
)学生信息添加:直
接用用
addstudent
函数添加。
< br>(
8
)学生成绩排序:选择并执行该功能后,系统提示使按学号,各科成绩或总成绩排列 ,
选择后系统自动按降序排列。
(
9
)系统退出:实现用户退出本 系统的功能。其实这里只用到了一个
exit(0); 3.5
流程图
3.6
详细设计
1.
函数原型
void showmenu()
菜单函数
stu* Locate(stu *s,char find[],int k) /*
结点添加(插入)
*/ status delstudent(stu *s) /*
删除
记录
*/ void show(stu *s,int k) /*
显示所有记录的
*/ void showid(stu *s) /*
显示学号对应的
姓名
*/ status list(stu *s,int k) /*
排序
*/ status addstudent(stu *s) /*
添加记录
*/
空时停止并返 回主菜单选择。直接在输出数值时添加
mscore+escore+cscore
作为总成绩
加到信息最后一列。
(
4
)
show
函数
为了能让用户输入字符串, 依然是定义一个开关,此时的开关条件无最大值,添加信息时
直接调用
show
函数即 可实现学生信息的输入。
(
5
)
printf
函数
编写显示函数用来输出链表中结点信息,
stu
型指针
r
,接着< br>r=*s
初值为头指针,用
printf
方法输出存储学生信息,最
w hile(r!=NULL){??}
实现当表中有信息即不为空,就执
行
while
中的内容,打印出学生的各个信息。
(
6
)
delete
函数
用来删除记录,先用
if(!s->next) {printf(
验证学生
信息是否为空,如果为空则输出
“please add first”
。如果不为空,先选择按学号删除或按
姓名删除,然后调用函数
stu* Locate(stu *s,char find[],int k)
查找要删除的记录。然后用
freep
()执行记录清空。
(
7
)
insert
函数
用来插入学生记录,定 义二个指针为
p
和
l
,
l
为前驱,
p
为插 入数据的位置。如果遇到
相同学号的则显示输入有重复并显示原来学号的信息。如不然则用
sc nf
和
printf
输入输
出数据,并在运行结束后把指针置尾。
(
8
)
sort
函数
根据不同的要求实现成绩从 大到小排列,程序中采用的使选择法进行排序,排序过程中调
用
swap
函数实现数据 的排列。这样就能按不同要求把数据排列了
。
3.8
程序调试与测试(结果分析)
1.
函数主界面
2.
选择第一项实现添加数据如下
3.
选择
2
进行修改编辑
4.
选择
3
进行删除成绩
5.
选择
4
进行排序显示成绩
6.
选择
5
进行查找成绩
7.
选择
6
提供载入信息条数
8.
选择
7
保存
9.
选择
0
关闭
要保存选
Y
不想保存先
N
。
程序运用了结构体,链表,转换和选择法排序实现了删除,添加,信息载入,查询等功能。
< br>(
1
)单链表查找算法的最好的时间复杂度为
o
(
1
),最坏时间复杂度
o
(
n
),平均时
间复杂度
o
(
n
);空间复杂度为
o
(
1
)。
(< br>2
)单链表插入算法时间复杂度
o
(
n
);空间复杂度为o
(
1
)。
(
3
)系统基本上实
现了小型学生管理系统的功能。
4.
总结
C
语言使上学期教的,现在开始做这个课程设计刚开始有点仿偟, 不知道何从下手,最后
搬出书本有看了一下,网上查点资料,仔细阅读老师给的任务指导书,开始着手做 这个学
生成绩管理系统,其原因使该算法简便,程序贴近学生生活,该程序的目的使实现学生成
绩的粗略管理。设计过程经过了任务定义,逻辑设计、详细设计、程序编码、程序调试与
测试、结果分析 和撰写实验报告,最终系统地完成整个课程的设计。
该系统是小型管理系统,运行界面为
DOS
界面,始终存在不足,从这次设计
中我深刻的体会
C
设计的意义,我觉得编程除了麻烦也是一件有趣的事情。
[
1
]
谭浩强
.C
程序设计[
M
]北京:清华大学出版社,
2005.292
页
-310
页
. [2]
苏仕华
. < br>数据结构课程设计[
M
]
.
上海:机械工业出版社,
2004 . [3]
谭浩强
.C
程序设计题解与上
机指导
[M]
北 京
:
清华大学出版社
,2005.
#include
#include
提供
malloc()
、
calloc()
、
reallo c()
、
free()
、
system()
、
atoi()
、
atol()
、
rand()
、
srand()
、
exit()/
#include
字符串调用
typedef int status;
int change = 0; //
信息是否改变
typedef struct student{ int num; //
学号
char name[20]; //
姓名
int mscore; //
数学成绩
int cscore; // c
语言成绩
int escore; //
英语成绩
struct
student *next;//
定义指针
}stu;//
定义对象
stu
void showmenu(){
printf(
printf(
4:showstudent *
while(r != NULL){
if(r->num == k) return r;
r = r->next;
else if(k == 0){ //
按姓名查询
r = s->next;
while(r != NULL){
if(strcmp(r->name,find) == 0) return r;
r = r->next;}
return 0;
status _swap(stu *s1,stu *s2){//
把一个对象的学生数据赋给另一个学生
s1->num = s2->num; //
学号
strcpy(s1->name,s2->name); //
姓名
s1->mscore = s2->mscore; //
数学成绩
s1->cscore = s2->cscore; //c
语言成绩
s1->escore = s2->escore; //
英语成绩
status swap(stu *s1,stu *s2){//
实现两个学生信息的转换
stu *p;
if(!(p = (stu *)malloc(sizeof(stu)))) showerror(0);
_swap(p,s1);
_swap(s1,s2);
_swap(s2,p);
free(p);//
释放
p
所占的空间
status list(stu *s,int k){//
采用选择法排序
stu *p,*p1,*p2;
p1 = s->next;
while(p1){
p2 = p1->next;
while(p2){
if(k == 1)if(p2->num < p1->num)swap(p1,p2); //
学号
if(k == 2)if(p2->mscore > p1->mscore)swap(p1,p2);
if(k == 3)if(p2->cscore > p1->cscore)swap(p1,p2); //c
成绩
if(k == 4)if(p2->escore > p1->escore)swap(p1,p2);
if(k==5)if((p2->mscore+p2->cscore+p2->escore
< br>(p1->mscore+p1->cscore+p1->escore))swap(p1,p2);
p2=p2->next;
p1=p1->next;
status eshow(stu *s){
show(s,0);
while(s->next){
s = s->next;
show(s,2); }}
status addstudent(stu *s){
stu *p,*l;
int k;
while(1){
l = s;
printf(
scanf(
if(k == 0) break;
while(l){
if((l->num) == k){
12 //
英语成绩;
//
总分
>
printf(
show(l,1);
return;
l = l->next;
if(!(p = (stu *)malloc(sizeof(stu)))) showerror(0);
printf(
scanf(
p->next = NULL;
if(s ==NULL) s = p;
else{
while(s->next != NULL) s = s->next;//
将指针置于最末尾
s->next = p;
p = NULL;
change=1;
status editstudent(stu *s){//
修改学生
int k=0;
while(k == 0){
printf(
scanf(
if(k == 0) showid(s);
while(s){
if((s->num) == k){
printf(
student:name,mscore,cscore,esc ore:
scanf(
change=1;
printf(
return;
s = s->next;
庞大的反义词-bully什么意思
庞大的反义词-bully什么意思
庞大的反义词-bully什么意思
庞大的反义词-bully什么意思
庞大的反义词-bully什么意思
庞大的反义词-bully什么意思
庞大的反义词-bully什么意思
庞大的反义词-bully什么意思
本文更新与2021-01-24 15:52,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/561307.html
-
上一篇:c语言实验报告分析总结
下一篇:C语言程序设计与报告:学生信息管理系统设计