哈哈 这是我一年前做的课程设计 虽然感觉很烂 但是很有纪念意义 这里面除了代码部分 其他全是我喜欢的那个人帮我写的 本来我们是打算合作的 结果她做了一个有界面的 我很不争气的做了个控制台应用程序。。 虽然现在被拒绝了,但想想这些还是感觉很幸福~

课题:做一个管理系统,包含以下功能

实现如下功能:

(1)建立登陆系统

(2)建立学生信息的结构体

(3)学生信息的初始化(可以从文件获取)

(4)建立保存文件的置空

(5)学生信息的添加、查找、修改、删除

(6)学生信息的输出

(7)将学生信息保存为文件

1、课程设计目的

本课程设计的目的就是要通过一次集中的强化训练,使学生能及时巩固已学的知识,补充未学的但又必要的内容。进行课程设计目的在于加深对程序设计基础中基础理论和基本知识的理解,促进理论与实践的结合,进一步提高程序设计的能力。具体目的如下:

1.使学生更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。

2.培养学生综合运用所学知识独立完成课题的能力。

3.培养学生勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。

4.提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。

5.培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。

6.对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。

2、课程设计要求

实现如下功能:

(1)建立登陆系统

(2)建立学生信息的结构体

(3)学生信息的初始化(可以从文件获取)

(4)建立保存文件的置空

(5)学生信息的添加、查找、修改、删除

(6)学生信息的输出

(7)将学生信息保存为文件

三、设计题目分析

3.1 题目简介

1.信息的输入:建立学生档案文件。

2.信息维护: 
添加:增加新学生; 
修改:学生信息的改变; 
删除:学生减少;

置空:保存的档案文件的清空(慎用)。

3.信息处理 
按要求检索学生信息;

3.2 设计要求

综合应用数组、指针、结构体、文件等,对该设计题目进行设计和实现。课程设计完成后,提交课程设计报告。

四、课程设计内容

4.1 总体设计:

4.2 详细设计:

定义形式/名称

含义/作用

数组

char name[20]

定义姓名数组

结构体

struct student stu[100]

声明一个结构数组

全局变量

int i=0;

数组的控制参数

文件

data.txt

保存学生信息

界面函数

login welcome function subfunction

登陆 欢迎 主函数

次函数

程序函数

search  create  edit  cancel  exit  read  clear  save

查找、新增、修改、删除、退出、读取、置空、保存

void welcome(); 欢迎界面

void function();    主功能函数

void subfunction(int); 次功能函数

void read();    从文件中读取数据

void create();  创建一个新的记录

void search();   搜索一条记录

void edit(int);   编辑一条记录兼编辑功能界面

void cancel(int); 删除一条记录

void save();    存储一条记录

void clear();   重置所有记录

void login();   登陆界面及密码功能

4.3 调试与测试:

(1).getchar();这是一个相当不好的函数;

在switch();函数前读入字符char c=getchar(); 每次读入字符后回车这个确认操作也会当做输入的字符存入缓存区,解决方法是:

char c=getchar();

char d=getchar();

用后者来吞掉一个回车,但是这只能解决第一次输入的问题,当界面再次返回到该选择时由于无法清除缓存区的数据,输入会出现错误。

预想的解决方案是每次getchar();前加入一个清除缓存区的操作;

我使用的解决方案是将getchar();函数换做是scanf();函数来读入字符;

但是scanf();函数也有很多问题,比如输入字母时他就会刷屏,只能强行关闭;我本来想设置输入限制的操作,但是测试起来还是有问题,由于时间的限制,最后只保留对输入错误数字报错有报错功能。

(2).当程序在读取文件时我遇到了文件到末尾无法停止的问题,这个问题直接导致我开辟的数组全部被用完,在经过多种控制都无法实现的情况下我在《C语言程序设计》谭浩强版中找到了feof();函数,可是这个函数也有问题,每次读入数据时都会多读一组,导致浪费一个数组,在存储时又无法对应,解决方案是加上i--语句,虽然不知道出问题的原因,但是可以实现功能(可能是由于函数内在运行顺序不同导致的)

(3).调试结果事儿正确时而错误。由于我本次试验用的是visual studio 2008 全新的操作界面我十分不熟悉 当我这次实验结束时我才总结出 调试程序时最好用ctrl+F5调试 他会显示调试成功和失败 成功则没有问题 失败的话他会自动运行上一次成功调试的文件 只有将源文件改正确才会运行本次修改的文件 而F5或者直接按界面上的调试按钮则会没有提示直接进行上述操做 会很不方便。在调试程序的时候由于单步运行操作在进行过程中会打开其他文件,不断的打开调用导致运行很不方便,所以我只能用printf();语句到处打印出我想要知道的变量的值,不过这个方法还是挺效率的。

