学生选课系统程序设计文档

*******************

实践教学

*******************

兰州理工大学

计算机与通信学院

2015年春季学期

课程设计

题 目: 学生选课系统 专业班级:信息与计算科学 姓 名:学 号:指导教师: 张墨逸 成 绩:______________

前 言

数据库是从60年代初发展起来的计算机技术。经过四十来年的发展,数据库技术己经趋于成熟。Web 数据库在新的Internet 环境中发生了很大的变化。就数据应用而言呈现出多样化的空间,如数字图书馆、电子出版物、电子商务、远程教育系统等的出现,给web 数据库技术提出了更多、更高的要求。同时,随着国内高校校园网的建设,基于互联网的应用系统的开发正在蓬勃发展并发挥着较大的作用。例如,我国许多高校的网上招生系统,学校的各种管理信息系统,学校选课系统,还有一些医学院校开发出的网上诊所、远程诊断系统

等等,都是基于校园网的应用系统。

国外的教学科研软件与国内相比开发的早而且比较成熟。早在七十年代末,美国就建成了NSFNET(国家科学基金网) ,其课题的申报及课题的进展情况汇报都在网上进行。其网上教学教务管理系统也十分完善,世界各地的学生可以坐在家里通过互联网完成入学报名、选课、考试、毕业论文、取得学位这一学习生活的全过程。目前,国际上已具规模的远程教育学校就有数百所之多,网上教育正在各地发挥着巨大的作用,为世界各国培养出大批人才。

所有这些都表明,基于Internet 的校园网的应用已深入到校园内的各个方面。

摘 要

建立一个“学生选课系统”,系统以菜单的方式工作。编写存放的程序包含被选课的信息,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息。学校管理员首先录入可供学生选择的课程,然后学生可按要求(如总学分不得少于30)自由选课。通过子函数的编写,能对这些课程信息进行录入,浏览,查询,修改,选择功能。并将这些信息存入文件中。最后录入课程信息,进行测试,实现程序运行。

关键词:学生选课,选修学分,授课学时,课程信息,课程添加

目 录

1题目要求........................................................................................................................................ 1 2需求分析........................................................................................................................................ 1 2.1 产品需求概述........................................................................................................................ 1 2.1.1 功能简介......................................................................................................................... 1 2.1.2 运行环境......................................................................................................................... 1 2.2 功能需求 ............................................................................................................................... 2 2.2.1添加课程功能 . ................................................................................................................. 2 2.2.2 删除课程功能 . ................................................................................................................ 2 2.2.3 查询功能......................................................................................................................... 2 2.2.4学生选课功能 . ................................................................................................................. 2 2.2.5学生查看已选课程功能 . ................................................................................................. 2 2.2.6学生删除已选课程功能 . ................................................................................................. 2 2.2.7不支持的功能 . ................................................................................................................. 2 2.3 数据描述 ............................................................................................................................... 3 3概要设计.................................................................................................................................... 3 3.1 系统体系结构图 . ................................................................................................................... 3 3.1.1 模块描述......................................................................................................................... 4 4详细设计.................................................................................................................................... 5 4.1 系统主要函数说明 . ............................................................................................................... 5 4.2菜单函数 ................................................................................................................................ 5 4.3添加课程函数......................................................................................................................... 6 4.4删除课程函数......................................................................................................................... 7 4.5查看课程函数......................................................................................................................... 8 4.6选课函数 ................................................................................................................................ 9 5 系统测试..................................................................................................................................... 10 5.1主菜单 .................................................................................................................................. 11 5.2以管理员身份登录 . .................................................................................................................. 5.2.1添加课程信息 . ................................................................................................................... 5.2.2浏览课程信息 . ................................................................................................................... 5.2.3查询课程信息 . ................................................................................................................... 5.2.4删除课程信息 . ............................................................................................................... 14 5.3以学生身份登录 . .............................................................................................................. 15 5.3.1浏览所有课程 . ............................................................................................................... 16 5.3.2选择选修课程 . ............................................................................................................... 16 参考文献 ........................................................................................................................................ 16 致 谢 ................................................................................................................................................ 附录: ............................................................................................................................................ 22 源程序 ............................................................................................................................................ 22

1题目要求

(1)以学校教务管理系统选课系统为背景,通过调研、分析现有的选课模式和选课软件,建立系统模型;

(2)完成软件结构设计、算法设计以及备选课程的录入工作; (3)完成系统软件开发和测试工作; (4)撰写设计说明书; (5)做好答辩工作。

2需求分析

2.1 产品需求概述

2.1.1 功能简介

随着教育科技的进步,原始的选课方式已经不能满足当今社会大学生选课的需求,该系统主要针对选课的大学生,可以使大学生按要求自由选课。每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息。“学生选课系统”可以实现以下功能:

(1)系统以菜单方式工作;

(2)课程信息录入功能(课程信息用文件保存) ; (3)课程信息浏览功能;

(4)查询功能:按学分查询、按课程性质查询、学生已选课信息查询; (5)信息的删除与修改等功能。 2.1.2 运行环境

最低配置:Windows xp系统,推荐配置:Windows 7系统; 运行环境:VC++6.0

2.2 功能需求

功能需求描述系统特性,即产品所提供的主要服务。 2.2.1添加课程功能

课程信息录入功能可以由管理员进入,管理员打开录入界面,可以根据提示进行课程的录入工作,例如:管理员选择添加可程后,界面会先后弹出课程编号、课程性质、总学时、总学分以及继续添加按钮。如果课程添加完毕,即可退出程序。 2.2.2 删除课程功能

删除课程功能由管理员进入,在此选项中管理员可以通过键入课程编码来删除相应的课程,继续删除按回车键,退出输入“0”。 2.2.3 查询功能

