同学录系统VC++课程设计
- 格式:doc
- 大小:695.00 KB
- 文档页数:35
课程设计课程设计名称:同学录设计与实现专业班级:学生姓名:学号:指导教师:课程设计时间:计算机科学与技术专业课程设计任务书1 需求分析主要实现的功能有,添加、删除、修改、查询、浏览、改密等。
当选择首页面相应按钮,执行相应的操作。
当选择添加、删除、修改这三个可能会更改数据库的按钮时,会跳出输入密码的窗体。
只有输入正确的秘密才能进行操作。
而查询、浏览不需要输入密码。
2 概要设计Main窗体:登录时的首页面,包括全部功能的按钮,当按下相应按钮时执行相应的操作。
添加窗体:当用户点击首页面添加按钮时,跳出添加窗体。
窗体包含,要添加同学的所有信息,当输入完毕后,按添加按钮进行添加。
删除窗体:当用户点击首页面删除按钮时,跳出删除窗体。
当输入需要删除的同学姓名后,按确定按钮进行删除操作。
修改窗体:当用户点击首页面修改按钮时,跳出修改窗体。
需要用户输入要修改同学的姓名,然后输入修改后的信息。
按确定按钮完成修改。
查询窗体:当用户选择查询按钮时,跳出查询窗体。
当用户输入同学姓名后,按下查询按钮,该同学的全部信息就会显示到相应的位置。
浏览窗体:当用户选择浏览按钮时,跳出浏览窗体。
窗体里包含所有同学的信息。
改密窗体:当用户选择改密按钮时,跳出改密窗体。
需要用户输入旧密码和两次输入新密码,然后按修改按钮完成改密。
3 运行环境软件环境:XP 硬件环境:PC4 开发工具和编程语言开发工具:Micros visual studio 2008 编程语言:C#5 详细设计1.首页面代码:namespace同学录{public partial class Main : Form{public Main(){InitializeComponent();}private void button1_Click(object sender, EventArgs e) {添加1 f = new添加1();f.Show();}private void button2_Click(object sender, EventArgs e) {删除1 f = new删除1();f.Show();}private void button3_Click(object sender, EventArgs e) {修改1 f = new修改1();f.Show();}private void button4_Click(object sender, EventArgs e) {查询 f = new查询();f.Show();}private void button5_Click(object sender, EventArgs e) {浏览 f = new浏览();f.Show();}private void Main_Load(object sender, EventArgs e){}private void button6_Click(object sender, EventArgs e) {Close();}private void button7_Click(object sender, EventArgs e) {改密 f = new改密();f.Show();}}}2.查询功能实现:namespace同学录{public partial class查询 : Form{public查询(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){String str = "Data Source=.;InitialCatalog=tongxuelu;Integrated Security=True";SqlConnection conn = new SqlConnection(str);if (ConnectionState.Closed == conn.State){conn.Open();}String myselect = "select * from txxx where 姓名='"+textBox8.Text+"'";SqlDataAdapter adap = new SqlDataAdapter(myselect, conn);DataSet dts = new DataSet();adap.Fill(dts);conn.Close();textBox1.DataBindings.Add("Text", dts.Tables[0], "姓名"); textBox2.DataBindings.Add("Text", dts.Tables[0], "分组"); textBox3.DataBindings.Add("Text", dts.Tables[0], "手机"); textBox4.DataBindings.Add("Text", dts.Tables[0], "固定电话");textBox5.DataBindings.Add("Text", dts.Tables[0], "家庭住址");textBox6.DataBindings.Add("Text", dts.Tables[0], "QQ"); textBox7.DataBindings.Add("Text", dts.Tables[0], "其他资料");}private void button2_Click(object sender, EventArgs e){Close();}private void查询_Load(object sender, EventArgs e){}}}3.改密功能实现:namespace同学录{public partial class改密 : Form{public改密(){InitializeComponent();}private void改密_Load(object sender, EventArgs e){}private void button1_Click(object sender, EventArgs e) {int n = 0;String str = textBox1.Text.ToString().Trim();String str1 = textBox2.Text.ToString().Trim();String str2 = textBox3.Text.ToString().Trim();SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=tongxuelu;Integrated Security=True");String sql = "select * from mima";if (ConnectionState.Closed == conn.State){conn.Open();}SqlCommand comm = new SqlCommand(sql, conn);SqlDataReader read = comm.ExecuteReader();while (read.Read()){if (read[0].ToString().Trim() == str){n = 1;}}if (n == 0){textBox1.Text = "";MessageBox.Show("旧密码不正确,请重新输入!");}read.Close();if (n == 1){if (str1 == str2){SqlDataAdapter d = new SqlDataAdapter();String s = "UPDATE mima SET m='"+textBox2.Text+"'";d.UpdateCommand = new SqlCommand(s, conn);d.UpdateCommand.ExecuteNonQuery();textBox2.Text = "";textBox3.Text = "";Close();MessageBox.Show("改密成功");}else{MessageBox.Show("新密码不匹配!");textBox2.Text = "";textBox3.Text = "";}conn.Close();}}private void button2_Click(object sender, EventArgs e) {Close();}}}4.浏览功能实现:namespace同学录{public partial class浏览 : Form{private BindingManagerBase mybind;public浏览(){InitializeComponent();}private void浏览_Load(object sender, EventArgs e){String str = "Data Source=.;InitialCatalog=tongxuelu;Integrated Security=True";SqlConnection conn = new SqlConnection(str);if (ConnectionState.Closed == conn.State){conn.Open();}String myselect = "select * from txxx";SqlDataAdapter adap = new SqlDataAdapter(myselect, conn);DataSet dts = new DataSet();adap.Fill(dts);dataGridView1.DataSource = dts.Tables[0];mybind = this.BindingContext[dts.Tables[0]];conn.Close();textBox1.DataBindings.Add("Text", dts.Tables[0], "姓名"); textBox2.DataBindings.Add("Text", dts.Tables[0], "分组"); textBox3.DataBindings.Add("Text", dts.Tables[0], "手机"); textBox4.DataBindings.Add("Text", dts.Tables[0], "固定电话");textBox5.DataBindings.Add("Text", dts.Tables[0], "家庭住址");textBox6.DataBindings.Add("Text", dts.Tables[0], "QQ"); textBox7.DataBindings.Add("Text", dts.Tables[0], "其他资料");}private void button1_Click(object sender, EventArgs e){mybind.Position = 0;}private void button2_Click(object sender, EventArgs e) {mybind.Position = mybind.Position - 1;}private void button3_Click(object sender, EventArgs e) {mybind.Position = mybind.Position + 1;}private void button4_Click(object sender, EventArgs e) {mybind.Position = mybind.Count - 1;}private void button5_Click(object sender, EventArgs e) {Close();}}}5.删除功能实现:namespace同学录{public partial class删除 : Form{public删除(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){String str = "Data Source=.;InitialCatalog=tongxuelu;Integrated Security=True";SqlConnection conn = new SqlConnection(str);if (ConnectionState.Closed == conn.State){conn.Open();}SqlDataAdapter d = new SqlDataAdapter();d.DeleteCommand = new SqlCommand("DELETE from txxx where 姓名='" + textBox1.Text + "'", conn);d.DeleteCommand.ExecuteNonQuery();conn.Close();textBox1.Text = "";}private void删除_Load(object sender, EventArgs e){}private void button2_Click(object sender, EventArgs e){Close();}}}6.插入功能实现:namespace同学录{public partial class添加 : Form{public添加(){InitializeComponent();}private void添加_Load(object sender, EventArgs e){}private void textBox4_TextChanged(object sender, EventArgs e) {}private void label2_Click(object sender, EventArgs e){}private void button1_Click(object sender, EventArgs e){String str = "Data Source=.;InitialCatalog=tongxuelu;Integrated Security=True";SqlConnection conn = new SqlConnection(str);if (ConnectionState.Closed == conn.State){conn.Open();}SqlDataAdapter d = new SqlDataAdapter();d.InsertCommand = new SqlCommand("INSERT INTO txxx(姓名,分组,手机,固定电话,家庭住址,QQ,其他资料)Values('" + textBox1.Text + "',+'"+textBox2.Text+"','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "','" + textBox6.Text + "','" + textBox7.Text + "')", conn);d.InsertCommand.ExecuteNonQuery();conn.Close();textBox1.Text = "";textBox2.Text = "";textBox3.Text = "";textBox4.Text = "";textBox5.Text = "";textBox6.Text = "";textBox7.Text = "";}private void button2_Click(object sender, EventArgs e){Close();}}}7.修改功能实现:namespace同学录{public partial class修改 : Form{public修改(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){String str = "Data Source=.;InitialCatalog=tongxuelu;Integrated Security=True";SqlConnection conn = new SqlConnection(str);if (ConnectionState.Closed == conn.State){conn.Open();}SqlDataAdapter d = new SqlDataAdapter();String s = "UPDATE txxx SET 姓名='" + textBox1.Text + "',分组='" + textBox2.Text + "',手机='" + textBox3.Text + "',固定电话='" + textBox4.Text + "',家庭住址='"+ textBox5.Text + "',QQ='"+ textBox6.Text + "',其他资料='" + textBox7.Text + "' where 姓名='"+textBox8.Text+"'";d.UpdateCommand = new SqlCommand(s, conn);d.UpdateCommand.ExecuteNonQuery();conn.Close();textBox1.Text = "";textBox2.Text = "";textBox3.Text = "";textBox4.Text = "";textBox5.Text = "";textBox6.Text = "";textBox7.Text = "";}private void label8_Click(object sender, EventArgs e){}private void button2_Click(object sender, EventArgs e) {Close();}private void修改_Load(object sender, EventArgs e){}}}8.输入密码功能实现:namespace同学录{public partial class删除1 : Form{public删除1(){InitializeComponent();}private void删除1_Load(object sender, EventArgs e){}private void button1_Click(object sender, EventArgs e) {int n = 0;String str = textBox1.Text.ToString().Trim();SqlConnection conn = new SqlConnection("DataSource=.;Initial Catalog=tongxuelu;Integrated Security=True");String sql = "select * from mima";if (ConnectionState.Closed == conn.State){conn.Open();}SqlCommand comm = new SqlCommand(sql, conn);SqlDataReader read = comm.ExecuteReader();while (read.Read()){if (read[0].ToString().Trim() == str){删除 f = new删除();f.Show();Close();n = 1;}}if (n == 0){MessageBox.Show("Sorry,密码不正确,请重新输入!"); }}private void button2_Click(object sender, EventArgs e){Close();}}}6 调试分析调试过程中遇到的最大的问题是密码匹配和数据更新。
vc课程设计一、教学目标本课程的教学目标是使学生掌握VC编程的基本概念、语法和编程技巧,培养学生独立编写简单程序的能力。
具体目标如下:1.知识目标:–掌握C++的基本语法和数据类型。
–理解函数的定义和调用。
–学习面向对象编程的基本概念,如类和对象、继承和多态。
–熟悉VC编程环境,了解常用的编译器和调试工具。
2.技能目标:–能够使用VC编写简单的输入输出程序。
–掌握函数的定义和调用,能编写含有多个函数的程序。
–能够使用面向对象编程的方法,编写简单的类和对象程序。
–熟练使用VC编译器和调试工具,能独立调试程序。
3.情感态度价值观目标:–培养学生对计算机科学的兴趣和热情,提高学生独立思考和解决问题的能力。
–培养学生团队合作的精神,学会与他人分享和交流学习经验。
二、教学内容本课程的教学内容主要包括VC编程的基本概念、语法和编程技巧。
具体安排如下:1.VC编程环境:介绍VC的安装和配置,熟悉VC集成开发环境的界面和功能。
2.C++基本语法:数据类型、变量、运算符、表达式、语句等。
3.函数:函数的定义、声明和调用,递归函数,内联函数等。
4.面向对象编程:类和对象、继承和多态、封装和抽象等。
5.输入输出操作:文件操作、屏幕输出和输入等。
6.调试技巧:编译和调试程序的方法,常见错误分析和解决。
三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法。
1.讲授法:通过讲解和示范,使学生掌握VC编程的基本概念和语法。
2.案例分析法:通过分析典型案例,使学生理解和掌握面向对象编程的方法。
3.实验法:让学生动手编写程序,培养学生的实际编程能力和调试技巧。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备。
1.教材:选用《VC编程入门》作为主要教材,辅助以相关参考书籍。
2.参考书:提供《C++ Primer》等参考书籍,供学生深入学习。
3.多媒体资料:制作PPT课件,演示程序实例和调试过程。
4.实验设备:配置计算机实验室,提供VC编译器和调试工具。
c++学生管理系统课程设计C++学生管理系统课程设计是一个非常常见的编程项目,旨在帮助学生练习使用C++语言来实现一个基本的学生信息管理系统。
这个系统可以用于录入、查看、修改和删除学生信息,并可以计算学生的平均分和排名。
在这个系统中,学生信息可以包括学号、姓名、性别、年龄、班级和成绩等。
通过使用C++的面向对象编程思想,可以创建一个学生类来表示学生信息,并可以在主程序中实例化该类来创建和管理学生对象。
首先,系统需要提供一个菜单界面,让用户可以选择不同的操作,比如添加学生信息、查看学生信息、修改学生信息和删除学生信息等。
用户可以通过输入相应的选项来执行特定的操作。
对于添加学生信息的操作,系统会要求用户输入学生的各个属性值,并根据输入的值创建一个新的学生对象并将其添加到系统中。
系统还可以提供验证机制,确保输入的学号不重复。
对于查看学生信息的操作,系统会将保存的学生信息按照一定的格式打印出来,以便用户查看。
用户可以选择按学号、姓名、班级等排序方式来查看学生信息。
对于修改学生信息的操作,系统会提示用户输入要修改的学生的学号,并根据学号在系统中查找对应的学生对象。
然后,用户可以选择要修改的属性,并输入新的值来更新学生对象的信息。
对于删除学生信息的操作,系统会提示用户输入要删除的学生的学号,并根据学号在系统中查找对应的学生对象。
然后,系统会确认用户是否要删除该学生信息,并在用户确认后将该学生对象从系统中移除。
除了上述基本功能,学生管理系统还可以提供其他附加功能,比如计算学生的平均分和排名。
系统可以遍历所有学生对象,并计算出他们的平均分和排名,然后将结果打印出来供用户查看。
总的来说,C++学生管理系统课程设计是一个综合性的编程项目,通过实现该项目,学生可以练习和巩固他们在C++语言和面向对象编程方面的知识。
此外,通过这个项目,学生还可以提高他们的逻辑思维能力和问题解决能力。
1 绪论随着信息技术在管理上越来越深入而广泛地应用,管理信息系统的实施在技术上已经逐步成熟。
管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把部活动有机的组织起来,就必须建立与自身特点相适应的管理信息系统。
随着学校的规模不断扩大,学生数量急剧增加,有关学生的各种信息量也成倍增长。
面对庞大的信息量学要有信息管理系统来提高学生信息管理系统的效率。
通过这样的系统可以做到信息的规管理,科学统计和快速查询,修改,添加,删除等,从而减少管理方面的工作量。
本次课程设计的学生管理系统主要用于学校学生信息管理,其主要任务是用计算机对学生各种信息进行日常管理,如添加,修改,删除,查询和排序等等。
根据这些要求我通过在Visual C++6.0的环境下进行系统的设计,数据库设计,窗口及相应的程序设计来完成设计学生管理系统。
2 系统设计用SQL Sever 2008设计学生信息数据库,数据库表项中包括学号,,年龄,性别,出生年月,地址,,E-mail。
连接数据库,编写VC++程序,实现以下功能:(1)学生信息的录入功能(2)学生信息的浏览功能(3)学生信息的查询功能(可以按学号,进行查询)(4)学生信息的排序(可以按学号,进行排序)(5)学生信息的删除和修改功能系统结构图如图1:图1 系统结构图说明:在主窗口可以直接排序、删除和浏览。
查询条件、修改信息和添加信息都需要在弹出的模态对话框中输入,在主窗口显示。
实现功能总程序流程图如图2:图2 程序流程图流程图说明:首先进行初始化,进入主窗口,在主窗口有进入各种操作的按钮,判断是什么功能的按钮按下,进入相应功能。
若是删除、排序或者浏览按钮,则直接在主窗口显示相应的结果;若是添加按钮被按下,则弹出对话框,在对话框中输入要添加的学生的信息,确定后保存;若是修改按钮被按下,则弹出对话框,在对话框中填写修改后希望保存的信息,确定后保存修改;若是查询按钮被按下,弹出对话框,输入查询条件,确认后在主窗口显示信息。
课程设计vc 通讯录一、课程目标知识目标:1. 让学生掌握通讯录的基本概念和功能,了解其在日常生活和工作中的应用。
2. 使学生了解并掌握VC++编程环境中创建、存储、读取和删除通讯录信息的基本方法。
3. 帮助学生理解通讯录数据的组织方式,如数组、链表等。
技能目标:1. 培养学生运用VC++编程环境进行通讯录程序设计的能力。
2. 培养学生分析问题、设计算法和编写代码解决实际问题的能力。
3. 提高学生在团队项目中沟通、协作和解决问题的能力。
情感态度价值观目标:1. 培养学生热爱编程,对计算机技术产生浓厚的兴趣。
2. 培养学生具有积极的学习态度,勇于面对困难和挑战。
3. 培养学生认识到科技对社会发展的作用,增强社会责任感和使命感。
本课程针对高年级学生,结合学科特点,注重理论与实践相结合,使学生能够在掌握基本知识的基础上,提高实际操作能力和团队协作能力。
通过本课程的学习,学生将能够独立设计并实现一个功能完善的通讯录程序,为以后的学习和工作打下坚实的基础。
同时,课程强调情感态度价值观的培养,引导学生形成正确的价值观和积极的学习态度。
二、教学内容1. 通讯录基本概念:介绍通讯录的定义、功能以及在日常生活和工作中发挥的作用。
相关教材章节:第一章第一节2. VC++编程环境:讲解VC++的安装、配置和使用方法,为学生编写通讯录程序奠定基础。
相关教材章节:第一章第二节3. 数据存储结构:介绍数组、链表等常见数据结构,分析其在通讯录中的应用。
相关教材章节:第二章4. 通讯录程序设计:讲解如何使用VC++编程环境设计通讯录程序,包括创建、存储、读取和删除等功能。
相关教材章节:第三章5. 算法设计与实现:分析通讯录程序中的查找、排序等算法,并指导学生编写相应代码。
相关教材章节:第四章6. 项目实践:组织学生分组进行项目实践,完成一个具有实际应用价值的通讯录程序。
相关教材章节:第五章7. 课堂讲解与演示:安排课时进行教学内容讲解和示范操作,帮助学生理解并掌握知识点。
目录1绪论 (1)1.1项目简介 (1)1.2设计目的 (1)1.3设计内容 (1)2需求分析 (1)2.1数据需求 (1)2.2事务需求 (2)3概要设计 (2)3.1系统的大致流程图 (2)4详细设计 (2)4.1系统的流程图 (2)4.2整体逻辑数据库结构 (3)4.3涉及算法的思想 (3)5用户使用说明 (4)5.1开发运行环境 (4)5.2数据库的名称及内容 (4)6关键源程序 (5)6.1建立工程 (5)6.2模块1 (5)6.3模块2 (9)6.5模块4 (12)7测试结果及运行界面 (19)8总结 (23)8.1系统实现程度 (23)8.2问题及难点 (23)8.3收获与体会 (23)参考文献 (24)1绪论1.1项目简介本系统主要实现学生信息管理功能,为老师与同学提供一个可以快速查找信息的平台。
1.2设计目的方便老师与同学查看学生信息,提高学生信息管理的效率,节省时间,从而实现学校工作的边界管理。
1.3设计内容主要包括:用户的登陆于注册,对学生信息的增加删除修改。
2需求分析2.1数据需求系统需要处理哪些数据总体分为用户输入的数据和从数据库中获得的数据。
主要数据类型包括:CString类型数据、double类型数据、int类型数据和CTime类型数据。
2.2事务需求用户:登陆、注册,对数据的增删改3概要设计3.1系统的大致流程图4详细设计4.1系统的流程图4.2整体逻辑数据库结构4.3涉及算法的思想4.3.1建立数据库通过ADO建立两个数据库(新建 Microsoft Office Access 应用程序)存放登陆信息和学生信息。
4.3.2数据录入在新建学生信息数据库中录入学生信息。
4.3.3登录框的设计4.3.3.1 建立变量Sname,Spsw,通过格式变幻,将CString格式转换成数据库规定的格式4.3.3.2 通过compare函数将输入的用户名与密码与数据库比较4.3.4注册框的设计先判定输入框里的名字在数据库里不存在,然后将输入的信息替换入数据库4.3.5添加记录4.3.5.1建立一个新的窗口,包含姓名,学号,年龄等基本信息录入框 4.3.5.2用户录入要添加记录信息,如果要添加记录和已有记录不冲突就会把录入信息添加到新建 Microsoft Office Access 应用程序记录集中。
通讯录的开发与设计一.需求分析1.1功能需求1.该程序可用于对学生的通讯方式基本信息的添加、查找、修改、删除、输出等操作,以实现对学生通讯录信息的管理,便于同学之间的联系交往;2.其中此通讯录可以自动保存,以便以后查看更新学生通讯信息。
3.程序中设计的查询功能可根据需要从若干数据中查询某个学生信息,并且可根据两种不同的方法查询:按姓名查询和按电话查询,以满足不同的需要;4. 可以通过输出的方式查看整个通讯录;1.2非功能需求1.界面友好,dos界面。
文本显示。
2.具有较好的容错能力,用户在使用过程中,除了规定的按键外,其他按键均忽略,不予处理;3.可在任何PC机上运行。
4.运行平台xp or win7二.方案设计2.1设计思路从已知的手机或者电脑中的通讯录可知,应该用结构体数组储存people的各种属性,每个人具有3种属性1.姓名2.住址3.电话。
用简单赋值语句给结构体变量赋值。
储存使用vc自带的file函数。
函数之间各种调用使用wilie外加switch函数实现。
2.2结构设计对各个模块进行功能的描述 (1).输入模块:录入需要管理的通讯信息并将信息保存于文件中,以方便日后进行打印、读取、更新等操作。
(2).添加模块:可添加一个或多个学生的通讯信息,并将所添加的信息保存,方便查找。
(3).删除模块:可对失去联系的学生通讯信息做删除处理。
(4).修改模块:可对通讯信息发生改变的学生信息进行修改。
(6).保存模块:用于对通讯信息进行保存。
属于隐藏模块。
系统自动保存。
(7).输出模块:将所有学生通讯信息或想要查询的学生信息显示于屏幕,用于打印学生通讯信息或查找某些学生通讯信息。
(8).退出系统:选择该项,自动退出该系统。
三.系统实现流程图, 函数之间相互调用的图示 ,程序设计及编码, 运行结果。
输入模块: 输入模块:One. n ame! 重新赋值四.系统测试1.功能测试2.性能测试3.测试结果经过测试本项目的功能和性能符合要求。
一、设计分析该设计是设计一个实用的小型学生成绩管理系统。
它有录入,查询,修改,删除,保存的基本功能,并且能够对指定文件操作,也可将多个文件组成一个文件。
二、系统设计说明1.程序运行主界面再根据用户的不同需求来选择不同的操作2.模块功能设计2.1.建立学生基本信息使用动态链表技术,用creat()函数实现学生基本信息的录入;2.2查询记录(1)可以按学号方式查询记录。
(2)能给出查询记录的信息。
(3)如果查询的信息不存在,输出提示信息。
2.3插入学生记录(1)可以在已有记录后面追加新的记录。
(2)可以随时增加新的记录,他们仅保存在向量数组中。
(3)如果没有记录存在,给出提示信息。
2.4 修改记录(1)可以按学号方式查找要修改的记录内容。
(2)给出将被修改记录的信息,经确认进行修改。
(3)如果已经是空表,应给出提示信息并返回主菜单。
(4)如果没有找需要找到修改的信息,输出提示信息。
2.5 删除记录(1)可以按学号方式删除记录。
(2)标志将被删除的记录,可以再次取消标志,经确认后删除已经标志的记录。
(3)如果已经是空表,删除时应给出提示信息并返回主菜单。
(4)如果没有要删除的信息,输出信息。
(5)删除操作与限于内存,只有执行存储操作时,才能覆盖原记录。
2.6 文件存储(1)可以按默认名字或者指定名字存储记录文件。
(2)更新存储标志。
三、系统技术文档1、系统各主要模块流程图1.1输入数据模块1.2查找信息模块1.3修改信息模块1.4删除信息模块2软件总体测试方案与测试记录2.1测试方案将程序编写完成后,开始整体测试。
分别就不同的模块功能进行测试,看程序是否能够正确的运行出结果,是否有逻辑错误。
2.2测试部分记录(1)数据的录入过程(2)数据的查询3局部测试方案与测试记录3.1测试方案局部测试分别进行了数据的修改与数据的插入两个模块的测试;3.2测试部分记录(1)修改模块(2)插入信息模块4软件调试与修改记录4.1软件调试软件调试采用单步调试的方法,查看其运行过程。
学生考勤系统的c语言课程设计.课程设计说明学校,系:软件学院的专业化:软件工程学生的名字:卢清雪没有。
以下内容:1514011242设置项目标题:学生考勤系统的起止日期是从XXXX :年2月29日到XXXX 3月11日。
它指的是导师:财富第一章的设计目的。
本课程设计是本学期程序设计基础课程的实际应用,也是对所学知识的测试。
通过本课程设计可以达到的目的如下:1.巩固和深化对C课程基本内容和理论知识的理解和掌握。
2.掌握C语言编译和程序调试的基本技能。
3.用C语言进行基本的程序设计,逐步了解文件的一些相关操作,掌握函数的使用技巧,包括函数类型的选择和参数的传递方式。
4.掌握数组、指针、引用、文件等的编译方法。
提高用C语言解决实际问题的能力。
5.通过学生考勤系统的设计,源代码的编写,以及各种语法和函数在C语言中的使用,对较为复杂的结构、链接和文件的操作更加熟悉。
6.通过课程设计,将本学期学到的知识与实际应用相结合,培养自己的动手能力,加强各学科之间的联系,从而提高团队意识,加强团队之间的协调与合作,满足2.1学生考勤信息记录系统第二章总体设计的要求。
通过该系统,可以实现学生考勤信息的创建、录入、修改、查询和保存等操作的管理。
实验出勤信息包括学生姓名、学生编号、科目类型和每个科目的出勤信息。
主要功能:1)、可以完成考勤输入和修改2)、创建班级信息3)、设备查询4)、根据设计要求将考勤信息保存到文件2.2流程图中,绘制如下流程图:启动菜单24。
修改6。
5号出口。
查询23。
创建2。
查询11。
输入void creat(void),这是2.3中设置的主要功能。
无效保存(结构学生*,char[]);结构学生*负荷(char[));无效进入(void);/*输入函数*/void search _ 1(void);/*查询函数_ 1 */void search _ 2(void);/*查询函数_2*/void添加(void);无效修改(void);/*修改功能*/作废返回(作废);/*退出函数*/void _ 1();/* interface-1 */void _ 2();/*接口-2 */mune _ 1();mune _ 2();3.1函数和调用关系void _ 1();/*菜单功能1*/void mune_2() /*菜单功能2*/开始输入记录、查询个人、创建信息、修改信息、查询整班结束菜单_2退出系统1234 56休息休息休息休息休息休息;/*输入功能*/开始输入班级和学生人数p-num==大学体育大学英语口语C语言大学物理马克思大学英语高等数学输入学生对此班级的兴趣Y/N②返回菜单2 n退出开始无效搜索_1(无效);/*查询个人信息*/输入此人的班级和学生编号AP-num==此人出勤信息的真或假输出返回菜单2开始无效搜索_2(无效);/*查询班级信息*/输入班级查询并输出该班级的考勤信息。
c语言课程设计(学生信息管理系统)一、系统功能学生信息管理系统是一款基于C语言开发的数据管理程序,可实现对学生信息的增删改查等功能。
具体功能列表如下: a. 添加学生信息:可根据学生的基本信息,如学生学号、姓名、性别、地址、联系电话等,依次记录入系统; b. 删除学生信息:可根据学生学号、姓名等信息,从系统中删除不必要的学生信息; c. 修改学生信息:可根据已有的学生信息,修改学生某些属性内容,以更新系统中的数据; d. 查看学生信息:可根据学生学号、姓名等信息,查看指定学生的所有信息及多种查询功能; e. 数据保存功能:可将当前系统中的学生信息,保存成文件的形式; f. 备份/恢复功能:可对学生信息文件进行备份并对备份文件进行恢复; g. 查询统计功能:可根据学院代号、专业代号等信息,进行不同的查询统计; h. 排序功能:可根据学生学号、姓名等信息,对学生信息进行排序; i. 帮助功能:可提供详细的使用帮助文档,以帮助用户更好地使用系统;二、程序实现及结构1. 主程序:此程序用于控制整个系统的运行,可实现系统菜单显示、功能调用及功能切换等功能,可根据用户的操作需求,调用其他子程序实现各项功能。
2. 子程序:此程序是系统的主要部分,可实现学生信息的增删改查等功能,并可支持学生信息的备份,恢复,排序及查询统计等功能,用于实现主程序调用的功能。
3. 管理模块:此模块可实现对用户的登录及注册功能,可检测用户登录及注册的账号是否正确,以及是否有权限使用系统;4. 数据库模块:此模块可实现对学生信息的存储及调用,便于对各类学生信息进行更方便的管理。
此模块还可以负责系统的备份及恢复功能的实现。
5. 图形界面模块:此模块负责实现系统的图形化界面,使用户可以更加友好地操作系统,可以根据用户的需求,随时更改系统界面设置。
三、程序设计学生信息管理系统的设计主要有四个部分:1. 主程序:主程序的设计要求负责控制整个系统的运行,并根据用户的操作调用子程序实现各个功能。
选题2名称:同学录系统目录一、课题目标1.1 程序功能简介1.2 课程设计要求1.3 评定难易级别二、具体实现2.1 程序总体方案2.1.1开发平台2.1.2程序结构或流程图2.2 关键代码及注释三、程序截图四、调试报告(在设计和实现过程所遇到的问题和解决,请如实填写)…五、总体小结(在整个设计过程中的心得体会)六、分工介绍(是独立完成还是合作完成,若为合作完成,说明合作者以及之间的具体分工)…一、课题目标1.1 程序功能简介此程序是一个简单的同学录系统,具有导入同学信息,存储,显示、新增、删除、查询、修改同学信息等功能,最主要的是,它是用双向链表实现的,所以新增和删除的效率非常的高。
其菜单分为:显示所有同学录信息、新增一个同学录信息、删除一个同学录信息、查询系统、修改同学录信息,寻求帮助等。
1.2 课程设计要求用双向链表完成一个同学录系统实现同学录所该有的功能,并方便用户的使用!1.3 评定难易级别A组二、具体实现2.1 程序总体方案2.1.1开发平台操作系统:Windows 7开发工具:visual studio 20102.1.2程序结构或流程图主函数的流程图:开始读入TXT欢迎界面显示菜单新增信息显示所有删除操作寻求帮助退出修改系统查询系统姓氏查询缺省查询记忆查询返回是否先查询储存入TXT2.2 所做改进2.2.1改进一2.2.1.1 改进方案基本上这个程序都是自己写的,改进也只是对原有要求的添加而已。
先说说这个程序怎么实现所有功能的吧。
2.2.1.2 具体实现进入程序,首先是读取txt文件的信息,然后显示的是菜单。
再然后一目了然的有各种功能。
总体是用双向链表做的。
新增结点信息:即添加一个链表结点信息。
显示所有信息:是先根据学号排序,然后从头至尾分屏显示所有信息,链表依次读取。
删除操作:即链表操作,删除一个结点.查询操作:按要求进行各种情况查询,总体思想是线性的比较,如果有匹配的字符串就输出(这里面用的是string.find函数)。
修改同学录:先根据查找操作找到这个信息,再修改当前结点信息寻求帮助:作为一些运用该程序的说明而存在。
可以对用户一些较常见的疑问做出回答。
退出程序:退出前会保存所有的信息至txt文件。
2.2.2改进二2.2.2.1 改进方案为了使我的查询更完善,我的程序做到了部分字符串匹配的查询方式,即比如在输入姓名查询的时候,如果输入的是姓名的姓或者名,那么与之匹配的所有信息都会显示,而不是显示结果不存在。
同样的,还可以根据自己一开始对该同学的评价做查询。
另外,我设置了帮助选项,可以为用户解答很多常见的疑问。
可以方便用户。
2.2.2.2 具体实现运用STL string类里面的find( )函数;把我的成员全都定义成string类的,最后再让用户输入所需查找的字符串(也是一个string类),然后从到之为用find 函数查,如njust[i].name.find(temp)!=string::npos;则加入到输出。
在所有的查询方式里使用相同的方法,即可实现,所有的查询都带有子串查找功能。
STL确实方便三、程序运行截图进入程序:进入菜单:分屏显示查询界面:修改同学录信息:帮助界面:四、调试报告调试还算顺利,只是一开始容错方面做得比较简陋。
后来改好了。
再又就是一开始功能比较少,后来慢慢一步步完善,变成现在这样,还算可以用用的程序。
五、总体小结经过这么多天的编程,我了解到了要想完成一个比较大的程序,需要先根据程序的要求,确定设计思路,画出流程图,把想要用到的函数都写出其函数原型说明。
然后根据自己已经写好的函数原型说明。
一步步把函数都实现。
即分别写出每一个功能所需要的具体的函数。
这样,有一个清晰的思路,就比较有调理,有了调理,也不容易忘记一些想要实现的东西。
然后,才会有一个层次分明,客户友好的程序。
另外,类的封装和双向链表弄起来还是比较繁琐的。
但是,把问题一个个搞清楚以后,问题就自然而然的被简化了。
另外编程序还要注重细节,任意一个看似细微的的错误,都可能会引起一连串的error,所以每次从键盘读入数据或者数据的处理的环节都要注意合法性的检查。
最后不得不提的是,我加入ACM队,在暑假做了大量的题目联系,所以在调试方面没有出现什么打问题,都算是比较轻松的过关了。
熟练的写程序,对我们着实是非常重要的!六、分工介绍独立完成。
#pragma once#include"student.h"struct node //链表node结点{student &stu;node *next;node *prev;node(student & s):stu(s){}};class guanli{public:node * head_ptr;node *tail_ptr;node * current_ptr;guanli(void);~guanli(void);void UserChoice(int);//用户选择void InsertRecord();//插入信息void InsertNode(node *);//插入新结点void InsertNodeAtHead(node*);//插入头结点void InsertNodeAtEnd(node*);//插入尾结点void ShowList();//显示所有信息void ShowSortedList1();//显示排序后链表1void ShowSortedList2();//显示排序后链表2void DeleteRecord();//删除某条记录void DeleteNodeAtHead();//删除头结点void DeleteNodeAtEnd();//删除尾结点void DeleteNodeAtMiddle();//在中间删除void DeleteNode();//删除某个节点void ChangeMes();//修改信息函数bool VerifyDelete();//确认删除void DeleteList();//释放链表,保存至文件void SearchChoice();//选择查找方式void ASearchByName();//A方式中的名字查找void ASearchByStuNum();//A方式中的学号查找void ASearchByDormNum();//A方式中的整个宿舍查找void BSearchByStuNum();//B方式,按学号显示个人详细信息 void LoadFile();//读取文件void SaveFile();//存至文件void Help();//帮助提示函数void UserInput();//用户输入备用};#include "guanli.h"#include<iostream>using namespace std;guanli::guanli(void){}guanli::~guanli(void){}void guanli::UserChoice(int t){switch(t){case 0:InsertRecord();//添加结点(OK)break;case 1:ShowList();//显示所有结点信息(OK)break;case 2:DeleteRecord();//删除记录(OK)break;case 3:SearchChoice();//查找记录(OK)break;case 4:ChangeMes();break;case 5:Help();//帮助文件break;case 6:SaveFile();if(head_ptr!=NULL)DeleteList();break;default :cout<<"选择无效,请重新输入:";break;}}void guanli::InsertRecord(){char tt[15];char temp_memory[300];student *s=new student;node * new_ptr=new node(*s);if(new_ptr!=NULL){system("cls");cout<<"同学姓名:";cin>>new_ptr->stu.fri_name;cout<<"邮箱:";cin>>new_ptr->stu.e_mail;cout<<"性别:";cin>>new_ptr->stu.sex;cout<<"电话号码:";cin>>new_ptr->stu.phone_num;cout<<"珍贵回忆有(请输入一句话,不含空格,可用逗号分隔):";cin>>new_ptr->stu.memory;InsertNode(new_ptr);cin.ignore(20,'\n');cout<<"是否继续添加?Y/N"<<endl;char te[30];cin.getline(te,30);if(!strcmp(te,"Y")||!strcmp(te,"y"))InsertRecord();}elsecout<<"申请内存空间失败,不能创建新结点!!\n";// system("cls");}void guanli::InsertNode(node *new_ptr){//system("cls");node * temp_ptr;//若链表为空if(head_ptr==NULL){new_ptr->next=new_ptr;new_ptr->prev=new_ptr;head_ptr=new_ptr;tail_ptr=new_ptr;return;}//只有一个节点if(head_ptr->next==head_ptr){if(new_ptr->stu.fri_name<head_ptr->stu.fri_name)InsertNodeAtHead(new_ptr);elseInsertNodeAtEnd(new_ptr);return ;}//多个节点,自动按姓名排序插入if(head_ptr->next!=head_ptr){current_ptr=head_ptr->next;while((new_ptr->stu.fri_name>current_ptr->stu.fri_name)//比较姓名进行排序&&(current_ptr!=head_ptr))//并且当前结点不是头结点(双向链表的头尾是相连的)current_ptr=current_ptr->next;//继续向后拓展结点if(current_ptr==head_ptr)InsertNodeAtEnd(new_ptr);//插入在链表尾else{temp_ptr=current_ptr->prev;//此时,插入的结点在current结点和temp 结点之间temp_ptr->next=new_ptr;new_ptr->prev=temp_ptr;current_ptr->prev=new_ptr;new_ptr->next=current_ptr;}}}void guanli::InsertNodeAtEnd(node*new_ptr){new_ptr->next=head_ptr;tail_ptr->next=new_ptr;new_ptr->prev=tail_ptr;head_ptr->prev=new_ptr;tail_ptr=new_ptr;}void guanli::InsertNodeAtHead(node *new_ptr){new_ptr->next=head_ptr;new_ptr->prev=tail_ptr;head_ptr->prev=new_ptr;tail_ptr->next=new_ptr;tail_ptr=new_ptr;}#include "guanli.h"#include<iostream>#include<iomanip>using namespace std;void guanli::ShowList(){system("cls");int n;cout<<"\t\t\t下面将显示所有同学录信息\n\n\t\t\t请输入每屏幕显示学生的个数\n\n\t\t\t每显示一屏幕暂停一次\n\n\t\t\t输入的数不大于20:\n";cin>>n;system("cls");int i;current_ptr=head_ptr;if(current_ptr!=NULL)do{i=1;cout<<setw(14)<<"姓名"<<setw(8)<<"性别"<<setw(30)<<"邮箱"<<setw(20)<<"电话号码"<<endl<<endl;do{cout<<setw(14)<<current_ptr->stu.fri_name<<setw(8)<<current_ptr->stu.sex; cout<<setw(30)<<current_ptr->stu.e_mail<<setw(20)<<current_ptr->stu.phone_ num<<endl;current_ptr=current_ptr->next;i++;}while(current_ptr!=head_ptr&&i<=n);cout<<endl<<endl;if(current_ptr!=head_ptr){system("pause");system("cls");}else cout<<"文件结束!"<<endl;}while(current_ptr!=head_ptr);else{cout<<"同学录为空!"<<endl;}system("pause");system("cls");}void guanli::SearchChoice(){char n;cout<<endl<<"输入数字键选择你所要进行的操作:"<<endl<<endl;cout<<"\t\t\t1:姓名查询"<<endl<<endl;cout<<"\t\t\t2:姓名缺省查询(姓氏,名字部分查询)"<<endl<<endl;cout<<"\t\t\t3:记忆片段查询"<<endl<<endl;cout<<"\t\t\t4:退出查询"<<endl<<endl;cout<<"输入你的选择:"<<endl;cin>>n;while(n!='4'){switch(n){case '1':ASearchByStuNum();break;case '2':ASearchByName();break;case '3':ASearchByDormNum();break;default :cout<<"对不起,您输入的查询方式尚未做出,请重新输入:";break;}cout<<"输入0显示菜单,输入5退出查询,其他任意键继续查询:"<<endl;char pp;cin>>pp;if(pp=='0'){cout<<endl<<"输入数字键选择你所要进行的操作:"<<endl<<endl;cout<<"\t\t\t1:姓名查询"<<endl<<endl;cout<<"\t\t\t2:姓名缺省查询(姓氏,名字部分查询)"<<endl<<endl;cout<<"\t\t\t3:记忆片段查询"<<endl<<endl;cout<<"\t\t\t4:退出查询"<<endl<<endl;cout<<"输入你的选择:"<<endl;cin>>n;}else if(pp=='4')n='4';system("cls");}void guanli::ASearchByStuNum(){system("cls");bool nFlag=0;string search_str;current_ptr=head_ptr;if(current_ptr==NULL)cout<<"学生记录为空"<<endl;else{cin.ignore(20,'\n');cout<<"\n输入你要搜索的同学姓名:";cin>>search_str;if(current_ptr->stu.fri_name==search_str){nFlag=1;cout<<"姓名:"<<current_ptr->stu.fri_name<<"\t性别:"<<current_ptr->stu.sex;cout<<"\t电话:"<<current_ptr->stu.phone_num<<"\t邮箱:"<<current_ptr->stu.e_mail<<endl;cout<<"珍贵回忆:\n"<<current_ptr->stu.memory<<endl;}else{current_ptr=current_ptr->next;while(current_ptr!=head_ptr){if(current_ptr->stu.fri_name==search_str){nFlag=1;cout<<"姓名:"<<current_ptr->stu.fri_name<<"\t性别:"<<current_ptr->stu.sex;cout<<"\t电话:"<<current_ptr->stu.phone_num<<"\t邮箱:"<<current_ptr->stu.e_mail<<endl;cout<<"珍贵回忆:\n"<<current_ptr->stu.memory<<endl;break;}current_ptr=current_ptr->next;}}if(!nFlag)//搜索完所有结点都没发现{cout<<"无记录!"<<endl;system("pause");system("cls");}}}void guanli::ASearchByName(){system("cls");bool nFlag=0;string search_str;current_ptr=head_ptr;if(current_ptr==NULL)cout<<"同学录为空"<<endl;else{cin.ignore(20,'\n');cout<<"\n输入你要搜索的同学的姓或名或其中的一部分:";cin>>search_str;if(current_ptr->stu.fri_name.find(search_str)!=string::npos){if(!nFlag)cout<<"找到记录\n";nFlag=1;cout<<"姓名:"<<current_ptr->stu.fri_name<<"\t性别:"<<current_ptr->stu.sex;cout<<"\t电话:"<<current_ptr->stu.phone_num<<"\t邮箱:"<<current_ptr->stu.e_mail<<endl;cout<<"珍贵回忆:\n"<<current_ptr->stu.memory<<endl<<endl;}current_ptr=current_ptr->next;while(current_ptr!=head_ptr){if(current_ptr->stu.fri_name.find(search_str)!=string::npos){if(!nFlag)cout<<"找到记录\n";nFlag=1;cout<<"姓名:"<<current_ptr->stu.fri_name<<"\t性别:"<<current_ptr->stu.sex;cout<<"\t电话:"<<current_ptr->stu.phone_num<<"\t邮箱:"<<current_ptr->stu.e_mail<<endl;cout<<"珍贵回忆:\n"<<current_ptr->stu.memory<<endl<<endl;}current_ptr=current_ptr->next;}if(!nFlag)//搜索完所有结点都没发现{cout<<"无记录!"<<endl;system("pause");system("cls");}}}void guanli::ASearchByDormNum(){system("cls");bool nFlag=0;string search_str;current_ptr=head_ptr;if(current_ptr==NULL)cout<<"学生记录为空"<<endl;else{cin.ignore(20,'\n');cout<<"\n输入你对那个同学的记忆(即你当初输入的一句话里面的几个词语):";cin>>search_str;if(current_ptr->stu.memory.find(search_str)!=string::npos){if(!nFlag)cout<<"找到记录\n";nFlag=1;cout<<"姓名:"<<current_ptr->stu.fri_name<<"\t性别:"<<current_ptr->stu.sex;cout<<"\t电话:"<<current_ptr->stu.phone_num<<"\t邮箱:"<<current_ptr->stu.e_mail<<endl;cout<<"珍贵回忆:\n"<<current_ptr->stu.memory<<endl<<endl;}current_ptr=current_ptr->next;while(current_ptr!=head_ptr){if(current_ptr->stu.memory.find(search_str)!=string::npos){if(!nFlag)cout<<"找到记录\n";nFlag=1;cout<<"姓名:"<<current_ptr->stu.fri_name<<"\t性别:"<<current_ptr->stu.sex;cout<<"\t电话:"<<current_ptr->stu.phone_num<<"\t邮箱:"<<current_ptr->stu.e_mail<<endl;cout<<"珍贵回忆:\n"<<current_ptr->stu.memory<<endl<<endl;}current_ptr=current_ptr->next;}if(!nFlag)//搜索完所有结点都没发现{cout<<"无记录!"<<endl;system("pause");system("cls");}}}#include "guanli.h"#include<iostream>#include<iomanip>using namespace std;void guanli::DeleteRecord(){system("cls");string search_string;node *previous_ptr=NULL;current_ptr=head_ptr;if(current_ptr==NULL){cout<<"没有你要删除的记录!"<<endl;return;}cin.ignore(20,'\n');int nFlag=0;bool ask=0;char n[30];cout<<"\t\t是否需要先根据查找来查看所要删除的同学完整姓名?Y/N"<<endl;cin.getline(n,30);if(!strcmp(n,"y")||!strcmp(n,"Y"))SearchChoice();cout<<"\n输入你要删除的同学完整姓名:\n";cin>>search_string;while((current_ptr->stu.fri_name==search_string)&&head_ptr!=NULL){nFlag=1;cout<<"\n找到记录\n";cout<<"姓名:"<<current_ptr->stu.fri_name<<"\t性别:"<<current_ptr->stu.sex;cout<<"\t邮箱:"<<current_ptr->stu.e_mail<<"\t电话:"<<current_ptr->stu.phone_num<<endl;cout<<"珍贵回忆:\n"<<current_ptr->stu.memory<<endl;if(VerifyDelete()) //向用户询问是否真的要删除{DeleteNode();cout<<"\n记录已删除!\n";}else{cout<<"姓名为:"<<current_ptr->stu.fri_name<<"\t的记录没有删除"<<endl;current_ptr=current_ptr->next;}}do{if(current_ptr->stu.fri_name==search_string){nFlag=1;cout<<"\n找到记录\n";cout<<"姓名:"<<current_ptr->stu.fri_name<<"\t性别:"<<current_ptr->stu.sex;cout<<"\t邮箱:"<<current_ptr->stu.e_mail<<"\t电话:"<<current_ptr->stu.phone_num<<endl;cout<<"珍贵回忆:\n"<<current_ptr->stu.memory<<endl;if(VerifyDelete()) //向用户询问是否真的要删除{DeleteNode();cout<<"\n记录已删除!\n";}else{cout<<"姓名为:"<<current_ptr->stu.fri_name<<"\t的记录没有删除"<<endl;}}current_ptr=current_ptr->next;}while(current_ptr!=head_ptr||head_ptr==NULL);if(!nFlag)cout<<"\n没有找到相符的记录也没有删除记录。