5、设计心得与总结:编程序是个很累的过程,很容易犯困,所以编程序一定要耐得住寂寞。在这次设计中我觉得我很好的运用到了我以前学过的只是去解决问题而不是去资料上找可以直接解决该问题的函数,这个使我十分有成就感。以后的编程可能就不会这样去浪费时间了,这对我来说是一次很好的体验。在这个集中的一个星期的编程过程中我觉得我感受到的东西比老师在课堂上一个学期传授的都要多,不仅如此,在遇到问题自己想办法去解决时,我的自主学习能力大大的提高了。总体设计很重要,我在一开始逻辑还不是很清晰的时候就开始编程了,这导致我每次实现局部功能后为了配合大局而删改代码做了许多的无用功,这种情况要在下次的程序设计中避免。

源代码:

//================================================================================

// 信息管理体统

// 网络工程c语言课程设计

// 2010年月

// 用户名admin

// 密码123456

//================================================================================

//编译预处理

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#define N 20

//结构体的定义

struct student{

char name[25];

char id[10];

char sex[10];

char age[10];

char major[20];

char information[100];

}stu[N];

//函数的声明

void welcome();

void function();

void subfunction(int);

void read();

void create();

void search();

void edit(int);

void cancel(int);

void save();

void clear();

void login();

//全局变量的定义

int i=0;

//主函数

int main(){

login();

function();

return(0);

}

//欢迎界面

void welcome(){

printf("******************************************************************************/n");

printf("/t/t/t    欢迎来到信息管理系统/n/n");

printf("data.txt正在导入...请稍等.../n/n");

read();//读取

}

//主功能主界面

void function(){

printf("******************************************************************************/n");

printf("1-->新增/n");

printf("2-->查找/n");

printf("3-->存储/n");

printf("4-->重置/n");

printf("0-->退出/n");

printf("******************************************************************************/n");

printf("请选择操作/n");

//功能选择的实现

int c;

scanf("%d",&c);

switch(c){

case 1:create();break;

case 2:search();break;

case 3:save();function();break;

case 4:clear();function();break;

case 0:exit(0);break;

default:printf("输入错误!正在返回.../n");function();break;

}

}

//次功能提示界面

void subfunction(int k){

printf("******************************************************************************/n");

printf("1-->编辑/n");

printf("2-->删除/n");

printf("3-->存储/n");

printf("4-->返回/n");

printf("5-->查找/n");

printf("0-->退出/n");

printf("******************************************************************************/n");

printf("请选择操作/n");

int c;

scanf("%d",&c);

//次功能选择的实现

switch(c){

case 1:edit(k);break;

case 2:cancel(k);function();break;

case 3:save();subfunction(k);break;

case 4:function();break;

case 5:search();break;

case 0:exit(0);break;

default:printf("输入错误!正在返回.../n");subfunction(k);break;

}

}

//读取文件到内存

void read(){

FILE *fp;

fp=fopen("data.txt","r");

//文件是否正常打开

if(fp==NULL){

printf("对不起,文件不存在!/n/n");

printf("******************************************************************************/n");

exit(0);

}

//从文件读取到内存

for(;i<N;i++){

if(feof(fp)) break;

fscanf(fp,"%s",stu[i].name);

fscanf(fp,"%s",stu[i].id);

fscanf(fp,"%s",stu[i].sex);

fscanf(fp,"%s",stu[i].age);

fscanf(fp,"%s",stu[i].major);

fscanf(fp,"%s",stu[i].information);

}

i--;

fclose(fp);

}

//创建以及添加

void create(){

printf("请输入姓名:/n");

scanf("%s",stu[i].name);

printf("请输入学号:/n");

scanf("%s",stu[i].id);

printf("请输入性别:/n");

scanf("%s",stu[i].sex);

printf("请输入年龄:/n");

scanf("%s",stu[i].age);

printf("请输入专业:/n");

scanf("%s",stu[i].major);

printf("请输入备注:/n");

scanf("%s",stu[i].information);

i++;//全局变量的自增

function();

}

//查询功能的实现

