学生公寓管理系统设计

2023-03-31

第一篇:学生公寓管理系统设计

学生公寓管理系统分析及设计论文

摘要:随着计算机技术和网络技术的广泛应用,使用计算机和网络来管理学生公寓,具有管理方便、清晰,高效、安全的特点,能够有效的保证学校的公寓高效、安全的进行管理。本系统具有界面友好,操作简便的特性。关键词:学生公寓;界面模块

1系统需求分析

一般的公寓管理系统应该有三级用户管理权限,其中包含公寓管理员,学生及系统管理员。因为公寓学生管理系统的主要任务是管理住在公寓中学生,就应该包含学生及公寓两方面的信息;学生的信息不仅包含学生的个人信息,入住信息,迁出信息,还应该包含公寓访客的信息等。公寓的信息应包含公寓的寝室信息,报修信息,寝室的水电费等。并且公寓管理系统应该有一般系统应该有的用户管理,权限管理,密码管理等功能。

2公寓管理系统的功能设计

2.1总体设计

学生公寓管理系统主要实现了后勤部门对学校宿舍的管理功能。管理系统分为用户管理模块、公寓信息管理和学生信息模块三个部分。

2.2公寓管理模块实现的功能

1)公寓入住学生管理模块及报修管理模块。公寓入住学生管理模块,公寓管理员可以根据入住学生的学号、姓名、班级等信息进行对入住学生进行信息查询。报修管理模块可以添加对需要保修的楼号、寝室号、报修项目、电话号码、报修时间及处理结果,和保修当前的状态进行查询和信息的维护。2)寝室信息管理模块。寝室信息管理查询功能可以根据楼号、寝室编号进行查询;同时可以对其信息进行修改。3)访客信息管理模块。访客登记信息包含学生学号、拜访人、关系、来访电话号码和来访时间信息;根据学生学号来查询访客记录;可以查看正在访客的信息,并可以对其进行访客结束。4)学生入住迁出信息模块。学生入住添加功能的添加信息包含学号、寝室编号、床位编号、入住时间信息;根据学生学号、寝室编号来查询入住信息;可以对查询出来的学生信息进行批量迁出管理;学生迁出信息,可以对查询出来的学生信息进行批量删除管理。5)个人信息管理模块可以对操作人员本身的个人信息包括登陆密码,登陆状态等进行编辑和查询。

2.3公寓管理系统系统管理模块实现的功能

1)对系统应用的学生信息及公寓信息的功能进行维护和修改。对学生信息管理模块的维护修改:添加功能:比如添加学生信息(包含学号,姓名,所在年级,联系电话,联系地址,密码,所在楼号,寝室号、备注等);修改功能:修改入住学生的信息。查询功能:根据入住学生的姓名,学号,班级等信息查询学生的寝室,入住状态,水电费等信息。删除功能:根据学号对学生信息进行删除。公寓报修模块:添加功能:根据公寓报修的时间,可以添加报修的楼号,寝室号,报修项目,报修人联系电话等信息,并且。跟踪功能:根据报修系统报修的内容,进行跟踪,并且提供更新报修状态的功能。查询功能:可以根据姓名、楼号、寝室号进行查询。2)公寓信息管理模块。公寓信息的维护,包括公寓的公寓楼号,可以居住的人数,当前入住的人数,和公寓的类型(男/女)以及相关的备注。3)公寓管理员模块。公寓管理员的信息管理功能的可以对包含管理员姓名,电话,负责区域,值班信息等进行添加,编辑,删除等操作。4)访客信息管理模块,与学生管理类似,需要对访客的个人信息包括,姓名、访问原因、被访问人员姓名,进入和离开时间等信息进行记录。

3数据库的设计

1)学生基本信息表:该表中的数据Stnum(学生学号)、有Stname(姓名)、Sex(性别)、Age(年龄)、Dorid(寝室号)、Classid(班级)、Phone(电话)、Addr(地址)、Pwd(密码)。2)报修表:该表中的数据apart_id(楼号)、Dorid(寝室号)、Things(损害部位)、Why(原因)、Bxname(报修人姓名)、date(报修时间)和Repair-date(维修时间)。3)系统管理用户表:该表中的数据有Userid(用户编号)、Password(用户密码)、Manage(用户权限)。4)公寓楼信息表:该表中的数据apart_number(楼号)、Number(学生人数)、apart_sex(寝室楼为男/女寝)、People(管理该寝室的人)。5)宿舍信息表:该表中的数据apart_number(楼号)、有Dorid(寝室号)、leader_name(寝室长名字)、leader_phone(寝室长电话)、DorSex(男/女寝)、PeoNum(人数)、Bednum(床号)。6)公寓管理员信息表:该表中的数据apart_id(楼号)、Managename(管理员姓名)、Managephone(电话号码)、Anpai(安排)、Pwd(密码)。具体信息表略。7)访客登记表:该表中的数据Sid(学生学号)、Guanxi(关系)、Vistor_name(来访人的名字)、Vistor_phone(来访人的电话号码)、Visit-time(拜访时间)和endtime(拜访结束时间)。8)寝室水电费信息表:该表中的数据Dorid(寝室号)、Waterfei(已使用水(吨))、Dianfei(已使用电(度))。9)学生入住迁出信息表:该表中的数据Stnum(学号)、有Dorid(寝室号)、leader_phone(寝室长电话)、bednum(床位编号)、Intime(入住时间)、Outtime(迁出时间)。

4小结

通过以上的分析及管理系统和数据库设计,学生公寓管理系统为公寓管理提供科学、规范的现代管理模式,使学生公寓管理跨上一个新的台阶,其不仅能为学校带来巨大的直接经济效益,而且还能提高管理人员的工作效率,使公寓管理进入一个新层次。

参考文献:

[1]飞思科技产品研发中心编著《JSP应用开发祥解》电子工业出版社,2001,7.