查询功能管理员和学生都可一进入,输入查询编号进入,输入文件夹,可以看到三个带编号的选项,分别时按课程名称查询,按课程性质查询,按学时学分查询,操作者可根据自己的意图来进行相应的选择。 2.2.4学生选课功能

在此功能中,选课学生可以在查看了课程之后,输入自己想选的课程代码,用空格分开,选课要求学分不能少于30,科目不能超过6科,学生可根据要求自由选课。

2.2.5学生查看已选课程功能

学生可以在学生菜单中输入对应的功能编号进入,输入文件夹,即可查询到自己已选的课程。 2.2.6学生删除已选课程功能

学生输入对应的功能编号,即可进入删除功能,输入要删除课程的编号按回车,继续删除再按回车,结束删除输入“0”回车。 2.2.7不支持的功能

此程序不支持游客进入,因为在进入管理员和学生入口都有单独的密码,并且没有设置游客入口,所以不能实现游客的进入。

2.3 数据描述

int num; /*课程编号*/ char name[20]; /*课程名称*/ char kind[10]; /*课程性质*/ int stime; /*总学时*/ int ttime; /*授课学时*/

int etime; /*实验或上机学时*/ int score; /*学分*/ int term; /*开课学期*/

3概要设计

3.1 系统体系结构图

本系统首先分为两个模块:管理员模块和学生模块。管理员进入程序需要输入密码。学生模块分为:1. 浏览所有课程,2. 选择课程,3. 删除选择错误的课程,4. 修改已选择的课程,5. 查看已选择的课程。管理员模块分为:1. 录入供选择的课程,2. 查看所有课程,3. 修改已有课程,4. 删除课程。

图1. 系统体系结构图

其中:

1.

添加课程包括课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息;

2.

查询课程可以根据课程编号、名称、学分查看课程;

3. 删除课程是删除错误课程,或者不想选择的课程。

3.1.1 模块描述

模块1: 管理员入口

模块2: 学生入口

4详细设计

4.1 系统主要函数说明

各函数调用图:

图2. 函数调用

本系统主要是根据函数之间的关系以及各函数调用来进行构建的。从主函数往下分别是管理员函数Mangers(),学生函数Students()以及退出函数。

管理员函数往下分别是查看prin(),查找search(),添加insert(),删除del() 和返回return 。学生函数下面分别是查看prin(),查找search(),选择choose(),删除del()和返回return 。

4.2菜单函数

控制整个程序的运行,通过主函数模块分别调用各个模块,实现各项功能。

图3. 菜单函数

首先进入主界面,可选择以学生身份进入或以管理员身份进入。

以学生身份进入,可进行选课、修改已选课程、删除已选课程、查看选择的课程。最后存入学生文件中。

以管理员身份进入,可录入课程信息、修改课程信息、删除课程信息和查看课程信息,最后存入课程文件中。

4.3添加课程函数

添加信息函数main(),定义指针fp ,创建文件2025课设.txt 。打开文件,并且课程编号,课程名称,课程性质,授课学时,总学时,学分,开课学期等信息添加进文件2015课设.txt 中。如图4所示。

图4. 添加课程函数

4.4删除课程函数

删除函数del(),输入需要删除的编号,存在则删除成功,不存在则返回,如图5所示。

图5. 删除课程函数

学生若发现选择的课程不符合要求,可删除自己已经选择的课程,再重新进行选择课程。

查看时首先打开学生选择课程的文件,输入课程编号,若存在,则进行删除;若不存在则需重新输入课程编号。删除成功后,返回主菜单,可以查看剩余课程,如果不符合学分要求,则需要重新选择。

4.5查看课程函数

查看函数search(),通过菜单选择需要查看的类型。有按课程编号查看、按课程名称查看、按学分查看。如图6所示。

图6. 查看课程函数

首先打开课程储存文件,进入查看课程界面后,可以选择按课程编号查看,按课程名称查看和按学分查看三种查看方式。查看课程完成后则返回上一个菜单界面。

4.6选课函数

选课函数choose (),学生进入之后,输入想选的课程,空格隔开,结束回车,如果总学分不够6,选修失败,重新选修。如图7所示:

图7. 选课

在选课函数中,学生被要求选修科目不超过6门,总学分不能低于30,当超过6门时,程序则会停止运行,学分低于30分则要求重新进行选课。

5 系统测试

5.1主菜单

图8

5.2以管理员身份登录

在图8中输入1,进入如下所示界面。

图9

5.2.1添加课程信息

图10

5.2.2浏览课程信息

图11

5.2.3查询课程信息

图12

5.2.4删除课程信息

v

图13

5.3以学生身份登录

在图8中输入2,进入如下所示界面。

图14

5.3.1浏览所有课程

图15

5.3.2选择选修课程

图16

5.3.3浏览我选修的课程

图17

5.3.4删除选错的选修课程

图18

总结

在这次课程设计中,我主要负责系统程序的代码编写和调试工作,通过这次课程设计我学会了很多东西,更好的掌握了C 程序设计中的一些知识。诚然,这次课程设计让我感触很深,通过这次课程设计,我掌握了常用函数的识别和测试;熟悉了常用系统的原理;了解了程序的运行方法,以及如何提高程序的性能等等,掌握了很多编程的方法,通过查询资料,也了解了网站的构造及原理。

回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。 实验过程中,也对团队精神的进行了考察,让我们在合作起来更加默契,在成功后一起体会喜悦的心情。果然是团结就是力量,只有互相之间默契融洽的配合才能换来最终完美的结果。在这里,我也对我的课设搭档说一声辛苦了。

确实,人是需要不断的磨练的 ,在这次课程设计的磨练中,也让我体会到了以后工作的辛苦,所以我应该更加的努力,为更好的明天而奋斗。

参考文献

1 C/C++程序设计教程(第二版),王连相,中国铁道出版社,2011 2 C语言程序设计,谭浩强,清华大学出版社,1999

