学生成绩管理系统(含源码)
- 格式:docx
- 大小:43.07 KB
- 文档页数:10
*题目七:学生成绩管理系统设计学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)等。
主要功能:(1)能按学期、按班级完成对学生成绩的录入、修改(2)能按班级统计学生的成绩,求学生的总分及平均分(3)能查询学生成绩,不及格科目及学生名单(4)能按班级输出学生的成绩单要求:使用二进制文件方式存储数据,系统以菜单方式工作源代码:#include<stdio.h>#include<ctype.h>#include<stdlib.h>#include<string.h>struct Student{int cls;char nam[10];char num[10];int chinese;int english;int computer;int math;}stud1[100],stud2[100];{char a;while(a>'7'||a<'0'){system("cls");printf(" 欢迎使用学生成绩管理系统\n");printf(" 制作人:章建\n");printf("********************** 学生成绩管理系统************************\n");printf(" 1.输入学生成绩\n");printf(" 2.输出学生成绩\n");printf(" 3.查找并显示学生成绩\n");printf(" 4.按姓名查找,修改学生资料\n");printf(" 5.显示所有学生名单\n");printf(" 6.查找并删除学生信息\n");printf(" 7.从文件读取数据\n");printf(" 0.储存学生资料并退出系统\n");printf("********************************************************************* *\n");printf("请选择(0-7)\n");a=getchar();}return(a-'0');}/******************************************************************************int Input(Student stud[],int n) //输入数据(第一学期)。
基于ASPACCESS的学生信息管理系统源代码及全套资料1摘要随着科学技术的发展,计算机领域不断取得新的研究成果。
并不断地代替和延伸脑力劳动方面发挥越来越重要的作用,无论是工业还是日常生活都越来越离不开计算机,尤其是在学校里,随着不同高校的的不断扩大和招生人数的不断增加,要处理大量的学生数据信息显得尤为的重要。
学生的信息管理是学校工作中一项重要的内容。
本系统论文主要是管理学生的资料。
重点介绍其功能:信息添加、信息修改、信息的删除及信息查询。
使用进行静态页面设计 ,应用 A S P 程序进行后台管理操作,并用 A ccess 进行后台数据库的连接设计。
主要是以四大功能进行系统的设计和实现。
关键词: Dreamw eaver M X 系统站点设计 A S P A ccess 数据库1 .1 开发工具的介绍1 . 1 . 1 AS PASP ( Ac t i ve Se ve r Pa g e s 动态网页)是微软公司推出的一种用以取代 CGI ( Common Ga t e wa y I nt e r f a c e ) 技术。
目前, I nt e r ne t 上的许多基于Wi ndows 平台的 We b 站点已开始应用 ASP 来替换 CGI 。
ASP 是在服务器端脚本编译环境,使用它可以创建和运行动态、交互的 We b 服务器应用程序。
ASP 可以与 HTML 页、脚本命令和 Ac t i ve X 组件组合创建交互的We b 页和基于 We b 的功能强大的应用程序。
ASP 应用程序很容易开发和修改。
ASP 是一个位于服务器端的脚本运行环境。
通过这种环境,用户可以创建和运行动态的交互式 We b 服务器应用程序,如交互式动态网页,包括使用 HTML 表单收集和处理信息、上传与下载等。
通常情况下,用户通过浏览器看到的网页大多是静态的,目前 I nt e r ne t 上的许多站点,仍然提供“静态”( s t a t i c )的主页内容。
学生成绩单管理系统利用面向对象编程方法设计一个学生成绩单管理系统,要求实现以下功能:●录入(添加)学生信息:学号、姓名、平时成绩和考试成绩,系统自动计算总评成绩(平时成绩占20%,考试成绩占80%)。
可以一次录入多名学生的信息。
●查询学生成绩:输入要查询的学生的学号,查询该学生的信息并显示。
●显示学生成绩单:按学号顺序显示学生成绩单。
●删除学生信息:输入要删除的学生的学号,得到用户确认后,删除该学生的信息。
●修改学生信息:输入要修改的学生的学号,显示该学生的原有信息,用户输入修改后的信息。
●对成绩进行统计分析:可以对总成绩进行统计分析,分别统计出各个成绩段的人数和比例, 本课程班级平均成绩等。
实验步骤如下:1. 创建项目创建一个Win32 Console Application,项目名为“StudentScore”。
2. 定义学生类CStudent(1)新建一个“C/C++ Header File”,文件名为“student.h”,代码如下:// student.h 学生类的定义class CStudent {public:CStudent( char * id="", char *na="",int us=0, int ts=0 ); // 构造函数CStudent( const CStudent &s ); // 拷贝构造函数~CStudent();char* GetID(); // 获取学生的学号double GetTotalScore(); // 获取总评成绩static void TableHead( ); // 输出表头void Display( ); // 显示学生信息private:c har ID[5]; // 学号c har name[10]; // 姓名i nt UsualScore; // 平时成绩i nt TestScore; // 考试成绩d ouble TotalScore; // 总评成绩v oid CalcTotalScore(); // 计算总评成绩};(2)新建一个“C++ Source File”,文件名为“student.cpp”,代码如下:// student.cpp 学生类的成员函数实现#include <iomanip.h>#include <string.h>#include "student.h"CStudent::CStudent( char * id, char *na,int us, int ts ) // 构造函数{strcpy(ID,id);strcpy(name,na);UsualScore=us;TestScore=ts;CalcTotalScore();}CStudent::CStudent( const CStudent &s ) // 拷贝构造函数{strcpy( ID, s.ID );strcpy( name, );UsualScore=ualScore;TestScore=s.TestScore;TotalScore=s.T otalScore;}CStudent::~CStudent(){ }char* CStudent::GetID() // 取得学生的学号{ return ID; }double CStudent::GetTotalScore() // 获取总成绩{ return TotalScore;}void CStudent::TableHead( ) // 输出学生信息表头{cout<<setw(4)<<"学号"<<setw(10)<<"姓名"<<setw(10)<<"平时成绩"<<setw(10)<<"考试成绩"<<setw(12)<<"总成绩\n";}void CStudent::Display( ) // 显示学生信息{ cout<<setw(3)<<ID<<setw(10)<<name<<setw(10)<<UsualScore <<setw(10)<<TestScore<<setw(10)<<TotalScore<<endl;}void CStudent::CalcTotalScore() // 计算总成绩{ TotalScore= UsualScore*0.2 + TestScore*0.8; }}3. 定义成绩单类CStuDataBase(1)新建一个“C/C++ Header File”,文件名为“StuDataBase.h”,代码如下:// StuDataBase.h 定义成绩单类,用来管理所有学生的成绩信息#include "student.h"const int MaxStuNum=51; // 班级学生人数最多50人class CStuDatabase {public:CStuDatabase(); // 构造函数,从文件中读入学生成绩信息~CStuDatabase(); // 析构函数,将学生成绩信息写入到文件中void ListScore( ); // 显示成绩单,输出所有学生信息void SelectStuInfo( ); // 查询学生信息void AddStuInfo( ); // 添加学生成绩void DelStuInfo( ); // 删除学生信息void EditStuInfo( ); // 修改学生信息void AnalyScore( ); // 对成绩进行统计分析v oid StuDBM( int ); // 成绩库维护i nt FunctionMenu(); // 功能菜单private:int num; // 学生人数CStudent stu[MaxStuNum]; // 学生数组,stu[0]不用i nt SearchStu(const char* id); // 查找指定学号的学生v oid SortStu( ); // 按学号从小到大对成绩单排序};(2)新建一个“C++ Source File”,文件名为“StuDataBase.cpp”,代码如下:// StuDataBase.cpp 成绩单类的实现#include <fstream.h>#include <string.h>#include <stdlib.h>#include <iomanip.h>#include <conio.h>#include "StuDataBase.h"int InputScore( ) // 输入百分制成绩{ int score;cin>>score;while ( score<0 || score>100 ){ cout<<"成绩超出范围,请重新输入百分制成绩(0---100分):";cin>>score;}return score;}CStuDatabase::CStuDatabase() // 从文件中读入学生信息{ CStudent s; // 学生对象num=0;fstream StuFile; // 该文件用来保存学生信息StuFile.open( "StuInfo.dat", ios::in );if ( !StuFile ){ cout<<"文件StuInfo.dat不能打开!\n";return;}S tuFile.read( (char*)&s, sizeof(s) );w hile ( !StuFile.eof() ){ num++;stu[num]=s;StuFile.read( (char*)&s, sizeof(s) );}S tuFile.close();}CStuDatabase::~CStuDatabase() // 将学生信息写入到文件中{f stream StuFile; // 该文件用来保存学生信息S tuFile.open( "StuInfo.dat", ios::out );i f ( !StuFile ){cout<<"文件StuInfo.dat不能创建!\n";return;}f or ( int i=1; i<=num; i++ ){StuFile.write( (char*)&stu[i], sizeof(stu[i]) ); }S tuFile.close();}int CStuDatabase::SearchStu(const char * id) // 查找指定学号的学生{for ( int i=1; i<=num; i++ )if ( strcmp(stu[i].GetID(),id)==0 )return i;return -1;}int CStuDatabase::FunctionMenu() //功能菜单{ int FuncNum; // 保存操作编号system("cls"); //清屏cout<<"\n\n\n";cout<<setw(20)<<' '<<"**********************************\n\n\n";cout<<setw(24)<<' '<<"请选择要进行的操作:\n\n";cout<<setw(28)<<' '<<"1 --- 查询学生成绩\n\n"<<setw(28)<<' '<<"2 --- 显示学生成绩单\n\n"<<setw(28)<<' '<<"3 --- 添加学生信息\n\n"<<setw(28)<<' '<<"4 --- 删除学生信息\n\n"<<setw(28)<<' '<<"5 --- 修改学生信息\n\n"<<setw(28)<<' '<<"6 --- 对成绩进行统计分析\n\n"<<setw(28)<<' '<<"0 --- 退出\n\n\n";cout<<setw(20)<<' '<<"**********************************\n\n\n";cin>>FuncNum;while ( FuncNum<0 || FuncNum>6 ){cout<<"请重新选择要进行的操作:"<<endl;cin>>FuncNum;}return FuncNum;}void CStuDatabase::StuDBM( int FuncNum ) // 成绩维护{switch ( FuncNum ) {case 1: SelectStuInfo(); break; // 查询学生成绩case 2: ListScore( ); break; // 显示成绩单case 3: AddStuInfo( ); break; // 添加学生信息case 4: DelStuInfo( ); break; // 删除学生信息case 5: EditStuInfo( ); break; // 修改学生信息case 6: AnalyScore( ); break; // 对成绩进行统计分析}}void CStuDatabase::SelectStuInfo( ) // 查询学生信息{system("cls"); //清屏char no[5]; // 临时保存学号cout<<"\n请输入要查询的学生学号:"<<endl;cin>>no;i nt i=SearchStu(no);i f ( i==-1 ){cout<<"\n你查找的学生不存在!\n"; }e lse{ cout<<"\n你所查找的学生成绩如下:\n\n ";CStudent::T ableHead( ); // 输出表头stu[i].Display();}c out<<"\n按任意键返回...."<<endl;getch();}void CStuDatabase::ListScore( ) // 显示成绩单{system("cls"); //清屏if ( num == 0 ){cout<<"当前还没有学生成绩!\n"; }e lse{SortStu( ); // 按学号对成绩单排序CStudent::T ableHead( ); // 输出表头for ( int i=1; i<=num; i++ )stu[i].Display();cout<<"\n共有"<<num<<" 条学生成绩信息\n";}cout<<"\n显示成绩完毕!\n\n按任意键返回...."<<endl;getch();}void CStuDatabase::AddStuInfo( ) // 添加学生成绩{ system("cls"); //清屏char no[5]; // 临时保存学号cout<<"请输入要添加的学生的学号(输入-1 结束):";cin>>no;while ( strcmp(no,"-1")!=0 ){int i=SearchStu( no );while ( i!=-1 ){ cout<<"\n你添加的学生已存在!\n请重新输入学号(-1结束):";cin>>no;if ( strcmp(no,"-1")==0 ){cout<<"\n本次操作完成!\n\n按任意键返回...."<<endl;getch();return;}i=SearchStu( no );}num++;char na[10];cout<<"\n请输入要添加的学生的姓名:";cin>>na;cout<<"\n请输入要添加的学生的平时成绩:\n";int us = InputScore();cout<<"\n请输入要添加的学生的考试成绩:\n";int ts = InputScore();CStudent s(no,na,us,ts);stu[num]=s;cout<<"\n\n请输入要添加的学生的学号(输入-1 结束):";cin>>no;}cout<<"\n本次操作完成!\n\n按任意键返回...."<<endl;getch();}void CStuDatabase::DelStuInfo( ) // 删除学生信息模块{ system("cls"); //清屏char no[5]; // 临时保存学号cout<<"\n请输入要删除的学生学号:"<<endl;cin>>no;int i=SearchStu( no );if ( i==-1 ){ cout<<"\n你要删除的学生不存在!\n"; }else{ cout<<"\n您所删除的学生信息如下:\n\n ";CStudent::T ableHead( ); // 输出表头stu[i].Display();char anser;cout<<"\n是否真的要删除该学生?(Y/N):";cin>>anser;if ( anser=='y' || anser=='Y'){for ( int j=i+1; j<=num; j++ )stu[j-1]=stu[j];num--;cout<<"\n删除信息成功!"<<endl;}}cout<<"\n\n按任意键返回...."<<endl;getch();}void CStuDatabase::EditStuInfo( ) // 修改学生信息模块{ system("cls"); //清屏char no[5]; // 临时保存学号cout<<"\n请输入要修改的学生学号:"<<endl;c in>>no;i nt i=SearchStu( no );i f ( i==-1 ){cout<<"\n你要修改的学生不存在!\n"; }e lse{ cout<<"\n您所修改的学生成绩如下:\n\n ";CStudent::T ableHead( ); // 输出表头stu[i].Display();cout<<"\n请输入学生的新信息:";cout<<"\n请输入学生的姓名:";char na[10];cin>>na;cout<<"\n请输入学生的平时成绩:\n";int us = InputScore();cout<<"\n请输入学生的考试成绩:\n";int ts = InputScore();CStudent s(no,na,us,ts);stu[i]=s;cout<<"\n修改信息成功!"<<endl;}cout<<"\n\n按任意键返回...."<<endl;getch();}void CStuDatabase::AnalyScore( ) // 对成绩进行统计分析{ system("cls"); // 清屏int c[5]={0}; // 用来保存各个分数段的人数double AveScore=0; // 用来保存所有学生的平均成绩double ts; // 临时保存总评成绩for ( int i=1; i<=num; i++ ){ts=stu[i].GetTotalScore();AveScore+=ts;switch ( int( ts/10 ) ){case 10:case 9: c[0]++; break; // 90(含90)分以上人数case 8: c[1]++; break; // 80(含80)---90(不含90)分人数case 7: c[2]++; break; // 70(含70)---80(不含80)分人数case 6: c[3]++; break; // 60(含60)---70(不含70)分人数default: c[4]++; break; // 不及格人数}}AveScore/=num;cout<<"\n学生成绩分布情况如下:\n\n";c out<<"优秀(90分---100分)人数:"<<c[0]<<",\t占"<<double(c[0])/num*100<<" %\n\n";cout<<"良好(80分--- 89分)人数:"<<c[1]<<",\t占"<<double(c[1])/num*100<<" %\n\n";cout<<"中等(70分--- 79分)人数:"<<c[2]<<",\t占"<<double(c[2])/num*100<<" %\n\n";c out<<"及格(60分--- 69分)人数:"<<c[3]<<",\t占"<<double(c[3])/num*100<<" %\n\n";cout<<"不及格(60分以下)人数:"<<c[4]<<",\t占"<<double(c[4])/num*100<<" %\n\n";cout<<"学生总人数为:"<<num<<endl;cout<<"\n班级平均成绩为:"<<AveScore<<endl;cout<<"\n按任意键返回...."<<endl;getch();}void CStuDatabase::SortStu( ) // 按学号从小到大对成绩单排序{ int i, j, k;f or ( i=1; i<num; i++ ){k=i;for ( j=i+1; j<=num; j++ )if ( strcmp( stu[j].GetID(),stu[k].GetID() )<0 )k=j;CStudent temp=stu[i];stu[i]=stu[k];s tu[k]=temp;}}4. 定义主程序新建一个“C++ Source File”,文件名为“StudentScoreMain.cpp”,代码如下:#include <iomanip.h>#include <conio.h>#include "StuDataBase.h"void welcome();void main(){welcome(); // 欢迎画面CStuDatabase stuDB; // 生成成绩单对象int FuncNum; // 保存操作编号FuncNum=stuDB.FunctionMenu(); // 显示功能菜单while ( FuncNum!=0 ){stuDB.StuDBM( FuncNum ); // 学生库管理FuncNum=stuDB.FunctionMenu();}}void welcome(){cout<<"\n\n\n";cout<<setw(20)<<' '<<"**********************************\n\n\n";cout<<setw(24)<<' '<<"欢迎使用学生成绩单管理系统\n\n\n";cout<<setw(20)<<' '<<"**********************************\n\n\n";cout<<"\n按任意键继续...."<<endl;getch();}_。
#include ”stdio.h”#include ”string.h”#include "stdlib.h"#include "conio.h"#include ”string.h”#include "fcntl。
h"typedef struct student{int num;char grade[10];char classroom[10];char name[10];float score_math;float score_chinese;float score_english;float average;float sum;}STU;typedef struct Node{STU data;struct Node *next;}*linklist;void menu();char *loginpassword(char password[],int n);//登录验证密码函数声明//linklist createstulist(linklist head);//创建学生链表即学生信息录入函数声明// void printstulist(linklist head);//学生信息输出函数声明//void searchstu_namelist(linklist head);//学生信息查询函数声明(按姓名)// void searchstu_numlist(linklist head);//学生信息查询函数声明(按学号) linklist modifystulist(linklist head);//学生信息修改函数声明//linklist delatestulist(linklist head);//学生信息删除函数声明//void savestulist(linklist head);//学生信息保存到文件函数声明// linklist loadstulist();//从文件中读取学生信息函数声明// void sortstulist(linklist head); //成绩排名函数(按年级)声明//void sort(STU stu[],int flag); //学生分班函数声明//void sortstuclass(linklist head); //成绩排名函数(按班级)声明////*************************************//void main(){char admin[]=”zhangqiong";char password[]=”123456";char person[20];char password1[10];int i;printf(”********************************************************************************\n”);printf("\t\t **********欢迎来到学生成绩管理系统**********\n\n");printf(”********************************************************************************\n\n”);printf(”\t\t\t\t用户登录\n\n\n\n");for(i=0;i<3;i++){printf("用户名:”);gets(person);fflush(stdin);printf(”\n\n\n”);loginpassword(password1,10);printf("\n\n\n”);if(strcmp(admin,person)==0&&strcmp(password,password1)==0){printf(”\t\t\t\t成功登录,亲!\n”);printf("\n\n”);printf(”按任意键继续!”);getch();menu();break;}elseprintf("\t用户名或者密码输入错误\n”);}if(i==3)printf("\t对不起,您今天输入次数太多,已被强制退出!\n”);}//**********************************************************////**********************************************************//char *loginpassword(char password[],int n)//登录密码函数,隐藏密码可见//{int i=0;int m=0;char ch;printf("用户密码:”);while((ch=getch())!='\r’&&m〈n){password[i++]=ch;printf(”*");}password[i]='\0';return password;}//***************************************************// void menu()//主界面函数//{system("cls");linklist L;L=(linklist)malloc(sizeof(Node));L—>next=NULL;int ch;do{printf(”\t -——-----—-******——--——--—---******—————-————-******-—-—-—-—-—\n\n");printf("\t\t\t**********学生成绩管理系统***********\n\n”);printf("\t ——----——--******-—-——------—******—---———--—-******—---———-——\n\n\n\n\n");printf("\t1。
学生成绩管理系统毕业设计一、概述学生成绩管理系统是学校教务管理工作中的重要组成部分,它可以帮助学校高效地管理学生成绩信息,实现成绩的录入、统计、分析和报表生成等功能。
随着计算机技术的发展,利用计算机来开发学生成绩管理系统已成为教育信息化建设的重要方向。
本文将以Python语言为基础,设计一个学生成绩管理系统的毕业设计。
二、需求分析1. 系统功能(1)成绩录入:支持教师和管理员录入学生成绩信息。
(2)成绩查询:学生和家长可以通过系统查询学生成绩信息。
(3)成绩统计:根据学生成绩信息,系统可以进行成绩统计分析。
(4)报表生成:系统可以生成学生成绩报表,方便学校管理人员进行查阅。
2. 系统性能(1)界面友好:系统界面简洁、美观,操作方便,提高用户体验。
(2)高效性能:系统能够快速响应用户的请求,保证系统的高效运行。
(3)数据安全:系统对学生成绩信息进行严格保密,确保数据安全。
三、技术选型1. 开发语言:Python 3.x2. 开发框架:Django3. 数据库:SQLite四、系统设计1. 数据库设计(1)学生表:保存学生的基本信息,如尊称、学号、班级等。
(2)课程表:保存课程的信息,如课程名、学分、教师等。
(3)成绩表:保存学生的成绩信息,包括学生学号、课程编号、成绩等字段。
2. 界面设计(1)登入界面:提供用户名和密码输入框,区分不同角色的用户登入。
(2)菜单界面:根据用户角色不同,提供不同的菜单选项,如成绩录入、成绩查询、报表生成等。
(3)成绩录入界面:支持教师和管理员录入学生成绩信息。
(4)成绩查询界面:支持学生和家长查询学生成绩信息。
(5)报表生成界面:支持生成学生成绩统计报表。
3. 功能模块设计(1)用户管理模块:管理用户的登入和权限。
(2)成绩管理模块:实现成绩的录入、查询、统计和报表生成。
(3)班级管理模块:管理学生所属的班级信息。
(4)课程管理模块:管理学校开设的课程信息。
五、系统实现1. 环境搭建搭建Python开发环境,并安装Django框架和SQLite数据库。
C语言学籍管理系统源代码简介本文档介绍了一个用C语言编写的学籍管理系统的源代码。
学籍管理系统是一个用于管理学生的基本信息和学习成绩的软件系统。
该系统可以帮助学校、学院和教师有效地管理学生的信息,并生成学生的成绩报表。
功能学籍管理系统具有以下功能:1.添加学生:可以添加学生的基本信息,如学号、姓名、性别、班级等。
2.删除学生:可以根据学号删除已有的学生信息。
3.查询学生:可以根据学号查询学生的信息。
4.修改学生:可以根据学号修改学生的信息。
5.成绩录入:可以录入学生的学习成绩,包括各科目的成绩和总分。
6.成绩查询:可以根据学号查询学生的成绩。
7.成绩统计:可以统计学生各科目的平均分、最高分和最低分。
程序结构学籍管理系统的源代码主要包括以下几个文件:1.main.c:程序的入口文件,包含主函数和界面显示函数。
2.student.h:定义了学生的结构体和相关操作函数。
3.student.c:实现了学生结构体的操作函数,包括添加学生、删除学生、查询学生、修改学生等。
4.score.h:定义了成绩的结构体和相关操作函数。
5.score.c:实现了成绩结构体的操作函数,包括成绩录入、成绩查询、成绩统计等。
使用说明1.下载源代码:将源代码文件下载到本地电脑上。
2.编译程序:打开命令行窗口,进入源代码所在的目录,使用gcc编译器编译源代码文件。
示例命令为:gcc main.c student.c score.c -ostudent_management_system。
3.运行程序:编译成功后,运行生成的可执行文件。
示例命令为:./student_management_system。
4.操作系统:该学籍管理系统适用于Linux、Unix和Windows操作系统。
示例代码以下是学籍管理系统的示例代码:```c #include <stdio.h> #include。
java代码设计文档Java代码设计文档是用于记录和描述Java程序的设计思路、功能模块、类和方法的用途以及实现细节的文档。
它旨在帮助开发人员和其他相关人员了解和理解Java程序的设计和实现过程。
本文将以一个简单的学生管理系统为例,展示如何编写Java代码设计文档。
# 1. 引言本文档旨在描述学生管理系统的设计和实现细节。
该系统用于管理学生的基本信息、课程信息和成绩信息。
# 2. 系统概述学生管理系统是一个基于Java的桌面应用程序,用于管理学生信息。
它提供了以下功能:- 添加学生信息:包括姓名、学号、性别、年龄等基本信息。
- 添加课程信息:包括课程名称、学分、教师等信息。
- 添加成绩信息:将学生与课程关联,并录入学生的成绩。
- 查询学生信息:根据学号或姓名查询学生的基本信息、课程信息和成绩信息。
- 修改学生信息:可以修改学生的基本信息、课程信息和成绩信息。
- 删除学生信息:可以删除学生的基本信息、课程信息和成绩信息。
# 3. 系统结构学生管理系统由以下几个模块组成:- 学生信息模块:用于管理学生的基本信息。
- 课程信息模块:用于管理课程的基本信息。
- 成绩信息模块:用于管理学生的成绩信息。
- 数据库模块:用于连接和操作数据库,存储和读取学生、课程和成绩信息。
# 4. 类设计## 4.1 学生类学生类表示学生的基本信息,包括姓名、学号、性别和年龄等属性。
它具有以下方法:- 构造方法:用于创建学生对象,初始化学生的基本信息。
- getter和setter方法:用于获取和设置学生的属性值。
## 4.2 课程类课程类表示课程的基本信息,包括课程名称、学分和教师等属性。
它具有以下方法:- 构造方法:用于创建课程对象,初始化课程的基本信息。
- getter和setter方法:用于获取和设置课程的属性值。
## 4.3 成绩类成绩类表示学生的成绩信息,包括学生、课程和成绩等属性。
它具有以下方法:- 构造方法:用于创建成绩对象,初始化成绩的基本信息。
C++简单学生成绩管理系统(C++课程设计)C++学生成绩管理系统要求使用C++语言编写学生成绩管理系统,能够进行添加、删除、修改、输入和输出等操作,并使用面向对象的原理实现该系统。
学生成绩管理系统分析:学生成绩管理系统分为8个模块,分别是:添加学生信息、输出学生成绩、查找学生成绩、修改学生成绩、删除学生成绩、学生成绩排序、保存数据到文件和读取文件中学生成绩的模块。
学生成绩管理系统结构:Main()函数Menu()函数Student类Add()函数Output()函数Find()函数Modify()函数Deleted()函数Sort()函数Save()函数Load()函数重载符号Student类私有成员:char name[20];char sex[5];int number;int score[3];int total;int average;各个子函数功能及其流程:1.首先定义一个学生类Class Student,并定义其各个私有变量和公有函数。
2.Student()构造函数,用于初始化学生类中的各个变量并记录。
3.Add()函数:用于添加学生信息的函数,包括学号、姓名、成绩等内容。
主函数main():菜单函数menu()选择菜单中的选项添加学生信息调用Add()函数调用重载<<并添加信息4.Output()函数:用于输出学生信息,包括学号、姓名、各科及总分、平均成绩。
主函数main():菜单函数menu()选择菜单中的选项输出学生信息调用Output()函数输出学生信息5.Find()函数:用于查找学生各项信息。
主函数main():菜单函数menu()选择菜单中的选项查找学生信息调用Find()函数要求输入学生姓名查找并输出学生信息6.Modify()函数:用于修改学生各项信息。
主函数main():菜单函数menu()选择菜单中的选项修改学生信息调用Modify()函数要求输入学生姓名修改并保存学生信息7.Deleted()函数:用于删除学生信息。
学生信息管理系统完整源代码注:本系统采用C/S结构,运用Java GUI知识编写,数据库为SQL SERVER 2005,没有采用典型的三级框架结构,所以代码有冗余,仅供参考。
一、数据表及数据源首先创建数据库,包含数据表如下:数据库创建完成后,新建一个名为SIMS的数据源,不会建数据源的同学可以在去搜索创建数据源的详细步骤,这里的数据名称一定要为SIMS,否则在以后程序连接数据库的语句中会出现错误。
二、操作演示三、代码部分创建Java工程,创建名称为SIMS的包,一下Java类均包含在一个包内。
1.登录界面package SIMS;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.sql.*;import java.text.SimpleDateFormat;import java.util.*;import java.util.Date;public class login extends JFrame implements ActionListener{String userID; //保留用户输入IDString password; //保留用户输入passwordJLabel jlID=new JLabel("用户ID:"); //使用文本创建标签对象 JLabel jlPwd=new JLabel("密码:");JTextField jtID=new JTextField(); //创建ID输入框JPasswordField jpPwd=new JPasswordField(); //创建密码输入框ButtonGroup bg=new ButtonGroup(); //创建ButtonGroup组件对象JPanel jp=new JPanel(); //创建Panel容器JLabel jl=new JLabel();JRadioButton jrb1=new JRadioButton("管理员");JRadioButton jrb2=new JRadioButton("教师");JRadioButton jrb3=new JRadioButton("学生",true);JButton jb1=new JButton("登录");JButton jb2=new JButton("重置");public login(){this.setLayout(null); //设置窗口布局管理器this.setTitle("学生信息管理系统"); //设置窗口标题this.setBounds(200,150,500,300); //设置主窗体位置大小和可见性this.setVisible(true); //设置窗口的可见性this.setResizable(false);jlID.setBounds(150,60,100,20); //设置ID框属性jtID.setBounds(220,60,100,20); //设置ID输入框属性jlPwd.setBounds(150,90,100,20); //设置密码框属性jpPwd.setBounds(220,90,100,20); //设置密码输入框属性jp.setBounds(35,120,400,250); //设置JPanel容器属性jb1.setBounds(160,170,60,20); //设置登录按钮属性jb2.setBounds(250,170,60,20); //设置取消按钮属性jb1.addActionListener(this); //设置登录按钮监听器jb2.addActionListener(this); //设置取消按钮监听器jl.setBounds(340,75,130,20); //设置提示框属性bg.add(jrb1); //将所有空间加入窗体bg.add(jrb2);bg.add(jrb3);this.add(jlID);this.add(jlPwd);this.add(jtID);this.add(jpPwd);this.add(jb1);this.add(jb2);this.add(jl);jp.add(jrb1);jp.add(jrb2);jp.add(jrb3);this.add(jp);centerShell(this);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}private void centerShell(JFrame shell) //窗口在屏幕中间显示{//得到屏幕的宽度和高度int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;//得到Shell窗口的宽度和高度int shellHeight = shell.getBounds().height;int shellWidth = shell.getBounds().width;//如果窗口大小超过屏幕大小,让窗口与屏幕等大if(shellHeight > screenHeight)shellHeight = screenHeight;if(shellWidth > screenWidth)shellWidth = screenWidth;//让窗口在屏幕中间显示shell.setLocation(( (screenWidth - shellWidth) / 2),((screenHeight - shellHeight) / 2) );}public boolean equals(Object obj){ //重写equals方法判断字符串相等if(obj==null)return false;if(this == obj){return true;}if(obj instanceof String) {String str = (String)obj;return str.equals(userID);}return false;}public void actionPerformed(ActionEvent e){userID=jtID.getText(); //获取用户输入IDpassword=jpPwd.getText(); //获取用户输入密码if(e.getSource()==jb1){ //处理登录事件if(userID.equals("") || password.equals("")){jl.setFont(new Font("red",Font.BOLD,12)); //设置提示字体jl.setForeground(Color.red);jl.setText("请输入用户ID和密码");}else{Connection con=null;try{String url="jdbc:odbc:SIMS"; //连接数据库con=DriverManager.getConnection(url,"","");//获取连接字符串Statement stat=con.createStatement();if(jrb1.isSelected())//如果登录选中的管理员{ResultSet rs=stat.executeQuery("select * from Admin"); //判断输入用户名是否存在int flag=0;while(rs.next()){if(rs.getString(1).equals(userID)){flag=1;break;}}if(flag==0){jl.setFont(new Font("red",Font.BOLD,12));//设置提示字体jl.setForeground(Color.red);jl.setText("用户ID不存在");}if(flag==1){ResultSet rss=stat.executeQuery("selectAdmin_Pwd,Admin_Name from Admin where Admin_ID='"+userID+"'");//从表Admin获取信息while(rss.next()){String str=rss.getString(1);if(str.equals(password)){new admin(rss.getString(2));//创建admin窗口this.dispose(); //释放窗体}else{jl.setFont(new Font("red",Font.BOLD,12)); //设置提示字体jl.setForeground(Color.red);jl.setText("密码错误");}}}}else if(jrb2.isSelected()){ResultSet rs=stat.executeQuery("select * from Teacher_Info"); //判断输入用户名是否存在int flag=0;while(rs.next()){if(rs.getString(1).equals(userID)){flag=1;break;}}if(flag==0){jl.setFont(new Font("red",Font.BOLD,12));//设置提示字体jl.setForeground(Color.red);jl.setText("用户ID不存在");}if(flag==1){ResultSet rss=stat.executeQuery("selectTea_Pwd,Tea_Names from Teacher_Info where Tea_ID='"+userID+"'");//从表Teacher_Info获取信息while(rss.next()){String str=rss.getString(1);if(str.equals(password)){new teacher(rss.getString(2),userID);//创建admin窗口this.dispose(); //释放窗体}else{jl.setFont(new Font("red",Font.BOLD,12));//设置提示字体jl.setForeground(Color.red);jl.setText("密码错误");}}}}else if(jrb3.isSelected()){ResultSet rs=stat.executeQuery("select * from Student_Info"); //判断输入用户名是否存在int flag=0;while(rs.next()){if(rs.getString(1).equals(userID)){flag=1;break;}}if(flag==0){jl.setFont(new Font("red",Font.BOLD,12));//设置提示字体jl.setForeground(Color.red);jl.setText("用户ID不存在");}if(flag==1){ResultSet rsss=stat.executeQuery("selectStu_Pwd,Stu_Name from Student_Info where Stu_ID='"+userID+"'");//从表Student_Info获取信息while(rsss.next()){String str=rsss.getString(1);if(str.equals(password)){new student(rsss.getString(2),userID);//创建admin窗口this.dispose(); //释放窗体}else{jl.setFont(new Font("red",Font.BOLD,12));//设置提示字体jl.setForeground(Color.red);jl.setText("密码错误");}}}}}catch(Exception ex){ex.getStackTrace();}finally{try{con.close();}catch(Exception exc){exc.printStackTrace();}}}}else if(e.getSource()==jb2){ //处理登录事件jtID.setText("");jpPwd.setText("");jrb3.setSelected(true);jl.setText("");}}public static void main(String[] args){new login();}}2.添加课程package SIMS;import javax.swing.*;import java.sql.*;import java.awt.*;import java.awt.event.*;public class add_course extends JFrame implements ActionListener{ static add_course ss;String courseID=""; //课程名String coursename=""; //课程名String count=""; //课时JLabel warning=new JLabel(); //输入信息提示框JLabel title=new JLabel();JLabel note1=new JLabel("*");JLabel note2=new JLabel("*");JLabel jlcourseID=new JLabel("课程号:"); //使用文本框创建标签对象JLabel jlcoursename=new JLabel("课程名:");JLabel jlcount=new JLabel("课时:");JTextField jtcourseID=new JTextField(); //创建文本框对象JTextField jtcoursename=new JTextField();JTextField jtcount=new JTextField();JButton submit=new JButton("添加"); //创建按钮对象JButton reset=new JButton("重置");public add_course(){ //添加教师账号信息this.setTitle("添加课程信息"); //设置窗口标题this.setLayout(null); //设置窗口布局管理器this.add(jlcourseID); //将控件添加到窗体this.add(title);this.add(jlcoursename);this.add(jlcount);this.add(jtcourseID);this.add(jtcoursename);this.add(jtcount);this.add(note1);this.add(note2);this.add(submit);this.add(reset);this.add(warning);title.setFont(new Font("red",Font.BOLD,15)); //设置提示字体title.setForeground(Color.red);note1.setFont(new Font("red",Font.BOLD,20)); //设置提示字体note1.setForeground(Color.red);note2.setFont(new Font("red",Font.BOLD,20)); //设置提示字体note2.setForeground(Color.red);warning.setFont(new Font("red",Font.BOLD,12)); //设置提示字体warning.setForeground(Color.red);title.setText("添加课程信息"); //设置控件及窗体位置大小title.setBounds(222,20,150,20);jlcourseID.setBounds(180,80,100,20);jlcoursename.setBounds(180,140,100,20);jlcount.setBounds(180,200,100,20);jtcourseID.setBounds(250,80,140,20);jtcoursename.setBounds(250,140,140,20);jtcount.setBounds(250,200,140,20);note1.setBounds(400,80,140,20);note2.setBounds(400,140,140,20);submit.setBounds(200,270,60,20);reset.setBounds(300,270,60,20);warning.setBounds(420,140,150,20); //设置提示框位置大小submit.addActionListener(this); //添加监听器reset.addActionListener(this);this.setSize(600,400); //设置窗体大小centerShell(this); //设置窗口位置在屏幕中央this.setResizable(false); //设置窗体不可变大小this.setVisible(true); //设置窗口可见性this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);}public boolean equals(Object obj){ //重写equals方法判断字符串相等if(obj==null)return false;if(this == obj){return true;}if(obj instanceof String) {String str = (String)obj;return str.equals(courseID);}return false;}public void actionPerformed(ActionEvent e){courseID=jtcourseID.getText(); //获取用户输入内容coursename=jtcoursename.getText();count=jtcount.getText();int temp=0,flag=0;Connection con=null;if(e.getSource()==submit){ //判断是否已输入必填信息if(courseID.equals("") || coursename.equals("")){warning.setText("请输入必填信息");}else{try{String url="jdbc:odbc:SIMS"; //连接数据库con=DriverManager.getConnection(url,"",""); //获取连接字符串Statement stat=con.createStatement();ResultSet rs=stat.executeQuery("select Course_ID from Course");while(rs.next()){if(rs.getString(1).equals(courseID)){warning.setText("课程ID已存在");flag=1; //判断用户名唯一break;}}if(flag!=1){if(!count.equals("")){temp=stat.executeUpdate("insert intoCourse(Course_ID,Course_Name,Course_Count)values('"+courseID+"','"+coursename+"','"+count+"')");}else{temp=stat.executeUpdate("insert intoCourse(Course_ID,Course_Name) values('"+courseID+"','"+coursename+"')");}}if(temp==1){JOptionPane.showMessageDialog(ss,"添加成功");warning.setText("");}else{JOptionPane.showMessageDialog(ss,"添加失败");}}catch(Exception ex){ex.getStackTrace();}}}else if(e.getSource()==reset){warning.setText("");jtcourseID.setT ext("");jtcoursename.setText("");jtcount.setText("");}}private void centerShell(JFrame shell) //窗口在屏幕中间显示{//得到屏幕的宽度和高度int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;//得到Shell窗口的宽度和高度int shellHeight = shell.getBounds().height;int shellWidth = shell.getBounds().width;//如果窗口大小超过屏幕大小,让窗口与屏幕等大if(shellHeight > screenHeight)shellHeight = screenHeight;if(shellWidth > screenWidth)shellWidth = screenWidth;//让窗口在屏幕中间显示shell.setLocation(((screenWidth - shellWidth)/ 2),((screenHeight - shellHeight)/2));}}3.添加学生package SIMS;import javax.swing.*;import java.sql.*;import java.awt.*;import java.awt.event.*;public class add_student extends JFrame implements ActionListener{static add_teacher ss;String userID=""; //用户名String pwd1=""; //密码String pwd2=""; //确认密码String getsdept=""; //院系String name=""; //姓名JLabel warning=new JLabel(); //输入信息提示框JLabel title=new JLabel();JLabel note1=new JLabel("*");JLabel note2=new JLabel("*");JLabel note3=new JLabel("*");JLabel jlID=new JLabel("学号:"); //创建文本框对象 JLabel jlName=new JLabel("姓名:");JLabel jlPwd=new JLabel("密码:");JLabel jlPwd2=new JLabel("确认密码:");JLabel sdept=new JLabel("学院:");JTextField jtID=new JTextField();JTextField jtName=new JTextField();JPasswordField jtPwd=new JPasswordField ();JPasswordField jtPwd2=new JPasswordField ();JTextField jtsdept=new JTextField();JButton submit=new JButton("添加"); //创建按钮对象JButton reset=new JButton("重置");public add_student(){this.setTitle("添加学生账号信息"); //设置窗口标题this.setLayout(null); //设置窗口布局管理器this.add(jlID); //将控件添加到窗体this.add(title);this.add(jlName);this.add(jlPwd);this.add(jlPwd2);this.add(sdept);this.add(jtID);this.add(jtName);this.add(jtPwd);this.add(jtPwd2);this.add(jtsdept);this.add(note1);this.add(note2);this.add(note3);this.add(submit);this.add(reset);this.add(warning);title.setFont(new Font("red",Font.BOLD,15)); //设置提示字体title.setForeground(Color.red);note1.setFont(new Font("red",Font.BOLD,20)); //设置提示字体note1.setForeground(Color.red);note2.setFont(new Font("red",Font.BOLD,20)); //设置提示字体note2.setForeground(Color.red);note3.setFont(new Font("red",Font.BOLD,20)); //设置提示字体note3.setForeground(Color.red);warning.setFont(new Font("red",Font.BOLD,12)); //设置提示字体warning.setForeground(Color.red);title.setText("添加学生账号信息");title.setBounds(222,20,150,20);jlID.setBounds(180,60,100,20);jlName.setBounds(180,100,100,20);jlPwd.setBounds(180,140,100,20);jlPwd2.setBounds(180,180,100,20);sdept.setBounds(180,220,100,20);jtID.setBounds(250,60,140,20);jtName.setBounds(250,100,140,20);jtPwd.setBounds(250,140,140,20);jtPwd2.setBounds(250,180,140,20);jtsdept.setBounds(250,220,140,20);note1.setBounds(400,60,140,20);note2.setBounds(400,140,140,20);note3.setBounds(400,180,140,20);submit.setBounds(200,270,60,20);reset.setBounds(300,270,60,20);warning.setBounds(420,100,150,20);submit.addActionListener(this);reset.addActionListener(this);this.setSize(600,400);centerShell(this);this.setVisible(true);this.setResizable(false); //设置窗体不可变大小this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);}public boolean equals(Object obj){ //重写equals方法判断字符串相等if(obj==null)return false;if(this == obj){return true;}if(obj instanceof String) {String str = (String)obj;return str.equals(pwd1);}return false;}public void actionPerformed(ActionEvent e){userID=jtID.getText(); //获取用户输入内容pwd1=jtPwd.getText();pwd2=jtPwd2.getText();getsdept=jtsdept.getText();name=jtName.getText();int temp=0,flag=0;Connection con=null;if(e.getSource()==submit){if(userID.equals("") || pwd1.equals("") || pwd2.equals("")){ //判断是否已输入必填信息warning.setText("请输入必填信息");}else if(!pwd1.equals(pwd2)){ //判断两次输入密码是否相同warning.setText("两次输入密码不相同");}else{try{String url="jdbc:odbc:SIMS"; //连接数据库con=DriverManager.getConnection(url,"",""); //获取连接字符串Statement stat=con.createStatement();ResultSet rs=stat.executeQuery("select Stu_ID from Student_Info");while(rs.next()){if(rs.getString(1).equals(userID)){warning.setText("用户ID已存在");flag=1; //判断用户名唯一break;}}if(flag!=1){if(!name.equals("") && !getsdept.equals("")){temp=stat.executeUpdate("insert intoStudent_Info(Stu_ID,Stu_Name,Stu_Pwd,Depart)values('"+userID+"','"+name+"','"+pwd1+"','"+getsdept+"')");}else if(!name.equals("") && getsdept.equals("")){temp=stat.executeUpdate("insert intoStudent_Info(Stu_ID,Stu_Name,Stu_Pwd) values('"+userID+"','"+name+"','"+pwd1+"')");}else if(name.equals("") && !getsdept.equals("")){temp=stat.executeUpdate("insert intoStudent_Info(Stu_ID,Stu_Pwd,Depart) values('"+userID+"','"+pwd1+"','"+getsdept+"')");}else{temp=stat.executeUpdate("insert intoStudent_Info(Stu_ID,Stu_Pwd) values('"+userID+"','"+pwd1+"')");}}if(temp==1){JOptionPane.showMessageDialog(ss,"添加成功");}else{JOptionPane.showMessageDialog(ss,"添加失败");}}catch(Exception ex){ex.getStackTrace();}}}else if(e.getSource()==reset){ //重置所有控件warning.setText("");jtID.setText("");jtName.setText("");jtPwd.setText("");jtPwd2.setText("");jtsdept.setText("");}}private void centerShell(JFrame shell) //窗口在屏幕中间显示{//得到屏幕的宽度和高度int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;//得到Shell窗口的宽度和高度int shellHeight = shell.getBounds().height;int shellWidth = shell.getBounds().width;//如果窗口大小超过屏幕大小,让窗口与屏幕等大if(shellHeight > screenHeight)shellHeight = screenHeight;if(shellWidth > screenWidth)shellWidth = screenWidth;//让窗口在屏幕中间显示shell.setLocation(((screenWidth - shellWidth)/ 2),((screenHeight - shellHeight)/2));}//public static void main(String args[]){// new add_student();//}}4.添加教师package SIMS;import javax.swing.*;import java.sql.*;import java.awt.*;import java.awt.event.*;public class add_teacher extends JFrame implements ActionListener{static add_teacher ss;String userID=""; //用户名String pwd1=""; //密码String pwd2=""; //确认密码String getsdept=""; //院系String name=""; //姓名JLabel warning=new JLabel(); //输入信息提示框JLabel title=new JLabel();JLabel note1=new JLabel("*");JLabel note2=new JLabel("*");JLabel note3=new JLabel("*");JLabel jlID=new JLabel("教工号:"); //使用文本框创建标签对象 JLabel jlName=new JLabel("姓名:");JLabel jlPwd=new JLabel("密码:");JLabel jlPwd2=new JLabel("确认密码:");JLabel sdept=new JLabel("学院:");JTextField jtID=new JTextField(); //创建文本框对象JTextField jtName=new JTextField();JPasswordField jtPwd=new JPasswordField ();JPasswordField jtPwd2=new JPasswordField ();JTextField jtsdept=new JTextField();JButton submit=new JButton("添加"); //创建按钮对象JButton reset=new JButton("重置");public add_teacher(){ //添加教师账号信息this.setTitle("添加教师账号信息"); //设置窗口标题this.setLayout(null); //设置窗口布局管理器this.add(jlID); //将控件添加到窗体this.add(title);this.add(jlName);this.add(jlPwd);this.add(jlPwd2);this.add(sdept);this.add(jtID);this.add(jtName);this.add(jtPwd);this.add(jtPwd2);this.add(jtsdept);this.add(note1);this.add(note2);this.add(note3);this.add(submit);this.add(reset);this.add(warning);title.setFont(new Font("red",Font.BOLD,15)); //设置提示字体title.setForeground(Color.red);note1.setFont(new Font("red",Font.BOLD,20)); //设置提示字体note1.setForeground(Color.red);note2.setFont(new Font("red",Font.BOLD,20)); //设置提示字体note2.setForeground(Color.red);note3.setFont(new Font("red",Font.BOLD,20)); //设置提示字体note3.setForeground(Color.red);warning.setFont(new Font("red",Font.BOLD,12)); //设置提示字体warning.setForeground(Color.red);title.setText("添加教师账号信息"); //设置控件及窗体位置大小title.setBounds(222,20,150,20);jlID.setBounds(180,60,100,20);jlName.setBounds(180,100,100,20);jlPwd.setBounds(180,140,100,20);jlPwd2.setBounds(180,180,100,20);sdept.setBounds(180,220,100,20);jtID.setBounds(250,60,140,20);jtName.setBounds(250,100,140,20);jtPwd.setBounds(250,140,140,20);jtPwd2.setBounds(250,180,140,20);jtsdept.setBounds(250,220,140,20);note1.setBounds(400,60,140,20);note2.setBounds(400,140,140,20);note3.setBounds(400,180,140,20);submit.setBounds(200,270,60,20);reset.setBounds(300,270,60,20);warning.setBounds(420,100,150,20); //设置提示框位置大小submit.addActionListener(this); //添加监听器reset.addActionListener(this);this.setSize(600,400); //设置窗体大小centerShell(this); //设置窗口位置在屏幕中央this.setResizable(false); //设置窗体不可变大小this.setVisible(true); //设置窗口可见性this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);}public boolean equals(Object obj){ //重写equals方法判断字符串相等if(obj==null)return false;if(this == obj){return true;}if(obj instanceof String) {String str = (String)obj;return str.equals(pwd1);}return false;}public void actionPerformed(ActionEvent e){userID=jtID.getText(); //获取用户输入内容pwd1=jtPwd.getText();pwd2=jtPwd2.getText();getsdept=jtsdept.getText();name=jtName.getText();int temp=0,flag=0;Connection con=null;if(e.getSource()==submit){ //判断是否已输入必填信息if(userID.equals("") || pwd1.equals("") || pwd2.equals("")){warning.setText("请输入必填信息");}else if(!pwd1.equals(pwd2)){ //判断两次输入密码是否一致warning.setText("两次输入密码不相同");}else{try{String url="jdbc:odbc:SIMS"; //连接数据库con=DriverManager.getConnection(url,"",""); //获取连接字符串Statement stat=con.createStatement();ResultSet rs=stat.executeQuery("select Tea_ID from Teacher_Info");while(rs.next()){if(rs.getString(1).equals(userID)){warning.setText("用户ID已存在");flag=1; //判断用户名唯一break;}}if(flag!=1){if(!name.equals("") && !getsdept.equals("")){temp=stat.executeUpdate("insert intoTeacher_Info(Tea_ID,Tea_Names,T ea_Pwd,Depart)values('"+userID+"','"+name+"','"+pwd1+"','"+getsdept+"')");}else if(!name.equals("") && getsdept.equals("")){temp=stat.executeUpdate("insert intoTeacher_Info(Tea_ID,Tea_Names,T ea_Pwd)values('"+userID+"','"+name+"','"+pwd1+"')");}else if(name.equals("") && !getsdept.equals("")){temp=stat.executeUpdate("insert intoTeacher_Info(Tea_ID,Tea_Pwd,Depart) values('"+userID+"','"+pwd1+"','"+getsdept+"')");}else{temp=stat.executeUpdate("insert intoTeacher_Info(Tea_ID,Tea_Pwd) values('"+userID+"','"+pwd1+"')");}}if(temp==1){JOptionPane.showMessageDialog(ss,"添加成功");}else{JOptionPane.showMessageDialog(ss,"添加失败");}}catch(Exception ex){ex.getStackTrace();}}}else if(e.getSource()==reset){warning.setText("");jtID.setText("");jtName.setText("");jtPwd.setText("");jtPwd2.setText("");jtsdept.setText("");}}private void centerShell(JFrame shell) //窗口在屏幕中间显示{//得到屏幕的宽度和高度int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;//得到Shell窗口的宽度和高度int shellHeight = shell.getBounds().height;int shellWidth = shell.getBounds().width;//如果窗口大小超过屏幕大小,让窗口与屏幕等大if(shellHeight > screenHeight)shellHeight = screenHeight;if(shellWidth > screenWidth)shellWidth = screenWidth;//让窗口在屏幕中间显示shell.setLocation(((screenWidth - shellWidth)/ 2),((screenHeight - shellHeight)/2));}// public static void main(String[] args){// new add_teacher();// }}5.添加授课信息package SIMS;import javax.swing.*;import java.sql.*;import java.awt.*;import java.awt.event.*;public class add_tc extends JFrame implements ActionListener{static add_tc ss;String courseID=""; //课程名String teachername=""; //课程名JLabel warning=new JLabel(); //输入信息提示框JLabel title=new JLabel();JLabel note1=new JLabel("*");JLabel note2=new JLabel("*");JLabel jlcourseID=new JLabel("课程号:"); //使用文本框创建标签对象JLabel jlteachername=new JLabel("教师号:");JTextField jtcourseID=new JTextField(); //创建文本框对象JTextField jtteachername=new JTextField();JButton submit=new JButton("添加"); //创建按钮对象JButton reset=new JButton("重置");public add_tc(){ //添加授课信息this.setTitle("添加授课信息"); //设置窗口标题this.setLayout(null); //设置窗口布局管理器this.add(jlcourseID); //将控件添加到窗体this.add(jlteachername);this.add(title);this.add(jtcourseID);this.add(jtteachername);this.add(note1);this.add(note2);this.add(submit);this.add(reset);this.add(warning);title.setFont(new Font("red",Font.BOLD,15)); //设置提示字体title.setForeground(Color.red);note1.setFont(new Font("red",Font.BOLD,20)); //设置提示字体note1.setForeground(Color.red);note2.setFont(new Font("red",Font.BOLD,20)); //设置提示字体note2.setForeground(Color.red);warning.setFont(new Font("red",Font.BOLD,12)); //设置提示字体warning.setForeground(Color.red);title.setText("添加授课信息"); //设置控件及窗体位置大小title.setBounds(222,20,150,20);jlcourseID.setBounds(180,80,100,20);jlteachername.setBounds(180,140,100,20);jtcourseID.setBounds(250,80,140,20);jtteachername.setBounds(250,140,140,20);note1.setBounds(400,80,140,20);note2.setBounds(400,140,140,20);submit.setBounds(200,250,60,20);reset.setBounds(300,250,60,20);warning.setBounds(420,140,150,20); //设置提示框位置大小submit.addActionListener(this); //添加监听器reset.addActionListener(this);this.setSize(600,400); //设置窗体大小centerShell(this); //设置窗口位置在屏幕中央this.setResizable(false); //设置窗体不可变大小this.setVisible(true); //设置窗口可见性this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);}public boolean equals(Object obj){ //重写equals方法判断字符串相等if(obj==null)return false;if(this == obj){return true;}if(obj instanceof String) {String str = (String)obj;return str.equals(courseID);}return false;}public void actionPerformed(ActionEvent e){courseID=jtcourseID.getText(); //获取用户输入内容teachername=jtteachername.getText();int temp=0,flag1=0,flag2=0,flag3=0;Connection con=null;if(e.getSource()==submit){ //判断是否已输入必填信息if(courseID.equals("") || teachername.equals("")){warning.setText("请输入必填信息");}else{try{String url="jdbc:odbc:SIMS"; //连接数据库con=DriverManager.getConnection(url,"",""); //获取连接字符串Statement stat=con.createStatement();ResultSet rs=stat.executeQuery("select Course_ID from Course");while(rs.next()){if(rs.getString(1).equals(courseID)){flag1=1; //判断课程ID存在break;}}ResultSet rss=stat.executeQuery("select Tea_ID fromTeacher_Info");while(rss.next()){if(rss.getString(1).equals(teachername)){flag2=1; //判断教师ID存在break;}}if(flag1!=1){warning.setText("课程ID不存在");}else if(flag2!=1){warning.setText("教师ID不存在");}ResultSet rsss=stat.executeQuery("select Course_ID,T ea_ID from tc");while(rsss.next()){if(rsss.getString(1).equals(courseID) &&rsss.getString(2).equals(teachername)){flag3=1;warning.setText("授课信息重复");。
青少年Python 经典案例源码前言Python是一门易于学习且功能强大的编程语言,广泛应用于科学计算、数据分析、人工智能等领域。
对于青少年来说,学习Python不仅可以培养逻辑思维和解决问题的能力,还可以为未来的学习和职业发展打下坚实的基础。
本文将介绍一些经典的Python案例源码,这些案例不仅适合青少年学习,而且在生活中也有实际应用。
通过学习这些案例,青少年可以提升编程能力,并将其应用到日常生活中的问题解决中。
二级标题一:猜数字游戏三级标题一:游戏简介猜数字游戏是一种经典的文字游戏,玩家需要通过猜测来找到隐藏的正确数字。
这个游戏可以通过Python来实现,并且可以加以扩展,使游戏更加有趣。
三级标题二:游戏规则1.程序随机生成一个1到100之间的整数作为正确答案;2.玩家每次输入一个猜测的数字;3.程序给出相应的提示,告诉玩家猜得太大了还是太小了;4.玩家继续猜测,直到猜对为止。
三级标题三:源码示例下面是一个简单的猜数字游戏的Python源码示例:import randomdef guess_number():answer = random.randint(1, 100)guess = 0count = 0while guess != answer:guess = int(input("请输入一个数字(1-100): "))count += 1if guess < answer:print("猜小了!")elif guess > answer:print("猜大了!")print("恭喜你,猜对了!你一共猜了", count, "次。
")guess_number()三级标题四:案例扩展你可以尝试通过以下方式扩展这个猜数字游戏: * 增加游戏难度,例如增加数字的范围; * 增加计时功能,记录玩家完成游戏所花费的时间; * 增加错误次数限制,如果玩家尝试次数超过限制,则结束游戏。