QT编写一个简单的学生管理系统

合集下载

QT编写一个简单的学生管理系统

QT编写一个简单的学生管理系统

嵌入式作业报告——学生信息管理系统学生信息管理系统报告说明书一.需求分析利用QT Creator编程环境编写一个简单的学生信息管理系统,与数据库连接,或者直接对.txt文本进行操作,实现对学生信息的增,删,改,查功能。

二.总体设计在窗口刚跳出来时,在左边的QTextEdit对象中显示所有学生的信息,学生的信息被保存在文件中。

右边是几个QPushButton,分别实现增,删,改,查功能。

还有一个QLineEdit,用来编辑学生信息。

1.增加学生信息:在行编辑器内输入学生的信息,点击“增加”按钮,该生的信息就会被写入文件,并且将增加后的所有的学生信息显示在窗口的QTextEdit对象中。

2.删除学生信息:在行编辑器内输入学生的信息,点击“删除”按钮,该生的信息就会从文件中删除,并且将删除后的所有的学生信息显示在窗口的QTextEdit对象中。

3.修改学生信息:在行编辑器内输入学生的信息,点击“修改”按钮,该生的新的信息就会被写入文件,并且将修改后的所有的学生信息显示在窗口的QTextEdit对象中。

4.查找学生信息:在行编辑器内输入学生的学号,点击“查找”按钮,该生的信息会显示在窗口上。

三.详细设计若选择直接对文本进行操作,过程比较麻烦。

如在进行删除某位学生的信息时,很自然地会想到先找到该生在文件中的位置,再将其后的所有学生信息都向前移动,看起来似乎很简单,但是在文件里进行这些操作时还是要费一些功夫的。

经过在网上查资料,得到了一种算法,就是先把文件里的每位学生的信息读出来,放到一个str[]数组中,再通过比较,找到要删除学生所在的数组元素的下标,之后仅仅是对数组内容进行更改,最后再将新的数组元素写入文件中,再通过读文件将信息显示在窗口。

下面这段代码是我自己认为在这次作业中取得较大突破的。

就是删除学生信息的代码。

结这个用QT环境编写一个简单的学生管理系统的作业做了一周,今天终于完成了。

而这一周,自己也学会了很多东西。

简易学生管理系统代码

简易学生管理系统代码