3 C程序设计题解与上机指导,谭浩强,清华大学出版社,1999

4 C/C++程序设计上机指导与测试(第二版),王连相,中国铁道出版社,2011

5 C语言函数手册,机械工业出版社,1999 6 C语言的实际应用,安徽科学技术出版社,2000

致 谢

在这为期两周的课设时间里,诚然,我是抱着虚心的态度求教。在此期间,让我发现了我在C 程序设计方面的很多不足,还需要很多的提升,然而在张墨逸老师悉心的指导和同学们的帮助下,帮我解决了很多的问题,让我得以顺利的完成这次课程设计,更为重要的是我从他们的身上学到了许多的知识。我相信,在今后的发展道路上,我必定会受益匪浅。

当然,我更要感谢这些帮助过我的人,没有他们的帮助,也许我的课程设计将会完成的很不好。在此,对这些帮助过我的人表以深深的感谢!

附录: 源程序

#include #include #include #include

void prin1(); void choose(); typedef struct subjects {

int num; //课程编号 char name[20]; //课程名称 char kind[10]; //课程性质 int stime; //总学时 int ttime; //授课学时 int etime; //实验或上机学时 int score; //学分 int term; //开课学期 struct subjects *next; }SUB;

SUB *head=NULL;

SUB *create_form() //创建链表 { SUB *head,*tail,*p; int num,stime,ttime; int etime,score,term; char name[20],kind[10]; int size=sizeof(SUB); head=tail=NULL;

printf("输入选修课程信息:\n");

scanf("%d%s%s%d%d%d%d%d",&num,name,kind,&stime,&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,&score,&term); }

tail->next=NULL; return head; }

void savefile() //保存文件 { SUB *p; FILE *fp;

fp=fopen("2.txt","w"); if(fp==NULL)exit(0);

printf("课程编号 课程名称 课程性质 总学时 授课学时 实验或上机学时 学分 开课学期\n"); for(p=head;p;p=p->next)

fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7d\n",p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term); fclose(fp);

printf("创建后的信息已放入'2.txt' 文件中\n"); system("pause");

void savefile1() //保存文件 { SUB *p; FILE *fp;

fp=fopen("3.txt","w"); if(fp==NULL)exit(0); for(p=head;p;p=p->next)

fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7d\n",p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term); fclose(fp);

printf("创建后的信息已放入'3.txt' 文件中\n"); system("pause"); }

void readfile() //阅读文件 {

void *myInsert(SUB*); SUB *newSub; //新课程 int num,stime,ttime,etime; int score,term;

char c,name[20],kind[10],fname[20]; FILE *fp;

fp=fopen("2.txt","r"); while(!feof(fp)) {

newSub=(SUB*)malloc(sizeof(SUB));

fscanf(fp,"%d%s%s%d%d%d%d%d\n",&newSub->num,newSub->name,newSub->kind,&newSub->stime,&newSub->ttime,&newSub->etime,&newSub->score,&newSub->term);

myInsert(newSub); } fclose(fp); }

void prin() //浏览所有课程

SUB *ptr; head=NULL; readfile(); if(head==NULL) {

printf("\n\n\t*********NO RECORDS!************\n"); return; }

printf("课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期\n"); for(ptr=head;ptr;ptr=ptr->next) {

printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",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(!feof(fp)) {

ptr=(SUB*)malloc(sizeof(SUB));

fscanf(fp,"%d%s%s%d%d%d%d%d\n",&ptr->num,ptr->name,ptr->kind,&ptr->stime,&ptr-> ttime,&ptr->etime,&ptr->score,&ptr->term);

printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->kind,ptr->stime, ptr->ttime,ptr->etime,ptr->score,ptr->term); }

system("pause"); }

void *myInsert(SUB *subj) //链表插入操作 {

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!='0') {

subj=(SUB *)malloc(size); ptr=subj;

printf("输入要插入的课程信息:\n");

printf("\n\t\t请输入课程编号:");scanf("%d",&subj->num); printf("\n\t\t请输入课程名称:");scanf("%s",&subj->name); printf("\n\t\t请输入课程性质:");scanf("%s",&subj->kind); printf("\n\t\t请输入总学时:");scanf("%d",&subj->stime); printf("\n\t\t请输入授课学时:");scanf("%d",&subj->ttime); printf("\n\t\t请输入实践或上机学时:");scanf("%d",&subj->etime); printf("\n\t\t请输入学分:");scanf("%d",&subj->score);

printf("\n\t\t请输入开课学期:");scanf("%d",&subj->term); myInsert(subj);

printf("\n添加完毕, 新信息存入文件中\n"); printf("\n继续插入请按回车\n"); printf("\n结束添加课程按 0: [ ]\b\b");

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("输入想要删除的课程编号:[ ]\b\b\b\b\b"); scanf("%d",&num); if(head->num==num) { p2=head;

head=head->next; free(p2); }

if(head==NULL) return NULL; p1=head; p2=head->next;

while(p2) {

if(p2->num==num) {

p1->next=p2->next; free(p2); } else p1=p2;

p2=p1->next; }

printf("\n继续删除请按回车\n"); printf("\n结束删除课程按 0: [ ]\b\b");

ch1=getchar(); //将回车键赋给CH1, 否则num 输完后再输入的回车键会赋给CH,

因此用CH1填补。 ch=getchar();

printf("\n删除完毕, 新信息存入文件中\n"); system("pause");

}

return head; system("pause"); }

void choose()//选新课程--学生选课函数 {

SUB *p,*q; int a[5];

int num,total=0,i=0,j;

printf("输入要选修的课程的编号, 编号之间以空格分开\n"); scanf("%d",&num);