[2]杨钰,卢银娟,赵昊彤,等编著.《JSP网络开发技术》人民邮电出版社,2002,1.

[3]曾云飞.MyEclipse应用开发详解东北大学出版社.2005.

[4]印民.Java与面向对象程序设计教程高等教育出版社.2002,8,6.

[5]陆武,蒋武,刘军,石正贵.Java项目开发实践.中国铁道出版社.2004,3.

第二篇:学生信息管理系统设计报告

080370104 马中源

一、 设计目的

作为C#课程结课设计,验证自身的学习效果,同时希望利用所学的基本知识和技能,进行简单数据库应用程序设计。希望通过项目实践,熟悉巩固所学知识,以使自身达到熟练掌握.NET基本结构以及C#语言的基本知识和技能,基本掌握面向对象程序开发的基本思路和方法,了解ADO.NET数据库开发基本知识,为今后的进一步深入学习,奠定基础。

二、需求分析

学生管理系统的开发目的是为了实现学生课程、学籍的信息化管理。本系统需要完成的功能有:班级管理、学生管理、科目管理、课程管理、成绩管理以及系统管理员才具有的教师管理和用户管理。

1.班级管理:可对班级进行添加、删除、修改、查找和报表输出等功能,班级属性有:名称、班主任(来自于系统中保存的教师)、当前学生人数、建班日期和备注等属性。 2.学生管理:可对学生进行添加、删除、修改、查找和报表输出等功能,学生属性有:学号、姓名、性别、所属班级(来自于系统中保存的班级)、相片、出生日期和备注等属性。

3.科目管理:可对科目进行添加、删除、修改、查找和报表输出等功能,科目属性有:科目名称、学时数和备注等属性。

4.课程管理:可对每一个班级的上课科目进行添加、删除、修改、查找和报表输出等功能,课程属性有:所属班级(来自于系统中保存的班级)、授课老师(来自于系统中保存的教师)、开课日期、结课日期和备注等属性。

5.成绩管理:可对每一个班级的上课科目的学生成绩进行添加、删除、修改、查找和报表输出等功能,成绩属性有:学生姓名、所属班级(来自于系统中保存的班级)、课程名、成绩、备注等属性。

6. 系统管理:该模块的主要任务是维护系统的正常运行和安全性设置,包括添加用户、修改密码、重新登录等等。

三、系统模块的实现

在系统中包括以下功能:系统管理、学生信息管理、课程信息管

理、成绩信息管理、班级信息管理。 系统各模块关系如图所示:

本系统共分为三大部分:

1、 登录模块

为了系统的安全,在进入系统之前首先会出现一个登录模块,用户只有在输入正确的用户名和正确的密码之后,才能进入系统。

用户登录窗体中放置了两个文本框(Textbox),用来输入用户名和密码;两个按钮(Button)用来确定或者取消登录。

设置一个SSTab控件,供不同用户登录时选择用户权限,超级用户拥有一切权限(包括添加删除和修改以及对用户的管理),普通用户拥有受限制的权限(查询及修改密码),提高了数据库的安全性。

添加一个ToolTip组件,提示用户输入正确的用户名和密码形式,提示用户密码是佛正确。 登陆条件判断代码:

private void button1_Click(object sender, EventArgs e) { if (this.textBox1.Text == "" || this.textBox2.Text == "") { MessageBox.Show("用户名或密码不能为空!"); } SqlConnection conn = new SqlConnection(connString); string str = "select * from Users where UserName= + this.textBox1.Text.Trim() + "; try { conn.Open(); SqlCommand cmd = new SqlCommand(str, conn); SqlDataReader read = cmd.ExecuteReader(); if (read.Read()) { if (textBox2.Text.Trim() == read["UserPassWord"].ToString().Trim()) { MessageBox.Show("用户正确,欢迎您使用本系统!"); this.Hide(); 主界面 fm = new 主界面(); fm.Show(); } else { MessageBox.Show("密码错误,请重新输入!"); } } } catch (Exception ex) { MessageBox.Show(ex.Message); } conn.Close(); } private void button2_Click(object sender, EventArgs e) { Application.Exit(); }

2、 系统主界面模块

登陆成功后,即可进入,系统主界面模块。窗体名称为界面功能介绍。主界面为进入学生管理系统各模块的入口,用户可根据MenuStrip上面各个模块名称单击进入各个管理模块,从而进行对系统的管理操作。 主界面入口代码:

private void 学生增删ToolStripMenuItem_Click(object sender, EventArgs e) { 学生管理 fm4 = new 学生管理(); fm4.Show(); } private void 课程管理ToolStripMenuItem_Click(object sender, EventArgs e) { 课程管理 fm7 = new 课程管理(); fm7.Show(); } private void 科目管理ToolStripMenuItem_Click(object sender, EventArgs e) { 科目管理 fm8 = new 科目管理(); fm8.Show(); } private void 成绩管理ToolStripMenuItem_Click(object sender, EventArgs e) { 成绩管理 fm10 = new 成绩管理(); fm10.Show(); } private void 用户管理ToolStripMenuItem_Click(object sender, EventArgs e) { 用户管理 fm12 = new 用户管理(); fm12.Show(); } private void 修改密码ToolStripMenuItem_Click(object sender, EventArgs e) { 更改密码 fm14 = new 更改密码(); fm14.Show(); } private void 班级管理ToolStripMenuItem_Click(object sender, EventArgs e) { 班级管理 fm2 = new 班级管理(); fm2.Show(); }

3、 各功能模块 1. 用户管理: 可对用户进行添加、删除、修改、查找等功能,用户属性有:用户名、密码、用户类型、 用户权限、用户注册日期等信息。在用户管理界面,用户可根据自身权限查看用户信息,系统超级管理员可根据需求进行添加、删除用户等相关操作。

