C语言学生选课管理系统Word格式文档下载.docx
- 文档编号:19753423
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:21
- 大小:393.72KB
C语言学生选课管理系统Word格式文档下载.docx
《C语言学生选课管理系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言学生选课管理系统Word格式文档下载.docx(21页珍藏版)》请在冰豆网上搜索。
5.为实现存储功能,需用到文件的相关函数,打开文件,将添加、修改或删除的信息存入磁盘中。
6.实现易于使用者理解和使用的友好界面。
2概要设计
系统总体设计框架
《
对程序进行模块化可以使整个程序清晰明了。
对课程信息和学生信息建立从文件中输入、从键盘中输入、添加、删除、查询和浏览的功能,其各个子函数中运用链表储存数据。
选课管理建立学生选课、推选、查询、浏览的功能,其各个子函数中运用链表储存数据。
从主函数开始执行,依次调用各个子函数,并运用文件的相关知识将信息进行存盘。
系统功能模块图
》
3详细设计
功能模块设计思路
、
主要功能模块的算法设计思路如下:
1、课程信息录入函数(voidload())
①从键盘录入(voidzhang())
I定义指向结构体变量的指针;
II从头指针指向的结构体开始依次录入结构体中所包含的各个成员;
III直到输入的结构体成员的编号为0,录入结束
②从文件录入(voidzhang1())
I分别定义指向结构体变量的指针和指向文件的指针;
(
II输入文件的路径,打开文件,若没有找到则有提示;
III将文件中的信息依次读出,最后结构体的指针为NULL
2、课程信息管理(voidmanagementc())
①增加课程信息(voidinsert(structcourse*incourse))
II输入要增加的课程编号,从头指针指向的结构体依次向后,直到链表的最后;
III输入课程结构体各个成员的信息,使最后一个结构体指针值为NULL
②删除课程信息(voiddelc(intnum1))
·
II输入要增加的课程编号,从头指针指向的结构体依次向后,直到找到课程编号为输入值的那个结构体;
III将其删除,其前一个的结构体指针指向其后一个结构体
3、学生信息录入函数(voidinput())
①从键盘录入(voidputin())
III直到输入的结构体成员的编号为0,录入结束
,
②从文件录入(voidputin2())
4、学生信息管理(voidmanagements())
①增加学生信息(voidinserts(structstudent*incouse))
II输入要增加的学生编号,从头指针指向的结构体依次向后,直到链表的最后;
III输入学生结构体各个成员的信息,使最后一个结构体指针值为NULL
②删除学生信息(voiddels(intnum2))
II输入要增加的学生编号,从头指针指向的结构体依次向后,直到找到学生编号为输入值的那个结构体;
5、学生选课管理(voidelective())
①学生选课(voidelect())
I分别定义指向课程和学生结构体变量的指针;
:
II输入要选课的学生的编号,从头指针指向的结构体依次向后,直到找到学生编号为输入值的那个结构体,如不存在则显示要录入学生信息;
III输入要选课程的编号,从头指针指向的结构体依次向后,直到找到课程编号为输入值的那个结构体;
IV在学生结构体对应的所选课程编号中更改信息,所选学分中加上相应分值,课程结构体所选人数中相应加一
②学生退课(voidback())
II输入要退课的学生的编号,从头指针指向的结构体依次向后,直到找到学生编号为输入值的那个结构体,如不存在则显示要录入学生信息;
III输入要退课程的编号,从头指针指向的结构体依次向后,直到找到课程编号为输入值的那个结构体;
IV在学生结构体对应的所选课程编号中更改信息,所选学分中减去相应分值,课程结构体所选人数中相应减一
6、'
7、信息浏览和保存(voidinto())
①课程信息浏览(voidlistc())
II从头指针指向的结构体依次向后,将课程结构体各成员的信息一次输出,直到最后一个结构体指针的值为NULL
②学生信息浏览(voidlists())
II从头指针指向的结构体依次向后,将学生结构体各成员的信息一次输出,直到最后一个结构体指针的值为NULL
③课程信息保存(voidintoc())
<
I定义指向课程结构体变量的指针和指向文件的指针;
II输入保存路径,如果没有保存则有显示;
III将课程信息写入文件中;
IV将课程信息进行保存,关闭文件
④学生信息保存(voidintos())
I定义指向学生结构体变量的指针和指向文件的指针;
III将学生信息写入文件中;
`
IV将学生信息进行保存,关闭文件
8、学生信息查询(voidstore())
①按学生姓名查询(voidsearch2())
I定义指向结构体变量的指针;
II输入要查询的学生的姓名,从头指针指向的结构体依次向后,直到找到学生姓名为输入值的那个结构体;
III将该学生结构体成员的各信息依次输出
②按学生编号查询(voidsearch1())
II输入要查询的学生的编号,从头指针指向的结构体依次向后,直到找到学生编号为输入值的那个结构体;
3调试分析
错误显示及分析
a.编译时出现错误,回看程序发现漏掉符号等细节错误。
b.运行时,界面格式与最初的设想不一致,通过重新编排,符号的增减及一进,最终达到理想界面。
c.运行时,输入一个信息后,第二次输入数据时很难将输入光标移到想要的位子,通过按键的摸索,最终了解了输入要领。
~
d.对输入的信息查询时没有记录,发现文件读取错误。
修改完善
1、开始程序执行时,各项大的功能每一次只能执行一个就自动跳出,为了使程序保持连续性和更好的实用性,使用了start,gotostart,break,sysyem(“clx”)等实现了逐渐免于更功能的循环。
2、对于学生信息中已选课程的存储,一直不知如何存储。
后用实型数组,并进行循环,依次读入课程的编号,将课程编号进行存储。
4用户使用说明
适用范围
适用于管理者将课程信息和学生信息录入到系统,并可以将课程信息和学生信息进行保存,日后如果有需要在对课程和学生信息进行增加可删除。
同时也适用于学生在登录自己的学号后,浏览课程信息选课,进行选课和退课操作。
使用方法
¥
首先管理者将现有的课程信息(包括课程编号、课程名称、使用专业、课程类型、学时、学分、教师、已选人数(初始为零))和学生信息(包括学生学号、姓名、已选学时、已选课程编号)录入到系统,并将其进行文件保存,以便以后使用。
若要修改(增加和删除)课程信息和学生信息,需要先从文件中录入已存信息,再输入编号对其查找并进行相关操作。
学生选课需要先输入自己的学号,若没有此学号的学生信息,需先录入此人信息在进行选课和退课。
在选课和退课前,可以先浏览课程信息,并记住要选课程的编号,以便选课时需要。
此外还可以学号和姓名对学生信息进行查询。
5测试结果
运行结果
主界面
录入课程信息
&
课程信息浏览
课程信息存储
录入学生信息
学生信息浏览
"
学生信息存储
^
学生选课
#
选课后学生信息浏览
选课后课程信息浏览
课程信息管理
学生信息管理
学生信息查找
退出系统
7附录
$
课设小结
通过这次课程设计,我对C语言有了更深刻的了解,增强了程序的编写能力,巩固了专业知识,对程序的模块化观念也又模糊逐渐变的清晰了。
在程序的运行与调试过程中出现了很多错误,通过反复地复习课本上的相关知识,不停地修改与调试,我终于完成了这段程序。
在调试过程中,我认识到了C语言的灵活性与严谨性,同一个功能可以由不同的语句来实现,但编写程序时要特别注意细节方面的问题,因为一个小小的疏忽就能导致整个程序不能运行。
当然我也认识到了自己的薄弱之处,如对链表相关知识的欠缺,文件运用的不熟练,在以后的学习中我要集中精力、端正态度,争取把知识学得更扎实、更全面。
存在不足
1、系统不够强大,有点脆弱。
2、当输入信息(课程信息,学生信息)后,不能自动保存,需手动保存。
对于以上不足,以后将进行改进,以确保达到更好。
详细代码
#include<
>
:
intN1,N2;
structstudent
intnum2;
charname2[20];
intnelenum[50];
键盘录入"
);
printf("
\n2.从文件录入"
\n3.返回主菜单\n"
请选择1-3:
scanf("
%d"
&
i);
switch(i)
{
case1:
zhang();
break;
case2:
zhang1();
break;
!
case3:
}
}
voidinsert(structcourse*incourse)加课程\n"
2.删除课程\n"
3.返回\n"
请输入1-3:
\n"
{
{p1=(structcourse*)malloc(sizeof(structcourse));
printf("
课程编号\t课程名称\t主修\t课程性质\t学分\t课时\t教师\n"
%d%s%s%s%d%d%s"
p1->
num1,p1->
name1,p1->
major,p1->
type,&
credit,&
period,p1->
teacher);
p1->
people=0;
insert(p1);
}break;
@
printf("
请输入您要删除的课程编号:
scanf("
num1);
delc(num1);
voidputin(void)键盘录入\n"
2.从文件录入\n"
3.返回主菜单\n"
putin();
putin2();
voidinserts(structstudent*incouse)加学生信息\n"
2.删除学生信息\n"
;
{p1=(structstudent*)malloc(sizeof(structstudent));
nelen=0;
nelenum[0]=0;
num\tname\n"
%d%s"
num2,p1->
name2);
inserts(p1);
}break;
{printf("
请输入您要删除的学生编号:
num2);
dels(num2);
voidelect()课\n"
2.退课\n"
elect();
back();
voidlistc()程信息存储\n"
2.学生信息存储t\n"
请输入1-3\n"
%
case
(1):
intoc();
case
(2):
intos();
case(3):
voidstore()程信息浏览\n"
2.学生信息浏览\n"
3.信息存储\n"
4.返回主菜单\n"
请输入1-4:
listc();
lists();
】
into();
case(4):
voidsearch1()学号查找"
\n2.按姓名查找"
\n3.返回主菜单"
\n请输入1-3:
search1();
search2();
}}
voidmain()入课程信息\n"
\t\t\t2.课程信息管理\n"
\t\t\t3.录入学生信息\n"
\t\t\t4.学生信息管理\n"
\t\t\t5.学生选课\n"
\t\t\t6.信息存储与浏览\n"
\t\t\t7.查找学生信息\n"
\t\t\t8.退出系统"
\t\t\t\n请输入1-8:
if(scanf("
i))
if(i<
1||i>
8)
请重新输入:
gotostart;
%c"
m))
输入错误,请重新输入:
system("
cls"
load();
gotostart;
managementc();
gotostart;
input();
case4:
managements();
case5:
elective();
case6:
store();
case7:
search();
case8:
{system("
Thankyou!
\n\nBye-Bye!
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学生 选课 管理 系统