printf("如果确认输入完要选修的课程的编号, 请输入0: [ ]\b\b"); while(num!=0) {

for(p=head;p;p=p->next) if(p->num==num) {

total=total+p->score; a[i]=num; i++; }

scanf("%d",&num); }

if(total

printf("选修总学分为%d,未达到60, 选修失败!\n",total); system("pause"); } else { FILE *fp;

fp=fopen("3.txt","w"); //

fprintf(fp,"课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时\n");

学分 开课学期

for(j=0;jnext) if(q->num==a[j])

fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7d\n",q->num,q->name,q->kind,q->stime,q->ttime,q->etime,q->score,q->term); fclose(fp);

printf("\t\t\n*****选修成功!****\n");

printf("\n您选修的课程总学分为%d,课程分别为:\n",total);

printf("\n课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期

\n"); for(j=0;jnext) if(q->num==a[j])

printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",q->num,q->name,q->kind,q->stime,q->ttime,q->etime,q->score,q->term); printf("\n以上信息全部保存在'3.txt' 中\n"); }

system("pause"); }

void search() //课程信息查询 {

int a,num; int t=1;

char type[10],min[10]; SUB *ptr; L1:system("cls");

printf("\n\n\t\t**********请选择查询方式*************\n"); printf("\n\t\t\t1---按课程名称查找\n"); printf("\n\t\t\t2---按课程性质查找\n"); printf("\n\t\t\t3---按学分查找\n"); printf("\n\t\t\t4---退出查找\n");

printf("\n\n\t\t**************************************\n"); printf("\n\nChiose your number(1-4):[ ]\b\b"); 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%7d\n",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term); t=0; }

if(t)

printf("\t\n未找到!\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%7d\n",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);

}

if(t)

printf("\t\n未找到!\n"); t=1;

system("pause"); goto L1;

case 3:printf("输入要查找的课程的学分:");

scanf("%d",&num);

printf("课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期

\n"); for(ptr=head;ptr;ptr=ptr->next)

printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term); t=0; }

if(t)

printf("\n\t未找到!\n"); t=1;

system("pause"); goto L1;

if(ptr->score==num) {

} }

void Mangers() {

int n,w=1,flag=0,i=3; char s[8];

char password[7]="1"; do {

printf("\n\nEnter password:"); scanf("%s",s);

if(!strcmp(s,password)) //进行密码匹配验证 {

flag=1; break;

} else {

printf("\n\nError! You only have %d times! Enter again:\n",i-1); } }

while(i>0); if(!flag) {

printf("you have Enter 3 times!"); //输入密码超过了3次!! exit(0); //自动退出 } do {

system("cls");

i--; break;

puts("\n\n\t\t*********************管理员菜单***********************\n\n"); puts("\t\t\t\t1---浏览课程\n"); puts("\t\t\t\t2---查询课程\n");

puts("\t\t\t\t3---添加课程\n"); puts("\t\t\t\t4---删除课程\n"); puts("\t\t\t\t5---返回主菜单");

puts("\n\n\t\t******************************************************\n"); printf("Chiose your number(1-5):[ ]\b\b"); scanf("%d",&n); switch(n) {

case 1:prin();break; case 2:search();break;

case 3:insert();savefile(); break;

case 4:del();savefile();break; case 5: return; default:; } }

while(w==1); }

void Students() { int n,w=1; do {

system("cls");

puts("\n\n\t\t*********************学生菜单***********************\n\n");

puts("\t\t\t\t1---浏览所有课程\n"); puts("\t\t\t\t2---查询课程信息\n");

puts("\t\t\t\t3---选择选修课程\n"); puts("\t\t\t\t4---浏览我选修的课程\n"); puts("\t\t\t\t5---删除错选课程\n"); puts("\t\t\t\t6---返回主菜单");

puts("\n\n\t\t****************************************************\n");

printf("Chiose your number(1-6):[ ]\b\b"); scanf("%d",&n); 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); }

int main() {

int n,w=1; do {

system("cls");

puts("\n\n\t\t*********************MENU***********************\n\n"); puts("\t\t\t\t1.以管理员身份登录(password 1)\n"); puts("\t\t\t\t2.以学生身份登录\n"); puts("\t\t\t\t3.退出");

puts("\n\n\t\t************************************************\n");

printf("Chiose your number(1-3):[ ]\b\b"); scanf("%d",&n); switch(n) {

case 1:Mangers(); break;

case 2:Students(); break; case 3:w=0; break; default:; } }

while(w==1); return 0; }

*******************

实践教学

*******************

兰州理工大学

计算机与通信学院

2015年春季学期

课程设计

题 目: 学生选课系统 专业班级:信息与计算科学 姓 名:学 号:指导教师: 张墨逸 成 绩:______________

前 言

数据库是从60年代初发展起来的计算机技术。经过四十来年的发展,数据库技术己经趋于成熟。Web 数据库在新的Internet 环境中发生了很大的变化。就数据应用而言呈现出多样化的空间,如数字图书馆、电子出版物、电子商务、远程教育系统等的出现,给web 数据库技术提出了更多、更高的要求。同时,随着国内高校校园网的建设,基于互联网的应用系统的开发正在蓬勃发展并发挥着较大的作用。例如,我国许多高校的网上招生系统,学校的各种管理信息系统,学校选课系统,还有一些医学院校开发出的网上诊所、远程诊断系统

等等,都是基于校园网的应用系统。

国外的教学科研软件与国内相比开发的早而且比较成熟。早在七十年代末,美国就建成了NSFNET(国家科学基金网) ,其课题的申报及课题的进展情况汇报都在网上进行。其网上教学教务管理系统也十分完善,世界各地的学生可以坐在家里通过互联网完成入学报名、选课、考试、毕业论文、取得学位这一学习生活的全过程。目前,国际上已具规模的远程教育学校就有数百所之多,网上教育正在各地发挥着巨大的作用,为世界各国培养出大批人才。

