C语言学生选课管理系统Word格式文档下载.docx

上传人:b****5 文档编号:19753423 上传时间:2023-01-09 格式:DOCX 页数:21 大小:393.72KB
下载 相关 举报
C语言学生选课管理系统Word格式文档下载.docx_第1页
第1页 / 共21页
C语言学生选课管理系统Word格式文档下载.docx_第2页
第2页 / 共21页
C语言学生选课管理系统Word格式文档下载.docx_第3页
第3页 / 共21页
C语言学生选课管理系统Word格式文档下载.docx_第4页
第4页 / 共21页
C语言学生选课管理系统Word格式文档下载.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

C语言学生选课管理系统Word格式文档下载.docx

《C语言学生选课管理系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言学生选课管理系统Word格式文档下载.docx(21页珍藏版)》请在冰豆网上搜索。

C语言学生选课管理系统Word格式文档下载.docx

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!

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1