简易学生信息管理系统代码分享供有兴趣的未来IT精英参考!因本人知识有限!代码有很多漏洞!望大家去粗取精!#include<stdio.h>#include<string.h>#include<stdlib.h>//账号与密码的初始值const char *zhang0="123";const char *mima0 ="123";int ren = 0,flag = 0, flag0 =0; //全局变量//学生信息结构体struct student{char name[12];char phone[12];int id;int age;int score;}stu[100]={0};//登录int pipei(){int i = 3;char zhang[10]={0};char mima[10] ={0};while(i>0){ system("clear");printf("请输入账号与密码\n");scanf("%s",zhang);scanf("%s",mima);if(strcmp(zhang0,zhang)==0 && strcmp(mima0,mima)==0)return 1;printf("登录失败! 慎重输入\n");printf("还有%d次机会输入!\n",--i);}return 0;}int request(struct student *stup,char *name,char *phone,int id,int age,int score){//遍历结构体确保这里输入的ID号唯一的int i=0;system("clear");for(i=0;i<ren;i++){if(stu[i].id == id){printf("该ID已经存在了,注册失败\n");flag0 = 0;return 0;}}//对结构体地址进行初始化,注册该用户strcpy((stu+i)->name,name);strcpy((stu+i)->phone,phone);(stu+i)->id = id;(stu+i)->age = age;(stu+i)->score =score;//printf("login was successful\n");//注册成功后,人数就要+1ren++;flag0 = 1;return ren; //返回当前的用户数}//找学号int check(int id){int i=0 ;//遍历for(i=0;i<ren;i++){if(stu[i].id == id){flag = 1;return i;}else{flag=0;}}}//注销函数int select(int id){ int i,j;system("clear");for(i=0;i<ren;i++){if(stu[i].id==id){flag = 1;memset(&stu[i],0,sizeof(struct student));for(j=i;j<ren-1;j++){stu[j]=stu[j+1];}ren--;}else{flag = 0;}}if(flag==0){printf("该学号不存在!请重新确认再输入!\n"); }}//修改int change(struct student *stup){char newname[12];char newphone[12];int newid;int newage;int newscore;int n=0,i=0;system("clear");if(flag){printf("修改学生的信息为:\n");printf("姓名:%s\n 电话:%s\n 学号:%d\n年龄:%d\n 成绩:%d\n",stup->name,stup->phone,stup->id,stup->age,stup->score);printf("修改项目: 1.姓名\t 2.电话\t 3.学号\t 4.年龄\t 5.成绩\n ");scanf("%d",&n);switch(n){case 1:{printf("请输入新名字:\n");scanf("%s",newname);strcpy(stup->name,newname);}break;case 2:{printf("请输入新电话:\n");scanf("%s",newphone);strcpy(stup->phone,newphone);}break;case 3:{printf("请输入新学号:\n");scanf("%d",&newid);for(i=0;i<ren;i++){if(stu[i].id == newid){printf("该ID已经存在了,修改失败\n");flag = 0;return 0;}elseflag = 1;}if(flag)stup->id=newid;}break;case 4:{printf("请输入新年龄:\n");scanf("%d",&newage);stup->age=newage;}break;case 5:{printf("请输入新成绩:\n");scanf("%d",&newscore);stup->score=newscore;}break;default :{printf("没有此操作!请认真选择!\n");}}}else{printf("该学号不存在!请重新确认再输入!\n");return 0;flag =0;}}//查询int show(struct student *stup){system("clear");if(flag){printf("该学生的信息为:\n");printf("姓名:%s\n 电话:%s\n 学号:%d\n年龄:%d\n 成绩:%d\n",stup->name,stup->phone,stup->id,stup->age,stup->score);}else{printf("该学号不存在!请重新确认再输入!\n");return 0;}}int maindows(){ int n = 0,i=0,j=0;char name[12];char phone[12];int id;int age;int score;system("clear");printf("****************\n");printf("请选择用户功能1.注册 2.注销 3.修改 4. 查询 5.整体信息\n ");scanf("%d",&n);switch(n){case 1:{while(1){struct student stu1;system("clear");printf("请继续注册!\n");printf("请输入名字\n");scanf("%s",name);printf("请输入电话\n");scanf("%s",phone);printf("请输入学号\n");scanf("%d",&id);printf("请输入年龄\n");scanf("%d",&age);printf("请输入成绩\n");scanf("%d",&score);request(&stu1,name,phone,id,age,score);if(flag0){printf("注册成功!\n");printf("姓名:%s\n 电话:%s\n 学号:%d\n年龄:%d\n 成绩:%d\n",stu[i].name,stu[i].phone,stu[i].id,stu[i].age,stu[i].score);flag0 = 0;}printf("当前的有效用户%d\n",ren);printf("非零继续注册,零则退出注册!\n");scanf("%d",&i);system("clear");if(i==0)return maindows();}}case 2 :{while(1){ system("clear");printf("请输入注销学生学号:\n");scanf("%d",&id);select(id);printf("当前的有效用户%d\n",ren);printf("非零继续注销,零则退出注销!\n");scanf("%d",&i);if(i==0)return maindows();}}case 3:{system("clear");printf("请输入修改学生学号:\n");scanf("%d",&id);while(1){change(&stu[check(id)]);if(flag){printf("修改后学生的信息为:\n");printf("姓名:%s\n 电话:%s\n 学号:%d\n年龄:%d\n 成绩:%d\n",stu[i].name,stu[i].phone,stu[i].id,stu[i].age,stu[i].score);}printf("非零继续修改,零则退出修改!\n");scanf("%d",&i);if(i==0)return maindows();}}case 4:{while(1){system("clear");printf("请输入查询学生学号:\n");scanf("%d",&id);show(&stu[check(id)]);printf("非零继续查询,零则退出查询!\n");scanf("%d",&i);if(i==0)return maindows();}}case 5:{system("clear");for(i=0;i<ren;i++){printf("第%d位学生信息为:",i+1);printf("姓名:%s\t 电话:%s\t 学号:%d\t年龄:%d\t 成绩:%d\n",stu[i].name,stu[i].phone,stu[i].id,stu[i].age,stu[i].score);}return maindows();}break;}}int main(){if(pipei()){printf("登陆成功!\n");printf("******欢迎进入学生信息管理系统******\n");maindows();}elsereturn 0;}。