所有这些都表明,基于Internet 的校园网的应用已深入到校园内的各个方面。

摘 要

建立一个“学生选课系统”,系统以菜单的方式工作。编写存放的程序包含被选课的信息,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息。学校管理员首先录入可供学生选择的课程,然后学生可按要求(如总学分不得少于30)自由选课。通过子函数的编写,能对这些课程信息进行录入,浏览,查询,修改,选择功能。并将这些信息存入文件中。最后录入课程信息,进行测试,实现程序运行。

关键词:学生选课,选修学分,授课学时,课程信息,课程添加

目 录

1题目要求........................................................................................................................................ 1 2需求分析........................................................................................................................................ 1 2.1 产品需求概述........................................................................................................................ 1 2.1.1 功能简介......................................................................................................................... 1 2.1.2 运行环境......................................................................................................................... 1 2.2 功能需求 ............................................................................................................................... 2 2.2.1添加课程功能 . ................................................................................................................. 2 2.2.2 删除课程功能 . ................................................................................................................ 2 2.2.3 查询功能......................................................................................................................... 2 2.2.4学生选课功能 . ................................................................................................................. 2 2.2.5学生查看已选课程功能 . ................................................................................................. 2 2.2.6学生删除已选课程功能 . ................................................................................................. 2 2.2.7不支持的功能 . ................................................................................................................. 2 2.3 数据描述 ............................................................................................................................... 3 3概要设计.................................................................................................................................... 3 3.1 系统体系结构图 . ................................................................................................................... 3 3.1.1 模块描述......................................................................................................................... 4 4详细设计.................................................................................................................................... 5 4.1 系统主要函数说明 . ............................................................................................................... 5 4.2菜单函数 ................................................................................................................................ 5 4.3添加课程函数......................................................................................................................... 6 4.4删除课程函数......................................................................................................................... 7 4.5查看课程函数......................................................................................................................... 8 4.6选课函数 ................................................................................................................................ 9 5 系统测试..................................................................................................................................... 10 5.1主菜单 .................................................................................................................................. 11 5.2以管理员身份登录 . .................................................................................................................. 5.2.1添加课程信息 . ................................................................................................................... 5.2.2浏览课程信息 . ................................................................................................................... 5.2.3查询课程信息 . ................................................................................................................... 5.2.4删除课程信息 . ............................................................................................................... 14 5.3以学生身份登录 . .............................................................................................................. 15 5.3.1浏览所有课程 . ............................................................................................................... 16 5.3.2选择选修课程 . ............................................................................................................... 16 参考文献 ........................................................................................................................................ 16 致 谢 ................................................................................................................................................ 附录: ............................................................................................................................................ 22 源程序 ............................................................................................................................................ 22

1题目要求

(1)以学校教务管理系统选课系统为背景,通过调研、分析现有的选课模式和选课软件,建立系统模型;

(2)完成软件结构设计、算法设计以及备选课程的录入工作; (3)完成系统软件开发和测试工作; (4)撰写设计说明书; (5)做好答辩工作。

2需求分析

2.1 产品需求概述

2.1.1 功能简介

随着教育科技的进步,原始的选课方式已经不能满足当今社会大学生选课的需求,该系统主要针对选课的大学生,可以使大学生按要求自由选课。每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息。“学生选课系统”可以实现以下功能:

(1)系统以菜单方式工作;

(2)课程信息录入功能(课程信息用文件保存) ; (3)课程信息浏览功能;

(4)查询功能:按学分查询、按课程性质查询、学生已选课信息查询; (5)信息的删除与修改等功能。 2.1.2 运行环境

最低配置:Windows xp系统,推荐配置:Windows 7系统; 运行环境:VC++6.0

2.2 功能需求

功能需求描述系统特性,即产品所提供的主要服务。 2.2.1添加课程功能

课程信息录入功能可以由管理员进入,管理员打开录入界面,可以根据提示进行课程的录入工作,例如:管理员选择添加可程后,界面会先后弹出课程编号、课程性质、总学时、总学分以及继续添加按钮。如果课程添加完毕,即可退出程序。 2.2.2 删除课程功能

删除课程功能由管理员进入,在此选项中管理员可以通过键入课程编码来删除相应的课程,继续删除按回车键,退出输入“0”。 2.2.3 查询功能

查询功能管理员和学生都可一进入,输入查询编号进入,输入文件夹,可以看到三个带编号的选项,分别时按课程名称查询,按课程性质查询,按学时学分查询,操作者可根据自己的意图来进行相应的选择。 2.2.4学生选课功能

在此功能中,选课学生可以在查看了课程之后,输入自己想选的课程代码,用空格分开,选课要求学分不能少于30,科目不能超过6科,学生可根据要求自由选课。

2.2.5学生查看已选课程功能

学生可以在学生菜单中输入对应的功能编号进入,输入文件夹,即可查询到自己已选的课程。 2.2.6学生删除已选课程功能

学生输入对应的功能编号,即可进入删除功能,输入要删除课程的编号按回车,继续删除再按回车,结束删除输入“0”回车。 2.2.7不支持的功能

此程序不支持游客进入,因为在进入管理员和学生入口都有单独的密码,并且没有设置游客入口,所以不能实现游客的进入。

2.3 数据描述

int num; /*课程编号*/ char name[20]; /*课程名称*/ char kind[10]; /*课程性质*/ int stime; /*总学时*/ int ttime; /*授课学时*/

int etime; /*实验或上机学时*/ int score; /*学分*/ int term; /*开课学期*/

3概要设计

3.1 系统体系结构图

