ImageVerifierCode 换一换
格式:DOCX , 页数:57 ,大小:491.99KB ,
资源ID:10288773      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-10288773.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言课程设计学生选修课程系统设计.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

C语言课程设计学生选修课程系统设计.docx

1、C语言课程设计学生选修课程系统设计学生选修课系统设计一、设计目的当今时代是飞速发展的信息时代,在各行各业中离不开信息处理,这正是计算机被广泛应用于信息系统的环境。计算机的最到好处的于利用它能够进行信息管理,使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。本系统就是为了管理好学生选课信息而设计的。数据处理手工操作,工作量大,出错率高,出错后不易更改,造成了时间上的浪费。基于这个问题,我认为有必要建立一个学生选课系统,使学生选课信息管理工作规范化、

2、系统化、程序化,避免学生选课管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改选课情况。二、题目说明 假定有n门课程,每门课程都有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。试设计一选修课程系统,使之能提供一下功能:(1) 系统以菜单方式工作;(2) 课程信息和学生信息的录入功能(课程信息有文件保 存)-输入;(3) 课程信息浏览功能-输出;(4) 查询功能(至少一种查询方式)-算法;(5) 按学分查询;(6) 某门课程学生选修情况(可选项)。提示 数据结构可用结构体,包括课程和选秀

3、两个结构体,其中课程结构体包括课程编号、课程名称、课程性质、总学时、授课学时、实验或上机学时、学分、开课学期。选修结构体成员包括学号,课程编号,该结构体的建立主要是为了查询某门课程学生选修情况.。三、数据结构设计本系统的实现,全部采用链表这种数据结构,用链表实现课程的查找、添加、删除、课程的选修、追加选修的课程,课程信息采用结构体这种数据结构。typedef struct subjects int num; /课程编号 char name20; /课程名称 char kind10; /课程性质 int stime; /总学时 int ttime; /授课学时 int etime; /实验或上机

4、学时 int score; /学分 int term; /开课学期 struct subjects *next;SUB;SUB *head=NULL;四、程序分析现代的社会是信息化的社会,信息无所不在。在生产领域、流通领域、各个部门每天都和信息打交道,如何处理如此多的信息成为了一个重要的课题。学生在学期开始选课是教学活动中的一个重要环节,该环节如果能管理好,它不仅能加快学生的选课速度,也提高了整个活动的效率。 大学一般都有上千名学生,每学期开始学生都要选课,因而产生了大量的课程信息。考虑到用户使用的方便和处理的信息量系统要完成录入,保存,查询,修改和删除课程信息的各种过程,能打印出课程信息表。

5、对象: 系统的主要使用对象是需要选课的学生。学生在选课是要察看各个课程的详细信息,还要选择一些感兴趣的课程,需要生成课表,在发现课程有冲突后能够修改先前选择的信息。需要随学生选课的变化,计算相应的总学分。在全部选定后,打印报表。系统还需要管理员来查看和修改学生的总体选课情况课程信息和学生信息。五、程序设计大纲六、模块设计(一) 主函数,头文件及结构体声明主函数设计地比较简洁,只是提供一个主菜单,switch语句将整个程序分为两个大的功能模块:程序#include stdio.h#include string.h#include stdlib.h#includemalloc.hvoid prin

6、1();void choose();typedef struct subjects /课程结构体 int num; /课程编号 char name20; /课程名称 char kind10; /课程性质 int stime; /总学时 int ttime; /授课学时 int etime; /实验或上机学时 int score; /学分 int term; /开课学期 struct subjects *next;SUB;SUB *head=NULL;int main() int n,w=1; do system(cls); puts(nntt*MENU*nn);puts(tttt1.以管理员身

7、份登录n);puts(tttt2.以学生身份登录n);puts(tttt3.退出);puts(nntt*n);printf(Chiose your number(1-3): bb);scanf(%d,&n);switch(n) case 1:Mangers() ;break; case 2:Students();break; case 3:w=0;break; default:; while(w=1); return 0;(二) 管理员功能模块管理员的功能一共有四个功能:浏览,查询,添加,删除课程,运用字符串处理函数处理密码的问题,用一个switch语句实现函数的调用:程序void Mange