基于qt框架的宿舍管理系统的设计与实现

基于qt框架的宿舍管理系统的设计与实现

基于qt框架的宿舍管理系统的设计与实现1. 引言1.1 概述宿舍管理系统是一种能够提高宿舍管理效率和便利性的软件系统。

随着大学生人数的增加和宿舍管理工作的复杂化,传统手动管理方式已经无法满足现代化管理需求。

因此,通过采用现代信息技术手段,设计并实现基于Qt框架的宿舍管理系统具有重要意义。

本文将详细介绍基于Qt框架的宿舍管理系统的设计与实现过程。

首先,我们将对Qt框架进行概述,并介绍其特点和应用领域。

然后,我们将进行宿舍管理系统设计需求分析,包括功能需求分析、性能需求分析和用户界面设计需求分析。

接下来,我们将详细介绍宿舍管理系统的实现步骤及流程,包括数据库设计与建立连接、前端界面开发与后台逻辑实现以及测试与调试阶段及问题解决方案。

最后,在结论与展望部分,我们将探讨系统优化与改进空间、实际应用前景展望,并总结收获感言。

1.2 文章结构本文共包含五个主要部分:引言、Qt框架概述、宿舍管理系统设计需求分析、宿舍管理系统的实现步骤及流程和结论与展望。

每个部分都进一步细分为多个小节,以便清晰地介绍相关内容。

1.3 目的本文的目的是为读者提供一个全面详细的基于Qt框架的宿舍管理系统设计与实现指南。

通过深入了解Qt框架概述和宿舍管理系统设计需求分析,读者将能够掌握如何使用Qt框架来开发一个功能强大且用户友好的宿舍管理系统。

此外,通过对实现步骤及流程和问题解决方案的详细讲解,读者将具备开发、测试和调试宿舍管理系统的技能。

最后,通过展望系统优化与改进空间和实际应用前景,读者将获得对该领域未来发展趋势以及自身在软件开发中的成长看法。

2. Qt框架概述2.1 简介Qt是一个跨平台的C++应用程序开发框架,它提供了丰富的类库和工具,用于快速开发图形界面应用程序。

其最初由挪威的Trolltech公司开发并在1995年首次发布,在2008年被诺基亚收购后继续进行开发,并于2011年发布了第一个开源版本Qt 4。

目前,Qt由Digia公司负责管理和维护。

基于QT的学生信息管理系统的实现

基于QT的学生信息管理系统的实现

基于QT的学生信息管理系统的实现作者:张会来源:《电脑知识与技术》2018年第36期摘要:该文利用 Qt应用框架,应用Qt信号槽机制实现了一个学生信息管理系统。

系统具有添加,修改,分类查询,删除,计算总分及退出等功能。

学生成绩管理系统是一个集继承、图形界面、事件处理等面向对象编程知识的综合应用的实例程序。

关键词:Qt;C++;槽函数;信息管理系统中图分类号:TP311; ; ; ;文献标识码:A; ; ; 文章编号:1009-3044(2018)36-0046-03大部分大学一年级学生初接触到的是C/C++计算机编程语言,而用C/C++语言编写界面程序时多在黑屏白字的application console下采用文字描述模拟菜单选择,学生体验感及成就感较差。

而初学者只有一定的C++面向对象编程基础,可以使用Qt轻松实现图形界面编程。

本文利用Qt图形库,采用 C++语法,在Qt Creator集成开发环境下,实现了一个基于Qt的学生成绩管理系统。

1 Qt的特点Qt被用于高性能的跨平台软件开发,它是一个标准的技术成熟的C++框架,Qt不仅拥有扩展的C++类库,还提供了大量可用来快速编写应用程序的工具[1],Qt是采用C++实现的框架。

Qt Creator是一款新的轻量级集成开发环境(IDE),IDE支持跨平台运行,支持的系统包括 Mac OS X 、Linux( 32 位及 64 位)以及Windows等系统。

Qt Creator的设计目标是方便开发人员利用Qt这个应用程序框架更加快速、轻易地完成相关开发任务[2]。

2 系统功能学生信息管理系统主要功能包括:学生基本信息和成绩的录入,浏览、查询、删除、修改及计算成绩等功能。