本系统首先分为两个模块:管理员模块和学生模块。管理员进入程序需要输入密码。学生模块分为:1. 浏览所有课程,2. 选择课程,3. 删除选择错误的课程,4. 修改已选择的课程,5. 查看已选择的课程。管理员模块分为:1. 录入供选择的课程,2. 查看所有课程,3. 修改已有课程,4. 删除课程。

图1. 系统体系结构图

其中:

1.

添加课程包括课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息;

2.

查询课程可以根据课程编号、名称、学分查看课程;

3. 删除课程是删除错误课程,或者不想选择的课程。

3.1.1 模块描述

模块1: 管理员入口

模块2: 学生入口

4详细设计

4.1 系统主要函数说明

各函数调用图:

图2. 函数调用

本系统主要是根据函数之间的关系以及各函数调用来进行构建的。从主函数往下分别是管理员函数Mangers(),学生函数Students()以及退出函数。

管理员函数往下分别是查看prin(),查找search(),添加insert(),删除del() 和返回return 。学生函数下面分别是查看prin(),查找search(),选择choose(),删除del()和返回return 。

4.2菜单函数

控制整个程序的运行,通过主函数模块分别调用各个模块,实现各项功能。

图3. 菜单函数

首先进入主界面,可选择以学生身份进入或以管理员身份进入。

以学生身份进入,可进行选课、修改已选课程、删除已选课程、查看选择的课程。最后存入学生文件中。

以管理员身份进入,可录入课程信息、修改课程信息、删除课程信息和查看课程信息,最后存入课程文件中。

4.3添加课程函数

添加信息函数main(),定义指针fp ,创建文件2025课设.txt 。打开文件,并且课程编号,课程名称,课程性质,授课学时,总学时,学分,开课学期等信息添加进文件2015课设.txt 中。如图4所示。

图4. 添加课程函数

4.4删除课程函数

删除函数del(),输入需要删除的编号,存在则删除成功,不存在则返回,如图5所示。

图5. 删除课程函数

学生若发现选择的课程不符合要求,可删除自己已经选择的课程,再重新进行选择课程。

查看时首先打开学生选择课程的文件,输入课程编号,若存在,则进行删除;若不存在则需重新输入课程编号。删除成功后,返回主菜单,可以查看剩余课程,如果不符合学分要求,则需要重新选择。

4.5查看课程函数

查看函数search(),通过菜单选择需要查看的类型。有按课程编号查看、按课程名称查看、按学分查看。如图6所示。

图6. 查看课程函数

首先打开课程储存文件,进入查看课程界面后,可以选择按课程编号查看,按课程名称查看和按学分查看三种查看方式。查看课程完成后则返回上一个菜单界面。

4.6选课函数

选课函数choose (),学生进入之后,输入想选的课程,空格隔开,结束回车,如果总学分不够6,选修失败,重新选修。如图7所示:

图7. 选课

在选课函数中,学生被要求选修科目不超过6门,总学分不能低于30,当超过6门时,程序则会停止运行,学分低于30分则要求重新进行选课。

5 系统测试

5.1主菜单

图8

5.2以管理员身份登录

在图8中输入1,进入如下所示界面。

图9

5.2.1添加课程信息

图10

5.2.2浏览课程信息

图11

5.2.3查询课程信息

图12

5.2.4删除课程信息

v

图13

5.3以学生身份登录

在图8中输入2,进入如下所示界面。

图14

5.3.1浏览所有课程

图15

5.3.2选择选修课程

图16

5.3.3浏览我选修的课程

图17

5.3.4删除选错的选修课程

图18

总结

在这次课程设计中,我主要负责系统程序的代码编写和调试工作,通过这次课程设计我学会了很多东西,更好的掌握了C 程序设计中的一些知识。诚然,这次课程设计让我感触很深,通过这次课程设计,我掌握了常用函数的识别和测试;熟悉了常用系统的原理;了解了程序的运行方法,以及如何提高程序的性能等等,掌握了很多编程的方法,通过查询资料,也了解了网站的构造及原理。

回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。 实验过程中,也对团队精神的进行了考察,让我们在合作起来更加默契,在成功后一起体会喜悦的心情。果然是团结就是力量,只有互相之间默契融洽的配合才能换来最终完美的结果。在这里,我也对我的课设搭档说一声辛苦了。

确实,人是需要不断的磨练的 ,在这次课程设计的磨练中,也让我体会到了以后工作的辛苦,所以我应该更加的努力,为更好的明天而奋斗。

参考文献

1 C/C++程序设计教程(第二版),王连相,中国铁道出版社,2011 2 C语言程序设计,谭浩强,清华大学出版社,1999

3 C程序设计题解与上机指导,谭浩强,清华大学出版社,1999

4 C/C++程序设计上机指导与测试(第二版),王连相,中国铁道出版社,2011

5 C语言函数手册,机械工业出版社,1999 6 C语言的实际应用,安徽科学技术出版社,2000

致 谢

在这为期两周的课设时间里,诚然,我是抱着虚心的态度求教。在此期间,让我发现了我在C 程序设计方面的很多不足,还需要很多的提升,然而在张墨逸老师悉心的指导和同学们的帮助下,帮我解决了很多的问题,让我得以顺利的完成这次课程设计,更为重要的是我从他们的身上学到了许多的知识。我相信,在今后的发展道路上,我必定会受益匪浅。

当然,我更要感谢这些帮助过我的人,没有他们的帮助,也许我的课程设计将会完成的很不好。在此,对这些帮助过我的人表以深深的感谢!

附录: 源程序

#include #include #include #include

void prin1(); void choose(); typedef struct subjects {

int num; //课程编号 char name[20]; //课程名称 char kind[10]; //课程性质 int stime; //总学时 int ttime; //授课学时 int etime; //实验或上机学时 int score; //学分 int term; //开课学期 struct subjects *next; }SUB;

SUB *head=NULL;

SUB *create_form() //创建链表 { SUB *head,*tail,*p; int num,stime,ttime; int etime,score,term; char name[20],kind[10]; int size=sizeof(SUB); head=tail=NULL;

printf("输入选修课程信息:\n");

scanf("%d%s%s%d%d%d%d%d",&num,name,kind,&stime,&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,&score,&term); }