8、rs() int n,w=1,flag=0,i=3; char s8; char password7=1; do printf(nnEnter password:); scanf(%s,s); if(!strcmp(s,password) /进行密码匹配验证 flag=1; break; else printf(nnError! You only have %d times! Enter again:n,i-1); i-; while(i0); if(!flag) printf(you have Enter 3 times!); /输入密码超过了3次! exit(0); /自动退出 do sy

9、stem(cls); puts(nntt*管理员菜单*nn); puts(tttt1-浏览课程n); puts(tttt2-查询课程n); puts(tttt3-添加课程n); puts(tttt4-删除课程n); puts(tttt5-返回主菜单); puts(nntt*n); printf(Chiose your number(1-5): bb); scanf(%d,&n); switch(n) case 1:prin();break; case 2:search();break; case 3:insert();savefile();break; case 4:del();savefil

10、e();break; case 5:return; default:; while(w=1);void Students() int n,w=1; do system(cls); puts(nntt*学生菜单*nn); puts(tttt1-浏览所有课程n); puts(tttt2-查询课程信息n); puts(tttt3-选择选修课程n); puts(tttt4-浏览我选修的课程n); puts(tttt5-删除错选课程n); puts(tttt6-返回主菜单); puts(nntt*n); printf(Chiose your number(1-6): bb); scanf(%d,&n);

11、 switch(n) case 1:prin();break; case 2:search();break; case 3:choose();break; case 4:prin1();break; case 5:del();savefile1();break; case 6:return; default:; while(w=1);(三) 学生功能菜单学生功能菜单包括六个功能:浏览课程,查询课程,选修课程,浏览我所选修的课程,添加选修课程,删除错选的课程,也是用到switch语句来调用函数:程序void Students() /学生登录菜单 int n,w=1; do system(cls)

12、; puts(nntt*学生菜单*nn); puts(tttt1-浏览所有课程n); puts(tttt2-查询课程信息n); puts(tttt3-选择选修课程n); puts(tttt4-浏览我选修的课程n); puts(tttt5-删除错选课程n); puts(tttt6-返回主菜单);puts(nntt*n); printf(Chiose your number(1-6): bb); scanf(%d,&n); switch(n) case 1:prin();break; case 2:search();break; case 3:choose();break; case 4:prin

13、1();break; case 5:del();savefile1();break; case 6:return; default:; while(w=1);(四) 创建链表模块程序SUB *create_form() /创建链表 SUB *head,*tail,*p; int num,stime,ttime; int etime,score,term; char name20,kind10; int size=sizeof(SUB); head=tail=NULL; printf(输入选修课程信息:n); scanf(%d%s%s%d%d%d%d%d,&num,name,kind,&stim

14、e,&ttime,&etime,&score,&term); while(num!=0) p=(SUB *)malloc(size); p-num=num; strcpy(p-name,name); strcpy(p-kind,kind); p-stime=stime; p-ttime=ttime; p-etime=etime; p-score=score; p-term=term; if(head=NULL) head=p; else tail-next=p; tail=p;scanf(%d%s%s%d%d%d%d%d,&num,name,kind,&stime,&ttime,&etime,

15、&score,&term); tail-next=NULL; return head;(五) 浏览模块浏览模块主要用管理员中的“浏览课程”和学生功能中的“浏览所有所有课程”,将所有的课程信息输出,即将all_sub.txt文件里面的内容全部输出:程序void prin() /浏览所有课程 SUB *ptr; head=NULL; readfile(); if(head=NULL) printf(nnt*NO RECORDS!*n); return; printf(课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期n); for(ptr=head;ptr;ptr=pt

16、r-next) printf(%5d%12s%9s%9d%9d%11d%11d%7dn,ptr-num,ptr-name,ptr-kind,ptr-stime,ptr-ttime,ptr-etime,ptr-score,ptr-term); system(pause);void prin1() /浏览所有已选修课程 SUB *ptr; FILE *fp; if(fp=fopen(3.txt,r)=NULL) printf(Cannot open file.n); choose(); printf(课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期n); while(

17、!feof(fp) ptr=(SUB*)malloc(sizeof(SUB); fscanf(fp,%d%s%s%d%d%d%d%dn,&ptr-num,ptr-name,ptr-kind,&ptr-stime,&ptr-ttime,&ptr-etime,&ptr-score,&ptr-term); printf(%5d%12s%9s%9d%9d%11d%11d%7dn,ptr-num,ptr-name,ptr-kind,ptr-stime,ptr-ttime,ptr-etime,ptr-score,ptr-term); system(pause);(六) 查询模块查询模块主要用于管理员功能中

18、的“查询课程”和学生功能模块中的“查询所有课程”,查询模块共分为三个查询方法:按课程名称查找,按课程性质查找和按学分查找switch语句中,每一个case语句就是一中查询方法:程序void search() /课程信息查询 int a,num; int t=1; char type10,min10; SUB *ptr; L1:system(cls); printf(nntt*请选择查询方式*n); printf(nttt1-按课程名称查找n); printf(nttt2-按课程性质查找n); printf(nttt3-按学分查找n); printf(nttt4-退出查找n); printf(n

19、ntt*n); printf(nnChiose your number(1-4): bb); scanf(%d,&a); switch(a) case 1:printf(请输入要查找的课程的名称:); scanf(%s,min); printf(课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期n); for(ptr=head;ptr;ptr=ptr-next) if(strcmp(min,ptr-name)=0) printf(%5d%12s%9s%9d%9d%11d%11d%7dn,ptr-num,ptr-name,ptr-kind,ptr-stime,ptr-

20、ttime,ptr-etime,ptr-score,ptr-term); t=0; if(t) printf(tn未找到!n); t=1; system(pause); goto L1; case 2:printf(请输入要查找的课程的性质:); scanf(%s,type); printf(课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期n); for(ptr=head;ptr;ptr=ptr-next) if(strcmp(type,ptr-kind)=0) printf(%5d%12s%9s%9d%9d%11d%11d%7dn,ptr-num,ptr-nam

21、e,ptr-kind,ptr-stime,ptr-ttime,ptr-etime,ptr-score,ptr-term); t=0; if(t) printf(tn未找到!n); t=1; system(pause); goto L1; case 3:printf(输入要查找的课程的学分:); scanf(%d,&num); printf(课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期n); for(ptr=head;ptr;ptr=ptr-next) if(ptr-score=num) printf(%5d%12s%9s%9d%9d%11d%11d%7dn,p

22、tr-num,ptr-name,ptr-kind,ptr-stime,ptr-ttime,ptr-etime,ptr-score,ptr-term); t=0; if(t) printf(nt未找到!n); t=1; system(pause); goto L1; case 4:break; t=0;if(t) printf(nt未找到!n);t=1;system(pause);goto L1; case 4:break; /退出查找 (七) 插入链表模块插入链表操作主要用于添加课程,在整个课程信息中加入一些新课程,它在添加模块中被调用:程序void *myInsert(SUB *subj)

23、/链表插入操作 SUB *ptr,*ptr2; ptr=subj; if(head=NULL) head=ptr; head-next=NULL; else for(ptr2=head;ptr2;ptr2=ptr2-next) if(ptr2-next=NULL) ptr2-next=subj; subj-next=NULL; break; return head;(八) 添加模块添加模块主要用于增加课程信息,采用链表的操作:程序void *insert() /插入课程信息 SUB *ptr,*subj; int size=sizeof(SUB); char ch,ch1; while(ch!

24、=0) subj=(SUB *)malloc(size);ptr=subj;printf(输入要插入的课程信息:n);printf(ntt 请输入课程编号:);scanf(%d,&subj-num); printf(ntt请输入课程名称:);scanf(%s,&subj-name); printf(ntt 请输入课程性质:);scanf(%s,&subj-kind); printf(ntt请输入总学时:);scanf(%d,&subj-stime);printf(ntt请输入授课学时:);scanf(%d,&subj-ttime);printf(ntt请输入实践或上机学时:);scanf(%d

25、,&subj-etime);printf(ntt请输入学分:);scanf(%d,&subj-score);printf(ntt请输入开课学期:);scanf(%d,&subj-term);myInsert(subj);printf(nn继续插入请按回车n);printf(n结束添加课程按 0: bb);ch1=getchar(); /*将回车键赋给CH1,否则subj-term输完后输入的回车键会赋给CH,因此用CH1填补。*/ch=getchar(); return head;(九) 删除模块删除模块主要用于管理员删除课程信息学生删除自己的选课,全部采用删除链表中的某一个节点的操作:程序void *del() /删除课程- SUB *p1,*p2; char ch,ch1; int num; while(ch!=0) printf(输入想要删除的课程编号: bbbbb); scanf(%d,&num); if(head-num

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2