进入用户管理界面后,将会出现一个主窗体,选择系统管理模块下的添加用户,就可以进入添加用户窗体,可以通过该窗体增加新的用户。

在这个窗体中放置了三个文本框,用来输入用户名和密码;两个按钮用来确定是否添加用户;三个标签用来标示文本框的提示。用户添加界面,超级管理员可通过本界面对用户修改用户类型,用户权限设置。

1.4.2修改密码窗体的创建

在系统管理模块下,进入修改密码窗体,用户可根据需要修改自己的密码。在这个窗体中放置了两个文本框,用来输入密码和确认密码;两个按钮用来确定是否修改密码;两个标签用来标示文本框的内容。密码修改界面主要包括用户名、新设置密码、以及确认等功能。主要供普通用户进行密码修改、以及密码清除操作。 2. 班级管理:

班级信息管理界面

班级属性有:名称、班主任(来自于系统中保存的教师)、当前学生人数、建班日期和备注等属性。 班级管理模块主要分为班级信息管理和班级查询两个界面,班级基本信息管理界面中的Groupbox班级档案,显示班级编号、班级名称、学制、专业、班主任、开班日期、备注等基本信息情况。DataGridView显示数据库中班级详细信息以及伴随操作产生的数据变动情况。在本操作界面内,管理员可对班级信息进行添加、删除、修改等各种操作。

班级查询界面

班级查询界面,主要实现班级基本信息的查询,面向没有管理权限的普通用户访问系统信息,根据班级编号对班级信息进行查询操作,详细信息会在窗体上面DataGridView中显示,普通用户只能浏览信息,不能进行删除、修改等管理权限操作。 3. 课程管理:

课程管理模块主要分为课程管理界面和教师管理界面两部分实现。

课程管理界面中的DataGridView显示课程基本信息,包括科目编号、班级编号、开课学期、教师编号、开课日期、捷克日期等基本信息。管理员可对每一个班级的上课科目进行添加、删除、修改、查找等功能,也可对全部课程进行查看、修改、添加、删除等基本操作。

sql = "select * from ClassCourse"; da = new SqlDataAdapter(sql, connString); ds = new DataSet(); da.Fill(ds, "ClassCourse"); binds = new BindingSource(ds, "ClassCourse"); dataGridView1.DataSource = binds;

教师管理模块主要包括教师基本档案,教师属性为编号、姓名、联系电话、教师姓名、任教年限、性别、专业、出生年月。在教师管理模块可进行相应的查询与信息修改。 4.课程管理模块

课程信息浏览功能:点击主窗体中课程管理模块下的科目信息浏览,可进入科目信息浏览窗体。为了用户的使用方便,我使用了SSTab控件,故在该窗体中同时包含了科目信息的添加和修改的功能。并且我还在窗体上设置了myflexgrid控件。添加和修改记录后,对于数据有何变化都可以在myflexgrid中显示出来,使用户对所做的操作一目了然。

课程设置功能:进入课程管理模块下的年级课程设置窗体,可以对每一个年级的课程进行设置。

SqlConnection conn = new SqlConnection(connString); string sql = "Insert into ClassCourse values(" + " + textBox1.Text + , + textBox2.Text + ," + textBox3.Text + ", + textBox4.Text + , + DateTime.Parse(dateTimePicker1.Text) + , + DateTime.Parse(dateTimePicker2.Text) + )"; try { conn.Open(); MessageBox.Show("打开数据库连接成功"); SqlCommand cmd = new SqlCommand(sql, conn); cmd.ExecuteNonQuery(); MessageBox.Show("添加记录成功!");

} catch (SqlException ex) { MessageBox.Show("数据库连接失败!" + "添加记录失败!" + ex.Message); }

可对科目进行添加、删除、修改、查找等功能, 修改

SqlConnection conn = new SqlConnection(connString); string sql = "Update ClassCourse set CourseNo= + textBox1.Text + ," + "ClassNo= + textBox2.Text + ," + "StartTerm=" + textBox3.Text + "," + "TeaNo= + textBox4.Text + ," + "StartData= + DateTime.Parse(dateTimePicker1.Text) + ," + "FinishData= + DateTime.Parse(dateTimePicker2.Text) + " + "where CourseNo=" + temp; try { conn.Open(); MessageBox.Show("打开数据库连接成功"); SqlCommand cmd = new SqlCommand(sql, conn); cmd.ExecuteNonQuery(); MessageBox.Show("修改记录成功!");

} catch (SqlException ex) { MessageBox.Show("数据库连接失败!" + "修改记录失败!" + ex.Message); }

科目管理模块科目属性主要包括科目名称、学时数和备注等属性。同时包括教师管理,教师管理包括教师姓名、电话、性别、科目、职称等一系列基本信息;可对教师进行添加、删除、查询等基本操作。 5.成绩管理模块

成绩添加代码实现