功能分析如下:1)添加/输入学生信息:输入的学生信息包括学生姓名,学号,性别,出生日期,英语成绩,语文成绩,数学成绩。

2)查询学生信息:可以按姓名、学号、性别进行分类查询,及全部查询,从而把所有学生记录重新全部显示出来。

基于QT可在arm开发板运行的学生信息管理系统

基于QT可在arm开发板运行的学生信息管理系统

《嵌入式应用与开发》课程大作业题目:学生信息管理系统专业:姓名:学号:成绩:2015年7 月任务书大作业6:学生信息管理系统(单人独立完成)功能需求:本系统用于对学生信息的管理,要求必须对数据库进行操作,建立至少三个数据表,并提供“登陆验证界面”、“添加学生信息”、“查询某个学生信息”、“统计目前学生人数”、“删除某个学生信息”、“退出”等功能,界面设计美观,布局合理,并下载移植到2440S嵌入式开发板上。

具体功能要求:1、学生信息查询功能1)按姓名查询2)按学号名查询2、学生信息修改与删除3、学生信息添加功能4、统计当前学生人数5、登录验证功能提示:系统可采用界面数据库实现摘要本设计是嵌入式应用程序开发的典型例程,采用编写的基于数据库支持的学生信息管理系统,移植到2440开发板运行。

贯通了嵌入式应用程序开发的全过程。

此系统实现了数据库的数据表的查询、插入、删除、更新操作。

系统的编译采用了常用的操作系统、 5.4.2、4.3.3交叉编译器。

采用超级终端工具将编译好的工程可执行文件移植到开发。

本系统在嵌入式的应用前景广大,各学校拥有这样的便携式信息系统,可以随时随地的对学生信息进行查询,便于对学生的管理。

关键字:嵌入式应用程序开发学生信息管理系统 2440目录1 设计题目的内容、任务及具体要求本课程是嵌入式应用程序开发,所以在本次课程中我们应该熟悉掌握应用程序开发的具体流程,所以本次课题选择用5.4.2编写一个简易的基于数据库操作的学生信息管理系统,由于5版本支持数据库,所以就不用再用其他的数据库开发软件了,免除了数据库的连接及移植操作。

系统任务:本系统主要用于对学生信息的管理,提供“登陆验证界面”、“添加学生信息”、“查询某个学生信息”、“统计目前学生人数”、“删除某个学生信息”、“退出”等功能,界面设计美观,布局合理,并下载移植到2440S 嵌入式开发板上。

具体功能要求:1、学生信息查询功能1)按姓名查询2)按学号名查询2、学生信息修改与删除3、学生信息添加功能4、统计当前学生人数5、登录验证功能2 总体设计思路2.1 开发环境2.1.1 编写语言本设计使用基于的图形用户界面软件软件编写。

使用python与sqlite3实现简易的学生信息管理系统

使用python与sqlite3实现简易的学生信息管理系统

使⽤python与sqlite3实现简易的学⽣信息管理系统使⽤ python 与 sqlite3 实现简易的学⽣信息管理系统需求分析⼀个简单的学⽣信息管理系统,应该包括如下功能1. 可以对学⽣信息进⾏增删改查添加学⽣信息(增)删除学⽣信息(删)修改学⽣信息(改)查询学⽣信息(查)2. 退出管理系统,要保存数据,⽅便下次登录时,仍然能查看之前添加或修改的数据设计思路先设计⼀个数据表,以⽅便存储数据。