void search(){

//输入学号搜索

printf("请输入学号:/n");

char number[10];

scanf("%s",number);

int k;

for(k=0;k<=i;k++)

if(!strcmp(stu[k].id,number)){

printf("姓名:");

printf("%s",stu[k].name);

printf("/n");

printf("学号:");

printf("%s",stu[k].id);

printf("/n");

printf("性别:");

printf("%s",stu[k].sex);

printf("/n");

printf("年龄:");

printf("%s",stu[k].age);

printf("/n");

printf("专业:");

printf("%s",stu[k].major);

printf("/n");

printf("备注:");

printf("%s",stu[k].information);

printf("/n");

break;

}

if(stu[k].id[0]=='/0')

printf("您查找的信息不存在或已删除,请重新查找/n");

subfunction(k);

}

//文件的删除

void cancel(int k){

stu[k].name[0]='/0';

stu[k].id[0]='/0';

stu[k].sex[0]='/0';

stu[k].age[0]='/0';

stu[k].major[0]='/0';

stu[k].information[0]='/0';

printf("文件已删除!/n");

}

//文件的修改

void edit(int k){

printf("请问要编辑哪项?/n");

printf("******************************************************************************/n");

printf("1-->姓名/n");

printf("2-->学号/n");

printf("3-->性别/n");

printf("4-->年龄/n");

printf("5-->专业/n");

printf("6-->备注/n");

printf("0-->返回/n");

printf("******************************************************************************/n");

printf("请选择操作/n");

int c;

scanf("%d",&c);

//功能选择的实现

switch(c){

case 1:printf("请输入姓名:/n");scanf("%s",stu[k].name);save();break;

case 2:printf("请输入学号:/n");scanf("%s",stu[k].id);save();break;

case 3:printf("请输入性别:/n");scanf("%s",stu[k].sex);save();break;

case 4:printf("请输入年龄:/n");scanf("%s",stu[k].age);save();break;

case 5:printf("请输入专业:/n");scanf("%s",stu[k].major);save();break;

case 6:printf("请输入备注:/n");scanf("%s",stu[k].information);save();break;

case 0:subfunction(k);break;

default:printf("输入错误!正在返回/n");subfunction(k);break;

}

subfunction(k);

}

//文件的存储

void save(){

FILE *fp;

fp=fopen("data.txt","w+");

int j;

for(j=0;j<i;j++){

fprintf(fp,"%s",stu[j].name);

fprintf(fp,"/n");

fprintf(fp,"%s",stu[j].id);

fprintf(fp,"/n");

fprintf(fp,"%s",stu[j].sex);

fprintf(fp,"/n");

fprintf(fp,"%s",stu[j].age);

fprintf(fp,"/n");

fprintf(fp,"%s",stu[j].major);

fprintf(fp,"/n");

fprintf(fp,"%s",stu[j].information);

fprintf(fp,"/n");

}

fclose(fp);

printf("文件已存储!/n");

}

//文件的重置

void clear(){

int j;

for(j=0;j<=i;j++){

stu[j].name[0]='/0';

stu[j].id[0]='/0';

stu[j].sex[0]='/0';

stu[j].age[0]='/0';

stu[j].major[0]='/0';

stu[j].information[0]='/0';

}

printf("文件已重置!/n");

}

void login(){

char strname[10];

char strcode[10];

char strname1[10]="admin";

char strcode1[10]="123456";

int j=0,d=0;

char c;

printf("******************************************************************************/n");

printf("/t/t/t/t信息管理系统/n");

printf("/t/t/t/t   请登录/n");

while(j<3)

{

printf("/t/t/t/t请输入用户名:/n/t/t/t/t   ");

int a,b;

for(a=0;(c=getchar())!='/n';a++)

strname[a]=c;

strname[a]='/0';

printf("/t/t/t/t请输入密码:/n/t/t/t/t   ");

for(b=0;(c=getchar())!='/n';b++)

strcode[b]=c;

strcode[b]='/0';

if (!strcmp(strname,strname1)==0||!strcmp(strcode,strcode1)==0)

printf("/t/t/t      用户名或密码错误!/n/n");

else{

d=1;

break;

}

j++;

}

if(d==1) welcome();

else if(d==0) exit(0);

}

//登陆控制

把文件夹中的data文件删除

最小化文件夹

运行文件

3次输入密码错误

退出

//登陆功能及文件不存在的情况

输入用户名和密码

进入 显示文件不存在

//错误输入的控制 读取 修改 删除 和重置功能

将data文件拉入文件夹

进入文件后输入9显示从新输入

搜索

修改001 姓名改成俞斌

删除002 查找002显示不存在 保存后再看文件

创建004 查找本身 保存后看文件

返回后重置文件 先查询 保存看文件的效果

没有搜索到数据的时候不要编辑和删除