SqlConnection conn = new SqlConnection(connString); string sql = "Insert into Scores values(" + " + textBox1.Text + , + textBox2.Text + , + textBox3.Text + )"; try { conn.Open(); MessageBox.Show("打开数据库连接成功"); SqlCommand cmd = new SqlCommand(sql, conn); cmd.ExecuteNonQuery(); MessageBox.Show("添加记录成功!"); 成绩删除代码实现

SqlConnection conn = new SqlConnection(connString); DialogResult ret = MessageBox.Show("确定要删除吗?", "删除", MessageBoxButtons.OKCancel); if (ret == DialogResult.Cancel) return; string sql = "delete from Scores where StuNo=" + textBox1.Text; SqlCommand cmd = new SqlCommand(sql, conn); try { conn.Open(); int rows = cmd.ExecuteNonQuery(); if (rows == 1) MessageBox.Show("删除成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); 成绩查询代码实现

sql = "select * from Scores where StuNo=+textBox1.Text+"; da = new SqlDataAdapter(sql, connString); ds = new DataSet(); da.Fill(ds, "Scores"); binds = new BindingSource(ds, "Scores"); dataGridView1.DataSource = binds;

成绩管理模块主要包括成绩信息管理功能点击成绩管理模块下的成绩信息浏览,进入成绩信息浏览窗体,考虑到美观和实用性,界面设置如下图。用Frame控件在窗体中划定一个可浏览成绩信息地方,再在Frame中添加MSFlexGrid控件,运行时将在MSFlexGrid中显示所有学生的成绩信息。使用Toolbar来建立工具条。点击工具条中的修改、添加和查询按钮就可分别进入修改成绩信息窗体、添加成绩信息窗体和查询成绩信息窗体。这三个窗体的界面设置分别类似于学籍管理下修改学籍信息窗体、添加学籍信息窗体和查询学籍信息窗体。

成绩管理模块,管理员可对每一个班级的上课科目的学生成绩进行添加、删除、修改、查找和报表输出等功能,成绩属性有:学生姓名、所属班级(来自于系统中保存的班级)、课程名、成绩、备注等属性。 6.学生管理模块

添加学籍信息功能

SqlConnection conn = new SqlConnection(connString); //MemoryStream ms; //pictureBox1.Image.Save(ms); //byte[] img = ms.ToArray(); string sql = "Insert into Student(StuNo,StuName,StuSex,ClassNo,StuBday,StuAdress,StuPostNo,StuPhone,StuData,StuRemarks) values( + textBox1.Text + , + textBox2.Text + , + textBox3.Text + , + textBox4.Text + , + DateTime.Parse(dateTimePicker1.Text) + , + textBox5.Text + , + textBox6.Text + , + textBox7.Text + , + DateTime.Parse(dateTimePicker2.Text) + , + textBox8.Text + )"; SqlCommand cmd = new SqlCommand(sql,conn); try { conn.Open(); MessageBox.Show("数据库连接成功!"); cmd.ExecuteNonQuery(); MessageBox.Show("添加记录成功!");

} catch (SqlException ex) { MessageBox.Show(ex.Message); }

选择主窗体中学生管理模块下的添加学籍信息,就可进入添加学籍信息的窗体,在该窗体中我们可以对学生的学号、姓名、性别、出生日期、班号等学生的信息进行添加。设计时我尽可能设想各种边界条件,如记录为空,输入为空,输入出错等,当输入的信息满足这些边界条件时,将会弹出一个提示框提醒用户,以便用户能及时地做出修改。添加的信息将全部存储到数据库中。

在窗体上放置多个文本框和下拉式文本框,用来输入学籍信息;两个按钮用来确定是否输入学籍信息;一个按钮用来退出窗体;多个标签用来提示文本框中需要输入的内容。 在学生管理窗体下,可对学生进行添加、删除、修改、查找和报表输出等功能,学生属性有:学号、姓名、性别、所属班级(来自于系统中保存的班级)、相片、出生日期和备注等属性。 修改删除学生信息

SqlConnection conn = new SqlConnection(connString); DialogResult ret = MessageBox.Show("确定要删除吗?", "删除", MessageBoxButtons.OKCancel); if (ret == DialogResult.Cancel) return; string sql = "delete from Student where StuNo=" + temp; SqlCommand cmd = new SqlCommand(sql, conn); try { conn.Open(); int rows = cmd.ExecuteNonQuery(); if (rows == 1) MessageBox.Show("删除成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

} catch (SqlException ex) { MessageBox.Show("数据库连接失败!" + ex.Message); } 点击学籍管理模块下的修改学籍信息,就进入修改学籍信息的窗体,在该窗体中我们可以对前面添加的学籍信息进行修改。由于用户的需求不同,有的是要对学生的信息做个别的改动,有的是需要删除该条记录,所以该窗体同时包括了修改记录的功能和删除记录的功能。又考虑到用户的误操作,为了方便,我在该窗体中增添了取消修改的功能,可一次性把输入文本框的内容全部置空。 查询学籍信息功能

//string conn = "Initial Catalog=Mazhongyuan;Data Source =localhost;Integrated Security=true"; SqlConnection connection = new SqlConnection(connString );

SqlDataAdapter adapter = new SqlDataAdapter("select * from Student ",connection); DataTable table = new DataTable(); adapter.Fill(table); dataGridView1.DataSource = table; 进入学籍管理模块下的查询学籍信息窗体,在该窗体中可以对学生的信息进行查询,有三种查询方式。我在设计时,一方面考虑到简洁的因素,用户可以只设置一种查询方式进行查询;另一方面又为了避免数据的重复,用户可以输入详细的信息,也就是同时设置多种查询方式进行查询。进入查询窗体时,myflexgrid中会显示出所有学生的学籍信息,如果不设置查询方式就进行查询,是无效查询,系统会给出提示。在设置好查询方式后,便开始查询,将在myflexgrid中显示出用户所需的学生的学籍信息。

四、系统测试

在开发这个软件系统的过程中,面对着极其错综复杂的问题,人的主观认识不可能完全符合客观现实,在本次设计过程中,我采用循环测试法,力求在每个阶段结束之前通过严格技术审查,即每完成一个功能,就进行测试,尽可能早的发现并纠正差错,完成模块测试之后再进行系统测试。 在该设计中,我偏重考虑了当用户输入的信息出错时,系统就会出现提示,以便让用户知道出错的原因,并能及时做出修改,所以我站在用户的角度考虑,尽可能设想各种边界条件,如记录为空,输入为空,输入出错等,以此来发现错误,纠正错误,取得了一定的效果。

当然,该学生信息管理系统也存在一些不足之处。在成绩管理界面,当3次改变成绩为不同的内容时,程序会出错。虽然尝试了很多方法,仍不能解决。再一点就是关于打印和年级课程信息设置都未能实现,这有待于以后的进一步提高。

一个应用系统性能的优劣,效率的高低始终应当由用户来做出判决,应用系统在运行过程中,用户会提出一些新的需求和建议,我就会根据用户需求的变化,对本系统做出一定的修改,使其进一步地得到完善和提高。

五、课程设计总结

通过本次课程设计,验证了本学期对C#的学习效果,同时利用所学的基本知识和技能,尝试进行简单数据库应用程序设计。通过本次项目实践,熟悉巩固了本学期所学软件设计知识,达到熟练掌握.NET基本结构以及C#语言的基本知识和技能,基本掌握面向对象程序开发的基本思路和方法,了解ADO.NET数据库开发基本知识,为今后的进一步深入学习,奠定了基础。

参考资料 C#程序设计 C#实用软件开发 数据库设计

第三篇:C语言课程设计学生通讯录管理系统设计

一、题目内容的描述

学生通讯录管理系统设计

设计一个学生通信录,学生通迅录数据信息构成内容可自行设计(如:姓名、家庭地址、邮政编码、电话号码等等),通信录数据类型定义为结构体类型。由键盘输入数据(最好要考虑输入数据输入的格式及输入数据的有效性),然后进行以下的功能实现。程序要求主函数是一个功能选择菜单,其它各功能都用各自的函数实现。

功能要求如下:

1、能建立、修改和增删学生通讯录

2、能够按多种方式进行查询,例如按姓名、按电话号码等。

3、通讯录的数据保存在文件中,运行程序时将通讯录数据从文件读取到内存中。对通讯录进行增加、删除、修改学生数据后,提供功能菜单,可以将内存中修改过的通讯录重新保存至文件。

二、应用程序功能的详细说明

1、应用程序实现了可视化的系统操作界面。

2、对学生通讯录形成了系统化的管理,操作简便明了。

3、程序具有系统帮助,添加、显示、查询、刷新、删除、排序、保存、修改、读取学生通讯录的功能。各项功能均可按照文字提示操作,浅显易懂。

4、系统的各个功能模块都用函数的形式来实现(readfile()、seek()、modify()、sort()、insert()、del()、save()、menu())方便查看。

5.可以将信息保存在文件(“student.txt“)中,亦可将信息从文件中读取出来,灵活方便。

三、主要模块的算法描述

学生通讯录管理系统

刷新学生信息readfile()

查询学生信息seek()

增加学生信息insert()

显示学生信息display()

退出系统

修改学生信息modify()

删除学生信息del()

保存当前学生信息save()

汇总当前学生数目number()

系统帮助help()

查询学生信息

按姓名查询

退出

按学号查询

开始

以可读写的方式打开一个数据文件

将此文件的内容读出,并存入一个新的结构体类型的数组中。

调用menu()菜单函数

进入while()主循环

输入1-8中的一数值,选择相应操作。

输入是否为0

判断键值,调用相应函数,完成相应功能。

是否已对修改存盘

调用函数save()函数,进行写数据文件操作

结束

模块一:头文件,变量定义,函数的声明

对系统所使用的变量进行定义,对函数进行声明。

模块二:录入学生信息

声明函数void

readfile(),说明一个文件指针FILE

*fp打开文

件“student.txt“。

模块三:学生信息的查找

声明void

seek()为查找函数,通过switch(item)设定用学号查找,

用姓名查找两个分支。

模块四:学生信息的修改

声明void

modify()为学生信息修改函数,通过switch(item)设定

所要修改的项目。

模块五:刷新学生信息

声明void

sort()将录入学生系按升序排列,用的是“冒泡排序法”

实现排序。

模块六:增加学生信息

声明void

insert()插入学生信息,先通过判断学生是否存在,若

否则继续输入,若是则跳出,重新循环。

模块七:删除学生信息

声明void

del()实现学生信息删除,通过学号对比确定要删除的信

息,然后用后一个替换掉。

模块八:显示学生信息

通过display()函数输出学生信息。

模块九:保存信息

通过fp=fopen(“student.txt“,“w“);写入信息。

模块十:汇总学生数目

通过number()函数将已有男女生及总学生数目汇总出来。

模块十一:系统帮助

通过help()函数帮助操作。

模块十二:界面菜单

通过switch(num)调用以上各函数,实现功能。

1、程序采用模块化设计,各模块独立,可分块调试,个模块由主函数控制调用。

2、其中主要模块(readfile()、seek()、modify())都是利用数组,指针来实现数据结构设计。

3、数据库设计的任务是确定系统所需要的数据库。数据库是表的集合,通常一个系统只需一个数据库。设计人

是根据需求分析,确定数据库所包含的表及字段、表间的关系,然后具体确定表的结构,包括字段名、字段类型及宽度,需要的索引等。根据对需求得到的数据结构进行分析,按数据输入输出的要求,确定表和表间的关系,进行验证、调整、修改、完善,使其能够实现用户对数据和功能的要求。通讯信息表包括以下字段:学号,

姓名,年龄,性别,出生年月,地址,电话,

E-mail。学号为主索引。

四、结束语

我设计的程序总体功能大都能够运行顺利,但有许多地方比较复杂,需要进一步修改,进行简化。通过这次课程设计的锻炼,我收获很多,具体归纳为以下几点:

1、首先,也是最重要的一点,学会如何将一个复杂的问题简化,将一个较大的问题分成几个小问题,再一一解决这些小问题。在设计一个程序之前,要学会对程序功能进行规划,将其分为几个不同的功能模块,要思路清晰,简单易用;

2、学会灵活运用已有的知识,同时适当的拓展一些知识;比如,这次设计过程中,有一些函数以前就很少用到,甚至没有见过,但对程序的设计及用户界面的改善带来方便;

3、解决问题时,要尽可能考虑全面。每一个细节都很重要,既要避免功能的重复,也要避免功能疏漏的地方!

4、在这次课程设计过程中,参考了许多资料,发现C语言真的很有意思!比如我看到一个关于用C语言编写的小程序:五子棋、俄罗斯方块、推箱子等,等这次课程结束后,我就想利用C语言编写这些小游戏。曾经认为C是个挺枯燥的课程,现在发现这不仅仅是个简单的课程,而是个很实用的计算机工具!

五、程序源代码清单

#include

#include

#include

#define

BUFLEN

100

#define

LEN

15

#define

N

100

struct

record

{

char

code[LEN+1];

char

name[LEN+1];

int

age;

char

sex[3];

char

time[LEN+1];

char

add[30];

char

tel[LEN+1];

char

mail[30];

}stu[N];

int

k=1,n,m;

void

readfile();

void

seek();

void

modify();

void

insert();

void

del();

void

display();

void

save();

void

number();

void

menu();

int

main()

{

while(k)

menu();

system(“pause“);

return

0;

}

void

readfile()//刷新学生信息

{

char

*p=“student.txt“;

FILE

*fp;

int

i=0;

if

((fp=fopen(“student.txt“,“r“))==NULL)

{

printf(“Open

file

%s

error!

Strike

any

key

to

exit!“,p);

system(“pause“);

exit(0);

}

while(fscanf(fp,“%s

%s%d%s

%s

%s

%s

%s“,stu[i].code,stu[i].name,&stu[i].age,

stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail)==8)

{

i++;

i=i;

}

fclose(fp);

n=i;

printf(“录入完毕! “);

}

void

seek()//查询学生信息

.

.

.

.

.

.

void

modify()//修改学生信息

.

.

.

.

.

.

void

sort()//对学生信息按学号排序

{

int

i,j,*p,*q,s;

char

temp[10];

for(i=0;i

{

for(j=n-1;j>i;j--)

if(strcmp(stu[j-1].code,stu[j].code)>0)

{

strcpy(temp,stu[j-1].code);

strcpy(stu[j-1].code,stu[j].code);

strcpy(stu[j].code,temp);

strcpy(temp,stu[j-1].name);

strcpy(stu[j-1].name,stu[j].name);

strcpy(stu[j].name,temp);

strcpy(temp,stu[j-1].sex);

strcpy(stu[j-1].sex,stu[j].sex);

strcpy(stu[j].sex,temp);

strcpy(temp,stu[j-1].time);

strcpy(stu[j-1].time,stu[j].time);

strcpy(stu[j].time,temp);

strcpy(temp,stu[j-1].add);

strcpy(stu[j-1].add,stu[j].add);

strcpy(stu[j].add,temp);

strcpy(temp,stu[j-1].tel);

strcpy(stu[j-1].tel,stu[j].tel);

strcpy(stu[j].tel,temp);

strcpy(temp,stu[j-1].mail);

strcpy(stu[j-1].mail,stu[j].mail);

strcpy(stu[j].mail,temp);

p=&stu[j-1].age;

q=&stu[j].age;

s=*q;

*q=*p;

*p=s;

}

}

}

void

insert()//增加学生信息

.

.

.

.

.

.

void

display()//显示当前学生信息

{

int

i;

printf(“所有学生的信息为: “);

printf(“学生学号,

学生姓名,

年龄,

性别,

出生年月,

地址,

电话,

E-mail “);

printf(“-------------------------------------------------------------------- “);

for(i=0;i

{

printf(“%6s,

%7s,

%5d,

%5s,

%9s,

%8s,

%10s,

%14s “,stu[i].code,stu[i].name,stu[i].age,

stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);

}

}

void

save()//保存当前学生信息

{

int

i;

FILE

*fp;

fp=fopen(“student.txt“,“w“);

for(i=0;i

{

fprintf(fp,“%s,

%s,

%d,

%s,

%s,

%s,

%s,

%s “,stu[i].code,stu[i].name,stu[i].age,

stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);

}

fclose(fp);

}

void

number()//汇总学生数目

{

int

i,girl,boy=0;

for(i=0;i

if(strcmp(stu[i].sex,“1“)==0)

{boy++;}

girl=n-boy;

printf(“男生人数是:%d 女生的人数是:%d “,boy,girl);

printf(“总的学生人数为:%d“,n);

}

void

help()//系统帮助

{

printf(“输入性别时男为1,女为2“);

printf(“ 3.增加学生信息后,切记保存按7; “);

printf(“ 4.谢谢您的使用! “);

}

void

menu()//可视化的系统操作界面

{

int

num;

printf(“

学生通讯录管理系统

“);

printf(“

*********************系统功能菜单************************

“);

printf(“

--------------------------------

-------------------------------

“);

printf(“

1.刷新学生信息

2.查询学生信息

“);

printf(“

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

“);

printf(“

3.修改学生信息

4.增加学生信息

“);

printf(“

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

“);

printf(“

5.按学号删除信息

6.显示当前信息

“);

printf(“

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

“);

printf(“

7.保存当前学生信息

8.汇总学生数目

“);

printf(“

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

“);

printf(“

9.系统帮助

10.退出系统

“);

printf(“

---------------------------------

------------------------------

“);

printf(“

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

“);

printf(“请选择菜单编号:“);

scanf(“%d“,&num);

switch(num)

{

case

1:readfile();break;

case

2:seek();break;

case

3:modify();break;

case

4:insert();break;

case

5:del();break;

case

6:display();break;

case

7:save();break;

case

8:number();break;

case

9:help();break;

case

10:k=0;break;

default:printf(“请在1-10之间选择 “);

}

}

第四篇:学生信息管理系统设计开题报告

1、开题报告的内容:

本系统是一款资源型管理软件,适用于普通高等教育学生的管理工作,具有丰富,完整,规范的内容和比较完善的功能.是一个适用于高等院校或各类专科学校学生工作管理部门的计算机辅助管理系统,它具备高校学生工作部门的学生管理的日常事务性工作及各类数据的自动化处理功能.从学生的入学档案,学籍档案,学习成绩综合测评,奖学金管理,到学生毕业分配管理的全部业务功能.该系统能够自动地收集,存储,加工处理,查询检索和统计制表,方便有效地提高学生工作办公自动化管理的水平,解决了日常繁杂的数据,文件及历史资料的统计处理的重复性劳动.使过去许多只能定性管理的项目变为定量管理,使传统的由人工事务性管理模式转化为借助现代化技术和手段实现的科学化管理模式,不仅节省人力和物力,提高办公效率,而且使管理的方式从过程管理转变为目标管理,从数量管理转变为质量管理,有助于提高学生工作管理的水平和质量.本系统将采用vb6.0+sql server XX的模式进行开发.vb6.0开发一般应用模块,供管理人员在本地机上完成对数据库的各种修改工作.并且采用了数据访问技术ado,使之能更好地访问本地和远程的数据库;在数据环境方面,允许程序员可视化地创建和操作ado连接及命令等优点,因此,采用vb6.0作为学生信息管理系统的本地开发平台.sqlserver是一个数据库管理软件,提供了强大的数据库访问功能,为数据库管理与分析带来灵活性,因此,采用sql server XX作为学生信息管理系统的后台数据管理工具.

本系统针对学生管理所涉及到的信息,数据及所需完成的各项操作,结合自身的技术水平而开发的学生管理系统(单机版).此系统将主要实现以下基本功能:学生档案管理:可以方便地对学生档案进行浏览,查询,添加,编辑,删除.以学号区别学生,并可以支持多个班级处理.(2) 学生成绩管理:可以自行设置学生所在的年级,科目,并且学生成绩与档案以学号为关键字相关联,有力的保证了数据的完整性. (3)课程管理:可以自行设置课程信息,年级课程开放等情况.(4)班级管理:通过此模块用户可以系统性的设置,修改,删除该班级的基本信息(班级名称,班级人数,班主任),班委任职情况.(5)系统管理:此模块分系统用户管理,系统注册码管理,系统日志管理,用户密码管理以及系统数据库备份和系统数据库还原的功能.对于不同的用户提供了不同的用户操作权限(6)报表功能:根据学生成绩自动生成成绩报表打印

此系统将具有:能提供的学生信息量大,用户界面友好,操作简便,快速等特点.

本页应按开题报告(实施计划)的基本内容要求填写, 填写不下可另附页.

2、开题申请理由:

21世纪全球信息电子化的潮流势不可挡,计算机渗入了社会生活中的各个领域,它的广泛应用给经济和社会生活带来深刻的变革.信息技术不仅改变了人们的工作和生活方式,也在改变教育和学习的方式.我国的教育事业蓬勃发展,升学率普遍提高,各类大专院校规模不断扩大,对于学生管理工作的高效性和规范化提出了更高的要求.作为学校管理工作的一个重要组成部分---学生信息管理,所涉及到的信息量之大,数据之繁琐,可以想像用手工对这些数据进行操作有多么的复杂与繁琐,因此自动化的学生信息管理系统应运而生.

而学生信息管理的工作量非常大,为保证学生管理工作的顺利进行,改善管理手段,有必要开发一套适合高等院校实际情况,能解决实际问题的学生管理信息系统.及时,准确的为管理人员提供学生,班级等各类信息,并提供标准化,查询,修改等管理功能.

为了能够为高校学生信息管理提供一种更加高效,实用的管理手段,为学生信息的存储,统计,分析,交流提供一种更加快捷,安全的信息平台.并且能够减少大量的人工操作,以及在人工操作中由于人为因素而引起的数据错误,保证学生信息数据的安全性和完整性,使学生管理人员能够轻松,正确无误地完成各项工作,结合自身的技术水平,特申请本课题开题.

第五篇:oracle学生成绩管理系统设计

阶段1.1成绩管理系统实体关系设计

一、实验目的和要求

(1)熟练掌握实体关系设计的方法。 (2)通过需求分析结果,掌握E-R图。

二、实验内容和原理

实体关系设计是在需求分析的一个环节过程,在这一过程中产生E-R图,该图由实体、属性和联系三个要素构成。逻辑结构设计的任务就是把概念设计阶段建立的基本E-R图按照选定的系统软件支持的数据模型,转换成相应的逻辑模型。这种转换要符合关系数据模型的原则。

E-R图向关系模型转换时要解决如何将实体和实体间的联系转换为关系,并确定这些关系的属性和码,这种转换一般按下面的原则进行。

(1)一个实体转换为一个关系,实体的属性就是关系的属性,实体的码就是关系的码。

(2)一个联系也转换为一个关系,联系的属性及联系所连接的实体的码都转换为关系的属性,但关系的码会根据联系的类型变化。

三、主要仪器设备

计算机一台、Powerdesinger运行环境

四、操作方法与实验步骤

在成绩管理系统中,需要管理学生、课程和成绩,以及它们之间的联系。因此在该系统的E-R图中,实体分别为学生、老师、课程。为了便于掌握,学生实体的属性分别有学号、 姓名、性别;课程实体的属性有课程编号、课程名称、学期、课程学分;教师实体的属性有教师编号、姓名、性别。学生实体与课程实体有选课关系,而且一个学生可以选择多门课程,一门课程也可以被多个学生选择,因此学生和课程之间的联系是m:n联系。教师实体与课程实体有教授关系,一名教师可以教多门课程,一门课程也可以被多个教师教授,因此教师和课程之间的联系是m:n联系。学生在选课后会产生成绩,教师授课后会产生授课地点及授课学期。根据上述分析,绘出的E-R图如下图所示。

阶段1.2 成绩管理系统结构设计

一、实验目的和要求

1.了解数据库中列的属性以及各个属性的含义。 2.掌握为不同的列选择不同的属性及范围。

二、实验内容和原理

在管理信息系统中,物理结构设计主要是指如何将通过逻辑结构设计所得的系统逻辑结构型转换为物理模型,并明确地指出系统的物理存储结构。本实验主要是利用CASE工具集PowerDesigner对成绩管理系统进行物理结构的设计。

三、主要仪器设备

计算机一台、Powerdesinger 运行环境、Oracle运行环境

四、操作方法与实验步骤

在物理结构设计中需要考虑为每列设计合适的数据类型。成绩管理系统中,学生(学号、姓名、性别)关系里,学号采用int来表示就可以了,而姓名设置成varchar2(20),性别只需要设置为char(2)。因为性别不是男就是女,因此只会占用两个字节。所以最终我们可以将其物理表结构设置为:t_student(stuid int,stuname varchar2(20),sex char(2)。依照上述,课程的物理表结构为:t_course(couid int,couname varchar2(20),term char(2),credit number(3,1))。教师的物理存储表结构为:t_teacher(teaid int,teaname varchar2(20),sex char(2))。选课的物理表结构为:t_selcour(sid int,cid int,score number .(4,2))。教课的物理表结构为:t_teacour(tid int,cid int,teaaddr varchar2(30),term char(2))。

(1) 通过手动编写SQL语句方式建立数据库后台

上述创建了代表学生实体的表t_student,其中stuid设置为主键,唯一标识一个学生。

表t_course用来代表课程实体,其中采用couid来标识一门课程。当课程名称的长度大于20个字符时,varchar2可以自动扩展。

物理实体在物理结构中用t_teacher表来表示,teaid用来唯一标识一位教师,因此其不能空

选课表t_selcour中学生编号参考t_student表中的stuid,此时sid为外键,课程编号cid也作为外键参考t_course中的couid (2)通过PowerDesigner建立数据库后台

第四步:到此,系统的概念模型就全部设计好了。接下来单击菜单“工具”→“生成物理属性模型”选项,就会弹出“物理数据模型生成选项”对话框,如下图:

在“常规”选项卡中选择“生成新的物理模型”单选钮,并选择DBMS为“OPACLE Version 10g”,“名称”文本“MyPhysicalDataModel”,并单击“确认”按钮,在弹出得到路径选择对话框中输入你想要放置生成的物理数据模型文件的位置,系统就会自动在指定的路径下生成一个名为“MyPhysicalDataModal.pdm”的文件,并生成系统的物理模型,如下图

CONGC

从菜单中选择 Database ---Generate Database选项。PowerDesigner将会在指定的路径下生成一个名字为*.sql 的文本文件。里面存放可供Oracle 执行的用来建立数据库实体的SQL语句。

阶段1.3 成绩管路系统存储过程设计

一、实验目的和要求

(1)了解存储过程的设计目的以及方法。 (2)掌握存储过程的创建。

二、实验内容和原理

存储过程是在数据中定义的程序块,它存放在数据库服务端数据字典里。采用存储过程可以提高过程代码程序的执行速度和代码共享度。具体有以下几个特点。(1)过程存放在服务器端,减少了网络传输的延时,提高了速度。(2)过程在执行一次之后,会驻留内存,后续的执行无需再经编译过程,提高了执行效率。

三、主要仪器设备

计算机一台,Oracle运行环境

四、操作方法与实验步骤

1、创建存储过程先向表t_student中插入数据,具体如下所示

2、每次向表t_student中插入数据时,只需要运行该过程就可以了。具体如下所示。表t_student中的列stuid被设置为主键,因此不可以存在重复值。在第二次运行时,因为输入的第一个参数id与表中已存在的数据相同,所以插入时出现错误。

3、继续向表中插入两条记录,其中当参数id不重复时,过程成功完成。

4、不仅可以通过存储过程向表中插入数据,也可以通过一般的SQL语句向表中插入数据,如下所示。

5、向表中插入数据时,需要注意数据类型以及长度都需要与表中定义的相符,否则会出现错误,具体如下所示。

6、t_course表中列term被定义为char且长度为2,因此在插入数据时该列最大长度为2,超过该值会出现错误。课程表中只有已经存在的课程编号才能被插入到选课表中,否则会出错,这样就保证了数据的一致性。

7、t_selcour表的另外一个外键为第一列sid,在插入时只有当该值存在于学生表中的学生编号时,才能被成功插入,否则也会出现错误,具体如下所示。

8、对于向表t_teacour中插入数据时,同样需要满足外键参考主键的约束条件,具体如下所示。

9、向表t_teacour中插入一行记录,其中tid存在于表t_teacher的列teaid中,cid存在于表t_course列couid中。如果插入的值不符合外键约束条件,会出现错误,具体如下所示。

10、在完成对表插入值后,可以关联表查询记录。比如:查询教师编号为1的教师所带的课程编号、教师姓名、课程名称、课程学分信息,具体如下所示。实现了查询编号为1的老师所带的课程编号、课程名称等信息。在查询时,为表命名别名时为了方便,各个表的连接通过主键外键约束来实现。

查看t_course及t_selcourse中的值

五、实验结果与分析

实验结果如上截图所示。

六、讨论、心得

grant select不支持对表中选定的几列授权,只能将整个表的select权限授权出去。所以实验中先建立了基于选课信息表的视图SelectiveInfo1,视图中包含成绩列,学号列以及班级列(不包含其他的列)再将对视图SelectiveInfo1的select权限授予角色teacher。

不同的用户可以创建相同的表格,teacher用户创建了table1,student用户也创建了table1,且这两个表格式完全相同的,那么其他用户需要用这两个表格时,可以用teacher. table1和student. table1加以区分。

实验中遇到的问题可以上网百度,网上资源很丰富。

上一篇:写社会调查报告的格式下一篇:学生会女生部学期总结