我们简单设计⼀个数据表如下Id Class Student_name Birthday2018010318计科1班⼩秦1999-06-012019040519软⼯2班⼩路2000-07-042020061120管理3班⼩明2001-12-11对应的创建数据表的 SQL 语句如下CREATE TABLE IF NOT EXISTS students ((Id INT(12) PRIMARY KEY NOT NULL,Class VARCHAR(25) NOT NULL,Student_name VARCHAR(10) NOT NULL,Birthday DATE NOT NULL)根据之前的需求分析,我们不妨使⽤⾯向对象编程,⽬前我们可以⼤概写⼀下代码的结构——class StudentManageSystem(object):def __init__(self):passdef read_all_student(self):'''查看全部学⽣信息'''passdef read_student(self):'''查看指定学⽣信息'''passdef add_student(self):'''添加学⽣信息'''passdef update_student(self):'''更新学⽣信息'''passdef delete_student(self):'''删除学⽣信息'''pass具体代码实现管理系统的初始化设置初始化内容应该包含——对数据库 sqlite3 的连接可以直接操作数据库的变量(在 sqlite3 中,直接操作数据的是 cursor())判断数据表是否存在,如果没有就需要创建数据表class StudentManagerSystem(object):def __init__(self):# 连接数据库 student_info.db, 如果不存在就创建self.conn = sqlite3.connect('student_info.db')# 定义操作数据库的 cursor()self.cursor = self.conn.cursor()# 判断数据表是否存在,如果不存在就创建self.cursor.execute('''CREATE TABLE IF NOT EXISTS students (Id INT(12) PRIMARY KEY NOT NULL,Class VARCHAR(25) NOT NULL,Student_name VARCHAR(10) NOT NULL,Birthday DATE NOT NULL)''')查看全部学⽣信息def read_all_student(self) -> List[tuple]:self.cursor.execute('SELECT * FROM students')student_list = self.cursor.fetchall()if not student_list:print('⽬前系统中没有存有任何信息!')print('\n')return student_listprint('学号\t\t姓名\t\t年龄\t\t住址')for student in student_list:print(student)print('\n')return student_list查看指定学⽣的信息def read_student(self) -> None:number = input('请输⼊要查询学⽣的学号: ')self.cursor.execute('SELECT * FROM students where id=?', (number,))result = self.cursor.fetchall()if not result:print('所查询学号不存在!')print('\n')returnprint('查询结果如下:')print(result)print('\n')添加学⽣信息def add_student(self) -> None:number = input('请输⼊学⽣的学号: ')while True:if self._is_in_database(number):print('该学号已存在!')number = input('请重新输⼊学号: ')else:break_class = input('请输⼊班级: ')name = input('请输⼊学⽣的姓名: ')birthday = input('请输⼊学⽣的⽣⽇(格式 yy-mm-dd): ')self.cursor.execute('INSERT INTO students VALUES (?, ?, ?, ?)',(number, _class, name, birthday))# 添加学⽣信息, 要进⾏数据提交, 这样数据才会保存mit()print('信息添加成功!')print('\n')更新学⽣的信息def update_student(self) -> None:number = input('请输⼊要修改信息的学⽣学号: ')if not self._is_in_database(number):print('要修改信息的学号不存在!')print('\n')return_class = input('请输⼊新的班级: ')name = input('请输⼊新的姓名: ')birthday = input('请输⼊新的⽣⽇(格式 yy-mm-dd): ')self.cursor.execute('''UPDATE students SET Class=?,Student_name=?,Birthday=? WHERE id=?''',(_class, name, birthday, number))# 对数据进⾏修改, 要提交事务, 这样修改才会保存mit()print('信息修改成功!')print('\n')删除学⽣的信息def delete_student(self) -> None:number = input('请输⼊要删除信息的学⽣学号: ')if not self._is_in_database(number):print('要删除的学号不存在!')print('\n')returnself.cursor.execute('DELETE FROM students WHERE id=?', (number,))# 删除信息, 要进⾏事物提交, 这样更改才会保存mit()print('信息删除成功!')print('\n')判断学⽣信息是否在数据库中def _is_in_database(self, number: str) -> bool:self.cursor.execute('SELECT * FROM students WHERE id=?', (number,))result = self.cursor.fetchall()return True if result else False关闭数据库连接def close_connection_database(self) -> None:self.conn.close()最终的实现import sqlite3from typing import Listif __name__ == '__main__':studentManagerSystem = StudentManagerSystem()while True:print("======欢迎来到学⽣管理系统======")print('1.查看所有学⽣信息')print('2.添加学⽣信息')print('3.修改学⽣信息')print('4.删除学⽣信息')print('5.查询某个学⽣信息')print('6.退出系统')choiceNumber = input('请输⼊你的选择: ')if choiceNumber == '1':studentManagerSystem.read_all_student()elif choiceNumber == '2':studentManagerSystem.add_student()elif choiceNumber == '3':studentManagerSystem.update_student()elif choiceNumber == '4':studentManagerSystem.delete_student()elif choiceNumber == '5':studentManagerSystem.read_student()elif choiceNumber == '6':studentManagerSystem.close_connection_database()break总结这个⼩项⽬基本实现了最基本的学⽣管理系统,顺便实践了⼀下数据库的使⽤。

学生管理系统论文QT

学生管理系统论文QT

学生管理系统论文QT摘要本篇论文将介绍一个基于QT的学生管理系统的设计与实现。

学生管理系统是一种常见的教育管理系统,其主要功能是管理学生的个人信息、课程信息以及成绩信息。

本文通过使用QT框架,设计了一个易于使用且功能完善的学生管理系统。

该系统具有良好的交互界面、数据存储和查询功能,并且支持学生信息的增删改查操作。

本文将详细介绍学生管理系统的需求分析、系统设计、界面实现和数据存储等方面内容。

1. 引言学生管理系统是为了方便学校管理学生信息而设计开发的软件系统。

传统的学生管理系统通常基于Web开发,使用较为复杂,并且在数据处理和用户交互方面存在一些不便。

本文通过使用QT框架设计学生管理系统,旨在简化系统的开发和维护,并提供更优秀的用户体验。

2. 需求分析本节对学生管理系统的需求进行分析,主要包括功能需求和非功能需求两部分。

2.1 功能需求学生管理系统的功能需求主要包括以下几个方面:1.学生信息管理:包括学生个人信息(学号、姓名、性别、年龄等)的管理和维护。

2.课程信息管理:包括课程名称、授课老师、上课时间等课程信息的管理和维护。

3.成绩信息管理:包括学生成绩的录入、修改、查询和删除等操作。

4.统计功能:包括对学生信息和成绩信息进行统计和分析,如平均成绩、最高分、最低分等。

2.2 非功能需求学生管理系统的非功能需求主要包括以下几个方面:1.易用性:用户界面友好、操作简单,方便用户上手操作。

2.稳定性:系统应具有较高的稳定性,能够正常运行并且不易崩溃。

3.数据安全性:学生信息和成绩信息应进行适当加密和权限验证,保证数据的安全性。

4.查询性能:系统具备较快的数据查询和处理能力,查询结果及时返回。

3. 系统设计本节将对学生管理系统的系统设计进行详细介绍。

3.1 系统结构学生管理系统主要分为三层结构:用户界面层、业务逻辑层和数据访问层。

3.1.1 用户界面层用户界面层负责与用户进行交互,接收和显示用户的信息。

使用顺序表建立一个简单的学生管理系统

使用顺序表建立一个简单的学生管理系统

使⽤顺序表建⽴⼀个简单的学⽣管理系统#include<stdio.h>#include<stdlib.h>#include<string.h>#define OVERFLOW 0#define OK 1#define ERROR 0#define LIST_INIT_SIZE 100 //存储空间初始分配量typedef struct{char num[10];//学号char name[20];//名字double grade;//成绩}student;typedef int status;typedef student ElemType ;typedef struct{ElemType *elem;//存储基址int length;//当前表长int listsize;//当前分配存储容量}SqList;//构造⼀个空的顺序表status INitList_Sq(SqList &L){L.elem=(ElemType *)malloc( LIST_INIT_SIZE*sizeof(ElemType));if(!L.elem){exit(OVERFLOW);//存储空间分配失败}L.length=0;L.listsize=LIST_INIT_SIZE;return OK;}void Input(ElemType *e){printf("姓名"); scanf("%s",e->name);printf("学号"); scanf("%s",e->num);printf("成绩"); scanf("%lf",&e->grade);printf("请输⼊完成\n\n");}void Output(ElemType *e){printf("姓名:%-20s\n学号:%-10s\n成绩:%-10.2lf\n\n",e->name,e->num,e->grade);}//访问顺序表,找到i位置,返回给eElemType GetElem(SqList &L,int i){return L.elem[i];}//根据名字查找,返回学⽣的编号int Search(SqList &L,char str[]){for(int i=1;i<=L.length;i++){if(strcmp(L.elem[i].name,str)==0)return i;}return 0;}//第i个位置插⼊某个学⽣信息status ListInsert_Sq(SqList &L,int i,ElemType e){if((i<1)||(i>L.length+1)) return ERROR;if(L.length>=L.listsize)//当前空间已满,需要增加分配{return ERROR;}for(int j=L.length;j>=i;j--){L.elem[j+1]=L.elem[j];}L.elem[i]=e;++L.length;return OK;}//删除第i位置学⽣status ListDelete_Sq(SqList &L,int i){if((i<1)||(i>L.length)) return ERROR;for(int j=i;j<=L.length;j++){L.elem[j]=L.elem[j+1];}--L.length;return OK;}int main(){SqList L;ElemType a,b,c;printf("\n********************************\n\n");puts("1. 构造顺序表");puts("2. 录⼊学⽣信息");puts("3. 显⽰学⽣信息");puts("4. 输⼊姓名,查找该学⽣");puts("5. 显⽰某位置该学⽣信息");puts("6. 在指定位置插⼊学⽣信息");puts("7. 在指定位置删除学⽣信息");puts("8. 统计学⽣个数");puts("0. 退出");printf("\n********************************\n\n");int x,choose;while(1){puts("请选择");scanf("%d",&choose);if(choose==0){break;}switch(choose){case 1:if(INitList_Sq(L))printf("成功建⽴线性表\n\n");elseprintf("顺序建⽴线性表\n\n");break;case 2:printf("请输⼊要录⼊学⽣的⼈数,最⼤为100⼈"); scanf("%d",&x);for(int i=1;i<=x;i++){printf("第%d个学⽣:\n",i);Input(&L.elem[i]);}L.length=x;break;case 3:for(int i=1;i<=x;i++){a=GetElem(L,i);Output(&a);}break;case 4:char s[20];printf("请输⼊要查找的学⽣姓名");scanf("%s",s);if(Search(L,s))Output(&L.elem[Search(L,s)]);elseputs("对不起,查⽆此⼈");break;case 5:printf("请输⼊要查询位置");int id1;scanf("%d",&id1);b=GetElem(L,id1);Output(&b);break;case 6:printf("请输⼊插⼊位置");int id2;scanf("%d",&id2);printf("请输⼊学⽣信息:\n");Input(&c);if(ListInsert_Sq(L,id2,c)){x++;puts("插⼊成功");}else{puts("插⼊失败");}case 7:printf("请输⼊要删除的位置:");int id3;scanf("%d",&id3);if(ListDelete_Sq(L,id3)){x--;puts("删除成功");}else {puts("删除失败");} break; case 8:printf("已录⼊的学⽣个数为:%d\n\n",L.length); break;}}printf("\n\n谢谢您的使⽤,请按任意键退出\n\n\n");return 0;}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

嵌入式作业报告
——学生信息管理系统
学生信息管理系统报告说明书
一.需求分析
利用QT Creator编程环境编写一个简单的学生信息管理系统,与数据库连接,或者直接对.txt文本进行操作,实现对学生信息的增,删,改,查功能。

二.总体设计
在窗口刚跳出来时,在左边的QTextEdit对象中显示所有学生的信息,学生的信息被保存在student.txt文件中。

右边是几个QPushButton,分别实现增,删,改,查功能。

还有一个QLineEdit,用来编辑学生信息。

1.增加学生信息:在行编辑器内输入学生的信息,点击“增加”按钮,该生的信息就会被写入student.txt文件,并且将增加后的所有的学生信息显示在窗口的QTextEdit对象中。

2.删除学生信息:在行编辑器内输入学生的信息,点击“删除”按钮,该生的信息就会从student.txt文件中删除,并且将删除后的所有的学生信息显示在窗口的QTextEdit对象中。

3.修改学生信息:在行编辑器内输入学生的信息,点击“修改”按钮,该生的新的信息就会被写入文件,并且将修改后的所有的学生信息显示在窗口的QTextEdit对象中。

4.查找学生信息:在行编辑器内输入学生的学号,点击“查找”按钮,该生的信息会显示在窗口上。

三.详细设计
若选择直接对文本进行操作,过程比较麻烦。

如在进行删除某位学生的信息时,很自然地会想到先找到该生在文件中的位置,再将其后的所有学生信息都向前移动,看起来似乎很简单,但是在文件里进行这些操作时还是要费一些功夫的。

经过在网上查资料,得到了一种算法,就是先把文件里的每位学生的信息读出来,放到一个str[]数组中,再通过比较,找到要删除学生所在的数组元素的下标,之后仅仅是对数组内容进行更改,最后再将新的数组元素写入文件中,再通过读文件将信息显示在窗口。

下面这段代码是我自己认为在这次作业中取得较
大突破的。

就是删除学生信息的代码。

//删除学生信息
void Widget::deleteStuInfo()
{
QString str2=edit->displayText();//获得要删除学生的信息
int j,k=0;
read();//先将原文件里所有学生的信息读书放在str[]数组中
for(j=0;j<stuNom;j++)//比较在文件中是否存在与要删除学生信息相同的信息
{
if(str[j]==str2)
{
break;
}
k++;
}
if(k==stuNom)//如果没有,直接退出
return;
for(;j<stuNom-1;j++)//j是和要删除学生信息相同的数组下标,将其后的学生信息依次向前移动
{
str[j]=str[j+1];
}
stuNom=stuNom-1;//学生数目减1
write();//再把删除后的学生信息写入文件
read();//读文件
displayInfo();//将文件信息显示在窗口
label->setText("删除成功");
}
四.总结
这个用QT环境编写一个简单的学生管理系统的作业做了一周,今天终于完成了。

而这一周,自己也学会了很多东西。

现在就来总结一下吧。

1.做笔记很重要
这次作业,我感触最大的就是,做笔记是多么重要的一件事。

记得最后一节课的时候,老师讲了几个简单的QT编程的例子,当时觉得很简单,和Java 很像,虽然一直跟着老师的思路,但是并没有做笔记,总觉得这么简单,自己也会。

可是,时隔了几周之后,当自己独自用一个全新的环境去编写老师讲过的例子时,却发现,什么都写不出来,已经全都忘记了。

所以又得重新在网上查资料,一切重新开始,这样既浪费时间,又很容易丧失耐心和信心。

所以我想,以后再学习新东西的时候,不管我们当时懂了没有,不管当时觉得它有多么简单,只要是觉得有用,都应该养成做笔记的好习惯,这是一次对所学知识的梳理过程,是提取精髓必不可少的一步。

2.做事不能拖拉
记得老师很早就布置作业了,只是没有确定什么时候交,总觉得时间还挺多的,所以就总是把作业往后推。

所以在写的时候,几乎完全忘记了老师讲得内容,给开始的第一步造成了很大的阻碍。

在编写程序过程中,如果明日复明日,最终,就会将精力和耐心耗尽,变得急躁,这样,也是编不出高质量的程序的。

所以,我告诫自己,当想起一件事的时候,就赶紧去做完它,不要总是拖拖拉拉,平时生活中养成今日事,今日毕的好习惯。

3.想办法解决问题
因为老师只讲了一节课的QT编程,所以这次的作业主要还是靠自己在网上查资料完成的。

我觉得搜集对自己有用的资料是一种必要的能力,网上的东西很多,找出确实对自己有用的,还是需要费一点功夫的。

这次编程过程中,我就遇到了很多的问题,都是在网上查看解决方案的。

我的心得就是静下心来,慢慢看,具体分析,必要的时候,就多种方法都试一下,最后,一定会找到适合的方法。

就像这次其他的同学都用的事数据库连接程序,由于自己的一些原因,我选择的是文件,如果要实现老师说的对学生信息的增,删,改,查四个功能的话,用
文件比较难一些,因为并没有现成的数据库语句来实现这些功能,只能通过自己编写子程序来解决这些问题。

我起初遇到的最大的困难就是删除这部分,找到要删除的学生的位置是很容易的,可是怎么样将它删除呢,我们自然会想到把他后面的信息依次向前移动,可是仅仅用文件来实现是非常困难的。

于是我就和同学讨论,上网查资料,经过一番努力,终于看到网上的一条建议,就是把文件里的所有信息读出来,存到一个数组里面,之后,根据要求,对数组元素进行修改,再将其写回到文件中,说实话,看到这个算法的时候,就是感觉眼前一亮,很兴奋。

虽然这个听起来有点麻烦,但是仔细一想,这是符合常理的,并且也符合程序模块化的思想,最后自己按照这个思路编写的几个子程序,运行成功,心里很有成就感。

总之,我觉得这次的作业锻炼了我自主学习的能力,也告诫自己要勤于做笔记,养成不拖拉的好习惯。

经过在网上查资料,和同学一起讨论,近一步增进了同学间互帮互助的友情,也提高了自己的编程能力,是一次很有收获的经历。

相关文档
最新文档