tail->next=NULL; return head; }

void savefile() //保存文件 { SUB *p; FILE *fp;

fp=fopen("2.txt","w"); if(fp==NULL)exit(0);

printf("课程编号 课程名称 课程性质 总学时 授课学时 实验或上机学时 学分 开课学期\n"); for(p=head;p;p=p->next)

fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7d\n",p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term); fclose(fp);

printf("创建后的信息已放入'2.txt' 文件中\n"); system("pause");

void savefile1() //保存文件 { SUB *p; FILE *fp;

fp=fopen("3.txt","w"); if(fp==NULL)exit(0); for(p=head;p;p=p->next)

fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7d\n",p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term); fclose(fp);

printf("创建后的信息已放入'3.txt' 文件中\n"); system("pause"); }

void readfile() //阅读文件 {

void *myInsert(SUB*); SUB *newSub; //新课程 int num,stime,ttime,etime; int score,term;

char c,name[20],kind[10],fname[20]; FILE *fp;

fp=fopen("2.txt","r"); while(!feof(fp)) {

newSub=(SUB*)malloc(sizeof(SUB));

fscanf(fp,"%d%s%s%d%d%d%d%d\n",&newSub->num,newSub->name,newSub->kind,&newSub->stime,&newSub->ttime,&newSub->etime,&newSub->score,&newSub->term);

myInsert(newSub); } fclose(fp); }

void prin() //浏览所有课程

SUB *ptr; head=NULL; readfile(); if(head==NULL) {

printf("\n\n\t*********NO RECORDS!************\n"); return; }

printf("课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期\n"); for(ptr=head;ptr;ptr=ptr->next) {

printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",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(!feof(fp)) {

ptr=(SUB*)malloc(sizeof(SUB));

fscanf(fp,"%d%s%s%d%d%d%d%d\n",&ptr->num,ptr->name,ptr->kind,&ptr->stime,&ptr-> ttime,&ptr->etime,&ptr->score,&ptr->term);

printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->kind,ptr->stime, ptr->ttime,ptr->etime,ptr->score,ptr->term); }

system("pause"); }

void *myInsert(SUB *subj) //链表插入操作 {

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!='0') {

subj=(SUB *)malloc(size); ptr=subj;

printf("输入要插入的课程信息:\n");

printf("\n\t\t请输入课程编号:");scanf("%d",&subj->num); printf("\n\t\t请输入课程名称:");scanf("%s",&subj->name); printf("\n\t\t请输入课程性质:");scanf("%s",&subj->kind); printf("\n\t\t请输入总学时:");scanf("%d",&subj->stime); printf("\n\t\t请输入授课学时:");scanf("%d",&subj->ttime); printf("\n\t\t请输入实践或上机学时:");scanf("%d",&subj->etime); printf("\n\t\t请输入学分:");scanf("%d",&subj->score);

printf("\n\t\t请输入开课学期:");scanf("%d",&subj->term); myInsert(subj);

printf("\n添加完毕, 新信息存入文件中\n"); printf("\n继续插入请按回车\n"); printf("\n结束添加课程按 0: [ ]\b\b");

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("输入想要删除的课程编号:[ ]\b\b\b\b\b"); scanf("%d",&num); if(head->num==num) { p2=head;

head=head->next; free(p2); }

if(head==NULL) return NULL; p1=head; p2=head->next;

while(p2) {

if(p2->num==num) {

p1->next=p2->next; free(p2); } else p1=p2;

p2=p1->next; }

printf("\n继续删除请按回车\n"); printf("\n结束删除课程按 0: [ ]\b\b");

ch1=getchar(); //将回车键赋给CH1, 否则num 输完后再输入的回车键会赋给CH,

因此用CH1填补。 ch=getchar();

printf("\n删除完毕, 新信息存入文件中\n"); system("pause");

}

return head; system("pause"); }

void choose()//选新课程--学生选课函数 {

SUB *p,*q; int a[5];

int num,total=0,i=0,j;

printf("输入要选修的课程的编号, 编号之间以空格分开\n"); scanf("%d",&num);

printf("如果确认输入完要选修的课程的编号, 请输入0: [ ]\b\b"); while(num!=0) {

for(p=head;p;p=p->next) if(p->num==num) {

total=total+p->score; a[i]=num; i++; }

scanf("%d",&num); }

if(total

printf("选修总学分为%d,未达到60, 选修失败!\n",total); system("pause"); } else { FILE *fp;

fp=fopen("3.txt","w"); //

fprintf(fp,"课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时\n");

学分 开课学期

for(j=0;jnext) if(q->num==a[j])

fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7d\n",q->num,q->name,q->kind,q->stime,q->ttime,q->etime,q->score,q->term); fclose(fp);

printf("\t\t\n*****选修成功!****\n");

printf("\n您选修的课程总学分为%d,课程分别为:\n",total);

printf("\n课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期

\n"); for(j=0;jnext) if(q->num==a[j])

printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",q->num,q->name,q->kind,q->stime,q->ttime,q->etime,q->score,q->term); printf("\n以上信息全部保存在'3.txt' 中\n"); }

system("pause"); }

void search() //课程信息查询 {

int a,num; int t=1;

char type[10],min[10]; SUB *ptr; L1:system("cls");

printf("\n\n\t\t**********请选择查询方式*************\n"); printf("\n\t\t\t1---按课程名称查找\n"); printf("\n\t\t\t2---按课程性质查找\n"); printf("\n\t\t\t3---按学分查找\n"); printf("\n\t\t\t4---退出查找\n");

printf("\n\n\t\t**************************************\n"); printf("\n\nChiose your number(1-4):[ ]\b\b"); 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%7d\n",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term); t=0; }

if(t)

printf("\t\n未找到!\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%7d\n",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);

}