C语言课程设计 管理系统相关推荐

  1. 编程思想之c语言课程设计--管理系统例子

    文章目录 前言 思路--用计算机"模拟世界" c语言 数据结构 算法 总结 例子--学生管理系统(控制台) 考虑 需求 分析 1.提供菜单 2.接收命令 3.添加学生信息 4.打印 ...

  2. c语言课程设计商品销售系统,c语言课程设计商品销售管理系统.pdf

    C语言课程设计商 品销售管理系统 1 2020 年 4 月 19 日 文档仅供参考 商品销售管理系统 目录 一. 需求分析 2 二.概要设计 2 三.详细设计 4 四.调试分析 14 五.用户手册 1 ...

  3. C语言课程设计—图书管理系统

    这是本人大一第二学期初C语言课程设计的作品,嘿嘿,本来以为已经找不到原稿了,今天无意中居然在QQ网络硬盘中找到了当初的teta版,公布于此,以作纪念. C源码例如以下: #include<std ...

  4. c语言结构体老师信息管理系统,C语言课程设计职工信息管理系统结构体数组实现程序源代码.doc...

    word格式 整理版 学习参考 //C语言课程设计 职工信息管理系统-结构体数组实现 #include #include #include struct employee { char num[10] ...

  5. c++图书管理系统_轻松学做C语言课程设计:图书管理系统-数组实现

    C语言课程设计,对于初学者来说,主要是综合运用C语言基础知识,以实际项目的形式锻炼编程能力.从今天开始,一起轻松学做C语言课程设计常见项目,建议先运行代码,再一步步理解其实现. 题目要求 图书管理系统 ...

  6. 学生成绩统计c语言课程设计,学生成绩管理系统-C语言课程设计

    记一次课程设计作业 学生成绩管理系统#include #include #include #include /* 学生成绩管理系统介绍 2017C语言课程设计  202160936 1.支持将数据保存 ...

  7. 湖北汽车工业学院c语言程序设计 汽车零部件采购管理程序,湖北汽车工业学院c语言课程设计实验报告(采购信息管理系统).docx...

    湖北汽车工业学院c语言课程设计实验报告(采购信息管理系统) C语言课程设计 商品销售信息管理系统 #include #include #include #include structproduct// ...

  8. c语言用链表写管理系统程序,c语言课程设计职工信息管理系统单链表实现程序源代码-20210401015126.docx-原创力文档...

    文档编制序号:[KKIDT-LLE0828-LLETD298-POI08] 文档编制序号:[KKIDT-LLE0828-LLETD298-POI08] C语言课程设计职工信息管理系统单链表实现程序源代 ...

  9. c语言RePutDate用法,住宿结帐管理系统--C语言课程设计.doc

    C语言课程设计 设计题目: 住宿结帐管理系统 专 业 计算机科学与技术.软件工程 班 级 计053.软件051.软件052 学 生 郭凌瑞 张亮 方宇 指导教师 王晓帆 2005-2006 年 2 学 ...

最新文章

  1. 智源神经元识别挑战赛发布:收获不只是10万元奖金
  2. 【新书】分布式强化学习
  3. 交叉表 列字段排序_PowerBI创建日期表
  4. SQL Server AlwaysOn中的几个误区
  5. 【Android布局】在程序中设置android:gravity 和 android:layout_Gravity属性
  6. AutoML数据增广
  7. python-使用字典使Fibonacci更有效率
  8. jquery知识点总结二
  9. clion stfp 配置
  10. 自学考试c语言真题,自学考试《C语言程序设计》复习试题及答案
  11. 【每日算法Day 95】美团笔试题:四面体方案个数
  12. 智能优化算法:人工电场优化算法-附代码
  13. 阶段3 1.Mybatis_11.Mybatis的缓存_5 缓存的概念
  14. 一生必看的 100 幅世界名画
  15. springsoure.sts下载地址
  16. 饿了么UI框架表单验证
  17. macOS系统如何读写NTFS格式的硬盘
  18. 聚合支付系统设计(一)
  19. 9 Nextflow configuration
  20. mysql调用耗时_记一次服务器执行MySQL耗时问题

热门文章

  1. “mvn -version ‘mvn‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件“
  2. Dynamic Slicing for Deep Neural Networks
  3. 服务器返回的14种常见HTTP状态码
  4. 子类构造函数中super()方法的理解
  5. 使用 HuggingFace Transformers创建自己的搜索引擎
  6. 埃氏筛法求素数(C语言)
  7. 基于ATTCK框架解析勒索病毒攻击
  8. ARM和neon指令集
  9. 网络安全——渗透综合实验
  10. Shiro权限控制(二)