一个适合新手C#程序员编写练习的小项目:"Student 校务数据管理平台"
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了一个适合新手C#程序员编写练习的小项目:"Student 校务数据管理平台",小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含8936字,纯文字阅读大概需要13分钟。
内容图文
身为一个程序员,重要的是大脑里要有一定的代码量、熟悉程序界面的各种属性配置、对程序所需的功能有一定的想法或独特的见解,从而实现程序的开发。
对于新手来说WinForm、SQL server等等接触最为频繁。而这个项目也完全包含了上述两点。这个项目也是我新手时期做出来算是一个较为多功能对于数据访问操作的一个程序。程序的开发目标是做出一个学生选课管理系统。而我做的程序命名为:“Student 校务数据管理平台”,听起来略专业一点~~
程序使用了分层开发,代码里面包含基础的数据增删改查操作、各种类之间的互相调用、窗体之间的互相传值、窗体界面美化及数据绑定操作等等。
而数据库的部分的SQL查询语句也较为复杂。如将英文列名转换成文字、按格式拆分显示数据、对数值进行转换成文字显示、根据数值判断所属信息等等。
程序所需的具体功能要求:
核心功能:
1. 用户登录:学生、教师、管理员
2. 学生管理相关:查询学生信息、添加学生信息、更新学生信息、删除学生信息、查看我的成绩单、更改登录密码
3. 学生成绩管理相关:查询学生成绩信息、录入学生成绩信息、删除学生成绩信息
4. 教师管理相关:查询教师信息、添加教师信息、更新教师信息、删除教师信息、更改登录密码
5. 课程管理相关:查询课程信息、添加课程信息、删除课程信息
6. 班级管理相关:查询班级信息、添加班级信息、删除班级信息
其他可扩展开发功能:
1. 用户登录后播报提示文本(使用系统语音播报组件)
2. 显示数据页面支持分页
3. 具有数据库连接访问开关
4. 查询当前数据库连接状态,将得到的信息显示为提示框。
5. 添加任务栏图标并绑定相应的快捷菜单。
6. 读取配置文件的版本号信息填充到主窗口的标题栏中。
7. 将当前的登录用户身份显示到主窗口下面的信息栏中。
用户可用功能分配:
学生:
1. 用户登录:学生
2. 学生管理相关:查看我的成绩单、更改登录密码
教师:
1. 用户登录:教师
2. 学生管理相关:查询学生信息、添加学生信息、更新学生信息、删除学生信息
3. 学生成绩管理相关:查询学生成绩信息、录入学生成绩信息、删除学生成绩信息
4. 教师管理相关:更改登录密码
5. 课程管理相关:查询课程信息
6. 班级管理相关:查询班级信息
管理员:
1. 用户登录:管理员
2. 学生管理相关:查询学生信息、添加学生信息、更新学生信息、删除学生信息
3. 学生成绩管理相关:查询学生成绩信息、录入学生成绩信息、删除学生成绩信息
4. 教师管理相关:查询教师信息、添加教师信息、更新教师信息、删除教师信息
5. 课程管理相关:查询课程信息、添加课程信息、删除课程信息
6. 班级管理相关:查询班级信息、添加班级信息、删除班级信息
窗口需求说明:
需要创建的窗口及所需控件名:
- 登录窗口 :Label、Button、groupBox、radioButton
- 主窗口:MenuStrip、ToolStrip、statusStrip、Button、TabControl、DataGridView、Label、GroupBox、richTextBox
- 添加数据窗口(以下身份都需单独创建:学生、教师、课程、班级、录入学生成绩):Label、textBox、radioButton、dateTimePicker
- 更新数据窗口(以下身份都需单独创建:学生、教师):Label、textBox、radioButton、dateTimePicker、Button
- 删除数据窗口:Label、textBox、Button
- 查询学生成绩单窗口:Label、textBox、Button、groupBox、dataGridView
- 更改登录密码窗口(以下身份都需单独创建:学生、教师):Label、textBox、Button
- 帮助信息窗口(可选):groupBox、richTextBox
- 关于程序窗口(可选):Label、richTextBox、pictureBox
功能效果需求说明:
1. 添加信息时需验证非空、输入格式等合法性。
2. 删除信息全部统一按ID删除。
3. 每个用户登录时都需要将不可用的功能控件入口隐藏掉。
4. 主程序退出时弹出确认退出提示框。
部分程序界面实现效果图一览(自己做的界面效果,仅供参考):
程序界面所使用的界面库名为:CSKin
登录窗口:
主窗口:
添加学生数据窗口:
更新数据窗口:
删除数据窗口:
查看成绩单窗口:
更改密码窗口:
帮助信息窗口:
关于程序窗口:
程序所需的SQL脚本:
部分的命名可能不是很规范,请大家在日常开发中一定要遵守开发规范,不要随便起名字。
-- 新建 student 学生数据库
CREATE DATABASE student;
-- 定位到该数据库
USE student;
-- 新建 system_users 登录账户信息表
CREATE TABLE system_users(
uid INT IDENTITY PRIMARY KEY, -- 账户ID
ucode VARCHAR(10) NOT NULL, -- 账号
upwd VARCHAR(10) NOT NULL -- 账户密码
)
-- 添加测试数据到 system_users 登录账户信息表
INSERT INTO system_users VALUES('101010','123456');
-- 新建 classInfo 班级信息表
CREATE TABLE classInfo(
cid INT IDENTITY(1,1) PRIMARY KEY, -- 班级ID
cname NVARCHAR(20) NOT NULL -- 班级编号
)
-- 添加测试数据到 classInfo 班级信息表
INSERT INTO classInfo VALUES('S201'),('S202'),('S203'),('S204'),('S205'),('S206'),('S207'),('S208');
-- 新建 student 学生信息表
CREATE TABLE student(
sid INT IDENTITY(1000,1) PRIMARY KEY, -- 学生ID
sname VARCHAR(20) NOT NULL, -- 学生姓名
ssex INT NOT NULL, -- 学生性别
sage INT NOT NULL, -- 学生年龄
sbirthday DATE NOT NULL, -- 学生生日
sphone VARCHAR(20) NOT NULL, -- 学生电话
saddress VARCHAR(50) NOT NULL, -- 学生地址
scid INT NOT NULL, -- 学生班级编号
spassword VARCHAR(6) NOT NULL, -- 学生登录密码
foreign key (scid) references classInfo(cid), -- 关联班级外键
)
-- 添加测试数据到 Student 学生信息表
INSERT INTO student VALUES('Admin',1,DATEDIFF(YY, '1990-01-01', GETDATE()),'1990-01-01','13888888888','湖南长沙',1,'123456');
INSERT INTO student VALUES('张明全',1,DATEDIFF(YY, '1990-01-01', GETDATE()),'1990-01-01','13812345678','湖南长沙',1,'456789');
INSERT INTO student VALUES('李菲',1,DATEDIFF(YY, '1991-02-02', GETDATE()),'1991-02-02','15041576258','湖北宜昌',2,'789123');
INSERT INTO student VALUES('于寄谦',1,DATEDIFF(YY, '1992-03-03', GETDATE()),'1992-03-03','13945624865','甘肃天水',4,'147258');
INSERT INTO student VALUES('刘国正',1,DATEDIFF(YY, '1993-04-04', GETDATE()),'1993-04-04','15842548964','山东荷泽',1,'258369');
INSERT INTO student VALUES('周接轮',1,DATEDIFF(YY, '1995-06-07', GETDATE()),'1995-06-07','17654254892','台湾新竹',4,'369147');
INSERT INTO student VALUES('巩小妹',0,DATEDIFF(YY, '1996-03-22', GETDATE()),'1996-03-22','13545568785','香港龙湾',3,'111222');
INSERT INTO student VALUES('巩大妹',0,DATEDIFF(YY, '1994-02-01', GETDATE()),'1994-02-01','13042148961','香港龙湾',3,'333444');
INSERT INTO student VALUES('张明敏',0,DATEDIFF(YY, '1997-05-12', GETDATE()),'1997-05-12','13848754865','北京顺义',2,'555666');
INSERT INTO student VALUES('矛十八',1,DATEDIFF(YY, '1998-06-07', GETDATE()),'1998-06-07','16514567869','四川棉阳',4,'777888');
INSERT INTO student VALUES('罗林光',1,DATEDIFF(YY, '1999-02-04', GETDATE()),'1999-02-04','17532448546','陕西临潼',2,'999000');
INSERT INTO student VALUES('司马坡',1,DATEDIFF(YY, '1997-04-06', GETDATE()),'1997-04-06','13545678924','新疆喀什',1,'112233');
INSERT INTO student VALUES('罗宇飞',1,DATEDIFF(YY, '1999-04-06', GETDATE()),'1999-04-06','13545645924','浙江杭州',6,'445566');
INSERT INTO student VALUES('吴强',1,DATEDIFF(YY, '1993-08-21', GETDATE()),'1993-08-21','13645646215','云南大理',5,'778899');
INSERT INTO student VALUES('王小明',1,DATEDIFF(YY, '1996-02-23', GETDATE()),'1996-02-23','13701257945','黑龙江鸡西',7,'123123');
INSERT INTO student VALUES('李科',1,DATEDIFF(YY, '1998-09-16', GETDATE()),'1998-09-16','15846532452','浙江杭州',3,'456456');
-- 新建 teacher 教师信息表
CREATE TABLE teacher(
tid INT IDENTITY PRIMARY KEY, -- 教师ID
tcid INT NOT NULL, -- 教室编号
tname VARCHAR(20) NOT NULL, -- 教师名字
tProfession CHAR(1) NOT NULL, -- 课程专业 (专业:1:体育,2:计算机,3:数学,4:化学)
tpassword CHAR(6) NOT NULL -- 登录密码
foreign key (tcid) references classInfo(cid), -- 关联班级外键
)
-- 添加测试数据到 teacher 教师信息表
INSERT INTO teacher VALUES(1,'陈政',3,'123456'),(2,'徐柯',1,'456789'),(3,'刘莉',2,'789123');
-- 新建 Course 课程信息表
CREATE TABLE course(
cid INT IDENTITY PRIMARY KEY, -- 课程序号
ctid INT NOT NULL, -- 教师编号
cname NVARCHAR(20) NOT NULL, -- 课程名称
climit INT NOT NULL -- 选课人数
)
-- 添加测试数据到 Course 课程信息表
INSERT INTO Course VALUES(1,'多维运算与应用',0),(2,'户外体育',0),(3,'Android软件开发',0);
-- 新建 SC_Mapping 成绩表
CREATE TABLE SC_Mapping(
scid INT IDENTITY PRIMARY KEY, -- 序号
sid INT NOT NULL, -- 学生编号
cid INT NOT NULL, -- 课程编号
score INT NOT NULL -- 分数
foreign key (scid) references course(cid), -- 关联课程表外键
foreign key (cid) references course(cid) -- 关联课程表外键
)
-- 添加测试数据到 SC_Mapping 成绩表
INSERT INTO SC_Mapping VALUES(1000,1,80),(1000,2,90),(1000,3,100);
-----------------------------------------------------------------------------------------------------
-- 高级查询:查询Student主表全部信息(性别数值转换成汉字,日期字符串分割间隔为年月日,生日降序排列,判断所属年龄段)
SELECT
S.sid AS '学生ID',
S.sname AS '学生姓名',
(
CASE S.ssex
WHEN'1' THEN'男'
WHEN'0' THEN'女'
ELSE '双性人'
END
) AS '学生性别',
S.sage AS '学生年龄',
(
CAST(YEAR(S.sbirthday) AS CHAR(4)) +'年'+
CAST(MONTH(S.sbirthday) AS VARCHAR(2)) +'月'+
CAST(DAY(S.sbirthday) AS VARCHAR(2)) +'日'
) AS '学生生日',
S.sphone AS '学生电话',
S.saddress AS '学生地址',
C.cname AS '学生班级',
S.spassword AS '学生登录密码',
(
CASE
WHEN S.sage<=18 THEN'未成年'
WHEN S.sage BETWEEN 18 AND 30 THEN'青年'
WHEN S.sage BETWEEN 30 AND 60 THEN'中年'
WHEN S.sage>60 THEN'老年'
END
) AS '所属年龄段'
FROM student AS S
LEFT JOIN classInfo AS C ON C.cid = S.scid
-- 实现分页的核心代码
SELECT TOP 每页显示的数值 * FROM 数据表名
WHERE 列名 NOT IN
(
SELECT TOP(每页显示的数值*(1-1)) 列名 FROM 数据表名 ORDER BY 列名 ASC
)ORDER BY 列名 ASC
大家可以试着练习做一下。全部完成这个项目之后你会在程序开发有了一个很大的提升。
如果需要的话我会把我做出来的完整项目源代码发出来供大家参考。
内容总结
以上是互联网集市为您收集整理的一个适合新手C#程序员编写练习的小项目:"Student 校务数据管理平台"全部内容,希望文章能够帮你解决一个适合新手C#程序员编写练习的小项目:"Student 校务数据管理平台"所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。