if(t)

printf("\t\n未找到!\n"); t=1;

system("pause"); goto L1;

case 3:printf("输入要查找的课程的学分:");

scanf("%d",&num);

printf("课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期

\n"); for(ptr=head;ptr;ptr=ptr->next)

printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term); t=0; }

if(t)

printf("\n\t未找到!\n"); t=1;

system("pause"); goto L1;

if(ptr->score==num) {

} }

void Mangers() {

int n,w=1,flag=0,i=3; char s[8];

char password[7]="1"; do {

printf("\n\nEnter password:"); scanf("%s",s);

if(!strcmp(s,password)) //进行密码匹配验证 {

flag=1; break;

} else {

printf("\n\nError! You only have %d times! Enter again:\n",i-1); } }

while(i>0); if(!flag) {

printf("you have Enter 3 times!"); //输入密码超过了3次!! exit(0); //自动退出 } do {

system("cls");

i--; break;

puts("\n\n\t\t*********************管理员菜单***********************\n\n"); puts("\t\t\t\t1---浏览课程\n"); puts("\t\t\t\t2---查询课程\n");

puts("\t\t\t\t3---添加课程\n"); puts("\t\t\t\t4---删除课程\n"); puts("\t\t\t\t5---返回主菜单");

puts("\n\n\t\t******************************************************\n"); printf("Chiose your number(1-5):[ ]\b\b"); scanf("%d",&n); switch(n) {

case 1:prin();break; case 2:search();break;

case 3:insert();savefile(); break;

case 4:del();savefile();break; case 5: return; default:; } }

while(w==1); }

void Students() { int n,w=1; do {

system("cls");

puts("\n\n\t\t*********************学生菜单***********************\n\n");

puts("\t\t\t\t1---浏览所有课程\n"); puts("\t\t\t\t2---查询课程信息\n");

puts("\t\t\t\t3---选择选修课程\n"); puts("\t\t\t\t4---浏览我选修的课程\n"); puts("\t\t\t\t5---删除错选课程\n"); puts("\t\t\t\t6---返回主菜单");

puts("\n\n\t\t****************************************************\n");

printf("Chiose your number(1-6):[ ]\b\b"); scanf("%d",&n); 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); }

int main() {

int n,w=1; do {

system("cls");

puts("\n\n\t\t*********************MENU***********************\n\n"); puts("\t\t\t\t1.以管理员身份登录(password 1)\n"); puts("\t\t\t\t2.以学生身份登录\n"); puts("\t\t\t\t3.退出");

puts("\n\n\t\t************************************************\n");

printf("Chiose your number(1-3):[ ]\b\b"); scanf("%d",&n); switch(n) {

case 1:Mangers(); break;

case 2:Students(); break; case 3:w=0; break; default:; } }

while(w==1); return 0; }


相关内容

  • 软件工程-需求分析文档示例
  • 网上选课系统分析文档 第1章 引言 1.1 编写目的 网上选课管理系统作为管理管理员与用户的选课关系的主要管理系统平台,其对应的读者是企业用户,因此,不仅要处理管理员与用户之间的信息,还要处理用户个人信息.导致网上选课管理系统中的数据不论是结构.类型还是彼此间的关联都是复杂多变的:对这种数据进行的处 ...

  • 毕业设计工作周志
  • 毕业设计工作周志 学生姓名: 指导教师: 所在学院:信息技术学院 专 业:计算机科学与技术 2010 年 5 月 周 志 2009年12月28日--2010年1月3日 第一周 本周是毕业设计的第一周,接到老师下达的毕业设计课题之后,我马上进入了设计任务的第一阶段,即问题定义阶段.经过两天的问题定义, ...

  • 选修课管理系统文档(数据库课程设计)
  • 数据库系统设计课程设计任务书 计算机科学与技术学院制 目录 1.相关专业背景功能 --------------------------------- 1 2.需求分析 --------------------------------------- 4 3.概念模型与E-R 图____________ ...

  • 教务管理系统愿景文档
  • 教务管理系统愿景文档 编号:JIAOWU-DEV-VISION 版本:1.0 变更记录 目录 1. 简介 . ............................................................................................... ...

  • 学生选课系统软件需求说明书
  • 学生选课系统 软件需求说明书 作 者: 完成日期: 签 收 人: 签收日期: 修改情况记录: 目录 1 引言 ............................................................................................... ...

  • 概要设计文档
  • 学生课程及成绩管理系统 概要设计 V 1.0 项目经理: 张宝磊 项目负责人:张永锋 评 审 日 期: 2011年11月05日 目 录 1. 导言 . .......................................................................... ...

  • 软件工程项目概要设计
  • 学校排课系统 项目 项目管理 概要设计文档 文档序号: 版本序号 01 起草人名: 学号: 孙利辉 08411026 修改历史 目录 1.简介 .............................................................................. ...

  • 学员培训手册
  • " "国培计划"-中小学教师远程培训"培训手册 "国培计划"至中小学教师远程培训 学员平台操作手册 全国中小学教师继续教育网 年 月 日 " "国培计划"-中小学教师远程培训"培训手册 学员平台操作指 ...

  • 学生选课系统可行性分析报告
  • 文档编号:RS-4 版本号:1.0.0 学生选课系统 可行性分析报告 项目名称:学生选课系统 项目负责人:路景 项目开发小组:软三四组 修改记录: 学生选课系统可行性分析报告 1. 引言 当今社会是一个讲求效率的社会,时间就是金钱.开发简单,易于操作的 管理软件不仅可以节省时间,还可以避免浪费人力, ...