C++程序设计 报告 及源代码 --学生选课系统
c语言课程设计学生选课系统
![c语言课程设计学生选课系统](https://img.taocdn.com/s3/m/4d33a940492fb4daa58da0116c175f0e7cd1199d.png)
c语言课程设计学生选课系统一、教学目标本课程的目标是让学生掌握C语言编程基础,能够运用C语言设计学生选课系统。
具体目标如下:1.知识目标:学生需要掌握C语言的基本语法、数据类型、运算符、控制结构、函数等基础知识。
2.技能目标:学生能够运用C语言编写简单的程序,具备一定的编程能力,能够独立设计并实现学生选课系统的核心功能。
3.情感态度价值观目标:学生通过本课程的学习,能够培养对计算机编程的兴趣和热情,提高解决问题的能力,培养团队协作和自主学习的意识。
二、教学内容根据课程目标,教学内容主要包括以下几个部分:1.C语言基础知识:包括基本语法、数据类型、运算符、控制结构等。
2.函数:包括函数的定义、声明、调用等。
3.数组和字符串:包括一维数组、多维数组、字符串的基本操作等。
4.指针:包括指针的基本概念、指针与数组、指针与函数等。
5.结构体和文件:包括结构体的定义和使用、文件的读写操作等。
6.学生选课系统的设计与实现:包括系统需求分析、系统设计、核心功能实现等。
三、教学方法为了达到课程目标,我们将采用以下教学方法:1.讲授法:通过讲解C语言的基本语法、数据类型、运算符、控制结构等知识,让学生掌握C语言的基础知识。
2.案例分析法:通过分析实际的学生选课系统的案例,让学生了解并掌握系统的设计与实现方法。
3.实验法:让学生通过动手编写程序,巩固所学知识,提高编程能力。
4.小组讨论法:分组让学生讨论并解决问题,培养团队协作和自主学习的意识。
四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《C语言程序设计》等相关教材。
2.参考书:提供相关的C语言编程参考书籍,供学生自主学习。
3.多媒体资料:制作课件、教学视频等,丰富教学手段,提高学生的学习兴趣。
4.实验设备:提供计算机实验室,让学生能够进行上机实验,提高编程能力。
五、教学评估为了全面、客观、公正地评估学生的学习成果,我们将采用以下评估方式:1.平时表现:通过学生在课堂上的参与度、提问回答、小组讨论等表现,评估学生的学习态度和积极性。
学生选课系统实验报告
![学生选课系统实验报告](https://img.taocdn.com/s3/m/c24313a5951ea76e58fafab069dc5022abea4646.png)
一、实验目的1. 熟悉数据库的基本概念和操作方法。
2. 掌握SQL语言的基本语法和应用。
3. 了解并掌握Java编程语言在数据库应用中的基本操作。
4. 提高学生选课系统的设计与实现能力。
二、实验环境1. 操作系统:Windows 102. 数据库:MySQL 5.73. 开发工具:Eclipse IDE4. 编程语言:Java三、实验内容1. 数据库设计2. 系统模块设计3. 系统实现4. 系统测试四、实验步骤1. 数据库设计(1)创建数据库在MySQL中创建名为“student_course”的数据库。
(2)创建数据表在“student_course”数据库中创建以下数据表:- 学生表(students):包含学生ID、姓名、性别、出生日期、班级等字段。
- 课程表(courses):包含课程ID、课程名称、学分、上课时间、上课地点等字段。
- 选课表(enrollments):包含学生ID、课程ID、选课时间等字段。
(3)建立数据表之间的关系- 学生表和选课表通过学生ID建立一对一的关系。
- 课程表和选课表通过课程ID建立一对一的关系。
2. 系统模块设计(1)登录模块- 用户输入用户名和密码,系统验证用户身份。
- 验证成功后,进入系统主界面。
(2)选课模块- 查询课程信息:学生可以查看所有课程信息,包括课程名称、学分、上课时间、上课地点等。
- 选课:学生可以选择感兴趣的课程,并提交选课请求。
- 查看选课结果:学生可以查看自己的选课结果,包括已选课程、未选课程等信息。
(3)退课模块- 查看选课结果:学生可以查看自己的选课结果,包括已选课程、未选课程等信息。
- 退课:学生可以申请退课,并提交退课请求。
(4)管理员模块- 添加课程:管理员可以添加新的课程信息。
- 删除课程:管理员可以删除课程信息。
- 修改课程:管理员可以修改课程信息。
3. 系统实现(1)使用Java编程语言实现各个模块的功能。
(2)使用JDBC连接MySQL数据库,实现数据操作。
学生选课系统代码
![学生选课系统代码](https://img.taocdn.com/s3/m/539a0833a32d7375a41780c4.png)
数据库设计报告数据库名称:学生选课信息系统学院:信息科学与工程学院班级:控制0807班设计人:王文峰学号:09081413目录第一章前沿1.1 背景 (3)1.2 目的 (3)1.3 数据库基本概念 (3)第二章设计思想2.1需求分析 (4)2.2概要设计 (4)第三章详细设计3.1主窗体的创建 (8)3.2 信息查询模块 (9)3.3 信息添加模块 (12)3.4 信息删除模块 (14)3.5 信息修改模块 (16)3.6 本章小结 (21)第四章心得体会4.1数据库学习心得 (21)附录 (22)前沿1.1背景由于电脑时代的到来以及internet的迅速发展,电脑无出不在,当然各种工作效率也大幅提高,那么对于一个学校来说,开发一个好的学生信息管理系统势在必行。
鉴此,特开发此学生信息管理系统,该系统实现了办公无纸化、网络化、信息化、现代化。
随着学校的规模的不断扩大学生数量急剧增长,需要管理的各种信息也就成倍增加。
同时由于计算机和网络技术的普及,建立一个C/S或者B/S结构的教学管理系统之后,学生可以通过网络来选课并管理自己的信息,使得教学管理工作系统化,规范化,自动化,大大提高了教学管理信息的效率.教学信息管理系统是学校信息管理系统的一个重要组成部分。
1.2目的目的:通过实验熟练掌握MS SQL server 2000软件的使用,包括基本表的设计及定义,数据的输入和单表多表的查询。
并应用数据库知识设计开发小型学生管理系统。
1.3数据库的基本概念数据库技术与其他学科的内容相结合,是新一代数据库技术的一个显著特征。
在结合中涌现出各种新型的数据库,例如:数据库技术与分布处理技术相结合,出现了分布式数据库。
数据库技术与并行处理技术相结合,出现了并行数据库。
数据库技术与人工智能相结合,出现了演绎数据库、知识库和主动数据库。
数据库技术与多媒体处理技术相结合,出现了多媒体数据库。
数据库技术与模糊技术相结合,出现了模糊数据库。
C++程序设计源代码 学生选课系统
![C++程序设计源代码 学生选课系统](https://img.taocdn.com/s3/m/549044ae0242a8956aece410.png)
I
目录
第一章 设计题目的内容、任务及具体要求 ..................................1 第二章 总体设计思路 ....................................................2
2.1 程序功能 ........................................................... 2 2.2 模块关系 ........................................................... 2 2.3 总体框图 ............................................................ 3 第三章 功能模块的具体设计 ..............................................4 3.1 主函数模块的设计 ................................................... 4 3.2 显示课程信息模块的设计 ............................................. 7 3.3 查询模块模块的设计 ................................................. 8 3.4 增加模块的设计 ..................................................... 9 3.5 删除模块模块的设计 ................................................ 13 3.6 修改模块模块的设计 ................................................ 14 3.7 选课模块的设计 .................................................... 15 3.8 显示选课情况模块的设计 ............................................. 17 第四章 功能模块的调试及测试 ...........................................18 4.1 登陆界面和主菜单界面的显示 ........................................ 18 4.2 查询所有课程信息的显示结果 ........................................ 19 4.3 查询单个课程信息的显示结果 ........................................ 19 4.4 添加课程信息的显示结果 ............................................ 20 4.5 删除和修改课程信息的显示结果 ...................................... 20 4.6 选课的显示结果 .................................................... 21 4.7 查询选课情况的显示结果 ............................................ 22 4.8 退出 .............................................................. 22 总结 ..................................................................23 致 谢 ................................................................24 参考资料:............................................................. 25 附程序清单............................................................. 26
使用C#制作学生选课系统
![使用C#制作学生选课系统](https://img.taocdn.com/s3/m/47f559777fd5360cba1adb5e.png)
.cnbook (6)接下来限定“Sname”字段值不能为空,其方法是:直接在“Sname”行的最后一列的【允 ww 许空】项单击 取消勾选即可。如图 8 所示。
w 图6 设置主键
.c .net ww 图 7 设置主键后的“Sno”字段
book 使用 C#制作学生选课系统
t .net 内容提要:本文是使用 C#制作学生选课系统。主要介绍了如何在 Visual C# 2005 环境下使用 e k 和 SQL Server 2000 设计一个学生选课系统,其中详细介绍了如何建立数据库的连接、编 .n oo 写数据读取方法和数据更新方法等。 ok nb 关键字:学生选课系统、Visual C# 2005、SQL Server 2000、
k.n boo 2.2 创建数据表 oo cn 接下来介绍使用 SQL Server 2000 的企业管理器直接创建学生信息表“tbl_Student”、课程信息
nb w. 表“tbl_Course”和选课信息表“tbl_SC”的方法和步骤,从而完成学生选课系统的数据库设计。 .c ww 1. 使用企业管理器 w 打开 SQL Server 2000 的企业管理器,依次展开控制台目录,定位到“SelectCourse”数据库, w 并选择“表”,则在右边的“表”项目中列出了所有的数据表,其中最后一个为用户创建的“tbl_User” w et k 数据表,如图 1 所示。
,则
.cnbook 弹出【选择名称】对话框,输入表名为“tbl_Student”,然后单击【确定】按钮即可,如图 11 所示。 .net www 图 11 输入表名 ok nb (10)最后关闭表设计器,这时可以在企业管理器的表视图区域中看到刚刚创建的用户数据表
c “tbl_Student”。 w. 3. 创建课程信息表 ww 根据如表 3 所示的表结构定义,按照创建学生信息表“tbl_Student”的方法,设计课程信息表
c#课程设计学生选课系统设计
![c#课程设计学生选课系统设计](https://img.taocdn.com/s3/m/1998eb59a7c30c22590102020740be1e650ecc8c.png)
c#课程设计学生选课系统设计一、课程目标知识目标:1. 学生能掌握C#编程语言的基础知识,包括数据类型、控制结构、类与对象等;2. 学生能理解数据库的基本原理,掌握SQL语句的编写和数据库操作;3. 学生能了解学生选课系统的业务需求,掌握系统设计的基本方法和步骤。
技能目标:1. 学生能运用C#语言编写学生选课系统的功能模块,如登录、选课、退课等;2. 学生能通过数据库技术实现对学生选课信息的管理,包括数据存储、查询和更新;3. 学生能运用面向对象的设计思想,设计出结构清晰、易于维护的学生选课系统。
情感态度价值观目标:1. 学生通过课程学习,培养对计算机编程的兴趣和热情,提高信息素养;2. 学生在团队协作中,培养沟通与协作能力,增强团队意识;3. 学生在解决实际问题的过程中,培养勇于探索、积极创新的精神。
课程性质:本课程为实践性较强的课程,结合课本知识,以学生选课系统为案例,使学生掌握C#编程和数据库技术。
学生特点:学生具备一定的C#编程基础和数据库知识,对实际项目开发感兴趣,但可能缺乏项目实践经验。
教学要求:课程应注重理论与实践相结合,强调动手实践,引导学生通过自主学习和团队合作,完成学生选课系统的设计与实现。
同时,关注学生的情感态度价值观的培养,提高学生的综合素质。
二、教学内容1. C#编程基础:- 数据类型与变量- 控制结构(顺序、分支、循环)- 方法与数组- 类与对象- 继承与多态- 异常处理2. 数据库原理与应用:- 数据库基本概念- SQL语句(SELECT、INSERT、UPDATE、DELETE)- 数据库设计(实体关系、E-R图)- 数据库访问技术3. 学生选课系统设计:- 系统需求分析- 系统设计(模块划分、类设计)- 数据库设计(表结构设计、关系建立)- 界面设计(UI设计、用户体验)- 功能实现(登录、选课、退课、查询成绩等)4. 项目实践与团队协作:- 项目开发流程- 团队协作与沟通- 代码版本控制(如Git)- 项目测试与调试教学内容根据课程目标,结合教材章节,进行科学组织和系统安排。
C语言的教务管理系统(2000行代码)
![C语言的教务管理系统(2000行代码)](https://img.taocdn.com/s3/m/6f09d88d4693daef5ff73d24.png)
C语言教务管理系统一、程序结构图二、程序运行截图1. 个人信息简介2.修改颜色3.注册界面4. 信息保存至文件5.登录界面6.管理员录入信息7. 学生信息录入8.学生成绩录入9.学生课程表录入10.学生信息查询界面11学生信息查询12.学生成绩查询13.学生课表查询三、代码(一个cpp)#include<stdio.h> #include<stdlib.h> #include<string.h> #include<ctype.h> #include <conio.h>#include"windows.h"#define student_num 1000 /*定义1000个学生*/#define teacher_num 5 /*定义5个老师(管理员)*/int is_my_student(struct student *p,int *size); /*声明返回第i+1个学生的函数*/ int is_my_teacher(struct teacher *p,int *size); /*声明返回第i+1个老师的函数*/ int length_student_name(char *p); /*声明验证用户名函数*/int length_student_password(char *p); /*声明验证密码长度函数*/int length_teacher_name(char *p); /*声明验证用户名函数*/int length_teacher_password(char *p); /*声明验证密码长度函数*/int show_menu_login(); /*声明登录菜单函数*/int show_menu_register(); /*声明注册菜单函数*/int show_teacher_select(); /*声明教师录入菜单函数*/int show_student_select(); /*声明学生查询菜单函数*/int student_register(struct student *ptr_student,int *size); /*声明学生注册函数*/ int teacher_register(struct teacher *ptr_teacher,int *size); /*声明老师注册函数*/ int vaild_student_name(char *p); /*声明验证用户名函数*/int vaild_student_password(char *p); /*声明验证密码函数*/int vaild_teacher_name(char *p); /*声明验证用户名函数*/int vaild_teacher_password(char *p); /*声明验证密码函数*/int vaild_two_password(char *p1,char *p2); /*声明验证两次密码是否相同函数*/ int yes_no_return(); /*声明选择是否返回上一层函数*/void load(); /*声明加载函数*/void register_(int *count1,int *count2); /*声明注册函数*/void display_student(struct student stu); /*声明显示学生信息函数*/void display_teacher(struct teacher tea); /*声明显示老师信息函数*/void student_file1(); /*将保存的学生的账号密码存入文件中*/ void student_file2(); /*将保存的学生的个人信息存入文件中*/ void student_file3(); /*将保存的学生的成绩存入文件中*/void teacher_file(); /*将保存的老师的账号密码存入文件中*/ void input_information(int count); /*声明输入学生信息函数*/void input_score_menu(int count); /*声明输入学生成绩函数*/void color(); /*声明选择窗体颜色函数*/void print_stu_information(int count_stu); /*声明输出账号为num的学生的信息函数*/void print_stu_score(int count_stu); /*声明输出账号为num的学生的成绩函数*/void show_menu(); /*声明初始化界面函数*/void input(); /*声明输入函数*/void menu1(); /*声明教师录入课程表主菜单函数*/void menu2(); /*声明学生查询课程表主菜单函数*/void rank(); /*声明显示时间顺序函数*/void querymenu3(); /*声明查询函数*/void looktime(); /*声明按照时间查询函数*/void looklessonname(); /*声明按照课程名查询函数*/void add(); /*声明保存函数*/void amend(); /*声明修改课程函数*/void amend1(); /*声明修改课程子函数*/void amendnews(int i); /*声明修改整个课程信息函数*/void amendtime(int i); /*声明修改课程时间函数*/void amendlessonname(int i); /*声明修改课程课程名函数*/void amendclassroom(int i); /*声明修改课程教室函数*/void deleted(); /*声明删除函数*/void add_score(int count); /*声明添加学生成绩函数*/void xiugai_score(int count); /*声明修改学生成绩函数*/void shanchu_score(int count); /*声明删除学生成绩函数*/void chaxun_score(int count); /*声明按要求查询学生成绩函数*/void paixu_score(int count); /*声明学生成绩排序函数*/void tongji_score(int count); /*声明学生成绩统计函数*/float chinese(int count); /*声明计算语文成绩最大值函数*/int chr(int count); /*声明计算语文成绩及格人数的函数*/ float english(int count); /*声明计算英语成绩最大值函数*/int ehr(int count); /*声明计算英语成绩及格人数的函数*/ float math(int count); /*声明计算数学成绩最大值函数*/int mhr(int count); /*声明计算数学成绩及格人数的函数*/ float computer(int count); /*声明计算计算机成绩最大值函数*/int thr(int count); /*声明计算计算机成绩及格人数的函数*/float PE(int count); /*声明计算体育成绩最大值函数*/int phr(int count); /*声明计算体育成绩及格人数的函数*/ float sum_score(int count); /*声明计算总分成绩最大值函数*/ void load_student(int a); /*声明启动学生函数*/void load_teacher(int a); /*声明启动老师函数*/struct student /*学生结构体*/{/*个人信息*/int student_id; /*账号*/char student_name[20]; /*姓名*/char password[16]; /*密码*/int age; /*年龄*/char qq[12]; /*QQ号*/char tel[12]; /*电话*/int grade; /*年级*//*各科成绩*/float chinese; /*语文分数*/float english; /*英语分数*/float math; /*数学分数*/float computer; /*计算机分数*/float PE; /*体育分数*/float sum; /*总分*//*课程表*/char time[10]; /*时间*/char lessonname[20]; /*课程名*/char teacher[20]; /*授课老师*/char classroom[10]; /*教室*/char hours[10]; /*第几节课*/int weeks; /*周时*/};struct teacher /*老师结构体*/ {int teacher_id; /*账号*/char teacher_name[20]; /*姓名*/char password[16]; /*密码*/};struct student our_student[student_num]; struct teacher our_teacher[teacher_num];void main() /*主函数*/{system("color f0"); /*初始化背景颜色*/show_menu(); /*制作人信息简介*/load();}void load() /*启动函数*/{int flag=1; /*控制循环结束的变量*/int a=0,b=0; /*记录已注册的学生的人数a为学生个数b为老师个数*/int *count1=&a,*count2=&b; /*指向学生人数和老师人数的指针*/int correct_student,correct_teacher;color();register_(count1,count2); /*注册学生和老师的帐号*/student_file1();teacher_file();while(flag){switch(show_menu_login()) /*显示登录菜单*/{case 1: /*选择1,进入学生登录*/if(correct_student=is_my_student(our_student,count1)){printf("\n ◆学生登录成功!\n");display_student(our_student[correct_student-1]);printf("\n");printf(" ");system("pause");load_student(a);}elseprintf("\n登录失败!\n");printf("\n");printf(" 提示:按Y退出登录界面,按N返回登录界面!!!\n");flag=yes_no_return();system("cls");break;case 2: /*选择2,进入老师登录,即管理员登录*/ if(correct_teacher=is_my_teacher(our_teacher,count2)){printf("\n ◆管理员登录成功!\n");display_teacher(our_teacher[correct_teacher-1]);printf("\n");printf(" ");system("pause");load_teacher(a);}elseprintf("\n登录失败!\n");printf("\n");printf(" 提示:按Y退出登录界面,按N返回登录界面!!!\n");flag=yes_no_return();system("cls");break;case 3: /*选择3,退出登录*/system("cls");flag=0;break;default:printf("请正确输入1-3:");system("cls");}}}void load_student(int a) /*启动学生函数*/{int flag=1;system("cls");while(flag){switch(show_student_select()){case 1: /*选择1,学生信息查询*/system("cls");print_stu_information(a);printf("\n");printf(" 提示:按Y退出学生查询界面,按N返回学生查询界面!!!\n");flag=yes_no_return();system("cls");break;case 2: /*选择2,学生成绩查询*/system("cls");print_stu_score(a);printf("\n");printf(" 提示:按Y退出学生查询界面,按N返回学生查询界面!!!\n");flag=yes_no_return();system("cls");break;case 3: /*选择3,学生课表查询*/menu2();printf(" 提示:按Y退出学生查询界面,按N返回学生查询界面!!!\n");flag=yes_no_return();system("cls");break;case 4: /*选择4,退出查询界面*/system("cls");flag=0;break;default:printf("请正确输入1-4:");system("cls");}}}void load_teacher(int a) /*启动老师函数*/{int flag=1;system("cls");while(flag){switch(show_teacher_select()){case 1: /*选择1,学生信息录入*/input_information(a);system("cls");student_file2();printf("\n 提示:按Y退出教师录入界面,按N返回教师录入界面!!!\n");flag=yes_no_return();system("cls");break;case 2: /*选择2,学生成绩录入*/input_score_menu(a);system("cls");student_file3();printf("\n 提示:按Y退出教师录入界面,按N返回教师录入界面!!!\n");flag=yes_no_return();system("cls");break;case 3: /*选择3,学生课表录入*/menu1();printf(" 提示:按Y退出教师录入界面,按N返回教师录入界面!!!\n");flag=yes_no_return();system("cls");break;case 4: /*选择4,退出管理界面*/system("cls");flag=0;break;default:printf("请正确输入1-4:");system("cls");}}}int length_student_name(char *p) /*验证用户名是否合法*/ {int l;l=strlen(p);if(l>20||l<1)return 0;elsereturn 1;}int vaild_student_name(char *p) /*判断用户名是否有效*/{int i=0;int len=strlen(p);if((*p>='a'&&*p<='z')||(*p>='A'&&*p<='Z')) /*判断首字母是不是字母*/ {for(i=0;i<len;i++){if(!(p[i]='_'||(p[i]>='a'&&p[i]<='z')||(p[i]>='A'&&p[i]<='Z')||(p[i]>='0'&&p[i]<=' 9'))) /*判断后面的字符是否有效*/return 0;}return 1;}elsereturn 0;}int length_student_password(char *p) /*密码长度有效性验证*/{int len;len=strlen(p);if(len<6||len>16)return 0;elsereturn 1;}int vaild_student_password(char *p) /*密码的有效性验证*/{int i=0;for(;*p!='\0';p++){if(!((*p>='a'&&*p<='z')||(*p>'A'&&*p<'Z')||(*p>='0'&&*p<='9'))) return 0;}return 1;}int vaild_two_password(char *p1,char *p2) /*验证两次密码是否相同*/{if(strcmp(p1,p2)==0)return 1;elsereturn 0;}int student_register(struct student *ptr_student,int *size) /*完成注册功能*/{char password[16];char repassword[16];if(*size==student_num){puts(" ◆注册人数已满!");printf("\n");return 0;}system("cls");printf("\n\n");printf(" ★请输入注册学生姓名:");fflush(stdin);gets(ptr_student[*size].student_name);if(!(length_student_name(ptr_student[*size].student_name)&&vaild_student_name(ptr_student[*size].student_name))){printf(" ◆您输入的姓名无效,学生姓名在1-20之间,首字符为字母,后面必须为字母、数字或下划线!!!");return 0;}printf("\n");printf(" ★请输入注册密码:");fflush(stdin);gets(password);printf("\n");printf(" ★请再次输入注册密码:");fflush(stdin);gets(repassword);printf("\n");if(!vaild_two_password(password,repassword)){printf("\n №:两次输入的密码不一致!!!");printf("\n");return 0;}elsestrcpy(ptr_student[*size].password,password);if(!(length_student_password(ptr_student[*size].password)&&vaild_student_pa ssword(ptr_student[*size].password))){printf(" ◆您输入的密码无效,密码应在6-16位之间,密码只能包含字母和数字!!!");printf("\n");return 0;}printf(" ★您的编号为:%d,这将是您的登录账号!!!",ptr_student[*size].student_id=20150000+*size);return 1;}int is_my_student(struct student *p,int *size) /*如果登录成功则返回第i+1个学生的信息,否则返回0*/{int i;int zhanghao;char mima[18];system("cls");printf("\n\n");printf(" ★请输入您的账号:");scanf("%d",&zhanghao);fflush(stdin);printf("\n");printf(" ★请输入您的密码:");gets(mima);for(i=0;i<*size;i++){if((zhanghao==p[i].student_id)&&(strcmp(mima,p[i].password)==0)) return i+1;}return 0;}void display_student(struct student stu) /*显示学生信息*/{printf("\n ★您的账号是:%d\n",stu.student_id);}int length_teacher_name(char *p) /*验证用户名是否合法*/{int l;l=strlen(p);if(l>20||l<1)return 0;elsereturn 1;}int vaild_teacher_name(char *p) /*判断用户名是否有效*/{int i=0;int len=strlen(p);if((*p>='a'&&*p<='z')||(*p>='A'&&*p<='Z')) /*判断首字母是不是字母*/ {for(i=0;i<len;i++){if(!(p[i]='_'||(p[i]>='a'&&p[i]<='z')||(p[i]>='A'&&p[i]<='Z')||(p[i]>='0'&&p[i]<=' 9'))) /*判断后面的字符是否有效*/return 0;}return 1;}elsereturn 0;}int length_teacher_password(char *p) /*密码长度有效性验证*/{int len;len=strlen(p);if(len<6||len>16)return 0;elsereturn 1;}int vaild_teacher_password(char *p) /*密码的有效性验证*/{int i=0;for(;*p!='\0';p++){if(!((*p>='a'&&*p<='z')||(*p>'A'&&*p<'Z')||(*p>='0'&&*p<='9'))) return 0;}return 1;}int teacher_register(struct teacher *ptr_teacher,int *size) /*完成注册功能*/{char password[16];char repassword[16];if(*size==teacher_num){puts(" ◆注册人数已满!");printf("\n");return 0;}system("cls");printf("\n\n");printf(" ★请输入注册教师姓名:");fflush(stdin);gets(ptr_teacher[*size].teacher_name);if(!(length_teacher_name(ptr_teacher[*size].teacher_name)&&vaild_teacher_na me(ptr_teacher[*size].teacher_name))){printf(" ◆您输入的姓名无效,教师姓名在1-20之间,首字符为字母,后面必须为字母、数字或下划线!!!");printf("\n");return 0;}printf("\n");printf(" ★请输入注册密码:");fflush(stdin);gets(password);printf("\n");printf(" ★请再次输入注册密码:");fflush(stdin);gets(repassword);printf("\n");if(!vaild_two_password(password,repassword)){printf("\n №:两次输入的密码不一致!!!");printf("\n");return 0;}elsestrcpy(ptr_teacher[*size].password,password);if(!(length_teacher_password(ptr_teacher[*size].password)&&vaild_teacher_password(ptr_teacher[*size].password))){printf(" ◆您输入的密码无效,密码应在6-16位之间,密码只能包含字母和数字!!!");printf("\n");return 0;}printf(" ★您的编号为:%d,这将是您的登录账号。
课程设计报告--学生选课管理系统
![课程设计报告--学生选课管理系统](https://img.taocdn.com/s3/m/3fdc06bc2e3f5727a4e962df.png)
数据库课程设计报告学生选课管理系统班级:10软件本2成员:常东亚 100913010彭红明 100913028章鑫 100913050目录一、课程设计任务和目的 (2)二、需求描述 (2)三、系统总体设计 (3)1.系统架构设计 (3)2.功能模块设计 (3)3.数据库设计(概要设计) (5)(1)E-R图 (5)(2)关系模式 (5)(3)数据库管理系统 (6)(4)数据库命名 (6)(5)数据库表 (6)四、系统界面设计 (11)1、用户登录账号和密码 (11)2、窗体功能描述 (12)3、页面/窗体关系结构图 (16)五、系统实现技术小结 (16)六、课程设计体会 (19)七、系统主要源程序清单 (20)一、课程设计任务和目的完成学生选课管理系统的开发并掌握SQL数据库的建立和使用。
二、需求描述本系统是一个单机版的小型的学生选课管理系统,在本系统中,开发了一个面向管理员、学生和教师这三个对象的教务平台,对学生提供的服务有登录、选课、、修改登录密码、和查询成绩这几个服务,所选课程总数不能超过3门;对教师提供的服务有登录、修改登录密码和登录成绩;对管理员提供的服务有登录开设学生和教师帐号、删除学生和教师帐号的服务。
三、系统总体设计1.系统架构设计(1)架构:单机(2)运行软件环境: windows XP 、jdk1.6(3)开发环境:硬件平台:CPU:P41.8GHz内存:256MB以上软件平台:windows XP SP3 、jdk1.6操作系统:WindowsXP数据库:SQL Server 2000、SQLServer SP4补丁开发工具:Eclipse 3.3分辨率:1024*7682.功能模块设计各模块功能:● 登录界面:登录界面是有帐号,密码两个JTextField ,管理员帐号一字母A开头,教师帐号一字母T 开头,学生帐号以字母S 开头,登录帐号或密码输入错误会弹出相应的提示对话框。
C语言课程设计实践报告—学生选课管理系统[内附程序源代码](可编辑)
![C语言课程设计实践报告—学生选课管理系统[内附程序源代码](可编辑)](https://img.taocdn.com/s3/m/8842e6c581eb6294dd88d0d233d4b14e85243e36.png)
C语言大型作业实践报告计算机1001制作者:李菁华张兆丰秦恒加2011年6月题目:选修课程管理系统要求:假定有N门选修课,每门课有课程编号、名称、课程性质、总学时、授课学时、实验或上机学时、学分、开课学期等信息。
学生可按要求(如总学分不能少于20学分)选课。
课程信息维护,如录入、修改、删除等,课程信息用文件保存。
课程信息浏览?输出。
学生选课功能。
查询功能包括:按学分、课程性质、学生等查询。
统计功能。
统计各门课程的选修人数。
本系统要有通用性、界面美观、操作方便。
要考虑系统安全。
课程信息录入系统选修课程信息录入选修课程信息保存主程序目录选择总体设计思路(流程图):学生选课系统课程信息读入学生信息输入选课系统数据保存选修课数据维护系统添加修改删除以word格式输出密码系统密码验证系统权限限制系统密码对退出程序密码对选修课程信息查找按各种类型查找密码错3次以上具体算法流程设计思路(流程图):主程序目录选择1.学生选课系统;2.选修课程信息输出;3.选修课程信息查找;4.管理员选项;5.退出系统。
管理员选项密码验证系统读入系统时间,通过强制转换成unsigned long int型数据作为初始密码用户输入密码(若是管理员会拥有密码钥匙,得出现在的密码,该密码每分钟都会变化)密码正确进入管理员管理界面,密码不正确重新输入密码输入错误3次以上 12 3学生选课系统选修课程信息以word2003形式输出返回主菜单选修课程信息查找选修课程信息从文件内读入输入按什么查找1.课程编号;2.课程名;3.课程种类;4.总课时;5.教学课时;6实验课时;7.学分;8.开课学期;9.已选人数。
输入查找的关键字从文件内读入的课程信息与关键字逐一对比,完全匹配输出;查找完毕学生信息输入课程信息浏览不选少于这门20分选课系统课选课成功判断学分是否大于20分大于20分结束选课选课信息储存退出程序管理员模块管理员模块 3目录选择1.学生选课系统;2.选修课程信息管理系统;3.退出系统12 5学生选课系统二级目录选择1.新建选修课程信息;2.管理选修课程信息;3.统计每门课程选择人数;4.选修课程信息输出;5.回到主菜单。
学生选课管理系统c语言
![学生选课管理系统c语言](https://img.taocdn.com/s3/m/c5261b24b6360b4c2e3f5727a5e9856a5712265e.png)
学生选课管理系统简介学生选课管理系统是一种用于学生选课和管理课程的系统。
通过该系统,学生可以方便地选取自己感兴趣的课程,并进行课程的管理和查询,同时教务部门可以通过系统进行课程的发布、修改和管理。
功能需求学生选课管理系统需要具备以下功能:1.学生注册和登录功能:学生需要先注册账号,然后通过账号登录系统。
2.学生选课功能:学生通过系统浏览可选的课程列表,并选择自己感兴趣的课程进行选课。
3.课程查询功能:学生可以查询已选和未选课程的详细信息,包括课程名称、授课教师、上课时间等。
4.课程管理功能:教务部门可以通过系统添加、修改和删除课程信息,包括课程名称、授课教师、上课时间等。
5.学生管理功能:教务部门可以通过系统管理学生信息,包括学生姓名、学号、选课情况等。
6.成绩管理功能:教务部门可以通过系统录入学生的成绩,并提供学生成绩查询功能。
7.课程评价功能:学生可以对已修完的课程进行评价,包括评分和评论。
8.学分统计功能:系统可以根据学生的选课情况自动计算学分和学分绩点,并提供查询功能。
技术实现为了实现学生选课管理系统,可以使用C语言进行开发。
以下是一些技术实现的建议:1.数据存储:可以使用文件系统来存储学生、课程和成绩等信息。
可以使用文本文件或二进制文件存储数据,通过文件操作函数进行读写。
2.用户界面:可以使用命令行界面或图形界面来实现用户的交互。
使用C语言的终端输出函数可以实现简单的命令行界面,使用图形界面库可以实现更复杂的图形界面。
3.数据结构:可以使用结构体来表示学生、课程和成绩等信息,通过数组或链表等数据结构进行管理。
4.用户认证:可以使用用户名和密码进行用户的身份验证。
可以将用户信息保存在文件中,通过比对输入的用户名和密码来验证用户身份。
5.查询和排序:可以使用各种算法来实现课程查询和排序功能。
例如,可以使用线性搜索来查询课程信息,使用冒泡排序或快速排序来对课程进行排序。
系统流程以下是学生选课管理系统的基本流程:1.学生注册和登录:学生在系统中注册账号,并通过账号登录系统。
学生信息管理系统c语言版源代码
![学生信息管理系统c语言版源代码](https://img.taocdn.com/s3/m/fdae52d7bb68a98270fefa35.png)
学生信息管理系统c语言版源代码#include <stdio.h> #include <string.h> #include <stdlib.h> #include <conio.h> #define N 1000typedef struct student {int number;char name[20];int grade;int gaoshu;int yingyu;int jisuanji;int sum;}STUDENT;STUDENT student[N]; int shuliang=0;void menu();void fhzjm(){char biaozhi[20];printf("\n");printf("还需要操作么,如果需要操作请输入:yes,否则请输入:no\n");scanf("%s",biaozhi);if(strcmp(biaozhi,"yes")==0){menu();}else if(strcmp(biaozhi,"no")==0)exit(0);else{printf("请输入正确的字符,谢谢~\n"); fhzjm();}}void DengJi(){int rs;int i,k=1;system("CLS");printf("请输入需要输入几个学生信息:"); scanf("%d",&rs);for(i=shuliang;i<shuliang+rs;i++,k++) {printf("请输入第%d个学生的学号:",k); scanf("%d",&student[i].number);printf("请输入学生的姓名:");scanf("%s",student[i].name);printf("请输入学生3门课的成绩:"); printf("请输入第1门课的成绩:");scanf("%d",&student[i].gaoshu);printf("请输入第2门课的成绩:");scanf("%d",&student[i].yingyu);printf("请输入第3门课的成绩:");scanf("%d",&student[i].jisuanji);}shuliang=shuliang+rs;fhzjm();}void ShanChu(){char shanchuinfo[10];system("CLS");printf("删除全部学生信息请输入\"all\",删除指定学号的学生信息请输入\"one\"\n");scanf("%s",shanchuinfo);if(strcmp(shanchuinfo,"all")==0){int j;printf("你删除的学生信息如下:\n");printf("-----------学号-------------姓名-------------高数--------------英语--------------计算机\t\n");for(j=0;j<shuliang;j++)printf("----%d-------%s-------%d-------%d-------%d\t\n",student[j].number,student[j].name,student[j].gaoshu,student[j].jisuanji);shuliang=0;printf("删除成功\n\n");}else if(strcmp(shanchuinfo,"one")==0){struct student *p=NULL;int choice;int i,j,k=0;printf("请输入你要删除的人的学号:");scanf("%d",&choice);for(i=0;i<shuliang;i++){if(choice==student[i].number){k=1;j=i;break;}}if(k){if(shuliang==1){p=&student[0];free(p);shuliang=0;}else{for(i=j;i<shuliang;i++) {student[i]=student[i+1];}shuliang=shuliang-1;}printf("删除成功\n\n");}else{printf("输入数据错误~\n"); }}fhzjm();}void LiuLan(){int i;system("CLS");if(shuliang==0){printf("系统里面没有任何学生的信息~\n");}else{for(i=0;i<shuliang;i++){printf("第%d个学生的学号为:%d\n",i+1,student[i].number);printf("第%d个学生的姓名为:%s\n",i+1,student[i].name);printf("第%d个学生的第一门课的成绩为:%d\n",i+1,student[i].gaoshu);printf("第%d个学生的第二门课的成绩为:%d\n",i+1,student[i].yingyu);printf("第%d个学生的第三门课的成绩为:%d\n",i+1,student[i].jisuanji);student[i].sum=student[i].gaoshu+student[i].yingyu+student[i].jisuan ji;printf("第%d个学生的总成绩为:%d\n",i+1,student[i].sum);}}fhzjm();}void ChaZhao(){int xx;char choice,yy[20];int i,j,k=0;system("CLS");if(shuliang==0){printf("系统里面没有任何学生的信息~\n");fhzjm();}printf("三种查找方式:学号,姓名,成绩\n");printf("如果按学号查找请输1,如果按姓名查找请输2,如果按成绩查找请输3\n");printf("请输入您查找的方式:");scanf("%s",&choice);if(choice=='1'){printf("请输入需要查找学生的学号:");scanf("%d",&xx);printf("您所查找的学生的信息为:\n");printf("----学号----姓名----高数成绩----英语成绩----计算机成绩----\t\n");for(i=0;i<shuliang;i++){if(xx==student[i].number){j=i;k=1;printf("----%d-------%s-------%d-------%d-------%d----\t\n",student[j].number,student[j].name,student[j].gaoshu,student[j].yingyu,student[i].jis uanji);}}if(k==0)printf("输入信息有误:\n");}else if(choice=='2'){printf("请输入需要查找学生的姓名:\n");scanf("%s",yy);printf("您所查找的学生的信息为:\n");printf("----学号----姓名----高数成绩----英语成绩----计算机成绩----\t\n");for(i=0;i<shuliang;i++){if(strcmp(yy,student[i].name)==0){j=i;k=1;printf("----%d-------%s-------%d-------%d-------%d----\t\n",student[j].number,student[j].name,student[j].gaoshu,student[j].yingyu,student[j].jis uanji);}}if(k==0)printf("输入信息有误:\n");}else if(choice=='3'){printf("请输入需要查找学生的成绩:\n");scanf("%d",&xx);printf("您所查找的学生的信息为:\n");printf("----学号----姓名----高数----英语----计算机----\t\n");for(i=0;i<shuliang;i++){if(xx==student[i].grade){j=i;k=1;printf("----%d-------%s-------%d-------%d-------%d----\t\n",student[j].number,student[j].name,student[j].gaoshu,student[j].yingyu,student[i].jis uanji);}}if(k==0)printf("输入信息有误:\n");}fhzjm();}void PaiXu(){struct student *p1[N],**p2,*temp;int i,j;system("CLS");p2=p1;for( i=0;i<shuliang;i++){p1[i]=student+i;}for( i=0;i<shuliang;i++){for( j=i+1;j<shuliang;j++){if((*(p2+i))->sum<(*(p2+j))->sum){temp=*(p2+i);*(p2+i)=*(p2+j);*(p2+j)=temp;} }}printf("按照总成绩排序之后的信息为:\n");printf("----学号----姓名----总成绩----\t\n");for( i=0;i<shuliang;i++){student[i].sum=student[i].gaoshu+student[i].yingyu+student[i].jisuan ji;printf("----%d-----%s----%d-----\n",(*(p2+i))->number,(*(p2+i))->name,(*(p2+i))->sum);}fhzjm();}void CunChu(){int i;FILE *rs;if((rs=fopen("student.txt","w"))==NULL){printf("not open");exit(0);}for(i=0;i<shuliang;i++){fwrite(&student[i], sizeof(student[i]), 1, rs); }if(ferror(rs)){fclose(rs);perror("写文件失败~\n");return;}printf("存储文件成功~\n");fclose(rs);fhzjm();}void DaoChu(){struct student t;int i=0;FILE* fp = fopen("student.txt", "r");shuliang=0;if(NULL==fp){perror("读取文件打开失败~\n");return;}memset(student,0x0,sizeof(student));while(1){fread(&t,sizeof(t),1,fp);if(ferror(fp)){fclose(fp);perror("读文件过程失败~\n");return;}if(feof(fp)){break;}student[i]=t;i++;}fclose(fp);shuliang=i; printf("导出文件成功~\n"); fhzjm();}void menu(){int n=0;system("CLS");printf(" 学生信息管理系统\n");printf(" 作者:陈椿\n");printf("-------------------MENU-----------------\n"); printf(" 1.登记学生信息\n");printf(" 2.删除学生信息\n");printf(" 3.浏览所有已经登记的学生\n");printf(" 4.查找\n");printf(" 4.1按学号查找\n");printf(" 4.2按姓名查找\n");printf(" 4.3按成绩查找\n");printf(" 5.根据总成绩排序\n");printf(" 6.存储到文件\n");printf(" 7.从文件导出\n");printf(" 8.退出系统\n");a: printf(" 请选择:");scanf("%d",&n);switch (n){case 1:DengJi();break;case 2:ShanChu();break;case 3:LiuLan();break;case 4:ChaZhao();break;case 5:PaiXu();break;case 6:CunChu();break;case 7:DaoChu();break;case 8:exit(0);break;default:{printf("请输入1-8之间的数字,谢谢~\n"); goto a;}}}main() {menu();}。
学生管理系统c语言源代码
![学生管理系统c语言源代码](https://img.taocdn.com/s3/m/3b1c2f0cf02d2af90242a8956bec0975f465a4b4.png)
学生管理系统c语言源代码学生管理系统c语言源代码#include stdio.h#include dos.h#include string.h#include stdlib.h#include malloc.h#define SIZE 8struct student{char name;char num;int score;float ave;struct student *next;}stu[SIZE],temp,s;void shuru(){int i,j,sum,length,flag=1,a;FILE *fp;while(flag==1){printf(“Define a rangeclass number:");scanf("%d",printf("Input the total number of the class(a):"); scanf("%d",length);if(lengtha)flag=0;}for(i=0;ilength;i++){printf("\n请输入学生的信息:");printf("\n输入姓名:");scanf("%s",stu[i].name);printf("\n输入序号.:");scanf("%s",stu[i].num);printf("\n输入成绩:\n");sum=0;for(j=0;jj++){printf("score %d:",j+1);scanf("%d",stu[i].score[j]);sum+=stu[i].score[j];}stu[i].ave=sum/3.0;}学生管理系统c语言源代码fp=fopen("stu1.txt","w");for(i=0;ilength;i++)if(fwrite(stu[i],sizeof(struct student),1,fp)!=1)printf("File write error\n");fclose(fp);fp=fopen("stu1.txt","r");printf("\name\ NO. score1 score2 score3 sum ave\n");for(i=0;ilength;i++){fread(stu[i],sizeof(struct student),1,fp);printf("%3s%5s%7d%7d%7d%7d%10.2f\n",stu[i].name,stu[i].num,stu[i ].score,stu[i].score,stu[i].score,sum=stu[i].score+stu[i].score+stu[i].score,stu[i].ave);}}void chaxun(){ FILE *fp, *fp1;char n,name;int i,j,k,t,m,flag=1;if((fp=fopen("stu1.txt","r"))==NULL){printf("Can not open the file.");exit(0);}printf("\noriginal data:\n");k=i;printf("\nPlease select the menu(1.number ):"); scanf("%d",switch(m){case 1:printf("\nchaxun number:");scanf("%s",n);for(flag=1,i=0;ii++){if(strcmp(n,stu[i].num)==0){j=i;flag=0;break;}}break;case 2:printf("\nchaxun name:");scanf("%s",name);for(flag=1,i=0;ii++){if(strcmp(name,stu[i].name)==0){j=i;flag=0;break;学生管理系统c语言源代码}}}if(!flag){printf("\nYou can find:\n");fp1=fopen("stu2.txt","w");printf(" name NO. score1 score2 score3ave\n");fwrite(stu[j],sizeof(struct student),1,fp1);printf("%-15s%11s%7d%7d%7d%10.2f",stu[j].name,stu[j].num,stu[j].score,stu[j].score,stu[j].score,stu[j].ave);}else printf("\nNot found!");fclose(fp);fclose(fp1);}xiugai(){ int a;printf("\nplease select the menu(1.CHARU 2.__ ):");scanf("%d",switch(a){case 1:Insert(); break;case 2:Delete(); break;}}Insert(){ FILE *fp;int i,j,t,n;printf("\nNO.:");scanf("%s",s.num);printf("name:");scanf("%s",);printf("score1,score2,score3:");scanf("%d,%d,%d",s.score,s.score,s.score);s.ave=(s.score+s.score+s.score)/3.0;if((fp=fopen("stu1.txt","r"))==NULL){printf("Can not open the file.");exit(0);}printf("\noriginal data:\n");for(i=0;fread(stu[i],sizeof(struct student),1,fp)!=0;i++) {printf("\n%-15s%11s",stu[i].name,stu[i].num);for(j=0;jj++)学生管理系统c语言源代码printf("%7d",stu[i].score[j]);printf("%10.2f",stu[i].ave);}fclose(fp);n=i;for(t=0;stu[t].aves.avett++);printf("\nnow:\n");fp=fopen("stu1.txt","w");for(i=0;ii++){fwrite(stu[i],sizeof(struct student),1,fp);printf("\n%-15s%11s",stu[i].name,stu[i].num);for(j=0;jj++)printf("%7d",stu[i].score[j]);printf("%10.2f",stu[i].ave);}fwrite(s,sizeof(struct student),1,fp);printf("\n%-15s%11s%7d%7d%7d%10.2f",,s.num,s.score,s.score, s.score,s.ave);for(i=t;ii++){fwrite(stu[i],sizeof(struct student),1,fp);printf("\n%-15s%11s",stu[i].name,stu[i].num);for(j=0;jj++)printf("%7d",stu[i].score[j]);printf("%10.2f",stu[i].ave);}fclose(fp);}Delete(){ FILE *fp;int i,j,t,n,flag;char number;if((fp=fopen("stu1.txt","rb"))==NULL){printf("Can not open the file.");exit(0);}printf("\noriginal data:");for(i=0;fread(stu[i],sizeof(struct student),1,fp)!=0;i++) {printf("\n%-15s%11s",stu[i].name,stu[i].num);for(j=0;jj++)printf("%7d",stu[i].score[j]);printf("%10.2f",stu[i].ave);}fclose(fp);n=i;学生管理系统c语言源代码printf("\nInput number deleted:");scanf("%s",number);for(flag=1,i=0;flagii++){if(strcmp(number,stu[i].num)==0){for(t=i;tt++){strcpy(stu[t].num,stu[t+1].num);strcpy(stu[t].name,stu[t+1].name);for(j=0;jj++)stu[t].score[j]=stu[t+1].score[j];stu[t].ave=stu[t+1].ave;}n=n-1;elseprintf("\n Not found!");printf("\nNow,the content of file:\n");fp=fopen("stu1.txt","wb");for(i=0;ii++)fwrite(stu[i],sizeof(struct student),1,fp);fclose(fp);fp=fopen("stu1.txt","r");for(i=0;fread(stu[i],sizeof(struct student),1,fp)!=0;i++)printf("%-15s%11s%7d%7d%7d%10.2f\n",stu[i].name,stu[i].num,stu[i].score, stu[i].score,stu[i].score,stu[i].ave);fclose(fp);}paixu(){FILE *fp;int i,j,n;if((fp=fopen("stu1.txt","r"))==NULL){printf("Can not open the file.");exit(0);}printf("\nfile'stu1.txt':");for(i=0;fread(stu[i],sizeof(struct student),1,fp)!=0;i++) {printf("\n%-15s%11s",stu[i].name,stu[i].num);for(j=0;jj++)printf("%7d",stu[i].score[j]);printf("%10.2f",stu[i].ave);}fclose(fp);n=i;for(i=0;ii++)for(j=i+1;jj++)学生管理系统c语言源代码if(stu[i].avestu[j].ave){temp=stu[i];stu[i]=stu[j];stu[j]=temp;}printf("\nnow:");fp=fopen("stu1.txt","w");for(i=0;ii++){fwrite(stu[i],sizeof(struct student),1,fp);printf("\n%-15s%11s",stu[i].name,stu[i].num);tongji(){ FILE *fp;int i,j,k,labe1,b;int a5=0;int a6=0;int a7=0;int a8=0;int a9=0; int a10=0; float t;if((fp=fopen("stu1.txt","r"))==NULL){printf("Can not open the file.");exit(0);}printf("\nfile'stu1.txt':");for(i=0;fread(stu[i],sizeof(struct student),1,fp)!=0;i++){printf("\n%-15s%11s",stu[i].name,stu[i].num); for(j=0;jj++)printf("%7d",stu[i].score[j]);printf("%10.2f",stu[i].ave);}fclose(fp);k=i;for(i=0;ii++){labe1=0;if(stu[i].ave60){labe1++;t=labe1/(float)k*100;}}printf("\nbujigelv:");printf("%f%",t);printf("\n");for(j=0;jj++){a5=0;a6=0;a7=0;a8=0;a9=0;a10=0;k=i;printf("kemu is %d:\n",j);for(i=0;ii++)学生管理系统c语言源代码{b=stu[i].score[j]/10;if(b6)a5++;elseif(b=6b7)a6++;elseif(b=7b8)a7++;elseif(b=8b9)a8++;if(b=9b10)a9++;elseif(b==10)a10++;}printf(" 不及格is %d\n",a5);printf(" 60--69 is %d\n",a6);printf(" 70--79 is %d\n",a7);printf(" 80--89 is %d\n",a8);printf(" 90--99 is %d\n",a9);printf(" 100 is %d\n",a10);}}main(){int a;printf(" ____\n"); printf(" 欢迎进入学生成绩管理系统\n");printf(" ____\n"); while(1){printf("\n选择菜单:\n");printf("\n");printf(" 1.输入 2.查询 3.排序 4.修改 5.统计 6.退出\n"); scanf("%d",switch(a){case 1: shuru();break;case 2: chaxun(); break;case 3: paixu(); break;case 4: xiugai(); break;学生管理系统c语言源代码case 5: tongji();break; case 6: exit(0); }。
选课系统源代码
![选课系统源代码](https://img.taocdn.com/s3/m/c36bc0ea0975f46526d3e100.png)
职称 char(10) not null default '讲师',
工资 smallmoney ,
岗位津贴 smallmoney ,
系别 char(10) not null
--创建授课关系表
use 学生选课管理系统
go
create table 授课关系表
(
教师号 char(10) not null,
课程号 char(10) not null,
constraint Teaching_Prim primary key (教师号,课程号),
where 姓名=@姓名
exec 姓名查找教师信息 '李力'
--drop Procedure 教师号查找教师信息
create Procedure 教师号查找教师信息
(
@教师号 char(10)
)
as
if (@教师号 is null)
begin
--创建选课关系表
use 学生选课管理系统
go
create table 选课关系表
(
学号 char(10) not null ,
课程号 char(10) not null,
成绩 numeric(6,2),
constraint Choice_Prim primary key (学号,课程号),
课程名,
成绩
from 学生信息表,课程信息表,选课关系表
where 学生信息表.学号 =选课关系表.学号 and 选课关系表.课程号 = 课程信息表.课程号
C语言程序设计——教室管理系统(源代码))
![C语言程序设计——教室管理系统(源代码))](https://img.taocdn.com/s3/m/95f3893ffe00bed5b9f3f90f76c66137ee064f1f.png)
C语言程序设计——教室管理系统(源代码))C语言程序设计——教室管理系统(源代码)非常有用的。
#include#include#include#define szSTR 64#define fileDB "c:\\contact.txt"struct CONTACT {char num[szSTR];/*教室编号*/char site[szSTR];/*教室位置*/char snum[szSTR];/*座位数*/char tv[szSTR];/*有无多媒体*/char use[szSTR];/*是否可用*/};typedef struct CONTACT CON;#define ANUM 1#define ASITE 2#define ASNUM 3#define ATV 4#define AUSE 5#define BFULL 0xFFint OPER[6] = {BFULL, ANUM, ASITE, ASNUM, ATV,AUSE};void input(CON * s, int mask){if(mask & ANUM) { printf("请输入教室编号:"); scanf("%s", s->num); }if(mask & ASITE) { printf("请输入教室位置:"); scanf("%s", s->site); }if(mask & ASNUM) { printf("请输入座位数:"); scanf("%s", s->snum); }if(mask & ATV){printf("请输入是否有多媒体(有/Y*无/N):");scanf("%s",s->tv);}if(mask & AUSE) { printf("请输入是否可用(可/Y*否/N):"); scanf("%s", s->use); } }/*end input*/void show (int id, CON * s){if(!s) return ;if(id)printf("%d\t%s\t\t%s\t%s\t\t%s\t\t%s\n",id, s->num , s->site , s->snum , s->tv,s->use );elseprintf("【编号】%s【教室编号】%s【位置】%s【座位数】%s 【有无多媒体】%s【是否可用】%s\n",s->num , s->site , s->snum , s->tv,s->use );/*end if*/}/*end show*/void regist(void){CON s; FILE * f = 0;input(&s, BFULL);f = fopen(fileDB, "ab");fwrite(&s,sizeof(s),1,f);fclose(f);printf("资料已保存!\n\n\n\n");}/*end regist*/int browse(char * key, fpos_t * p, CON * s){FILE * f =0; int i = 0, r = 0; CON t;char * a = 0, * b = 0; fpos_t q;if(!s) return 0;f = fopen(fileDB, "rb");if(!f) {printf("数据库暂无记录\n\n\n\n");return 0;}/*end if*/printf("编号\t教室编号\t位置\t座位数\t有无多媒体(Y/N)\t是否可用(Y/N)\n");printf("----------------------------------------------------------------------\n");while(!feof(f)) {fgetpos(f, &q);r = fread(&t, sizeof(t), 1, f);if(r<1)break;if(t.num[0]==0) continue;if(key) {a = strstr(t.num , key);b = strstr(t.site , key);if(a == 0 && b == 0) continue;}/*end if*/if(p) *p = q;if(s) memcpy(s, &t, sizeof(t));i++;show(i, &t);}/*end while*/printf("----------------------------------------------------------------------\n\n\n\n\n");return i;}/*end browse*/fpos_t query(CON * s){char key[szSTR]=""; fpos_t p = 0; int r = 0;printf("请输入教室编号或者位置:");scanf("%s", key);r = browse(key, &p, s);return r?p:-1;}/*end query*/void clear(void){FILE * f = 0; CON s;fpos_t p = query(&s);if(p<0) return;f = fopen(fileDB, "rb+");fsetpos(f, &p);memset(&s, 0, sizeof(s));fwrite(&s, sizeof(s),1, f);fclose(f);printf("记录已删除!\n\n\n\n\n");}/*end clear*/void modify(void){FILE * f = 0; CON s; int cmd = 0;fpos_t p = query(&s);if(p<0) return;f = fopen(fileDB, "rb+");fsetpos(f, &p);for(;;) {show(0, &s);printf("请选择:1-编号;2-位置;3-座位数;4-有无多媒体;5-是否可用;6-保存并退出;7-放弃修改并退出\n\n\n\n");scanf("%d", &cmd);switch(cmd) {case 1:case 2:case 3:case 4:input(&s, OPER[cmd]);break;case 6:fsetpos(f, &p);fwrite(&s, sizeof(s), 1, f);case 7:fclose(f);return;default:printf("错误的操作,请重新输入。
c++课设实验报告——学生信息管理系统
![c++课设实验报告——学生信息管理系统](https://img.taocdn.com/s3/m/69e1e1ec6294dd88d0d26b3c.png)
目录一、需求分析 (02)二、概要设计 (02)三、详细设计 (03)四、调试分析 (14)五、用户手册 (14)六、测试数据 (14)七、附录 (15)一、需求分析1、用数组存储学生信息,包括姓名学号,各科目成绩。
2、在用户输入成绩时,需要分别输入平时成绩和期末成绩,在程序的aver函数中计算平时成绩和期末成绩所占百分比,算出最终成绩,并且在退出程序时保存。
3、查询学生成绩支持用学号查询或者用姓名查询。
4、修改成绩界面可以选择各科目,修改时要求分别输入平时成绩和期末成绩。
5、菜单选项可以查询并且显示各科优秀(大于90分)的学生和不及格(小于60分)的学生。
6、排名,把所有学生的最终成绩求和,按总分从大到小排序并且显示学生姓名学号总分。
7、各个科目平均分,每门科目的最终成绩相加除去学生人数。
8、退出并且保存用户输入,修改的数据,生成stu.dat,可以以记事本的方式打开查看学生成绩信息。
二、概要设计1、程序结构较为简单,因此声名两个类:学生成绩类class score,学生信息类class stu,前者处理学生成绩计算(求总分,排序,求平均分),后者完成学生信息输入查询和修改。
2、建立六个数组,分别存储姓名学号,四门科目,每门科目先通过平时成绩期末成绩,平时成绩百分比计算后放入各科目数组中。
3、查询学生信息时通过int t=0;for(;t<f;t++)if(strcmp(name,stusco[t].getname())==0){ u[j]=t;j++;}验证学生姓名,和int t=0;for(;t<f;t++){if(number==stusco[t].getnumber())验证学生学号,然后验证通过后显示学生信息和成绩。
4、输入学生成绩时通过if(stusco[lo].getnumber()==stusco[i].getnumber()){flag = 0;}验证是否已经储存相同学号的学生,如果有,则显示信息添加失败。
c课课程设计以及源代码
![c课课程设计以及源代码](https://img.taocdn.com/s3/m/6da64292a0c7aa00b52acfc789eb172dec639967.png)
c 课课程设计以及源代码一、教学目标本课程的教学目标是使学生掌握C语言的基本语法、数据结构和算法,培养学生编程思维和解决问题的能力。
具体目标如下:1.知识目标:(1)理解C语言的基本语法,包括变量、数据类型、运算符、表达式等;(2)掌握函数的定义和调用,了解作用域规则;(3)熟悉数组的声明和使用,理解字符串的基本操作;(4)了解指针的概念和应用,掌握指针与数组、指针与函数的关系;(5)学习结构体和联合体,掌握文件操作的基本方法。
2.技能目标:(1)能够运用C语言编写简单的程序,实现输入输出、数据处理等功能;(2)学会使用调试工具,能够发现和解决程序中的错误;(3)掌握常用的算法,如排序、查找、递归等,并能够灵活运用;(4)具备一定的编程规范和编程习惯,能够阅读和理解他人的代码。
3.情感态度价值观目标:(1)培养学生对计算机科学的兴趣和好奇心,激发学生主动学习的动力;(2)培养学生团队合作的精神,学会与他人交流和分享;(3)培养学生勇于面对困难和挑战,培养解决问题的能力;(4)培养学生具有良好的职业操守,注重诚信和责任心。
二、教学内容根据课程目标,本课程的教学内容主要包括以下几个方面:1.C语言的基本语法:变量、数据类型、运算符、表达式、函数等;2.数据结构:数组、字符串、指针、结构体、联合体等;3.算法:排序、查找、递归等常用算法;4.文件操作:文件的打开、关闭、读写等基本操作;5.编程实践:编写简单的程序,锻炼编程能力和解决问题的能力。
三、教学方法为了达到课程目标,本课程将采用多种教学方法,包括:1.讲授法:通过讲解和演示,使学生掌握C语言的基本语法和数据结构;2.讨论法:学生进行小组讨论,培养学生的团队合作能力和解决问题的能力;3.案例分析法:分析典型的编程案例,使学生了解C语言在实际应用中的重要性;4.实验法:让学生动手编写程序,培养学生的编程能力和实践能力。
四、教学资源为了支持教学内容和教学方法的实施,本课程将准备以下教学资源:1.教材:选用权威、实用的C语言教材,为学生提供系统的学习资料;2.参考书:提供相关的参考书籍,丰富学生的知识体系;3.多媒体资料:制作课件、教学视频等,增强课堂教学的趣味性和生动性;4.实验设备:提供计算机实验室,让学生进行编程实践和实验操作。
C语言上机实验报告--学生信息管理系统设计__内附源代码
![C语言上机实验报告--学生信息管理系统设计__内附源代码](https://img.taocdn.com/s3/m/5cd698c189eb172dec63b706.png)
C语言上机实验报告------学生信息管理系统设计姓名:学号:班级:指导老师:学院:学校:C语言上机实验报告------学生信息管理系统设计一、实验题目学生信息管理系统设计学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail 等。
试设计一学生信息管理系统,使之能提供以下功能:(1)系统以菜单方式工作(2)学生信息录入功能(学生信息用文件保存)---输入(3)学生信息浏览功能---输出(4)查询、排序功能---算法(5)按学号查询(6)按姓名查询(7)学生信息的删除与修改(可选项)二、本课程的地位、作用与目的为综合应用C语言程序设计理论知识、进一步提高学生综合解决问题、协调工作的能力和良好的软件开发习惯,特安排本实验内容。
希望通过该实习能够进一步激发学生的学习热情,培养学生初步编程的能力,为后续的学习和发展奠定基础。
三、分析过程1、能够实现对学生基本信息数据的增加和删除2、实现对录入保存后的学生基本信息进行格式化浏览3、提供学号和姓名两种方式对学生基本信息数据的查询4、能够对随机输入的学生基本信息数据按学号进行排序5、学生信息数据保存在文件中,方便数据的多次使用为了实现以上功能,必须设计的函数如下:录入函数、查询函数(分为姓名查询和学号查询)、删除函数、排序函数和几个菜单绘制函数等四、实验源代码:#include <stdio.h>#include<string.h>#include<conio.h>#include<stdlib.h>#include<time.h>#define num 12//定义学生结构体typedef struct student{int id;char name[num];int age;char sex[4];struct birth{int year;int month;int day;}date;char add[30];int phone;}stu;//功能选择菜单void menu(){printf("\n");printf("\n");printf(" 学生信息管理系统\n");printf("\n");printf("********************************************************************* **\n");printf(" ==============1.学生信息录入 2.学生信息浏览===============\n");printf("\n");printf(" ==============3.学号查询信息 4.姓名查询信息===============\n");printf("\n");printf(" ==============5.按学号排序 6.删除学生信息===============\n");printf("\n");printf(" ============== 0.退出系统===============\n");printf("\n");printf("\n");printf("********************************************************************* *\n");printf("\n");printf(" 按编号选择对应功能\n");printf("\n");printf(" +++++++++++++++++++ XXXXXXX制作+++++++++++++++++++++\n");printf("\n");}//修改菜单void printmenu(){printf("********************************************************* **\n");printf("-------1.完全修改 2.学号修改---------");printf("-------3.姓名修改 4.性别修改---------");printf("-------5.生日修改 6.地址修改---------");printf("-------7.电话修改 0.退出修改---------");printf("********************************************************* **\n");}//取当前时间int nowtime(){struct tm *local;time_t t;t=time(NULL);local=localtime(&t);return local->tm_year+1900;//求出当前时间的年份}//输出文件中学生信息void print(char *file){stu temp;FILE *fp=fopen(file,"r");if(fp==NULL){printf("打开文件%s失败!\n",file);return;}printf("文件%s中学生信息如下:\n",file);printf("%8s%8s%6s%6s%8s%4s%4s%16s%12s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");fseek(fp,0,SEEK_SET);//从文件开始为之读取while(fread(&temp,sizeof(stu),1,fp))printf("%8d%8s%6d%6s%8d%4d%4d%16s%12d\n",temp.id,,temp.age,t emp.sex,temp.date.year,temp.date.month,temp.date.day,temp.add,temp.ph one);//格式化输出学生信息fclose(fp);//关闭文件}void luru(char *file){int count,sexnum,i=0,m;stu temp,temp1;FILE *fp=fopen(file,"a+");//追加方式打开文件if(fp==NULL){printf("打开文件%s失败!",file);return;}printf("请确定本次需要录入几名学生信息:");scanf("%d",&count);for (i=0;i<count ;i++ ){printf("录入要写入文件%s的第%d名学生信息\n",file,i+1); Repeat:printf("请输入学号:");m=scanf("%d",&temp.id);if (m==0){printf("输入的数据不是整型数据!\n");fflush(stdin);//清除缓存goto Repeat;}fseek(fp,0,SEEK_SET);//从文件开始位置读取while(fread(&temp1,sizeof(stu),1,fp)){if (temp1.id==temp.id)//判断学号是否已存在{printf("学号已存在!\n");goto Repeat;}//若学号已存在,返回继续读取学号}printf("请输入姓名:");scanf("%s",);printf("请输入性别:0为女生,1为男生:");{scanf("%d",&sexnum);if (sexnum==1) strcpy(temp.sex,"男");else strcpy(temp.sex,"女");}printf("请输入出生年月日:");scanf("%d%d%d",&temp.date.year,&temp.date.month,&temp.date.day);temp.age=nowtime()-temp.date.year;printf("请输入地址:");scanf("%s",&temp.add);printf("请输入联系电话11位:");scanf("%d",&temp.phone);if(!fwrite(&temp,sizeof(stu),1,fp)){printf("向文件%s写入信息失败!\n",file);return;}}printf("向文件%s写入信息成功!\n",file);fclose(fp);}int IsEmpty(FILE *fp){int len;fseek(fp,0,SEEK_END);//指针移动到文件尾len=ftell(fp);//取指针的文职获取长度return(len==0)?1:0;//0代表文件为空}void idsearch(char *file){int findid;stu temp;FILE *fp=fopen(file,"r");if (fp==NULL){printf("文件无法打开!");return;}if(IsEmpty(fp)){printf("文件为空,请先录入信息!");return;}printf("输入要查找学生的学号:");scanf("%d",&findid);fseek(fp,0,SEEK_SET);while(fread(&temp,sizeof(stu),1,fp)){if(temp.id==findid){printf("%8s%8s%6s%6s%8s%4s%4s%16s%11s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");printf("%8d%8s%6d%6s%8d%4d%4d%16s%11d\n",temp.id,,temp.a ge,temp.sex,temp.date.year,temp.date.month,temp.date.day,temp.add,tem p.phone);//格式化输出学生信息return;}}printf("没有找到学号为%d的学生的信息!",findid);return;fclose(fp);}void namesearch(char *file){char name[num];stu temp;FILE *fp=fopen(file,"r");if (fp==NULL){printf("文件无法打开!");return;}if(IsEmpty(fp)){printf("文件为空,请先输入学生信息!");return;}printf("输入要查找的学生的姓名:");scanf("%s",name);fseek(fp,0,SEEK_SET);while(fread(&temp,sizeof(stu),1,fp)){if (!strcmp(,name)){printf("下面是姓名为%s的学生的信息:\n",name);printf("%8s%8s%6s%6s%8s%4s%4s%16s%11s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");printf("%8d%8s%6d%6s%8d%4d%4d%16s%11d\n",temp.id,,temp.a ge,temp.sex,temp.date.year,temp.date.month,temp.date.day,temp.add,tem p.phone);//格式化输出学生信息return;}}printf("没有找到姓名为%s的学生的信息!",name);fclose(fp);}//排序函数void paixu(char *file){int i,j,k,len;stu s[num],temp;FILE *fp=fopen(file,"r");if(fp==NULL){printf("文件无法打开!");return;}if(IsEmpty(fp)){printf("文件为空,请先录入信息!");return;}fseek(fp,0,SEEK_END);//指针移动到文件末尾len=ftell(fp)/sizeof(stu);fseek(fp,0,SEEK_SET);for(i=0;i<len;i++)fread(s+i,sizeof(stu),1,fp);fclose(fp);for(i=0;i<len;i++){k=i;for(j=i+1;j<len;j++){if(s[j].id<s[k].id)k=j;}if(k!=i){temp=s[i];s[i]=s[k];s[k]=temp;}}printf("下面是按学号从小到大顺序排序后的学生的信息:\n");printf("%8s%8s%6s%6s%8s%4s%4s%16s%11s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");for(i=0;i<len;i++)printf("%8d%8s%6d%6s%8d%4d%4d%16s%11d\n",s[i].id,s[i].name,s[i].a ge,s[i].sex,s[i].date.year,s[i].date.month,s[i].date.day,s[i].add,s[i ].phone);//格式化输出学生信息remove("学生信息表.txt");//删除以前存放数据的文件fp=fopen(file,"w");for(i=0;i<len;i++)fwrite(s+i,sizeof(stu),1,fp);fclose(fp);}//删除函数void shanchu(char *file){int i=0,len,del;stu s[num];FILE *fp=fopen(file,"r");if(fp==NULL){printf("文件无法打开!");return;}if(IsEmpty(fp)){printf("文件为空,请先录入学生信息!");return;}printf("输入需要删除的学生的学号:");scanf("%d",&del);fseek(fp,0,SEEK_SET);while(fread(s+i,sizeof(stu),1,fp)){if(s[i].id==del){printf("下面是按学号为%d的学生的信息:\n",del);printf("%8s%8s%6s%6s%8s%4s%4s%16s%11s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");printf("%8d%8s%6d%6s%8d%4d%4d%16s%11d\n",s[i].id,s[i].name,s[i].a ge,s[i].sex,s[i].date.year,s[i].date.month,s[i].date.day,s[i].add,s[i ].phone);//格式化输出学生信息i=i-1;}i++;}fclose(fp);len=i;fp=fopen(file,"w");fseek(fp,0,SEEK_SET);for(i=0;i<len;i++) //删除后重写文件fwrite(s+i,sizeof(stu),1,fp);fclose(fp);}void main(){int key;char file[]={"学生信息表.txt"};do{menu();printf("选择对应功能操作:");scanf("%d",&key);switch(key){case 1:luru(file);break;case 2:print(file);break;case 3:idsearch(file);break;case 4:namesearch(file);break;case 5:paixu(file);break;case 6:shanchu(file);break;case 0:exit(0);default:printf("选择错误,请重新选择!");}printf("\n");printf("按任意键返回上级菜单!");getch();fflush(stdin);system("cls");}while (key!=0);}五.实验过程及结果:1.程序主菜单运行界面2.学生信息录入运行界面3.学生信息浏览运行界面4.学生学号查询运行界面5.学生姓名查询运行界面6.按学号排序运行界面第一次出现乱码,改正后运行如第二张图片所示7.删除学生信息运行界面六、感想在本次实验的过程中,出现了各种各样的问题。
学生选课系统实验报告
![学生选课系统实验报告](https://img.taocdn.com/s3/m/29e1033a87c24028915fc360.png)
选课系统实验报告一、实验目的(1)掌握常用内部控件的主要属性、事件和方法,利用常用控件进行程序设计以及编程;(2)掌握使用Access或者SQL sever建立数据库,实现VB与数据库的链接;(3)掌握ADO控件的属性,事件,和方法,利用控件进行程序设计。
二、实验要求(1)设计一个学生选课系统,实现选课、退课及查询的功能;(2)四周时间内完成,第十五周上交。
三、实验步骤(1)查找资料,在脑中形成基本框架;(2)建立SQL Sever 数据库表“学生基本信息表”、“课程信息表”、“已选课程表”,插入数据并保存脚本文件;(3)建立窗体框架,包括登录窗体“登录”、父窗体“学生选课管理系统”和其他6个子窗体;(4)运用VB常用控件和ADO控件及DataGrid控件设计每个窗体的界面(以下为几个主要界面);(5)利用ADO实现与数据库表的链接,编写相应代码(全部代码在工程里,在此仅复制主要窗体的代码);登录窗体代码:Private Sub Command1_Click()If (Text1.Text = 123 And Text2.Text = 123 And Option1.V alue = True) Or (Text1.Text = 321 And Text2.Text = 321 And Option2.V alue = True) Then学生选课管理系统.Show登录.Visible = FalseElseMsgBox "你的输入的用户名和密码不匹配,或者没有选择用户身份!", 64, "提示信息"Text1.Text = ""Text2.Text = ""Text1.SetFocusEnd IfEnd SubPrivate Sub Command2_Click()EndEnd SubPrivate Sub Text1_click()MsgBox "请查看Word文档“操作说明”获得用户名和密码!", 64, "温馨提示"End SubPrivate Sub Timer1_Timer()If Label3.Left > 6000 ThenLabel3.Left = 0ElseLabel3.RefreshEnd IfEnd SubPrivate Sub Timer2_Timer()Label3.Left = CInt(Label3.Left) + 10End SubPrivate Sub Timer3_Timer()Label3.Left = -1700End Sub选课系统窗体代码:Private Sub Form_Load()If 登录.Option1.V alue = True Then学生个人课表.Enabled = False学生选课.Enabled = FalseElseIf 登录.Option2.V alue = True Then 基本信息管理.Enabled = False课程信息管理.Enabled = False所有学生信息.Enabled = FalseEnd IfEnd SubPrivate Sub 基本信息管理_Click() Dim newdoc As New 基本信息管理newdoc.ShowEnd SubPrivate Sub 课程信息管理_Click() Dim newdoc As New 课程信息管理newdoc.ShowEnd SubPrivate Sub 所有学生信息_Click() Dim newdoc As New 所有学生信息newdoc.ShowEnd SubPrivate Sub 退出_Click()EndEnd SubPrivate Sub 学生选课_Click()Dim newdoc As New 学生选课newdoc.ShowEnd SubPrivate Sub 可选课程信息_Click() Dim newdoc As New 可选课程信息newdoc.ShowEnd SubPrivate Sub 学生个人课表_Click() Dim newdoc As New 学生个人课表newdoc.ShowEnd Sub课程信息管理窗体代码:Private Sub Command1_Click()Adodc1.Recordset.AddNewEnd SubPrivate Sub Command2_Click()Adodc1.Recordset.UpdateEnd SubPrivate Sub Command3_Click()Adodc1.Recordset.DeleteAdodc1.Recordset.MoveNextEnd SubPrivate Sub Command4_Click()EndEnd SubPrivate Sub 课程信息管理_Load()Adodc1.Recordset.MoveFirstEnd Sub学生选课窗体代码:Private Sub Command1_Click()If Text1.Text = "" And Text2.Text = "" And Text3.Text = "" And Text4.Text = "" Then MsgBox "已无课程可选!", 64, "提示信息"ElseAdodc2.Recordset.AddNewAdodc2.Recordset.Fields("课程代码").V alue = Text1.TextAdodc2.Recordset.Fields("课程名称").V alue = Text2.TextAdodc2.Recordset.Fields("学时").V alue = Text3.TextAdodc2.Recordset.Fields("学分").V alue = Text4.TextAdodc2.Recordset.UpdateAdodc1.Recordset.DeleteAdodc1.RefreshMsgBox "恭喜你选课成功", 64, "提示信息"End IfEnd SubPrivate Sub Command2_Click()If Text5.Text = "" And Text6.Text = "" And Text7.Text = "" And Text8.Text = "" Then MsgBox "已退完!", 64, "提示信息"ElseAdodc1.Recordset.AddNewAdodc1.Recordset.Fields("课程代码").V alue = Text8.TextAdodc1.Recordset.Fields("课程名称").V alue = Text7.TextAdodc1.Recordset.Fields("学分").V alue = Text6.TextAdodc1.Recordset.Fields("学时").V alue = Text5.TextAdodc1.Recordset.UpdateAdodc2.Recordset.DeleteAdodc2.RefreshMsgBox "退课成功", 64, "提示信息"End IfEnd Sub(6)运行测试程序,修改不足的地方,生成exe文件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要C语言是在国内外广泛使用的一种计算机语言。
C语言简洁紧凑、灵活方便、运算符丰富、适用范围大、可移植性好。
它既具有高级语言的特点,又具有汇编语言的特点。
它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
本学生选课系统主要利用C语言的数组指针和文件操作能力设计开发一个小型的选课系统,至少具有如下功能:查看课程信息、查找课程信息、增加课程信息、修改课程信息、选课等功能。
本文主要对学生选课系统来进行说明。
本程序主要考察对自定义函数的熟悉程度,本程序中主要使用到的是数组的相关操作,包括数组的输入、输出、查找、插入、删除等操作,需要对数组有比较深入的掌握。
还包括指针、函数、结构体、文件等C语言的基础知识的运用。
关键字:源代码、指针、调用函数、流程图、结构、数组。
目录第一章设计题目的内容、任务及具体要求 (1)第二章总体设计思路 (2)2.1程序功能 (2)2.2模块关系 (2)2.3总体框图 (3)第三章功能模块的具体设计 (4)3.1主函数模块的设计 (4)3.2显示课程信息模块的设计 (7)3.3查询模块模块的设计 (8)3.4增加模块的设计 (9)3.5删除模块模块的设计 (13)3.6修改模块模块的设计 (14)3.7选课模块的设计 (15)3.8显示选课情况模块的设计 (17)第四章功能模块的调试及测试 (18)4.1登陆界面和主菜单界面的显示 (18)4.2查询所有课程信息的显示结果 (19)4.3查询单个课程信息的显示结果 (19)4.4添加课程信息的显示结果 (20)4.5删除和修改课程信息的显示结果 (20)4.6选课的显示结果 (21)4.7 查询选课情况的显示结果 (22)4.8退出 (22)总结 (23)致谢 (24)参考资料: (25)附程序清单 (26)第一章设计题目的内容、任务及具体要求设计题目:学生选课系统设计内容:本程序属于非数值计算型算法设计,学生需要设计出学生选课系统所需要的基本功能,并设计简单的界面(无需图形化)。
本程序主要考察对自定义函数的熟悉程度,本程序中主要使用到的是数组的相关操作,包括数组的输入、输出、查找、插入、删除等操作,需要对数组有比较深入的掌握。
要求程序运行结果正确,程序和算法具有一定程序度的健壮性,稳定性。
设计要求:(1)通过提示菜单选择可以进行的操作。
(2)将课程的信息存入文件中,并命名为LessonInfo.txt。
(3)将选课情况信息存入文件中,并命名为SelectInfo.txt。
(4)在本系统中可以进行管理系统包含的基本操作,其中包括1)查看所有课程的信息2)输入一门课程的课程编号,从当前课程中进行查找,如果找到则显示该课程的相关信息,如果没有找到则给出提示信息3)添加一门课程的基本信息,通过输入课程编号,首先查找是否存在该课程编号的课程,如果存在则提示重新输入,否则将该课程按照顺序插入到相应位置4)删除一门课程的基本信息,通过输入课程编号,首先查找是否存在该课程编号的课程,如果存在则将该课程删除,否则给出提示信息,提示该课程不存在5)选修一门课程,需要给出学号和课程编号,如果课程编号不存在则重新输入,直到输入正确为止,并将学号和相应的课程编号存入SelectInfo.txt文件中(5)课程基本信息包括课程编号、课程名、学时和学分这些简单信息。
(6)课程信息文件中每一行存放一门课程的信息。
第二章总体设计思路2.1 程序功能此系统是简单的学生选课系统。
具体的功能包括:1)输入密码进入系统。
2)查看所有课程的信息3)输入一门课程的课程编号,从当前课程中进行查找,如果找到则显示该课程的相关信息,如果没有找到则给出提示信息4)添加一门课程的基本信息,通过输入课程编号,首先查找是否存在该课程编号的课程,如果存在则提示重新输入,否则将该课程按照顺序插入到相应位置5)删除一门课程的基本信息,通过输入课程编号,首先查找是否存在该课程编号的课程,如果存在则将该课程删除,否则给出提示信息,提示该课程不存在6)对课程信息进行修改。
7)选修一门课程,需要给出学号和课程编号,如果课程编号不存在则重新输入,直到输入正确为止,并将学号和相应的课程编号存入SelectInfo.txt文件中8)查看所选课程。
2.2 模块关系根据提示输入学号和密码进入系统。
通过主函数模块进入各个其它函数的模块,然后达到对课程信息的查看、增加、删除、修改和选课的功能,在这些模块中又调用其它小模块(如:排序模块)。
本程序主要有:主函数模块、显示课程信息模块、查询模块、增加模块、删除模块、修改模块、选课模块、显示选课情况模块等八个模块组成。
2.3总体框图先输入验证信息进入主模块,然后选择调用的模块第三章功能模块的具体设计3.1 主函数模块的设计在主函数中通过inset()函数让用户输入验证信息进入,简单菜单的制作可以利用printmenu()函数实现。
从文件中获取课程信息,并存放在定义的结构数组desk[100]中。
定义结果的源代码为struct classin{int number;char classname[10];int hours;double credit;};typedef struct classin Classin;Classin desk[100] = {0}然后将文件中的信息读入此数组中,读取函数的代码为:cfptr = fopen("LessonInfo.txt","r");while(!feof(cfptr)){fscanf(cfptr, "%d%s%d%lf", &desk[i].number, desk[i].classname, &desk[i].hours, &desk[i].credit);i++;}在后面的使用中都是调用此地址便可以对数组进行修改。
输入选择项choice,再用switch语句去调用其它函数,具体实现如下(主函数的主要代码):while(choice != 8){switch(choice){case 1:myread(desk);break;case 2:myfind(desk);break;case 3:myadd(desk);shunxu(desk);filewhite(desk);break;case 4:mydelete(desk);filewhite(desk);break;case 5:mymodify(desk);shunxu(desk);filewhite(desk);break;case 6:selection(desk, studentin);filewrite(studentin);break;case 7:output(studentin);break;default:break;}接着判断用户是否继续输入,若继续,则重新进行选择;否则,退出程序。
图3-1 inset()函数模块的流程图上图是简单的将输入学号和密码的过程提示是一遍,但实际函数中我使用的三从循环。
第一重循环是输入学号;第二重循环是判断该学会是否存在,若学号不存在便提示是再输,还是退出系统;在学号存在时进入第三重循环,输入密码(注:学号和密码是在运行此函数时从文件中读到数组里)并在数组中查找,若有和该密码相等的数组元素,就将进入系统,否则提示继续或退出.图3-2 main()函数模块的流程图在次函数中用户通过输入选项进入不同的函数模块。
当每次运行一个模块后,又进行选择。
3.2 显示课程信息模块的设计本模块的设计主要是设计被调用函数myread(Classin *wkesk),是用指针指向储存课程信息的数组,调用数组的地址。
再用循环把数组中的信息输出。
主要代码为:for(i=0; i<=N-1; i++){if(wdesk[i].hours == 0)break;printf("%-10d%-20s%-10d%-10lf\n",wdesk[i].number,wdesk[i].classname,wdesk[i].hours,wdesk[i].credit);}在此片段函数中wdesk[i].hours == 0是作为循环的结束条件之一,能提前结束该程序。
图3-3 myprintf()函数模块的流程图在上图中“课时!=0“就是上面解释的wdesk[i].hours == 0的另一形式。
3.3 查询模块模块的设计本模块是要求设计查找功能的函数myfind(Classin *wkesk),同上步将数组地址调用。
然后输入要查找的课程编号,再进行在数组中的查找。
找到就输出,否则提示重新输入或退出。
主要原代码为:printf("Please enter the class number: ");scanf("%d",&Number);printf("\n\n");for(i=0;i<=N-1;i++){if(Number == wdesk[i].number){if(wdesk[i].credit == 0.0){printf("\n\n\n\n");break;}printf("%-10s%-20s%-10s%-10s%\n","number", "classname", "hours", "credit");printf("%-10d%-20s%-10d%-10lf\n\n\n\n",wdesk[i].number,wdesk[i].classname,wdesk[i].hours,wdesk[i].credit);flag = 0;break;}}在此程序中flag是作为标准值,初始为-1,当flag改变时说明已经找到该课程,否则为找到。
在对flag赋值为-1;再做判断,看是继续查找,还是退出此函数模块。
图3-4 myfind()函数模块的流程图3.4 增加模块的设计本模块要设计被调用增加数组的函数myadd(Classin *wkesk)、排序函数shunxu (Classin *wkesk)和写入文件函数filewhite(Classin *wkesk)。
这几个函数是按先后运行的。
3.41myadd(Classin *wkesk)的介绍它主要源代码为:if(wdesk[i].hours == 0){ wdesk[i].number = nub;printf("\nPlease enter the class name: ");fflush(stdin);scanf("%s",&wdesk[i].classname);printf("Please enter the hours: ");scanf("%d",&wdesk[i].hours);printf("Please enter the credit: ");scanf("%lf",&wdesk[i].credit);}在运行此代码前,输入要增加的课程编号,然后在数组中查找,若没有,就再添加。