名簿管理プログラム

名簿管理プログラム

このプログラムは、大学の授業で作成したものです。ユーザーのプロフィールを読み込み、保存、検索、ソート、削除などの機能を提供します。

Tech Stack

View DemoView GitHub

Demo Images

CSV形式でprofileを登録します.CSVファイルから直接読み込むことも可能です.

1.CSV形式でprofileを登録します.CSVファイルから直接読み込むことも可能です.

profileの表示です.引数の数だけ表示します.

2.profileの表示です.引数の数だけ表示します.

探索です.全ての項目から引数に部分一致するものを線形探索します.idに限りますが二分探索コマンドも実装しています.

3.探索です.全ての項目から引数に部分一致するものを線形探索します.idに限りますが二分探索コマンドも実装しています.

バブルソートです.引数によってどの項目でも並べ替えできます.

4.バブルソートです.引数によってどの項目でも並べ替えできます.

項目の削除です.idが一致するものを配列から削除します.他にもファイルに書き込んで保存するコマンドもあります.

5.項目の削除です.idが一致するものを配列から削除します.他にもファイルに書き込んで保存するコマンドもあります.

C言語プロジェクト - 開発ストーリー

2年生の前期の授業の課題として作成したC言語を用いたプログラム

なぜ作ろうと思ったか?

2年生の前期の授業の課題として作成しました。

何の技術で?

C言語、Linuxを使用しました。

困難は?

まず、今までPythonを軽く触れたことしかなかった私にはC言語のすべてが難しかったです。 なかでもポインタの理解に苦しみました。Pythonなどでは知らなくてもプログラムは作れますが、 C言語ではポインタの概念を学ぶことからスタートしなければなりませんでした。

その後、ぶつかったのがメモリ管理です。このプログラムは1万のデータを管理することを前提としているため、 メモリの解放をその都度行わなければならず、知らずにエラーがたびたび発生していました。

また、このプログラムではソートを実装しましたが、C言語の配列操作でソートを実装するのは難しかったです。 Pythonではそのまま入れ替えればよいものを、C言語ではswap関数を用意して入れ替えなければなりませんでした。 さらに、標準入力からのデータ取得にも頭を悩ませました。

学んだこと

  • 低レベルのプログラムの理解が深まった。
  • ポインタについて。関数の中から関数の外の変数の内容を書き換えることができるようになり、 便利だと思った。Pythonでは関数内で配列を操作したときだけ関数外でも変わるのはポインタの操作があるからと理解できた。
  • データ構造について。各データのメモリや構造を学び、文字列が文字の配列であることや構造体というオブジェクトの発想につながる基本的だが重要なことを学べた。

こだわりポイント

このプログラムでは、すべて関数として管理しており、見やすく拡張しやすい設計にしています。また、1万の大量のデータを扱うことを想定して作成しました。レポートも作成しているので、GitHubから合わせてご覧ください。

← Back to Projects